ตัวเลือกรายการ
ฝังกล่องให้ผู้ใช้เลือกรายการหนึ่งรายการหรือหลายรายการจาก Drive แล้วรับรายการที่เลือกกลับมา
widget ตัวเลือกรายการ แสดงรายการใน Drive ให้ผู้ใช้เลือก เมื่อผู้ใช้กดเลือก widget ส่งรายการที่เลือกให้หน้าของคุณ ส่วนที่เหลือของข้อตกลง (credential, error) ดู Widgets
URL และพารามิเตอร์
URL คือ <site>/widgets/item-picker ทุกพารามิเตอร์ไม่บังคับ ค่า boolean เขียนเป็น true หรือ false ค่าที่เป็นรายการคั่นด้วยจุลภาค
| พารามิเตอร์ | ความหมาย |
|---|---|
single_select | true เลือกได้รายการเดียว ค่าตั้งต้น false |
types | แสดงเฉพาะรายการที่มี type เหล่านี้ เช่น folder,form |
subtypes | แสดงเฉพาะรายการที่มี subtype เหล่านี้ เช่น table |
selectable_types | เลือกได้เฉพาะ type เหล่านี้ ที่เหลือแสดงเป็นสีจาง ไม่ใส่คือเลือกได้ทุกประเภท |
selectable_subtypes | เลือกได้เฉพาะ subtype เหล่านี้ เช่นเดียวกับข้างบน |
disabled_items | id ของรายการที่แสดงแต่เลือกไม่ได้ |
default_parent | id ของโฟลเดอร์ที่เปิดเป็นที่แรก ไม่ใส่คือเริ่มที่ My Drive |
path_navigation | false ผู้ใช้เปลี่ยนโฟลเดอร์ไม่ได้ ค่าตั้งต้น true |
importable | true เลือกได้เฉพาะรายการที่นำเข้าข้อมูลได้ ค่าตั้งต้น false |
ผู้ใช้เลือกโฟลเดอร์ที่เปิดอยู่เองได้ เมื่อยังไม่ได้ติ๊กรายการใด และโฟลเดอร์นั้นเลือกได้ตาม selectable_types กับ selectable_subtypes
ข้อความ
| action | ทิศทาง | payload |
|---|---|---|
select | widget ถึงหน้าของคุณ | { items } array ของรายการที่เลือก แต่ละรายการมี _id, name, type, subtype, parent, owner, permission, props และฟิลด์อื่นของรายการ |
cancel | widget ถึงหน้าของคุณ | ไม่มี ส่งเมื่อผู้ใช้กดปิดหรือยกเลิก |
widget นี้ไม่รับ post-widget-parameters จึงไม่ส่ง ready
ถ้าผู้ใช้เลือกราก My Drive ที่เปิดอยู่ items จะมีหนึ่งตัวที่ไม่มี _id มีแต่ name ที่แปลตามภาษา ถ้าไม่ต้องการให้เลือกราก ให้ตั้ง selectable_types เป็นประเภทที่ไม่ใช่โฟลเดอร์
ตัวอย่าง
ต่อจากตัวอย่างใน Widgets เปลี่ยนชื่อ widget เป็น item-picker ใส่พารามิเตอร์ของตัวเลือก แล้วฟัง select
// ใส่ใน URLSearchParams: single_select: 'true', selectable_types: 'form'
addEventListener('message', (e) => {
if (e.origin !== site || e.data.messageToken !== messageToken) return
if (e.data.action === 'select') {
const ids = e.data.payload.items.map((item) => item._id)
frame.remove()
}
if (e.data.action === 'cancel') frame.remove()
})ถ้าเลือกรายการไม่ได้
- แถวสีจางคือรายการที่เลือกไม่ได้ เพราะไม่ตรงกับ
selectable_typesหรือselectable_subtypesหรืออยู่ในdisabled_itemsโฟลเดอร์ที่ไม่ตรงยังเปิดเข้าไปดูข้างในได้ ยกเว้นโฟลเดอร์ในdisabled_items selectไม่ปิด iframe หน้าของคุณเอา iframe ออกเอง