คู่มือ aWhere
พัฒนาWidgets

ตัวเลือกรายการ

ฝังกล่องให้ผู้ใช้เลือกรายการหนึ่งรายการหรือหลายรายการจาก Drive แล้วรับรายการที่เลือกกลับมา

widget ตัวเลือกรายการ แสดงรายการใน Drive ให้ผู้ใช้เลือก เมื่อผู้ใช้กดเลือก widget ส่งรายการที่เลือกให้หน้าของคุณ ส่วนที่เหลือของข้อตกลง (credential, error) ดู Widgets

URL และพารามิเตอร์

URL คือ <site>/widgets/item-picker ทุกพารามิเตอร์ไม่บังคับ ค่า boolean เขียนเป็น true หรือ false ค่าที่เป็นรายการคั่นด้วยจุลภาค

พารามิเตอร์ความหมาย
single_selecttrue เลือกได้รายการเดียว ค่าตั้งต้น false
typesแสดงเฉพาะรายการที่มี type เหล่านี้ เช่น folder,form
subtypesแสดงเฉพาะรายการที่มี subtype เหล่านี้ เช่น table
selectable_typesเลือกได้เฉพาะ type เหล่านี้ ที่เหลือแสดงเป็นสีจาง ไม่ใส่คือเลือกได้ทุกประเภท
selectable_subtypesเลือกได้เฉพาะ subtype เหล่านี้ เช่นเดียวกับข้างบน
disabled_itemsid ของรายการที่แสดงแต่เลือกไม่ได้
default_parentid ของโฟลเดอร์ที่เปิดเป็นที่แรก ไม่ใส่คือเริ่มที่ My Drive
path_navigationfalse ผู้ใช้เปลี่ยนโฟลเดอร์ไม่ได้ ค่าตั้งต้น true
importabletrue เลือกได้เฉพาะรายการที่นำเข้าข้อมูลได้ ค่าตั้งต้น false

ผู้ใช้เลือกโฟลเดอร์ที่เปิดอยู่เองได้ เมื่อยังไม่ได้ติ๊กรายการใด และโฟลเดอร์นั้นเลือกได้ตาม selectable_types กับ selectable_subtypes

ข้อความ

actionทิศทางpayload
selectwidget ถึงหน้าของคุณ{ items } array ของรายการที่เลือก แต่ละรายการมี _id, name, type, subtype, parent, owner, permission, props และฟิลด์อื่นของรายการ
cancelwidget ถึงหน้าของคุณไม่มี ส่งเมื่อผู้ใช้กดปิดหรือยกเลิก

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 ออกเอง

ในหน้านี้