@pine-ds/core 3.25.0 → 3.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/pds-combobox.js +273 -55
- package/components/pds-combobox.js.map +1 -1
- package/dist/cjs/{index-Cc_o_7az.js → index-Dlc5O3n_.js} +3 -3
- package/dist/cjs/index-Dlc5O3n_.js.map +1 -0
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/mock-pds-modal.cjs.entry.js +1 -1
- package/dist/cjs/pds-accordion.cjs.entry.js +1 -1
- package/dist/cjs/pds-alert.cjs.entry.js +1 -1
- package/dist/cjs/pds-avatar.cjs.entry.js +1 -1
- package/dist/cjs/pds-box.cjs.entry.js +1 -1
- package/dist/cjs/pds-button.cjs.entry.js +1 -1
- package/dist/cjs/pds-checkbox.cjs.entry.js +1 -1
- package/dist/cjs/pds-chip.cjs.entry.js +1 -1
- package/dist/cjs/pds-combobox.cjs.entry.js +271 -55
- package/dist/cjs/pds-combobox.entry.cjs.js.map +1 -1
- package/dist/cjs/pds-container.cjs.entry.js +1 -1
- package/dist/cjs/pds-copytext.cjs.entry.js +1 -1
- package/dist/cjs/pds-divider.cjs.entry.js +1 -1
- package/dist/cjs/pds-dropdown-menu-item.cjs.entry.js +1 -1
- package/dist/cjs/pds-dropdown-menu-separator.cjs.entry.js +1 -1
- package/dist/cjs/pds-dropdown-menu.cjs.entry.js +1 -1
- package/dist/cjs/pds-filter.cjs.entry.js +1 -1
- package/dist/cjs/pds-filters.cjs.entry.js +1 -1
- package/dist/cjs/pds-icon.cjs.entry.js +1 -1
- package/dist/cjs/pds-image.cjs.entry.js +1 -1
- package/dist/cjs/pds-input.cjs.entry.js +1 -1
- package/dist/cjs/pds-link.cjs.entry.js +1 -1
- package/dist/cjs/pds-loader.cjs.entry.js +1 -1
- package/dist/cjs/pds-modal-content.cjs.entry.js +1 -1
- package/dist/cjs/pds-modal-footer.cjs.entry.js +1 -1
- package/dist/cjs/pds-modal-header.cjs.entry.js +1 -1
- package/dist/cjs/pds-modal.cjs.entry.js +1 -1
- package/dist/cjs/pds-multiselect.cjs.entry.js +1 -1
- package/dist/cjs/pds-popover.cjs.entry.js +1 -1
- package/dist/cjs/pds-progress.cjs.entry.js +1 -1
- package/dist/cjs/pds-property.cjs.entry.js +1 -1
- package/dist/cjs/pds-radio-group.cjs.entry.js +1 -1
- package/dist/cjs/pds-radio.cjs.entry.js +1 -1
- package/dist/cjs/pds-row.cjs.entry.js +1 -1
- package/dist/cjs/pds-select.cjs.entry.js +1 -1
- package/dist/cjs/pds-sortable-item.cjs.entry.js +1 -1
- package/dist/cjs/pds-sortable.cjs.entry.js +1 -1
- package/dist/cjs/pds-switch.cjs.entry.js +1 -1
- package/dist/cjs/pds-tab.cjs.entry.js +1 -1
- package/dist/cjs/pds-table-body.cjs.entry.js +1 -1
- package/dist/cjs/pds-table-cell.cjs.entry.js +1 -1
- package/dist/cjs/pds-table-head-cell.cjs.entry.js +1 -1
- package/dist/cjs/pds-table-head.cjs.entry.js +1 -1
- package/dist/cjs/pds-table-row.cjs.entry.js +1 -1
- package/dist/cjs/pds-table.cjs.entry.js +1 -1
- package/dist/cjs/pds-tabpanel.cjs.entry.js +1 -1
- package/dist/cjs/pds-tabs.cjs.entry.js +1 -1
- package/dist/cjs/pds-text.cjs.entry.js +1 -1
- package/dist/cjs/pds-textarea.cjs.entry.js +1 -1
- package/dist/cjs/pds-toast.cjs.entry.js +1 -1
- package/dist/cjs/pds-tooltip.cjs.entry.js +1 -1
- package/dist/cjs/pine-core.cjs.js +2 -2
- package/dist/collection/components/pds-combobox/pds-combobox.css +24 -22
- package/dist/collection/components/pds-combobox/pds-combobox.js +297 -57
- package/dist/collection/components/pds-combobox/pds-combobox.js.map +1 -1
- package/dist/collection/components/pds-combobox/stories/pds-combobox.stories.js +58 -0
- package/dist/docs.json +36 -2
- package/dist/esm/{index-C_yp7uLt.js → index-CO9kz-Pi.js} +3 -3
- package/dist/esm/index-CO9kz-Pi.js.map +1 -0
- package/dist/esm/loader.js +3 -3
- package/dist/esm/mock-pds-modal.entry.js +1 -1
- package/dist/esm/pds-accordion.entry.js +1 -1
- package/dist/esm/pds-alert.entry.js +1 -1
- package/dist/esm/pds-avatar.entry.js +1 -1
- package/dist/esm/pds-box.entry.js +1 -1
- package/dist/esm/pds-button.entry.js +1 -1
- package/dist/esm/pds-checkbox.entry.js +1 -1
- package/dist/esm/pds-chip.entry.js +1 -1
- package/dist/esm/pds-combobox.entry.js +272 -56
- package/dist/esm/pds-combobox.entry.js.map +1 -1
- package/dist/esm/pds-container.entry.js +1 -1
- package/dist/esm/pds-copytext.entry.js +1 -1
- package/dist/esm/pds-divider.entry.js +1 -1
- package/dist/esm/pds-dropdown-menu-item.entry.js +1 -1
- package/dist/esm/pds-dropdown-menu-separator.entry.js +1 -1
- package/dist/esm/pds-dropdown-menu.entry.js +1 -1
- package/dist/esm/pds-filter.entry.js +1 -1
- package/dist/esm/pds-filters.entry.js +1 -1
- package/dist/esm/pds-icon.entry.js +1 -1
- package/dist/esm/pds-image.entry.js +1 -1
- package/dist/esm/pds-input.entry.js +1 -1
- package/dist/esm/pds-link.entry.js +1 -1
- package/dist/esm/pds-loader.entry.js +1 -1
- package/dist/esm/pds-modal-content.entry.js +1 -1
- package/dist/esm/pds-modal-footer.entry.js +1 -1
- package/dist/esm/pds-modal-header.entry.js +1 -1
- package/dist/esm/pds-modal.entry.js +1 -1
- package/dist/esm/pds-multiselect.entry.js +1 -1
- package/dist/esm/pds-popover.entry.js +1 -1
- package/dist/esm/pds-progress.entry.js +1 -1
- package/dist/esm/pds-property.entry.js +1 -1
- package/dist/esm/pds-radio-group.entry.js +1 -1
- package/dist/esm/pds-radio.entry.js +1 -1
- package/dist/esm/pds-row.entry.js +1 -1
- package/dist/esm/pds-select.entry.js +1 -1
- package/dist/esm/pds-sortable-item.entry.js +1 -1
- package/dist/esm/pds-sortable.entry.js +1 -1
- package/dist/esm/pds-switch.entry.js +1 -1
- package/dist/esm/pds-tab.entry.js +1 -1
- package/dist/esm/pds-table-body.entry.js +1 -1
- package/dist/esm/pds-table-cell.entry.js +1 -1
- package/dist/esm/pds-table-head-cell.entry.js +1 -1
- package/dist/esm/pds-table-head.entry.js +1 -1
- package/dist/esm/pds-table-row.entry.js +1 -1
- package/dist/esm/pds-table.entry.js +1 -1
- package/dist/esm/pds-tabpanel.entry.js +1 -1
- package/dist/esm/pds-tabs.entry.js +1 -1
- package/dist/esm/pds-text.entry.js +1 -1
- package/dist/esm/pds-textarea.entry.js +1 -1
- package/dist/esm/pds-toast.entry.js +1 -1
- package/dist/esm/pds-tooltip.entry.js +1 -1
- package/dist/esm/pine-core.js +3 -3
- package/dist/esm-es5/{index-C_yp7uLt.js → index-CO9kz-Pi.js} +3 -3
- package/dist/esm-es5/index-CO9kz-Pi.js.map +1 -0
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/mock-pds-modal.entry.js +1 -1
- package/dist/esm-es5/pds-accordion.entry.js +1 -1
- package/dist/esm-es5/pds-alert.entry.js +1 -1
- package/dist/esm-es5/pds-avatar.entry.js +1 -1
- package/dist/esm-es5/pds-box.entry.js +1 -1
- package/dist/esm-es5/pds-button.entry.js +1 -1
- package/dist/esm-es5/pds-checkbox.entry.js +1 -1
- package/dist/esm-es5/pds-chip.entry.js +1 -1
- package/dist/esm-es5/pds-combobox.entry.js +2 -2
- package/dist/esm-es5/pds-combobox.entry.js.map +1 -1
- package/dist/esm-es5/pds-container.entry.js +1 -1
- package/dist/esm-es5/pds-copytext.entry.js +1 -1
- package/dist/esm-es5/pds-divider.entry.js +1 -1
- package/dist/esm-es5/pds-dropdown-menu-item.entry.js +1 -1
- package/dist/esm-es5/pds-dropdown-menu-separator.entry.js +1 -1
- package/dist/esm-es5/pds-dropdown-menu.entry.js +1 -1
- package/dist/esm-es5/pds-filter.entry.js +1 -1
- package/dist/esm-es5/pds-filters.entry.js +1 -1
- package/dist/esm-es5/pds-icon.entry.js +1 -1
- package/dist/esm-es5/pds-image.entry.js +1 -1
- package/dist/esm-es5/pds-input.entry.js +1 -1
- package/dist/esm-es5/pds-link.entry.js +1 -1
- package/dist/esm-es5/pds-loader.entry.js +1 -1
- package/dist/esm-es5/pds-modal-content.entry.js +1 -1
- package/dist/esm-es5/pds-modal-footer.entry.js +1 -1
- package/dist/esm-es5/pds-modal-header.entry.js +1 -1
- package/dist/esm-es5/pds-modal.entry.js +1 -1
- package/dist/esm-es5/pds-multiselect.entry.js +1 -1
- package/dist/esm-es5/pds-popover.entry.js +1 -1
- package/dist/esm-es5/pds-progress.entry.js +1 -1
- package/dist/esm-es5/pds-property.entry.js +1 -1
- package/dist/esm-es5/pds-radio-group.entry.js +1 -1
- package/dist/esm-es5/pds-radio.entry.js +1 -1
- package/dist/esm-es5/pds-row.entry.js +1 -1
- package/dist/esm-es5/pds-select.entry.js +1 -1
- package/dist/esm-es5/pds-sortable-item.entry.js +1 -1
- package/dist/esm-es5/pds-sortable.entry.js +1 -1
- package/dist/esm-es5/pds-switch.entry.js +1 -1
- package/dist/esm-es5/pds-tab.entry.js +1 -1
- package/dist/esm-es5/pds-table-body.entry.js +1 -1
- package/dist/esm-es5/pds-table-cell.entry.js +1 -1
- package/dist/esm-es5/pds-table-head-cell.entry.js +1 -1
- package/dist/esm-es5/pds-table-head.entry.js +1 -1
- package/dist/esm-es5/pds-table-row.entry.js +1 -1
- package/dist/esm-es5/pds-table.entry.js +1 -1
- package/dist/esm-es5/pds-tabpanel.entry.js +1 -1
- package/dist/esm-es5/pds-tabs.entry.js +1 -1
- package/dist/esm-es5/pds-text.entry.js +1 -1
- package/dist/esm-es5/pds-textarea.entry.js +1 -1
- package/dist/esm-es5/pds-toast.entry.js +1 -1
- package/dist/esm-es5/pds-tooltip.entry.js +1 -1
- package/dist/esm-es5/pine-core.js +1 -1
- package/dist/pine-core/{p-zU_JmyYX.system.js.map → p--fC0IwVR.system.js.map} +1 -1
- package/dist/pine-core/{p-64c94251.system.entry.js → p-00e487c4.system.entry.js} +2 -2
- package/dist/pine-core/{p-0b370949.entry.js → p-0561744f.entry.js} +2 -2
- package/dist/pine-core/{p-5fcdc321.system.entry.js → p-05771ef2.system.entry.js} +2 -2
- package/dist/pine-core/{p-f418ab61.entry.js → p-06fbdc35.entry.js} +2 -2
- package/dist/pine-core/p-0bf1fee1.entry.js +2 -0
- package/dist/pine-core/{p-d20af63e.system.entry.js → p-0d4b2bbc.system.entry.js} +2 -2
- package/dist/pine-core/{p-1da31e21.system.entry.js → p-0f037132.system.entry.js} +2 -2
- package/dist/pine-core/p-0fefe6ef.entry.js +2 -0
- package/dist/pine-core/{p-Dug3XS8i.system.js.map → p-0mArGKTT.system.js.map} +1 -1
- package/dist/pine-core/p-127a84bf.entry.js +3 -0
- package/dist/pine-core/p-127a84bf.entry.js.map +1 -0
- package/dist/pine-core/{p-19fbf372.system.entry.js → p-128a483e.system.entry.js} +2 -2
- package/dist/pine-core/{p-5ab1ae44.entry.js → p-13821696.entry.js} +2 -2
- package/dist/pine-core/{p-64ee9d79.system.entry.js → p-13a814c0.system.entry.js} +2 -2
- package/dist/pine-core/{p-b3a36a0e.entry.js → p-1768ad5e.entry.js} +2 -2
- package/dist/pine-core/{p-C3FLsHGa.system.js.map → p-1S7sNRrT.system.js.map} +1 -1
- package/dist/pine-core/{p-f8321fa1.system.entry.js → p-1c26a838.system.entry.js} +2 -2
- package/dist/pine-core/{p-6f65a129.system.entry.js → p-1fd52c1b.system.entry.js} +2 -2
- package/dist/pine-core/{p-dcf0eb78.entry.js → p-205d8c56.entry.js} +2 -2
- package/dist/pine-core/{p-ab4e9e84.system.entry.js → p-24f9a03b.system.entry.js} +2 -2
- package/dist/pine-core/{p-9280c9d2.system.entry.js → p-253e2bfd.system.entry.js} +2 -2
- package/dist/pine-core/{p-175f34e1.entry.js → p-26aa3195.entry.js} +2 -2
- package/dist/pine-core/{p-7243f550.system.entry.js → p-2c2d2080.system.entry.js} +2 -2
- package/dist/pine-core/{p-b600e6a7.entry.js → p-2c48e33c.entry.js} +2 -2
- package/dist/pine-core/{p-0370de3e.system.entry.js → p-2c7f3d5e.system.entry.js} +2 -2
- package/dist/pine-core/{p-c19802c2.system.entry.js → p-2ca648d8.system.entry.js} +2 -2
- package/dist/pine-core/{p-4542a964.entry.js → p-31b51eae.entry.js} +2 -2
- package/dist/pine-core/{p-f9a4836b.system.entry.js → p-3524e30c.system.entry.js} +2 -2
- package/dist/pine-core/{p-19c70693.system.entry.js → p-35d9e3c8.system.entry.js} +2 -2
- package/dist/pine-core/{p-6b153192.entry.js → p-3c864e3d.entry.js} +2 -2
- package/dist/pine-core/{p-00024af8.entry.js → p-42d83b1f.entry.js} +2 -2
- package/dist/pine-core/{p-7047497f.entry.js → p-4710c59d.entry.js} +2 -2
- package/dist/pine-core/{p-ae97912f.system.entry.js → p-4768b52b.system.entry.js} +2 -2
- package/dist/pine-core/{p-5b591069.system.entry.js → p-4993f30e.system.entry.js} +2 -2
- package/dist/pine-core/{p-7c23fcf5.entry.js → p-4beb8ae5.entry.js} +2 -2
- package/dist/pine-core/{p-9b3a5038.entry.js → p-4cf4558e.entry.js} +2 -2
- package/dist/pine-core/{p-ee8748ec.system.entry.js → p-4d3122ff.system.entry.js} +2 -2
- package/dist/pine-core/{p-Sf7x15si.system.js.map → p-4d6YziBa.system.js.map} +1 -1
- package/dist/pine-core/{p-d26019b2.entry.js → p-519d44b8.entry.js} +2 -2
- package/dist/pine-core/{p-feb34c51.entry.js → p-54e967ca.entry.js} +2 -2
- package/dist/pine-core/{p-b5e7228a.system.entry.js → p-5552ca6b.system.entry.js} +2 -2
- package/dist/pine-core/{p-VGFWbsWb.system.js.map → p-5MZ-y5Ap.system.js.map} +1 -1
- package/dist/pine-core/{p-3d057491.entry.js → p-5df670e9.entry.js} +3 -3
- package/dist/pine-core/{p-7b1cebb9.entry.js → p-5eb9a3e2.entry.js} +2 -2
- package/dist/pine-core/{p-b175be8e.entry.js → p-61674647.entry.js} +2 -2
- package/dist/pine-core/{p-c36eabe8.system.entry.js → p-617dc902.system.entry.js} +2 -2
- package/dist/pine-core/{p-feb666bb.entry.js → p-61c885c7.entry.js} +2 -2
- package/dist/pine-core/{p-b209eccb.system.entry.js → p-63fd14b1.system.entry.js} +2 -2
- package/dist/pine-core/{p-41af5414.system.entry.js → p-673dd006.system.entry.js} +2 -2
- package/dist/pine-core/{p-893f4679.system.entry.js → p-69221099.system.entry.js} +2 -2
- package/dist/pine-core/{p-469e54ee.system.entry.js → p-6acc2e5b.system.entry.js} +2 -2
- package/dist/pine-core/{p-8911278b.entry.js → p-6ff1d23e.entry.js} +2 -2
- package/dist/pine-core/{p-ed89e732.system.entry.js → p-779c4bd5.system.entry.js} +2 -2
- package/dist/pine-core/{p-88ee0c95.system.entry.js → p-7bc34bce.system.entry.js} +2 -2
- package/dist/pine-core/{p-b25c2d6b.entry.js → p-7d9f7018.entry.js} +2 -2
- package/dist/pine-core/{p-26cdbf99.entry.js → p-8731836c.entry.js} +2 -2
- package/dist/pine-core/p-88c2001b.entry.js +2 -0
- package/dist/pine-core/{p-4b5a97ad.entry.js → p-8a2433ba.entry.js} +2 -2
- package/dist/pine-core/{p-afa702b7.entry.js → p-8b997cb3.entry.js} +2 -2
- package/dist/pine-core/{p-f4eec381.entry.js → p-8d0c1f6d.entry.js} +2 -2
- package/dist/pine-core/{p-45b5fa65.system.entry.js → p-90126a46.system.entry.js} +3 -3
- package/dist/pine-core/{p-78c25934.entry.js → p-932f4860.entry.js} +2 -2
- package/dist/pine-core/{p-540cc2b1.entry.js → p-939ae09f.entry.js} +2 -2
- package/dist/pine-core/{p-690143be.system.entry.js → p-93b379c2.system.entry.js} +2 -2
- package/dist/pine-core/{p-ac2704ac.system.entry.js → p-94fde072.system.entry.js} +2 -2
- package/dist/pine-core/{p-134af443.system.entry.js → p-952b41e5.system.entry.js} +2 -2
- package/dist/pine-core/{p-f34e1d0b.system.entry.js → p-9d7f17a4.system.entry.js} +2 -2
- package/dist/pine-core/{p-5a07cff6.entry.js → p-9e073662.entry.js} +2 -2
- package/dist/pine-core/{p-a4255685.system.entry.js → p-9e8b71ed.system.entry.js} +2 -2
- package/dist/pine-core/{p-B9WMqbbz.system.js.map → p-A6hgZgB9.system.js.map} +1 -1
- package/dist/pine-core/{p-BtSNy3kN.system.js.map → p-AcWjVzMO.system.js.map} +1 -1
- package/dist/pine-core/{p-C8uRauPw.system.js → p-B1bh2Wvv.system.js} +3 -3
- package/dist/pine-core/p-B1bh2Wvv.system.js.map +1 -0
- package/dist/pine-core/{p-VD9N6wlm.system.js.map → p-B2EsHCoA.system.js.map} +1 -1
- package/dist/pine-core/{p-DB5uGIa_.system.js.map → p-B7_7oNQG.system.js.map} +1 -1
- package/dist/pine-core/{p-DLLxnMGt.system.js.map → p-B8BcpYlQ.system.js.map} +1 -1
- package/dist/pine-core/{p-BliJJW1j.system.js.map → p-BD9ysh2r.system.js.map} +1 -1
- package/dist/pine-core/{p-CgWQPL_r.system.js.map → p-BFO0Qv1J.system.js.map} +1 -1
- package/dist/pine-core/{p-B-E5vUXg.system.js.map → p-BHXH-Irt.system.js.map} +1 -1
- package/dist/pine-core/{p-Cmqc3dXq.system.js.map → p-BLil033h.system.js.map} +1 -1
- package/dist/pine-core/{p-B1H_HZwJ.system.js.map → p-BYHypIS4.system.js.map} +1 -1
- package/dist/pine-core/{p-B9XGJbRZ.system.js.map → p-BjaDq65J.system.js.map} +1 -1
- package/dist/pine-core/{p-D-OPCAZp.system.js.map → p-Bm0i20zh.system.js.map} +1 -1
- package/dist/pine-core/{p-CqXA936G.system.js.map → p-BtXGBfVh.system.js.map} +1 -1
- package/dist/pine-core/{p-BGDY9PLj.system.js.map → p-BuXqrZlE.system.js.map} +1 -1
- package/dist/pine-core/{p-U881Jw53.system.js.map → p-BvEsTKJw.system.js.map} +1 -1
- package/dist/pine-core/{p-BCjnOrSN.system.js.map → p-BvlpNhcl.system.js.map} +1 -1
- package/dist/pine-core/{p-B9BjjBgt.system.js.map → p-BwqSEhik.system.js.map} +1 -1
- package/dist/pine-core/{p-Is08Hq3K.system.js.map → p-C08fY97u.system.js.map} +1 -1
- package/dist/pine-core/{p-W82-XbRW.system.js.map → p-C1AMzooU.system.js.map} +1 -1
- package/dist/pine-core/{p-CgnpUgBl.system.js.map → p-C7zvuvWK.system.js.map} +1 -1
- package/dist/pine-core/{p-wAXk8ww_.system.js.map → p-CHUAwdle.system.js.map} +1 -1
- package/dist/pine-core/{p-fpT973d4.system.js.map → p-CIRw0SFV.system.js.map} +1 -1
- package/dist/pine-core/{p-BT8dqDAs.system.js.map → p-CNgeZOJ8.system.js.map} +1 -1
- package/dist/pine-core/{p-C_yp7uLt.js → p-CO9kz-Pi.js} +3 -3
- package/dist/pine-core/p-CO9kz-Pi.js.map +1 -0
- package/dist/pine-core/{p-BJIYR_AY.system.js.map → p-CeUxuw8r.system.js.map} +1 -1
- package/dist/pine-core/{p-B1RhEuhm.system.js.map → p-Cng7Mtub.system.js.map} +1 -1
- package/dist/pine-core/{p-BZb-VHul.system.js.map → p-CoxD4Fzc.system.js.map} +1 -1
- package/dist/pine-core/{p-bHMH0lWb.system.js.map → p-D0Q8TzYd.system.js.map} +1 -1
- package/dist/pine-core/{p-DqLcHuGq.system.js.map → p-D2CTdoEq.system.js.map} +1 -1
- package/dist/pine-core/{p-CGu84YSR.system.js.map → p-D4yK_qVB.system.js.map} +1 -1
- package/dist/pine-core/{p-DU4ZC8FC.system.js.map → p-D504xCQQ.system.js.map} +1 -1
- package/dist/pine-core/{p-kdYEMtne.system.js.map → p-DDgPxucg.system.js.map} +1 -1
- package/dist/pine-core/{p-DqpW04yq.system.js.map → p-DFd5KJNr.system.js.map} +1 -1
- package/dist/pine-core/{p-BMZZBVr0.system.js.map → p-DMxjKSUq.system.js.map} +1 -1
- package/dist/pine-core/{p-eR8WkMT9.system.js.map → p-DUvF_h4G.system.js.map} +1 -1
- package/dist/pine-core/{p-BQQNaMkA.system.js.map → p-DWrLi0lj.system.js.map} +1 -1
- package/dist/pine-core/{p-DA-RbdlV.system.js → p-Djhe2zUv.system.js} +2 -2
- package/dist/pine-core/{p-DA-RbdlV.system.js.map → p-Djhe2zUv.system.js.map} +1 -1
- package/dist/pine-core/{p-CSHbB28_.system.js.map → p-DkENjswB.system.js.map} +1 -1
- package/dist/pine-core/{p-Bl3RALlE.system.js.map → p-DxU4fApL.system.js.map} +1 -1
- package/dist/pine-core/{p-CbV_pmpw.system.js.map → p-IrhpBtZN.system.js.map} +1 -1
- package/dist/pine-core/{p-BkfYC3QG.system.js.map → p-M5aqIQje.system.js.map} +1 -1
- package/dist/pine-core/{p-B01-GY9x.system.js.map → p-MtzjfzAh.system.js.map} +1 -1
- package/dist/pine-core/p-NzmeWArw.system.js.map +1 -0
- package/dist/pine-core/{p-CgohfVVy.system.js.map → p-UYm57tw3.system.js.map} +1 -1
- package/dist/pine-core/{p-BRDfQlTR.system.js.map → p-VWcPIY1a.system.js.map} +1 -1
- package/dist/pine-core/{p-2a7105ce.system.entry.js → p-a12e38aa.system.entry.js} +2 -2
- package/dist/pine-core/{p-6742ac53.system.entry.js → p-a713fedd.system.entry.js} +2 -2
- package/dist/pine-core/{p-428ca3f6.system.entry.js → p-a76a454f.system.entry.js} +2 -2
- package/dist/pine-core/{p-200365ba.system.entry.js → p-aed5cf70.system.entry.js} +2 -2
- package/dist/pine-core/{p-c649b996.system.entry.js → p-b117b00a.system.entry.js} +2 -2
- package/dist/pine-core/{p-fc9981e2.system.entry.js → p-b272656d.system.entry.js} +2 -2
- package/dist/pine-core/{p-ae7f32cd.entry.js → p-b63c7247.entry.js} +2 -2
- package/dist/pine-core/{p-3b32b411.entry.js → p-b8ca7bca.entry.js} +2 -2
- package/dist/pine-core/{p-b49dfc1f.entry.js → p-bb4bb3a7.entry.js} +2 -2
- package/dist/pine-core/{p-a99138df.entry.js → p-bd277581.entry.js} +2 -2
- package/dist/pine-core/{p-4f2ff60a.entry.js → p-be76de9e.entry.js} +2 -2
- package/dist/pine-core/{p-b2e1b6de.system.entry.js → p-bf1ab568.system.entry.js} +2 -2
- package/dist/pine-core/{p-09b3671c.system.entry.js → p-c299c019.system.entry.js} +2 -2
- package/dist/pine-core/{p-db8de76a.system.entry.js → p-c424a27a.system.entry.js} +2 -2
- package/dist/pine-core/{p-c16dc54e.entry.js → p-c54334bf.entry.js} +2 -2
- package/dist/pine-core/p-c5dc1e2d.system.entry.js +2 -0
- package/dist/pine-core/{p-5eba0eed.entry.js → p-c5f4d4c0.entry.js} +2 -2
- package/dist/pine-core/{p-ee66ed28.system.entry.js → p-c7246fe4.system.entry.js} +2 -2
- package/dist/pine-core/{p-6a585d38.system.entry.js → p-c746c9ad.system.entry.js} +2 -2
- package/dist/pine-core/{p-8d887560.entry.js → p-c7cab4ca.entry.js} +2 -2
- package/dist/pine-core/{p-ce5bba8d.system.entry.js → p-cb733c9c.system.entry.js} +2 -2
- package/dist/pine-core/{p-4bcdb26e.system.entry.js → p-cea4bfaa.system.entry.js} +2 -2
- package/dist/pine-core/{p-356aea4b.entry.js → p-d90f7fe4.entry.js} +2 -2
- package/dist/pine-core/{p-348c17bf.entry.js → p-da50a223.entry.js} +2 -2
- package/dist/pine-core/{p-7d46955b.entry.js → p-dc724dee.entry.js} +2 -2
- package/dist/pine-core/{p-097a9e35.entry.js → p-dd9888e9.entry.js} +2 -2
- package/dist/pine-core/{p-9b71468c.entry.js → p-e0862ab5.entry.js} +2 -2
- package/dist/pine-core/{p-d8f68dae.entry.js → p-e7e166f2.entry.js} +2 -2
- package/dist/pine-core/p-ea94b002.system.entry.js +4 -0
- package/dist/pine-core/p-ea94b002.system.entry.js.map +1 -0
- package/dist/pine-core/{p-65000aac.system.entry.js → p-ebf96abc.system.entry.js} +2 -2
- package/dist/pine-core/{p-aaba036c.entry.js → p-ec974e1d.entry.js} +2 -2
- package/dist/pine-core/{p-e414be23.system.entry.js → p-f30bde36.system.entry.js} +2 -2
- package/dist/pine-core/{p-19c80180.system.entry.js → p-f4662c9d.system.entry.js} +2 -2
- package/dist/pine-core/{p-8771e85a.entry.js → p-f924994c.entry.js} +2 -2
- package/dist/pine-core/{p-53698627.entry.js → p-fbd8a4ac.entry.js} +2 -2
- package/dist/pine-core/{p-3e6ca680.entry.js → p-fd6e7155.entry.js} +2 -2
- package/dist/pine-core/{p-DXfFlVU2.system.js.map → p-iOyU21aP.system.js.map} +1 -1
- package/dist/pine-core/{p-pj5WZS7o.system.js.map → p-sB8ZB68H.system.js.map} +1 -1
- package/dist/pine-core/{p-CuDPU9tR.system.js.map → p-xKyEDmi0.system.js.map} +1 -1
- package/dist/pine-core/pds-combobox.entry.esm.js.map +1 -1
- package/dist/pine-core/pine-core.css +1 -1
- package/dist/pine-core/pine-core.esm.js +1 -1
- package/dist/pine-core/pine-core.js +1 -1
- package/dist/types/components/pds-combobox/pds-combobox.d.ts +50 -0
- package/dist/types/components.d.ts +12 -2
- package/dist/vscode.html-data.json +16 -1
- package/hydrate/index.js +272 -55
- package/hydrate/index.mjs +272 -55
- package/package.json +2 -2
- package/dist/cjs/index-Cc_o_7az.js.map +0 -1
- package/dist/esm/index-C_yp7uLt.js.map +0 -1
- package/dist/esm-es5/index-C_yp7uLt.js.map +0 -1
- package/dist/pine-core/p-1208f3f4.entry.js +0 -3
- package/dist/pine-core/p-1208f3f4.entry.js.map +0 -1
- package/dist/pine-core/p-16c99374.entry.js +0 -2
- package/dist/pine-core/p-3321448e.system.entry.js +0 -4
- package/dist/pine-core/p-3321448e.system.entry.js.map +0 -1
- package/dist/pine-core/p-5c7819b2.system.entry.js +0 -2
- package/dist/pine-core/p-8ab0fe54.entry.js +0 -2
- package/dist/pine-core/p-99343ac6.entry.js +0 -2
- package/dist/pine-core/p-C8uRauPw.system.js.map +0 -1
- package/dist/pine-core/p-C_yp7uLt.js.map +0 -1
- package/dist/pine-core/p-D0ED3Slj.system.js.map +0 -1
- /package/dist/pine-core/{p-64c94251.system.entry.js.map → p-00e487c4.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-0b370949.entry.js.map → p-0561744f.entry.js.map} +0 -0
- /package/dist/pine-core/{p-5fcdc321.system.entry.js.map → p-05771ef2.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-f418ab61.entry.js.map → p-06fbdc35.entry.js.map} +0 -0
- /package/dist/pine-core/{p-8ab0fe54.entry.js.map → p-0bf1fee1.entry.js.map} +0 -0
- /package/dist/pine-core/{p-d20af63e.system.entry.js.map → p-0d4b2bbc.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-1da31e21.system.entry.js.map → p-0f037132.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-16c99374.entry.js.map → p-0fefe6ef.entry.js.map} +0 -0
- /package/dist/pine-core/{p-19fbf372.system.entry.js.map → p-128a483e.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-5ab1ae44.entry.js.map → p-13821696.entry.js.map} +0 -0
- /package/dist/pine-core/{p-64ee9d79.system.entry.js.map → p-13a814c0.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-b3a36a0e.entry.js.map → p-1768ad5e.entry.js.map} +0 -0
- /package/dist/pine-core/{p-f8321fa1.system.entry.js.map → p-1c26a838.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-6f65a129.system.entry.js.map → p-1fd52c1b.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-dcf0eb78.entry.js.map → p-205d8c56.entry.js.map} +0 -0
- /package/dist/pine-core/{p-ab4e9e84.system.entry.js.map → p-24f9a03b.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-9280c9d2.system.entry.js.map → p-253e2bfd.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-175f34e1.entry.js.map → p-26aa3195.entry.js.map} +0 -0
- /package/dist/pine-core/{p-7243f550.system.entry.js.map → p-2c2d2080.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-b600e6a7.entry.js.map → p-2c48e33c.entry.js.map} +0 -0
- /package/dist/pine-core/{p-0370de3e.system.entry.js.map → p-2c7f3d5e.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-c19802c2.system.entry.js.map → p-2ca648d8.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-4542a964.entry.js.map → p-31b51eae.entry.js.map} +0 -0
- /package/dist/pine-core/{p-f9a4836b.system.entry.js.map → p-3524e30c.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-19c70693.system.entry.js.map → p-35d9e3c8.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-6b153192.entry.js.map → p-3c864e3d.entry.js.map} +0 -0
- /package/dist/pine-core/{p-00024af8.entry.js.map → p-42d83b1f.entry.js.map} +0 -0
- /package/dist/pine-core/{p-7047497f.entry.js.map → p-4710c59d.entry.js.map} +0 -0
- /package/dist/pine-core/{p-ae97912f.system.entry.js.map → p-4768b52b.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-5b591069.system.entry.js.map → p-4993f30e.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-7c23fcf5.entry.js.map → p-4beb8ae5.entry.js.map} +0 -0
- /package/dist/pine-core/{p-9b3a5038.entry.js.map → p-4cf4558e.entry.js.map} +0 -0
- /package/dist/pine-core/{p-ee8748ec.system.entry.js.map → p-4d3122ff.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-d26019b2.entry.js.map → p-519d44b8.entry.js.map} +0 -0
- /package/dist/pine-core/{p-feb34c51.entry.js.map → p-54e967ca.entry.js.map} +0 -0
- /package/dist/pine-core/{p-b5e7228a.system.entry.js.map → p-5552ca6b.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-3d057491.entry.js.map → p-5df670e9.entry.js.map} +0 -0
- /package/dist/pine-core/{p-7b1cebb9.entry.js.map → p-5eb9a3e2.entry.js.map} +0 -0
- /package/dist/pine-core/{p-b175be8e.entry.js.map → p-61674647.entry.js.map} +0 -0
- /package/dist/pine-core/{p-c36eabe8.system.entry.js.map → p-617dc902.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-feb666bb.entry.js.map → p-61c885c7.entry.js.map} +0 -0
- /package/dist/pine-core/{p-b209eccb.system.entry.js.map → p-63fd14b1.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-41af5414.system.entry.js.map → p-673dd006.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-893f4679.system.entry.js.map → p-69221099.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-469e54ee.system.entry.js.map → p-6acc2e5b.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-8911278b.entry.js.map → p-6ff1d23e.entry.js.map} +0 -0
- /package/dist/pine-core/{p-ed89e732.system.entry.js.map → p-779c4bd5.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-88ee0c95.system.entry.js.map → p-7bc34bce.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-b25c2d6b.entry.js.map → p-7d9f7018.entry.js.map} +0 -0
- /package/dist/pine-core/{p-26cdbf99.entry.js.map → p-8731836c.entry.js.map} +0 -0
- /package/dist/pine-core/{p-99343ac6.entry.js.map → p-88c2001b.entry.js.map} +0 -0
- /package/dist/pine-core/{p-4b5a97ad.entry.js.map → p-8a2433ba.entry.js.map} +0 -0
- /package/dist/pine-core/{p-afa702b7.entry.js.map → p-8b997cb3.entry.js.map} +0 -0
- /package/dist/pine-core/{p-f4eec381.entry.js.map → p-8d0c1f6d.entry.js.map} +0 -0
- /package/dist/pine-core/{p-45b5fa65.system.entry.js.map → p-90126a46.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-78c25934.entry.js.map → p-932f4860.entry.js.map} +0 -0
- /package/dist/pine-core/{p-540cc2b1.entry.js.map → p-939ae09f.entry.js.map} +0 -0
- /package/dist/pine-core/{p-690143be.system.entry.js.map → p-93b379c2.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-ac2704ac.system.entry.js.map → p-94fde072.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-134af443.system.entry.js.map → p-952b41e5.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-f34e1d0b.system.entry.js.map → p-9d7f17a4.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-5a07cff6.entry.js.map → p-9e073662.entry.js.map} +0 -0
- /package/dist/pine-core/{p-a4255685.system.entry.js.map → p-9e8b71ed.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-2a7105ce.system.entry.js.map → p-a12e38aa.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-6742ac53.system.entry.js.map → p-a713fedd.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-428ca3f6.system.entry.js.map → p-a76a454f.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-200365ba.system.entry.js.map → p-aed5cf70.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-c649b996.system.entry.js.map → p-b117b00a.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-fc9981e2.system.entry.js.map → p-b272656d.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-ae7f32cd.entry.js.map → p-b63c7247.entry.js.map} +0 -0
- /package/dist/pine-core/{p-3b32b411.entry.js.map → p-b8ca7bca.entry.js.map} +0 -0
- /package/dist/pine-core/{p-b49dfc1f.entry.js.map → p-bb4bb3a7.entry.js.map} +0 -0
- /package/dist/pine-core/{p-a99138df.entry.js.map → p-bd277581.entry.js.map} +0 -0
- /package/dist/pine-core/{p-4f2ff60a.entry.js.map → p-be76de9e.entry.js.map} +0 -0
- /package/dist/pine-core/{p-b2e1b6de.system.entry.js.map → p-bf1ab568.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-09b3671c.system.entry.js.map → p-c299c019.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-db8de76a.system.entry.js.map → p-c424a27a.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-c16dc54e.entry.js.map → p-c54334bf.entry.js.map} +0 -0
- /package/dist/pine-core/{p-5c7819b2.system.entry.js.map → p-c5dc1e2d.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-5eba0eed.entry.js.map → p-c5f4d4c0.entry.js.map} +0 -0
- /package/dist/pine-core/{p-ee66ed28.system.entry.js.map → p-c7246fe4.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-6a585d38.system.entry.js.map → p-c746c9ad.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-8d887560.entry.js.map → p-c7cab4ca.entry.js.map} +0 -0
- /package/dist/pine-core/{p-ce5bba8d.system.entry.js.map → p-cb733c9c.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-4bcdb26e.system.entry.js.map → p-cea4bfaa.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-356aea4b.entry.js.map → p-d90f7fe4.entry.js.map} +0 -0
- /package/dist/pine-core/{p-348c17bf.entry.js.map → p-da50a223.entry.js.map} +0 -0
- /package/dist/pine-core/{p-7d46955b.entry.js.map → p-dc724dee.entry.js.map} +0 -0
- /package/dist/pine-core/{p-097a9e35.entry.js.map → p-dd9888e9.entry.js.map} +0 -0
- /package/dist/pine-core/{p-9b71468c.entry.js.map → p-e0862ab5.entry.js.map} +0 -0
- /package/dist/pine-core/{p-d8f68dae.entry.js.map → p-e7e166f2.entry.js.map} +0 -0
- /package/dist/pine-core/{p-65000aac.system.entry.js.map → p-ebf96abc.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-aaba036c.entry.js.map → p-ec974e1d.entry.js.map} +0 -0
- /package/dist/pine-core/{p-e414be23.system.entry.js.map → p-f30bde36.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-19c80180.system.entry.js.map → p-f4662c9d.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-8771e85a.entry.js.map → p-f924994c.entry.js.map} +0 -0
- /package/dist/pine-core/{p-53698627.entry.js.map → p-fbd8a4ac.entry.js.map} +0 -0
- /package/dist/pine-core/{p-3e6ca680.entry.js.map → p-fd6e7155.entry.js.map} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { h, Host } from "@stencil/core";
|
|
2
2
|
import { isSpecTest } from "../../utils/form";
|
|
3
|
-
import { computePosition, flip, offset, shift } from "@floating-ui/dom";
|
|
3
|
+
import { autoUpdate, computePosition, flip, offset, shift } from "@floating-ui/dom";
|
|
4
4
|
import { debounceEvent } from "../../utils/utils";
|
|
5
5
|
import DOMPurify from "dompurify";
|
|
6
6
|
/**
|
|
@@ -38,6 +38,18 @@ export class PdsCombobox {
|
|
|
38
38
|
* @default '236px'
|
|
39
39
|
*/
|
|
40
40
|
this.dropdownWidth = '236px';
|
|
41
|
+
/**
|
|
42
|
+
* Where to mount the dropdown listbox (`host` or `body`, sometimes called “append to body”).
|
|
43
|
+
* Use `body` inside scrollable containers (for example modals) so the list is not clipped by
|
|
44
|
+
* `overflow: hidden` ancestors. The portal is appended to the nearest `<dialog>` when present
|
|
45
|
+
* (including `pds-modal` / `showModal()`), using a composed ascent so shadow DOM and slot
|
|
46
|
+
* boundaries do not hide the dialog from discovery; otherwise it is appended to `document.body`.
|
|
47
|
+
* Keyboard focus remains on the trigger via
|
|
48
|
+
* `aria-activedescendant` so modal focus traps continue to work. Custom `empty` and `loading`
|
|
49
|
+
* slots are not supported when `body` is used; the default empty and loading content is shown instead.
|
|
50
|
+
* @default 'host'
|
|
51
|
+
*/
|
|
52
|
+
this.dropdownMount = 'host';
|
|
41
53
|
/**
|
|
42
54
|
* Visually hides the label text for instances where only the combobox should be displayed.
|
|
43
55
|
* The visible `<label>` is omitted (same pattern as `pds-select`) so label spacing does not reserve layout;
|
|
@@ -46,6 +58,8 @@ export class PdsCombobox {
|
|
|
46
58
|
this.hideLabel = false;
|
|
47
59
|
/**
|
|
48
60
|
* Determines the combobox mode: 'filter' (filter options as you type) or 'select-only' (show all options).
|
|
61
|
+
* In filter mode, reopening the menu while the input still shows the label of the selected option temporarily lists
|
|
62
|
+
* all options until you type (so you can switch to a different choice without clearing the field first).
|
|
49
63
|
* @default 'filter'
|
|
50
64
|
*/
|
|
51
65
|
this.mode = 'filter';
|
|
@@ -147,9 +161,18 @@ export class PdsCombobox {
|
|
|
147
161
|
this.hasMore = false;
|
|
148
162
|
this.optionEls = [];
|
|
149
163
|
this.allItems = [];
|
|
164
|
+
this.portalEl = null;
|
|
165
|
+
this.bodyPortalAutoUpdateActive = false;
|
|
150
166
|
this.isUpdatingFromSelection = false;
|
|
167
|
+
/**
|
|
168
|
+
* In filter mode, after choosing an option the input still shows the label and would
|
|
169
|
+
* otherwise filter the list to matching substrings only. While this flag is true,
|
|
170
|
+
* the list shows every option until the user types (then normal filtering applies).
|
|
171
|
+
*/
|
|
172
|
+
this.expandFilterListWhileOpen = false;
|
|
151
173
|
this.handleInput = (e) => {
|
|
152
174
|
const target = e.target;
|
|
175
|
+
this.clearExpandFilterList();
|
|
153
176
|
this.displayText = target.value;
|
|
154
177
|
this.isOpen = true;
|
|
155
178
|
this.filterOptions();
|
|
@@ -165,19 +188,26 @@ export class PdsCombobox {
|
|
|
165
188
|
// Open dropdown when input is clicked (but not when tabbed into)
|
|
166
189
|
if (!this.isOpen) {
|
|
167
190
|
this.isOpen = true;
|
|
191
|
+
this.prepareExpandFilterListOnOpen();
|
|
168
192
|
this.filterOptions();
|
|
169
193
|
// Trigger initial fetch if async and no options loaded yet
|
|
170
194
|
if (this.asyncUrl && this.internalOptions.length === 0) {
|
|
171
195
|
this.debouncedFetchAsyncOptions(this.displayText, 1);
|
|
172
196
|
}
|
|
173
197
|
this.setInitialHighlightedIndex();
|
|
174
|
-
setTimeout(() =>
|
|
198
|
+
setTimeout(() => {
|
|
199
|
+
this.openDropdownPositioning();
|
|
200
|
+
if (this.trigger === 'input' && this.expandFilterListWhileOpen && this.inputEl) {
|
|
201
|
+
this.inputEl.select();
|
|
202
|
+
}
|
|
203
|
+
}, 0);
|
|
175
204
|
}
|
|
176
205
|
};
|
|
177
206
|
this.handleKeyDown = (e) => {
|
|
178
207
|
if (!this.isOpen && (e.key === 'ArrowDown' || e.key === 'ArrowUp' || (e.altKey && e.key === 'ArrowDown'))) {
|
|
179
208
|
e.preventDefault();
|
|
180
209
|
this.isOpen = true;
|
|
210
|
+
this.prepareExpandFilterListOnOpen();
|
|
181
211
|
this.filterOptions();
|
|
182
212
|
// Set highlighted index immediately for testing
|
|
183
213
|
this.setInitialHighlightedIndex();
|
|
@@ -270,6 +300,7 @@ export class PdsCombobox {
|
|
|
270
300
|
e.preventDefault();
|
|
271
301
|
this.isOpen = false;
|
|
272
302
|
this.highlightedIndex = -1;
|
|
303
|
+
this.clearExpandFilterList();
|
|
273
304
|
this.isArrowKeyNavigationMode = false; // Reset arrow-key navigation mode
|
|
274
305
|
this.restoreFocusToTrigger();
|
|
275
306
|
break;
|
|
@@ -277,6 +308,7 @@ export class PdsCombobox {
|
|
|
277
308
|
// Allow normal tab behavior to close dropdown and move focus
|
|
278
309
|
this.isOpen = false;
|
|
279
310
|
this.highlightedIndex = -1;
|
|
311
|
+
this.clearExpandFilterList();
|
|
280
312
|
this.isArrowKeyNavigationMode = false; // Reset arrow-key navigation mode
|
|
281
313
|
break;
|
|
282
314
|
}
|
|
@@ -308,6 +340,7 @@ export class PdsCombobox {
|
|
|
308
340
|
this.onButtonTriggerClick = () => {
|
|
309
341
|
this.isOpen = !this.isOpen;
|
|
310
342
|
if (this.isOpen) {
|
|
343
|
+
this.prepareExpandFilterListOnOpen();
|
|
311
344
|
this.filterOptions();
|
|
312
345
|
// Trigger initial fetch if async and no options loaded yet
|
|
313
346
|
if (this.asyncUrl && this.internalOptions.length === 0) {
|
|
@@ -321,6 +354,7 @@ export class PdsCombobox {
|
|
|
321
354
|
}
|
|
322
355
|
else {
|
|
323
356
|
// Reset navigation mode when closing
|
|
357
|
+
this.clearExpandFilterList();
|
|
324
358
|
this.isArrowKeyNavigationMode = false;
|
|
325
359
|
}
|
|
326
360
|
};
|
|
@@ -330,6 +364,7 @@ export class PdsCombobox {
|
|
|
330
364
|
e.preventDefault();
|
|
331
365
|
e.stopPropagation(); // Prevent the event from bubbling and triggering click
|
|
332
366
|
this.isOpen = true;
|
|
367
|
+
this.prepareExpandFilterListOnOpen();
|
|
333
368
|
this.filterOptions();
|
|
334
369
|
// Set highlighted index immediately
|
|
335
370
|
this.setInitialHighlightedIndex();
|
|
@@ -344,6 +379,7 @@ export class PdsCombobox {
|
|
|
344
379
|
if (this.isOpen) {
|
|
345
380
|
this.isOpen = false;
|
|
346
381
|
this.highlightedIndex = -1;
|
|
382
|
+
this.clearExpandFilterList();
|
|
347
383
|
this.updateAriaActiveDescendant(); // Clear aria-activedescendant
|
|
348
384
|
this.restoreFocusToTrigger();
|
|
349
385
|
}
|
|
@@ -362,15 +398,16 @@ export class PdsCombobox {
|
|
|
362
398
|
};
|
|
363
399
|
// Close dropdown when focus leaves the combobox
|
|
364
400
|
this.onComboboxFocusOut = (event) => {
|
|
365
|
-
var _a;
|
|
401
|
+
var _a, _b;
|
|
366
402
|
const relatedTarget = event.relatedTarget;
|
|
367
|
-
|
|
368
|
-
|
|
403
|
+
const isRelatedTargetInListbox = relatedTarget &&
|
|
404
|
+
(((_a = this.listboxEl) === null || _a === void 0 ? void 0 : _a.contains(relatedTarget)) || ((_b = this.portalEl) === null || _b === void 0 ? void 0 : _b.contains(relatedTarget)));
|
|
369
405
|
const isRelatedTargetInCombobox = this.el.contains(relatedTarget);
|
|
370
406
|
// Don't close if focus is moving to an option in the listbox or staying within the combobox
|
|
371
407
|
if (!isRelatedTargetInCombobox && !isRelatedTargetInListbox) {
|
|
372
408
|
this.isOpen = false;
|
|
373
409
|
this.highlightedIndex = -1;
|
|
410
|
+
this.clearExpandFilterList();
|
|
374
411
|
this.isArrowKeyNavigationMode = false; // Reset arrow-key navigation mode
|
|
375
412
|
this.updateAriaActiveDescendant(); // Clear aria-activedescendant
|
|
376
413
|
// If there's a selected option but the display text doesn't match, restore the selected option's display text
|
|
@@ -424,8 +461,57 @@ export class PdsCombobox {
|
|
|
424
461
|
}
|
|
425
462
|
disconnectedCallback() {
|
|
426
463
|
var _a;
|
|
464
|
+
if (this.deferredPortalTeardownId !== undefined) {
|
|
465
|
+
clearTimeout(this.deferredPortalTeardownId);
|
|
466
|
+
this.deferredPortalTeardownId = undefined;
|
|
467
|
+
}
|
|
427
468
|
(_a = this.observer) === null || _a === void 0 ? void 0 : _a.disconnect();
|
|
428
469
|
this.clearAsyncFetchState();
|
|
470
|
+
this.removeBodyPortal();
|
|
471
|
+
}
|
|
472
|
+
componentDidRender() {
|
|
473
|
+
if (this.usesBodyPortal && this.isOpen) {
|
|
474
|
+
this.syncBodyPortal();
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
isOpenChanged(isOpen) {
|
|
478
|
+
if (isOpen && this.deferredPortalTeardownId !== undefined) {
|
|
479
|
+
clearTimeout(this.deferredPortalTeardownId);
|
|
480
|
+
this.deferredPortalTeardownId = undefined;
|
|
481
|
+
}
|
|
482
|
+
if (isOpen && this.usesBodyPortal) {
|
|
483
|
+
// Rapid reopen can cancel deferred teardown while the portal still holds the previous
|
|
484
|
+
// listbox node; clear portal state before the next render attaches the new listbox, and
|
|
485
|
+
// reset Floating UI autoUpdate bookkeeping.
|
|
486
|
+
this.removeBodyPortal();
|
|
487
|
+
}
|
|
488
|
+
if (!isOpen && this.usesBodyPortal) {
|
|
489
|
+
if (this.deferredPortalTeardownId !== undefined) {
|
|
490
|
+
clearTimeout(this.deferredPortalTeardownId);
|
|
491
|
+
}
|
|
492
|
+
this.deferredPortalTeardownId = setTimeout(() => {
|
|
493
|
+
this.deferredPortalTeardownId = undefined;
|
|
494
|
+
if (!this.el.isConnected) {
|
|
495
|
+
return;
|
|
496
|
+
}
|
|
497
|
+
if (!this.isOpen) {
|
|
498
|
+
this.removeBodyPortal();
|
|
499
|
+
}
|
|
500
|
+
}, 0);
|
|
501
|
+
return;
|
|
502
|
+
}
|
|
503
|
+
if (!isOpen) {
|
|
504
|
+
this.removeBodyPortal();
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
get usesBodyPortal() {
|
|
508
|
+
return this.dropdownMount === 'body';
|
|
509
|
+
}
|
|
510
|
+
get listboxId() {
|
|
511
|
+
return `${this.componentId}-listbox`;
|
|
512
|
+
}
|
|
513
|
+
optionDomId(optionIndex) {
|
|
514
|
+
return `${this.componentId}-option-${optionIndex}`;
|
|
429
515
|
}
|
|
430
516
|
setupDebounce() {
|
|
431
517
|
const { pdsComboboxSearch, debounce, originalSearchEmitter } = this;
|
|
@@ -768,7 +854,7 @@ export class PdsCombobox {
|
|
|
768
854
|
if (this.allItems.length === 0 && this.optionEls.length > 0) {
|
|
769
855
|
this.allItems = [...this.optionEls];
|
|
770
856
|
}
|
|
771
|
-
if (this.mode === 'select-only') {
|
|
857
|
+
if (this.mode === 'select-only' || this.expandFilterListWhileOpen) {
|
|
772
858
|
this.filteredItems = [...this.allItems];
|
|
773
859
|
}
|
|
774
860
|
else {
|
|
@@ -809,28 +895,153 @@ export class PdsCombobox {
|
|
|
809
895
|
}
|
|
810
896
|
this.highlightedIndex = -1;
|
|
811
897
|
}
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
898
|
+
clearExpandFilterList() {
|
|
899
|
+
this.expandFilterListWhileOpen = false;
|
|
900
|
+
}
|
|
901
|
+
/**
|
|
902
|
+
* When reopening the dropdown in filter mode with the input still showing the
|
|
903
|
+
* committed selection label, show the full option list until the user edits the query.
|
|
904
|
+
*/
|
|
905
|
+
prepareExpandFilterListOnOpen() {
|
|
906
|
+
if (this.mode === 'filter' &&
|
|
907
|
+
this.selectedOption &&
|
|
908
|
+
this.displayText === this.getOptionLabel(this.selectedOption)) {
|
|
909
|
+
this.expandFilterListWhileOpen = true;
|
|
910
|
+
}
|
|
911
|
+
else {
|
|
912
|
+
this.expandFilterListWhileOpen = false;
|
|
913
|
+
}
|
|
914
|
+
}
|
|
915
|
+
positionDropdown() {
|
|
916
|
+
if (!this.triggerEl || !this.listboxEl) {
|
|
917
|
+
return;
|
|
918
|
+
}
|
|
919
|
+
const strategy = this.usesBodyPortal ? 'fixed' : 'absolute';
|
|
920
|
+
const zIndex = this.usesBodyPortal
|
|
921
|
+
? 'var(--pine-z-index-priority)'
|
|
922
|
+
: 'var(--pine-z-index-raised)';
|
|
923
|
+
this.listboxEl.style.width = this.dropdownWidth;
|
|
924
|
+
if (this.maxHeight) {
|
|
925
|
+
this.listboxEl.style.maxHeight = this.maxHeight;
|
|
926
|
+
this.listboxEl.style.overflowY = 'auto';
|
|
927
|
+
}
|
|
928
|
+
this.listboxEl.offsetHeight;
|
|
929
|
+
return computePosition(this.triggerEl, this.listboxEl, {
|
|
930
|
+
placement: this.dropdownPlacement,
|
|
931
|
+
strategy,
|
|
932
|
+
middleware: [offset(12), flip(), shift({ padding: 5 })],
|
|
933
|
+
}).then(({ x, y }) => {
|
|
934
|
+
if (!this.listboxEl) {
|
|
935
|
+
return;
|
|
819
936
|
}
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
middleware: [offset(12), flip(), shift({ padding: 5 })],
|
|
826
|
-
}).then(({ x, y }) => {
|
|
827
|
-
Object.assign(this.listboxEl.style, {
|
|
828
|
-
left: `${x}px`,
|
|
829
|
-
top: `${y}px`,
|
|
830
|
-
position: 'absolute',
|
|
831
|
-
zIndex: 'var(--pine-z-index-raised)',
|
|
832
|
-
});
|
|
937
|
+
Object.assign(this.listboxEl.style, {
|
|
938
|
+
left: `${x}px`,
|
|
939
|
+
top: `${y}px`,
|
|
940
|
+
position: strategy,
|
|
941
|
+
zIndex,
|
|
833
942
|
});
|
|
943
|
+
});
|
|
944
|
+
}
|
|
945
|
+
openDropdownPositioning() {
|
|
946
|
+
if (!this.triggerEl || !this.listboxEl) {
|
|
947
|
+
return;
|
|
948
|
+
}
|
|
949
|
+
void this.positionDropdown();
|
|
950
|
+
}
|
|
951
|
+
startBodyPortalAutoUpdate() {
|
|
952
|
+
if (this.bodyPortalAutoUpdateActive || !this.triggerEl || !this.listboxEl) {
|
|
953
|
+
return;
|
|
954
|
+
}
|
|
955
|
+
this.cleanupPositionAutoUpdate = autoUpdate(this.triggerEl, this.listboxEl, () => {
|
|
956
|
+
void this.positionDropdown();
|
|
957
|
+
});
|
|
958
|
+
this.bodyPortalAutoUpdateActive = true;
|
|
959
|
+
}
|
|
960
|
+
stopBodyPortalAutoUpdate() {
|
|
961
|
+
var _a;
|
|
962
|
+
(_a = this.cleanupPositionAutoUpdate) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
963
|
+
this.cleanupPositionAutoUpdate = undefined;
|
|
964
|
+
this.bodyPortalAutoUpdateActive = false;
|
|
965
|
+
}
|
|
966
|
+
getPortalMountRoot() {
|
|
967
|
+
var _a;
|
|
968
|
+
return (_a = this.findNearestDialogForPortal(this.el)) !== null && _a !== void 0 ? _a : document.body;
|
|
969
|
+
}
|
|
970
|
+
/**
|
|
971
|
+
* Resolves the native `<dialog>` to host the portaled listbox so it stays in the same top layer
|
|
972
|
+
* as `showModal()`. `Element.closest('dialog')` stops at shadow boundaries and can miss a
|
|
973
|
+
* dialog that only wraps slotted content; this walks assigned slots and shadow hosts, and
|
|
974
|
+
* falls back to `pds-modal`'s dialog when the combobox lives inside that subtree.
|
|
975
|
+
*/
|
|
976
|
+
findNearestDialogForPortal(from) {
|
|
977
|
+
const seen = new Set();
|
|
978
|
+
let current = from;
|
|
979
|
+
while (current && !seen.has(current)) {
|
|
980
|
+
seen.add(current);
|
|
981
|
+
if (current.nodeType === Node.ELEMENT_NODE && current.localName === 'dialog') {
|
|
982
|
+
return current;
|
|
983
|
+
}
|
|
984
|
+
if (current.nodeType === Node.ELEMENT_NODE) {
|
|
985
|
+
const assigned = current.assignedSlot;
|
|
986
|
+
if (assigned) {
|
|
987
|
+
current = assigned;
|
|
988
|
+
continue;
|
|
989
|
+
}
|
|
990
|
+
}
|
|
991
|
+
const parent = current.parentNode;
|
|
992
|
+
if (parent) {
|
|
993
|
+
current = parent instanceof ShadowRoot ? parent.host : parent;
|
|
994
|
+
continue;
|
|
995
|
+
}
|
|
996
|
+
break;
|
|
997
|
+
}
|
|
998
|
+
const pineModal = from.closest('pds-modal');
|
|
999
|
+
if (pineModal) {
|
|
1000
|
+
const pineDialog = pineModal.querySelector('dialog');
|
|
1001
|
+
if (pineDialog) {
|
|
1002
|
+
return pineDialog;
|
|
1003
|
+
}
|
|
1004
|
+
}
|
|
1005
|
+
return null;
|
|
1006
|
+
}
|
|
1007
|
+
ensureBodyPortal() {
|
|
1008
|
+
if (this.portalEl !== null) {
|
|
1009
|
+
const target = this.getPortalMountRoot();
|
|
1010
|
+
if (this.portalEl.parentElement !== target) {
|
|
1011
|
+
target.appendChild(this.portalEl);
|
|
1012
|
+
}
|
|
1013
|
+
return this.portalEl;
|
|
1014
|
+
}
|
|
1015
|
+
this.portalEl = document.createElement('div');
|
|
1016
|
+
this.portalEl.className = 'pds-combobox-dropdown-portal';
|
|
1017
|
+
this.getPortalMountRoot().appendChild(this.portalEl);
|
|
1018
|
+
return this.portalEl;
|
|
1019
|
+
}
|
|
1020
|
+
syncBodyPortal() {
|
|
1021
|
+
if (!this.listboxEl) {
|
|
1022
|
+
return;
|
|
1023
|
+
}
|
|
1024
|
+
const portal = this.ensureBodyPortal();
|
|
1025
|
+
for (const stale of Array.from(portal.children)) {
|
|
1026
|
+
if (stale !== this.listboxEl) {
|
|
1027
|
+
stale.remove();
|
|
1028
|
+
}
|
|
1029
|
+
}
|
|
1030
|
+
if (this.listboxEl.parentElement !== portal) {
|
|
1031
|
+
portal.appendChild(this.listboxEl);
|
|
1032
|
+
void this.positionDropdown();
|
|
1033
|
+
this.startBodyPortalAutoUpdate();
|
|
1034
|
+
}
|
|
1035
|
+
}
|
|
1036
|
+
removeBodyPortal() {
|
|
1037
|
+
var _a;
|
|
1038
|
+
this.stopBodyPortalAutoUpdate();
|
|
1039
|
+
if ((_a = this.portalEl) === null || _a === void 0 ? void 0 : _a.parentNode) {
|
|
1040
|
+
this.portalEl.parentNode.removeChild(this.portalEl);
|
|
1041
|
+
}
|
|
1042
|
+
this.portalEl = null;
|
|
1043
|
+
if (this.listboxEl && !this.listboxEl.isConnected) {
|
|
1044
|
+
this.listboxEl = undefined;
|
|
834
1045
|
}
|
|
835
1046
|
}
|
|
836
1047
|
/**
|
|
@@ -887,30 +1098,32 @@ export class PdsCombobox {
|
|
|
887
1098
|
* Focus management helper - actually focuses the first option when opened via arrow keys
|
|
888
1099
|
*/
|
|
889
1100
|
focusFirstOptionForArrowKeys() {
|
|
890
|
-
if (this.isOpen) {
|
|
891
|
-
|
|
1101
|
+
if (!this.isOpen) {
|
|
1102
|
+
return;
|
|
1103
|
+
}
|
|
1104
|
+
// Body-mounted listboxes stay outside modal focus traps; keep focus on the trigger.
|
|
1105
|
+
if (this.usesBodyPortal) {
|
|
892
1106
|
this.isArrowKeyNavigationMode = true;
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
}
|
|
1107
|
+
this.focusFirstOption();
|
|
1108
|
+
return;
|
|
1109
|
+
}
|
|
1110
|
+
this.isArrowKeyNavigationMode = true;
|
|
1111
|
+
const selectableOptions = this.filteredItems.filter(item => item.tagName === 'OPTION');
|
|
1112
|
+
if (selectableOptions.length > 0) {
|
|
1113
|
+
this.setInitialHighlightedIndex();
|
|
1114
|
+
if (this.listboxEl) {
|
|
1115
|
+
const optionElements = this.listboxEl.querySelectorAll('[role="option"]');
|
|
1116
|
+
const highlightedOption = optionElements[this.highlightedIndex];
|
|
1117
|
+
if (highlightedOption) {
|
|
1118
|
+
optionElements.forEach(option => {
|
|
1119
|
+
option.setAttribute('tabindex', '-1');
|
|
1120
|
+
});
|
|
1121
|
+
highlightedOption.setAttribute('tabindex', '0');
|
|
1122
|
+
highlightedOption.focus();
|
|
1123
|
+
highlightedOption.scrollIntoView({ block: 'nearest', behavior: 'smooth' });
|
|
910
1124
|
}
|
|
911
|
-
// Update aria-activedescendant on trigger
|
|
912
|
-
this.updateAriaActiveDescendant();
|
|
913
1125
|
}
|
|
1126
|
+
this.updateAriaActiveDescendant();
|
|
914
1127
|
}
|
|
915
1128
|
}
|
|
916
1129
|
/**
|
|
@@ -925,8 +1138,8 @@ export class PdsCombobox {
|
|
|
925
1138
|
if (currentOption) {
|
|
926
1139
|
// Check if any option currently has focus OR if we're in arrow-key navigation mode
|
|
927
1140
|
const hasOptionFocus = Array.from(optionElements).some(el => el === document.activeElement);
|
|
928
|
-
|
|
929
|
-
|
|
1141
|
+
const shouldFocusOption = !this.usesBodyPortal && (hasOptionFocus || this.isArrowKeyNavigationMode);
|
|
1142
|
+
if (shouldFocusOption) {
|
|
930
1143
|
optionElements.forEach(option => {
|
|
931
1144
|
option.setAttribute('tabindex', '-1');
|
|
932
1145
|
});
|
|
@@ -944,7 +1157,7 @@ export class PdsCombobox {
|
|
|
944
1157
|
*/
|
|
945
1158
|
updateAriaActiveDescendant() {
|
|
946
1159
|
if (this.triggerEl && this.highlightedIndex >= 0) {
|
|
947
|
-
this.triggerEl.setAttribute('aria-activedescendant',
|
|
1160
|
+
this.triggerEl.setAttribute('aria-activedescendant', this.optionDomId(this.highlightedIndex));
|
|
948
1161
|
}
|
|
949
1162
|
else if (this.triggerEl) {
|
|
950
1163
|
this.triggerEl.removeAttribute('aria-activedescendant');
|
|
@@ -1086,17 +1299,18 @@ export class PdsCombobox {
|
|
|
1086
1299
|
// The @Watch('selectedOption') will handle displayText, value, and form internals
|
|
1087
1300
|
this.setSelectedOption(option);
|
|
1088
1301
|
this.isOpen = false;
|
|
1302
|
+
this.clearExpandFilterList();
|
|
1089
1303
|
this.pdsComboboxChange.emit({ value: option.value });
|
|
1090
1304
|
}
|
|
1091
1305
|
renderDropdown() {
|
|
1092
1306
|
if (!this.isOpen) {
|
|
1093
1307
|
return null;
|
|
1094
1308
|
}
|
|
1095
|
-
const hasSlottedEmpty = !!this.el.querySelector('[slot="empty"]');
|
|
1096
|
-
const hasSlottedLoading = !!this.el.querySelector('[slot="loading"]');
|
|
1309
|
+
const hasSlottedEmpty = !this.usesBodyPortal && !!this.el.querySelector('[slot="empty"]');
|
|
1310
|
+
const hasSlottedLoading = !this.usesBodyPortal && !!this.el.querySelector('[slot="loading"]');
|
|
1097
1311
|
let optionIndex = 0;
|
|
1098
1312
|
const selectableOptions = this.filteredItems.filter(item => item.tagName === 'OPTION');
|
|
1099
|
-
return (h("ul", { class: "pds-combobox__listbox", role: "listbox", id:
|
|
1313
|
+
return (h("ul", { class: "pds-combobox__listbox", role: "listbox", id: this.listboxId, "aria-label": this.label || 'Options', "aria-multiselectable": "false", ref: el => (this.listboxEl = el), onScroll: this.handleScroll }, this.loading && (h("li", { class: "pds-combobox__loading", role: "presentation" }, hasSlottedLoading ? (h("slot", { name: "loading" })) : (h("pds-loader", { size: "small" })))), !this.loading && this.filteredItems.length === 0 && (h("li", { class: "pds-combobox__empty", role: "presentation" }, hasSlottedEmpty ? (h("slot", { name: "empty" })) : (h("span", null, "No options found")))), this.filteredItems.map((item, itemIdx) => {
|
|
1100
1314
|
if (item.tagName === 'OPTGROUP') {
|
|
1101
1315
|
const optgroup = item;
|
|
1102
1316
|
return (h("li", { key: `optgroup-${itemIdx}`, class: "pds-combobox__group-label", role: "presentation", "aria-label": optgroup.label }, optgroup.label));
|
|
@@ -1112,7 +1326,7 @@ export class PdsCombobox {
|
|
|
1112
1326
|
const isLayout = this.isOptionLayout(option);
|
|
1113
1327
|
const isChip = this.isOptionChip(option);
|
|
1114
1328
|
const currentOptionIndex = optionIndex++;
|
|
1115
|
-
return (h("li", { key: option.value, id:
|
|
1329
|
+
return (h("li", { key: option.value, id: this.optionDomId(currentOptionIndex), role: "option", "aria-selected": isSelected ? 'true' : 'false', "aria-setsize": selectableOptions.length, "aria-posinset": currentOptionIndex + 1, "aria-label": isLayout || isChip ? option.getAttribute('aria-label') || this.getOptionLabel(option) : undefined, tabindex: this.usesBodyPortal ? '-1' : isHighlighted ? '0' : '-1', class: {
|
|
1116
1330
|
'pds-combobox__option': true,
|
|
1117
1331
|
'pds-combobox__option--highlighted': isHighlighted,
|
|
1118
1332
|
'pds-combobox__option--layout': isLayout,
|
|
@@ -1244,10 +1458,10 @@ export class PdsCombobox {
|
|
|
1244
1458
|
]
|
|
1245
1459
|
.filter(Boolean)
|
|
1246
1460
|
.join(' ');
|
|
1247
|
-
return (h(Host, { key: '
|
|
1461
|
+
return (h(Host, { key: '3bb3331a7400bd505b900c1179e27239ca5286f0' }, h("div", { key: '645c6dee13177adb126f26288d0c3030e2d3d25f', class: "pds-combobox", tabIndex: -1, onFocusout: this.onComboboxFocusOut, part: "combobox" }, this.label && !this.hideLabel && (h("label", { key: '6b84ecb6b542a30a3b78345f3aff2ca167b118ad', htmlFor: this.componentId, class: "pds-combobox__label" }, this.label)), this.trigger === 'input' ? (h("div", { class: "pds-combobox__input-wrapper", style: { width: this.triggerWidth } }, h("input", { ref: el => {
|
|
1248
1462
|
this.inputEl = el;
|
|
1249
1463
|
this.triggerEl = el;
|
|
1250
|
-
}, class: "pds-combobox__input", type: "text", role: "combobox", "aria-autocomplete": "list", "aria-controls":
|
|
1464
|
+
}, class: "pds-combobox__input", type: "text", role: "combobox", "aria-autocomplete": "list", "aria-controls": this.listboxId, "aria-activedescendant": this.isOpen && this.highlightedIndex >= 0 ? this.optionDomId(this.highlightedIndex) : undefined, "aria-expanded": this.isOpen ? 'true' : 'false', "aria-disabled": this.disabled ? 'true' : 'false', "aria-label": this.hideLabel ? this.label : undefined, id: this.componentId, value: this.displayText, placeholder: this.placeholder, disabled: this.disabled, onInput: this.handleInput, onClick: this.handleInputClick, onKeyDown: this.handleKeyDown, autocomplete: "off", part: "input" }), h("pds-icon", { icon: "enlarge", "aria-hidden": "true", class: "pds-combobox__input-icon" }))) : this.trigger === 'chip' ? (h("div", { class: this.getChipTriggerClass(), style: { width: this.triggerWidth }, role: "combobox", "aria-haspopup": "listbox", "aria-controls": this.listboxId, "aria-activedescendant": this.isOpen && this.highlightedIndex >= 0 ? this.optionDomId(this.highlightedIndex) : undefined, "aria-expanded": this.isOpen ? 'true' : 'false', "aria-disabled": this.disabled ? 'true' : 'false', "aria-label": this.hideLabel ? this.label : undefined, id: this.componentId, tabIndex: this.disabled ? -1 : 0, onClick: this.onButtonTriggerClick, "data-layout": this.customTriggerContent, onKeyDown: this.onButtonTriggerKeyDown, onKeyUp: this.onButtonTriggerKeyUp, ref: el => (this.triggerEl = el), part: "chip-trigger" }, this.renderChipTriggerContent())) : (h("div", { class: triggerClass, style: { width: this.triggerWidth }, role: "combobox", "aria-haspopup": "listbox", "aria-controls": this.listboxId, "aria-activedescendant": this.isOpen && this.highlightedIndex >= 0 ? this.optionDomId(this.highlightedIndex) : undefined, "aria-expanded": this.isOpen ? 'true' : 'false', "aria-disabled": this.disabled ? 'true' : 'false', "aria-label": this.hideLabel ? this.label : undefined, id: this.componentId, tabIndex: this.disabled ? -1 : 0, onClick: this.onButtonTriggerClick, "data-layout": this.customTriggerContent, onKeyDown: this.onButtonTriggerKeyDown, onKeyUp: this.onButtonTriggerKeyUp, ref: el => (this.triggerEl = el), part: "button-trigger" }, this.renderButtonTriggerContent())), h("div", { key: '8562c78172749eb3d77e0dfc3c87d7a8eabeb12f', style: { display: 'none' } }, h("slot", { key: '3004f1014cd050fdeeb06274bb5c36bb6c8bbbed', onSlotchange: () => this.updateOptions() })), this.renderDropdown())));
|
|
1251
1465
|
}
|
|
1252
1466
|
static get is() { return "pds-combobox"; }
|
|
1253
1467
|
static get encapsulation() { return "shadow"; }
|
|
@@ -1414,6 +1628,29 @@ export class PdsCombobox {
|
|
|
1414
1628
|
"attribute": "dropdown-width",
|
|
1415
1629
|
"defaultValue": "'236px'"
|
|
1416
1630
|
},
|
|
1631
|
+
"dropdownMount": {
|
|
1632
|
+
"type": "string",
|
|
1633
|
+
"mutable": false,
|
|
1634
|
+
"complexType": {
|
|
1635
|
+
"original": "'host' | 'body'",
|
|
1636
|
+
"resolved": "\"body\" | \"host\"",
|
|
1637
|
+
"references": {}
|
|
1638
|
+
},
|
|
1639
|
+
"required": false,
|
|
1640
|
+
"optional": false,
|
|
1641
|
+
"docs": {
|
|
1642
|
+
"tags": [{
|
|
1643
|
+
"name": "default",
|
|
1644
|
+
"text": "'host'"
|
|
1645
|
+
}],
|
|
1646
|
+
"text": "Where to mount the dropdown listbox (`host` or `body`, sometimes called \u201Cappend to body\u201D).\nUse `body` inside scrollable containers (for example modals) so the list is not clipped by\n`overflow: hidden` ancestors. The portal is appended to the nearest `<dialog>` when present\n(including `pds-modal` / `showModal()`), using a composed ascent so shadow DOM and slot\nboundaries do not hide the dialog from discovery; otherwise it is appended to `document.body`.\nKeyboard focus remains on the trigger via\n`aria-activedescendant` so modal focus traps continue to work. Custom `empty` and `loading`\nslots are not supported when `body` is used; the default empty and loading content is shown instead."
|
|
1647
|
+
},
|
|
1648
|
+
"getter": false,
|
|
1649
|
+
"setter": false,
|
|
1650
|
+
"reflect": false,
|
|
1651
|
+
"attribute": "dropdown-mount",
|
|
1652
|
+
"defaultValue": "'host'"
|
|
1653
|
+
},
|
|
1417
1654
|
"hideLabel": {
|
|
1418
1655
|
"type": "boolean",
|
|
1419
1656
|
"mutable": false,
|
|
@@ -1487,7 +1724,7 @@ export class PdsCombobox {
|
|
|
1487
1724
|
"name": "default",
|
|
1488
1725
|
"text": "'filter'"
|
|
1489
1726
|
}],
|
|
1490
|
-
"text": "Determines the combobox mode: 'filter' (filter options as you type) or 'select-only' (show all options)."
|
|
1727
|
+
"text": "Determines the combobox mode: 'filter' (filter options as you type) or 'select-only' (show all options).\nIn filter mode, reopening the menu while the input still shows the label of the selected option temporarily lists\nall options until you type (so you can switch to a different choice without clearing the field first)."
|
|
1491
1728
|
},
|
|
1492
1729
|
"getter": false,
|
|
1493
1730
|
"setter": false,
|
|
@@ -1982,6 +2219,9 @@ export class PdsCombobox {
|
|
|
1982
2219
|
static get elementRef() { return "el"; }
|
|
1983
2220
|
static get watchers() {
|
|
1984
2221
|
return [{
|
|
2222
|
+
"propName": "isOpen",
|
|
2223
|
+
"methodName": "isOpenChanged"
|
|
2224
|
+
}, {
|
|
1985
2225
|
"propName": "debounce",
|
|
1986
2226
|
"methodName": "setupDebounce"
|
|
1987
2227
|
}, {
|