@pine-ds/core 3.14.0 → 3.14.1
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/floating-ui.dom.js +161 -40
- package/components/floating-ui.dom.js.map +1 -1
- package/components/index.d.ts +2 -0
- package/components/index.js +1 -0
- package/components/index.js.map +1 -1
- package/components/index2.js +1 -1
- package/components/index2.js.map +1 -1
- package/components/pds-combobox.js +65 -25
- package/components/pds-combobox.js.map +1 -1
- package/components/pds-dropdown-menu-item.js +1 -1
- package/components/pds-dropdown-menu-item.js.map +1 -1
- package/components/pds-dropdown-menu.js +3 -2
- package/components/pds-dropdown-menu.js.map +1 -1
- package/components/pds-filter.js +1 -1
- package/components/pds-filter.js.map +1 -1
- package/components/pds-multiselect.d.ts +11 -0
- package/components/pds-multiselect.js +666 -0
- package/components/pds-multiselect.js.map +1 -0
- package/components/pds-popover.js +1 -1
- package/components/pds-progress.js +1 -1
- package/components/pds-property.js +1 -1
- package/components/pds-radio-group.js +3 -3
- package/components/pds-radio.js +3 -3
- package/components/pds-row.js +1 -1
- package/components/pds-select.js +1 -1
- package/components/pds-sortable-item.js +1 -1
- package/components/pds-sortable.js +1 -1
- package/components/pds-switch.js +3 -3
- package/components/pds-tab.js +4 -4
- package/components/pds-tab.js.map +1 -1
- package/components/pds-table-body.js +1 -1
- package/components/pds-table-cell2.js +2 -2
- package/components/pds-table-head-cell2.js +35 -6
- package/components/pds-table-head-cell2.js.map +1 -1
- package/components/pds-table-head.js +1 -1
- package/components/pds-table-row.js +1 -1
- package/components/pds-tabpanel.js +1 -1
- package/components/pds-tabs.js +1 -1
- package/components/pds-text2.js +1 -1
- package/components/pds-textarea.js +4 -4
- package/components/pds-toast.js +3 -3
- package/components/pds-tooltip.js +2 -2
- package/dist/cjs/{floating-ui.dom-DTAy35nv.js → floating-ui.dom-Ca6tS7ef.js} +163 -41
- package/dist/cjs/floating-ui.dom-Ca6tS7ef.js.map +1 -0
- package/dist/cjs/{index-CMeuo765.js → index-BA--jsiy.js} +3 -3
- package/dist/cjs/index-BA--jsiy.js.map +1 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/pds-accordion.cjs.entry.js +1 -1
- package/dist/cjs/pds-avatar.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 +66 -26
- package/dist/cjs/pds-combobox.entry.cjs.js.map +1 -1
- package/dist/cjs/pds-copytext.cjs.entry.js +1 -1
- package/dist/cjs/pds-dropdown-menu-item.cjs.entry.js +1 -1
- package/dist/cjs/pds-dropdown-menu-item.entry.cjs.js.map +1 -1
- package/dist/cjs/pds-dropdown-menu.cjs.entry.js +4 -3
- package/dist/cjs/pds-dropdown-menu.entry.cjs.js.map +1 -1
- package/dist/cjs/pds-filter.cjs.entry.js +2 -2
- package/dist/cjs/pds-filter.entry.cjs.js.map +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-multiselect.cjs.entry.js +592 -0
- package/dist/cjs/pds-multiselect.entry.cjs.js.map +1 -0
- 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 +4 -4
- package/dist/cjs/pds-radio.cjs.entry.js +4 -4
- package/dist/cjs/pds-row.cjs.entry.js +1 -1
- package/dist/cjs/pds-select.cjs.entry.js +2 -2
- package/dist/cjs/pds-sortable-item.cjs.entry.js +2 -2
- package/dist/cjs/pds-sortable.cjs.entry.js +1 -1
- package/dist/cjs/pds-switch.cjs.entry.js +4 -4
- package/dist/cjs/pds-tab.cjs.entry.js +4 -4
- package/dist/cjs/pds-tab.entry.cjs.js.map +1 -1
- package/dist/cjs/pds-table-body.cjs.entry.js +1 -1
- package/dist/cjs/pds-table-cell.cjs.entry.js +2 -2
- package/dist/cjs/pds-table-head-cell.cjs.entry.js +33 -6
- package/dist/cjs/pds-table-head-cell.entry.cjs.js.map +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-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 +5 -5
- package/dist/cjs/pds-toast.cjs.entry.js +3 -3
- package/dist/cjs/pds-tooltip.cjs.entry.js +3 -3
- package/dist/cjs/pine-core.cjs.js +1 -1
- package/dist/collection/collection-manifest.json +1 -0
- package/dist/collection/components/pds-box/pds-box.css +0 -191
- package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-item/pds-dropdown-menu-item.css +3 -1
- package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu.css +1 -1
- package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu.js +2 -1
- package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu.js.map +1 -1
- package/dist/collection/components/pds-filters/pds-filter/pds-filter.css +6 -2
- package/dist/collection/components/pds-multiselect/multiselect-interface.js +2 -0
- package/dist/collection/components/pds-multiselect/multiselect-interface.js.map +1 -0
- package/dist/collection/components/pds-multiselect/pds-multiselect.css +232 -0
- package/dist/collection/components/pds-multiselect/pds-multiselect.js +1152 -0
- package/dist/collection/components/pds-multiselect/pds-multiselect.js.map +1 -0
- package/dist/collection/components/pds-multiselect/stories/pds-multiselect.stories.js +371 -0
- package/dist/collection/components/pds-popover/pds-popover.js +1 -1
- package/dist/collection/components/pds-progress/pds-progress.js +1 -1
- package/dist/collection/components/pds-property/pds-property.js +1 -1
- package/dist/collection/components/pds-radio/pds-radio.js +3 -3
- package/dist/collection/components/pds-radio-group/pds-radio-group.js +3 -3
- package/dist/collection/components/pds-row/pds-row.js +1 -1
- package/dist/collection/components/pds-select/pds-select.js +1 -1
- package/dist/collection/components/pds-sortable/pds-sortable-item/pds-sortable-item.js +1 -1
- package/dist/collection/components/pds-sortable/pds-sortable.js +1 -1
- package/dist/collection/components/pds-switch/pds-switch.js +3 -3
- package/dist/collection/components/pds-table/pds-table-body/pds-table-body.js +1 -1
- package/dist/collection/components/pds-table/pds-table-cell/pds-table-cell.js +2 -2
- package/dist/collection/components/pds-table/pds-table-head/pds-table-head.js +1 -1
- package/dist/collection/components/pds-table/pds-table-head-cell/pds-table-head-cell.js +51 -6
- package/dist/collection/components/pds-table/pds-table-head-cell/pds-table-head-cell.js.map +1 -1
- package/dist/collection/components/pds-table/pds-table-row/pds-table-row.js +1 -1
- package/dist/collection/components/pds-table/stories/pds-table.stories.js +32 -4
- package/dist/collection/components/pds-tabs/pds-tab/pds-tab.css +6 -2
- package/dist/collection/components/pds-tabs/pds-tab/pds-tab.js +3 -3
- package/dist/collection/components/pds-tabs/pds-tabpanel/pds-tabpanel.js +1 -1
- package/dist/collection/components/pds-tabs/pds-tabs.js +1 -1
- package/dist/collection/components/pds-text/pds-text.js +1 -1
- package/dist/collection/components/pds-textarea/pds-textarea.js +4 -4
- package/dist/collection/components/pds-toast/pds-toast.js +3 -3
- package/dist/collection/components/pds-tooltip/pds-tooltip.js +2 -2
- package/dist/docs.json +960 -174
- package/dist/esm/{floating-ui.dom-DbQzNDdQ.js → floating-ui.dom-BO6p966C.js} +163 -42
- package/dist/esm/floating-ui.dom-BO6p966C.js.map +1 -0
- package/dist/esm/{index-xbb79yLt.js → index-DY8eSueV.js} +3 -3
- package/dist/esm/index-DY8eSueV.js.map +1 -0
- package/dist/esm/loader.js +1 -1
- package/dist/esm/pds-accordion.entry.js +1 -1
- package/dist/esm/pds-avatar.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 +66 -26
- package/dist/esm/pds-combobox.entry.js.map +1 -1
- package/dist/esm/pds-copytext.entry.js +1 -1
- package/dist/esm/pds-dropdown-menu-item.entry.js +1 -1
- package/dist/esm/pds-dropdown-menu-item.entry.js.map +1 -1
- package/dist/esm/pds-dropdown-menu.entry.js +4 -3
- package/dist/esm/pds-dropdown-menu.entry.js.map +1 -1
- package/dist/esm/pds-filter.entry.js +2 -2
- package/dist/esm/pds-filter.entry.js.map +1 -1
- package/dist/esm/pds-input.entry.js +1 -1
- package/dist/esm/pds-link.entry.js +1 -1
- package/dist/esm/pds-multiselect.entry.js +590 -0
- package/dist/esm/pds-multiselect.entry.js.map +1 -0
- 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 +4 -4
- package/dist/esm/pds-radio.entry.js +4 -4
- package/dist/esm/pds-row.entry.js +1 -1
- package/dist/esm/pds-select.entry.js +2 -2
- package/dist/esm/pds-sortable-item.entry.js +2 -2
- package/dist/esm/pds-sortable.entry.js +1 -1
- package/dist/esm/pds-switch.entry.js +4 -4
- package/dist/esm/pds-tab.entry.js +4 -4
- package/dist/esm/pds-tab.entry.js.map +1 -1
- package/dist/esm/pds-table-body.entry.js +1 -1
- package/dist/esm/pds-table-cell.entry.js +2 -2
- package/dist/esm/pds-table-head-cell.entry.js +33 -6
- package/dist/esm/pds-table-head-cell.entry.js.map +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-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 +5 -5
- package/dist/esm/pds-toast.entry.js +3 -3
- package/dist/esm/pds-tooltip.entry.js +3 -3
- package/dist/esm/pine-core.js +1 -1
- package/dist/esm-es5/floating-ui.dom-BO6p966C.js +2 -0
- package/dist/esm-es5/floating-ui.dom-BO6p966C.js.map +1 -0
- package/dist/esm-es5/{index-xbb79yLt.js → index-DY8eSueV.js} +1 -1
- package/dist/esm-es5/index-DY8eSueV.js.map +1 -0
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/pds-accordion.entry.js +1 -1
- package/dist/esm-es5/pds-avatar.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-copytext.entry.js +1 -1
- package/dist/esm-es5/pds-dropdown-menu-item.entry.js +1 -1
- package/dist/esm-es5/pds-dropdown-menu-item.entry.js.map +1 -1
- package/dist/esm-es5/pds-dropdown-menu.entry.js +1 -1
- package/dist/esm-es5/pds-dropdown-menu.entry.js.map +1 -1
- package/dist/esm-es5/pds-filter.entry.js +1 -1
- package/dist/esm-es5/pds-filter.entry.js.map +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-multiselect.entry.js +2 -0
- package/dist/esm-es5/pds-multiselect.entry.js.map +1 -0
- 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-tab.entry.js.map +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-cell.entry.js.map +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-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-02f48157.system.entry.js +2 -0
- package/dist/pine-core/{p-b30424e3.system.entry.js → p-063afa19.system.entry.js} +2 -2
- package/dist/pine-core/p-0sPVsRFU.system.js.map +1 -0
- package/dist/pine-core/{p-15202869.entry.js → p-10dbe3e2.entry.js} +2 -2
- package/dist/pine-core/{p-5b7ab891.entry.js → p-12360e47.entry.js} +2 -2
- package/dist/pine-core/{p-ac14c8e3.system.entry.js → p-137b3289.system.entry.js} +2 -2
- package/dist/pine-core/{p-a737df90.entry.js → p-154a32f4.entry.js} +2 -2
- package/dist/pine-core/p-1ca116fa.entry.js +3 -0
- package/dist/pine-core/p-1ca116fa.entry.js.map +1 -0
- package/dist/pine-core/{p-a847fad3.entry.js → p-2537aacb.entry.js} +2 -2
- package/dist/pine-core/{p-4d25449c.entry.js → p-2cd0d520.entry.js} +2 -2
- package/dist/pine-core/{p-cd335ec2.system.entry.js → p-2fe330d0.system.entry.js} +2 -2
- package/dist/pine-core/p-30ea3668.system.entry.js +2 -0
- package/dist/pine-core/{p-1daf66d1.entry.js → p-31168da5.entry.js} +2 -2
- package/dist/pine-core/{p-732e2564.system.entry.js → p-325b3b0d.system.entry.js} +2 -2
- package/dist/pine-core/p-32c13896.system.entry.js +2 -0
- package/dist/pine-core/p-32c13896.system.entry.js.map +1 -0
- package/dist/pine-core/{p-95f2782c.entry.js → p-3f97a965.entry.js} +2 -2
- package/dist/pine-core/{p-ff182316.system.entry.js → p-40988b4d.system.entry.js} +2 -2
- package/dist/pine-core/{p-b02936d2.entry.js → p-415ba884.entry.js} +2 -2
- package/dist/pine-core/p-475bb340.entry.js +2 -0
- package/dist/pine-core/p-475bb340.entry.js.map +1 -0
- package/dist/pine-core/{p-CGo2P4Fr.system.js.map → p-4EbKXnVN.system.js.map} +1 -1
- package/dist/pine-core/{p-4SEjggIC.system.js.map → p-4alPHnzl.system.js.map} +1 -1
- package/dist/pine-core/{p-9bfaed7e.system.entry.js → p-4c23c75b.system.entry.js} +2 -2
- package/dist/pine-core/{p-bdf8bff3.system.entry.js → p-4d85945b.system.entry.js} +2 -2
- package/dist/pine-core/{p-3f8b0885.system.entry.js → p-4d9eee67.system.entry.js} +2 -2
- package/dist/pine-core/{p-4fD2iHS9.system.js.map → p-4f1cRPxE.system.js.map} +1 -1
- package/dist/pine-core/{p-e2104c31.entry.js → p-5040a872.entry.js} +2 -2
- package/dist/pine-core/p-51114c2b.system.entry.js +2 -0
- package/dist/pine-core/p-51114c2b.system.entry.js.map +1 -0
- package/dist/pine-core/{p-bbc349b3.system.entry.js → p-5b3ac18e.system.entry.js} +2 -2
- package/dist/pine-core/{p-bbc349b3.system.entry.js.map → p-5b3ac18e.system.entry.js.map} +1 -1
- package/dist/pine-core/{p-a08b60ae.entry.js → p-5b9110fe.entry.js} +2 -2
- package/dist/pine-core/{p-e3d76aa3.system.entry.js → p-5c982339.system.entry.js} +2 -2
- package/dist/pine-core/{p-94b1997d.system.entry.js → p-5e92aa34.system.entry.js} +2 -2
- package/dist/pine-core/{p-41d89f20.entry.js → p-5f2865df.entry.js} +2 -2
- package/dist/pine-core/{p-41d89f20.entry.js.map → p-5f2865df.entry.js.map} +1 -1
- package/dist/pine-core/p-6321b70b.entry.js +2 -0
- package/dist/pine-core/p-6321b70b.entry.js.map +1 -0
- package/dist/pine-core/p-63269b89.entry.js +2 -0
- package/dist/pine-core/p-6e862168.system.entry.js +2 -0
- package/dist/pine-core/{p-dcc6ad67.system.entry.js.map → p-6e862168.system.entry.js.map} +1 -1
- package/dist/pine-core/{p-cf2e1c07.system.entry.js → p-70aa35fc.system.entry.js} +2 -2
- package/dist/pine-core/{p-fc0ee6da.entry.js → p-757c7b80.entry.js} +2 -2
- package/dist/pine-core/{p-1df25b57.system.entry.js → p-78ee2e08.system.entry.js} +2 -2
- package/dist/pine-core/{p-2319298c.system.entry.js → p-7b5c8248.system.entry.js} +2 -2
- package/dist/pine-core/{p-dad604e4.system.entry.js → p-84c7f663.system.entry.js} +2 -2
- package/dist/pine-core/{p-f9ef2f74.system.entry.js → p-87eb8d4b.system.entry.js} +2 -2
- package/dist/pine-core/p-8b201c9a.system.entry.js +2 -0
- package/dist/pine-core/p-8b201c9a.system.entry.js.map +1 -0
- package/dist/pine-core/p-8eb1c168.entry.js +2 -0
- package/dist/pine-core/{p-e5bc22b6.system.entry.js → p-8fdb10c4.system.entry.js} +2 -2
- package/dist/pine-core/{p-232e4282.system.entry.js → p-90615423.system.entry.js} +2 -2
- package/dist/pine-core/{p-f79f6f08.system.entry.js → p-932283cf.system.entry.js} +2 -2
- package/dist/pine-core/{p-0b05708b.entry.js → p-9ada659b.entry.js} +2 -2
- package/dist/pine-core/{p-4778ae70.entry.js → p-9bb6cc3d.entry.js} +2 -2
- package/dist/pine-core/{p-3f6b9520.entry.js → p-9c928c44.entry.js} +2 -2
- package/dist/pine-core/{p-646ac76d.entry.js → p-9e4fc025.entry.js} +2 -2
- package/dist/pine-core/{p-e8aad8dc.entry.js → p-9eccf7b9.entry.js} +2 -2
- package/dist/pine-core/{p-WhfStK1C.system.js.map → p-B0Otb6kF.system.js.map} +1 -1
- package/dist/pine-core/{p-CUmDvil2.system.js.map → p-BA95hFrH.system.js.map} +1 -1
- package/dist/pine-core/{p-B4EMeCRH.system.js.map → p-BHjZufAO.system.js.map} +1 -1
- package/dist/pine-core/{p-DC2NZwtk.system.js.map → p-BJE1EIse.system.js.map} +1 -1
- package/dist/pine-core/{p-IH8oGXiE.system.js.map → p-BJtTt670.system.js.map} +1 -1
- package/dist/pine-core/p-BO6p966C.js +2 -0
- package/dist/pine-core/p-BO6p966C.js.map +1 -0
- package/dist/pine-core/{p-jBhqNO5u.system.js.map → p-BSRmAvMC.system.js.map} +1 -1
- package/dist/pine-core/{p-DyrNlfLT.system.js.map → p-BTe59phF.system.js.map} +1 -1
- package/dist/pine-core/{p-PMNjgK0C.system.js.map → p-BmKJgY0X.system.js.map} +1 -1
- package/dist/pine-core/{p-B0Y1Zs9b.system.js.map → p-Bn36FPag.system.js.map} +1 -1
- package/dist/pine-core/p-CBCT89qf.system.js.map +1 -0
- package/dist/pine-core/{p-DpeOrUYB.system.js.map → p-CG5jdxoZ.system.js.map} +1 -1
- package/dist/pine-core/{p-CKzDRRgx.system.js → p-CP48ADFM.system.js} +1 -1
- package/dist/pine-core/p-CP48ADFM.system.js.map +1 -0
- package/dist/pine-core/p-CR01VmO6.system.js.map +1 -0
- package/dist/pine-core/{p-CAnnMfDw.system.js.map → p-CSLo9qKS.system.js.map} +1 -1
- package/dist/pine-core/{p-DmVKABQy.system.js.map → p-CboCokff.system.js.map} +1 -1
- package/dist/pine-core/{p-XCTiWii8.system.js.map → p-CfZCQYfD.system.js.map} +1 -1
- package/dist/pine-core/{p-r_cS5LMw.system.js.map → p-Civ2VHC7.system.js.map} +1 -1
- package/dist/pine-core/{p-ChiYqN-p.system.js.map → p-CmquVvkz.system.js.map} +1 -1
- package/dist/pine-core/{p-tHMXRB8d.system.js.map → p-CpyTw2IQ.system.js.map} +1 -1
- package/dist/pine-core/{p-Brpt0zl5.system.js.map → p-Ct9csNdF.system.js.map} +1 -1
- package/dist/pine-core/{p-B_Co5NfG.system.js.map → p-Cun139qe.system.js.map} +1 -1
- package/dist/pine-core/p-D2eS6fhD.system.js +2 -0
- package/dist/pine-core/p-D2eS6fhD.system.js.map +1 -0
- package/dist/pine-core/{p-CTfQ_9yC.system.js.map → p-DFXWnbHE.system.js.map} +1 -1
- package/dist/pine-core/{p-xbb79yLt.js → p-DY8eSueV.js} +1 -1
- package/dist/pine-core/p-DY8eSueV.js.map +1 -0
- package/dist/pine-core/{p-CXGuX44q.system.js.map → p-DaXZLSA0.system.js.map} +1 -1
- package/dist/pine-core/{p-DB45WSlG.system.js.map → p-DwQewDCV.system.js.map} +1 -1
- package/dist/pine-core/p-JAVnELnm.system.js +1 -1
- package/dist/pine-core/{p-DAvCgWA9.system.js.map → p-Lk6DnEPT.system.js.map} +1 -1
- package/dist/pine-core/{p-Bjj4Pcbb.system.js.map → p-YqHO7iPZ.system.js.map} +1 -1
- package/dist/pine-core/{p-00568c20.system.entry.js → p-a07b8e45.system.entry.js} +2 -2
- package/dist/pine-core/p-a3bCMZF8.system.js.map +1 -0
- package/dist/pine-core/{p-c5013d20.entry.js → p-a3cdff85.entry.js} +2 -2
- package/dist/pine-core/{p-a4b16b32.system.entry.js → p-a5b24b1d.system.entry.js} +2 -2
- package/dist/pine-core/{p-596acf65.entry.js → p-a99e8caf.entry.js} +2 -2
- package/dist/pine-core/{p-002fe322.system.entry.js → p-ac240034.system.entry.js} +2 -2
- package/dist/pine-core/{p-fe28b975.system.entry.js → p-b9650ed9.system.entry.js} +2 -2
- package/dist/pine-core/{p-f8fba315.entry.js → p-bc85016b.entry.js} +2 -2
- package/dist/pine-core/{p-61588eac.entry.js → p-bddc9c5a.entry.js} +2 -2
- package/dist/pine-core/{p--gPqixhD.system.js.map → p-bs74TBAh.system.js.map} +1 -1
- package/dist/pine-core/{p-7de73ac5.entry.js → p-c24d11c7.entry.js} +2 -2
- package/dist/pine-core/p-c292e5da.system.entry.js +2 -0
- package/dist/pine-core/{p-6bc7d67f.system.entry.js.map → p-c292e5da.system.entry.js.map} +1 -1
- package/dist/pine-core/p-c68bceb1.entry.js +2 -0
- package/dist/pine-core/{p-478d1107.entry.js.map → p-c68bceb1.entry.js.map} +1 -1
- package/dist/pine-core/{p-0ace9c16.entry.js → p-c7c00a27.entry.js} +2 -2
- package/dist/pine-core/{p-cb6c279a.system.entry.js → p-cac3128b.system.entry.js} +2 -2
- package/dist/pine-core/p-ccab748a.entry.js +2 -0
- package/dist/pine-core/p-ccab748a.entry.js.map +1 -0
- package/dist/pine-core/{p-098cbcd7.system.entry.js → p-cfb24f97.system.entry.js} +2 -2
- package/dist/pine-core/p-d41112ad.entry.js +2 -0
- package/dist/pine-core/{p-f82b464c.entry.js.map → p-d41112ad.entry.js.map} +1 -1
- package/dist/pine-core/{p-6cba6806.entry.js → p-d6302edd.entry.js} +2 -2
- package/dist/pine-core/{p-04294b28.system.entry.js → p-daa36570.system.entry.js} +2 -2
- package/dist/pine-core/p-db06ad25.system.entry.js +4 -0
- package/dist/pine-core/p-db06ad25.system.entry.js.map +1 -0
- package/dist/pine-core/{p-15650db8.entry.js → p-e6dc2297.entry.js} +2 -2
- package/dist/pine-core/{p-9f53eb94.system.entry.js → p-e8cf15d7.system.entry.js} +2 -2
- package/dist/pine-core/p-eb026745.entry.js +2 -0
- package/dist/pine-core/{p-e011d7e5.entry.js → p-fa05ea14.entry.js} +2 -2
- package/dist/pine-core/{p-D8Jc24Qq.system.js.map → p-htODgUCV.system.js.map} +1 -1
- package/dist/pine-core/{p-DYq1Mef8.system.js.map → p-j0609tLE.system.js.map} +1 -1
- package/dist/pine-core/{p-DoP8Sl1O.system.js.map → p-rcUX-rt5.system.js.map} +1 -1
- package/dist/pine-core/{p-DSwKfctG.system.js.map → p-uyztncxJ.system.js.map} +1 -1
- package/dist/pine-core/pds-combobox.entry.esm.js.map +1 -1
- package/dist/pine-core/pds-dropdown-menu-item.entry.esm.js.map +1 -1
- package/dist/pine-core/pds-dropdown-menu.entry.esm.js.map +1 -1
- package/dist/pine-core/pds-filter.entry.esm.js.map +1 -1
- package/dist/pine-core/pds-multiselect.entry.esm.js.map +1 -0
- package/dist/pine-core/pds-tab.entry.esm.js.map +1 -1
- package/dist/pine-core/pds-table-head-cell.entry.esm.js.map +1 -1
- package/dist/pine-core/pine-core.esm.js +1 -1
- package/dist/types/components/pds-multiselect/multiselect-interface.d.ts +24 -0
- package/dist/types/components/pds-multiselect/pds-multiselect.d.ts +175 -0
- package/dist/types/components/pds-table/pds-table-head-cell/pds-table-head-cell.d.ts +10 -0
- package/dist/types/components.d.ts +250 -0
- package/dist/vscode.html-data.json +156 -0
- package/hydrate/index.js +918 -100
- package/hydrate/index.mjs +918 -100
- package/package.json +5 -5
- package/dist/cjs/floating-ui.dom-DTAy35nv.js.map +0 -1
- package/dist/cjs/index-CMeuo765.js.map +0 -1
- package/dist/esm/floating-ui.dom-DbQzNDdQ.js.map +0 -1
- package/dist/esm/index-xbb79yLt.js.map +0 -1
- package/dist/esm-es5/floating-ui.dom-DbQzNDdQ.js +0 -2
- package/dist/esm-es5/floating-ui.dom-DbQzNDdQ.js.map +0 -1
- package/dist/esm-es5/index-xbb79yLt.js.map +0 -1
- package/dist/pine-core/p-43990889.entry.js +0 -2
- package/dist/pine-core/p-478d1107.entry.js +0 -2
- package/dist/pine-core/p-534e44cb.system.entry.js +0 -4
- package/dist/pine-core/p-534e44cb.system.entry.js.map +0 -1
- package/dist/pine-core/p-54a56826.entry.js +0 -3
- package/dist/pine-core/p-54a56826.entry.js.map +0 -1
- package/dist/pine-core/p-553e4543.entry.js +0 -2
- package/dist/pine-core/p-553e4543.entry.js.map +0 -1
- package/dist/pine-core/p-5f6cd30d.system.entry.js +0 -2
- package/dist/pine-core/p-5f6cd30d.system.entry.js.map +0 -1
- package/dist/pine-core/p-6bc7d67f.system.entry.js +0 -2
- package/dist/pine-core/p-9e62c418.system.entry.js +0 -2
- package/dist/pine-core/p-9e62c418.system.entry.js.map +0 -1
- package/dist/pine-core/p-BOmQOnQe.system.js +0 -2
- package/dist/pine-core/p-BOmQOnQe.system.js.map +0 -1
- package/dist/pine-core/p-Bnp3zJ0T.system.js.map +0 -1
- package/dist/pine-core/p-CKzDRRgx.system.js.map +0 -1
- package/dist/pine-core/p-DbQzNDdQ.js +0 -2
- package/dist/pine-core/p-DbQzNDdQ.js.map +0 -1
- package/dist/pine-core/p-DfCCzxYg.system.js.map +0 -1
- package/dist/pine-core/p-X0_TH-op.system.js.map +0 -1
- package/dist/pine-core/p-ac2f9463.entry.js +0 -2
- package/dist/pine-core/p-ac2f9463.entry.js.map +0 -1
- package/dist/pine-core/p-b59a0c6b.system.entry.js +0 -2
- package/dist/pine-core/p-d0e336b7.system.entry.js +0 -2
- package/dist/pine-core/p-dcc6ad67.system.entry.js +0 -2
- package/dist/pine-core/p-e7e25d42.entry.js +0 -2
- package/dist/pine-core/p-f82b464c.entry.js +0 -2
- package/dist/pine-core/p-f92055f3.entry.js +0 -2
- package/dist/pine-core/p-xbb79yLt.js.map +0 -1
- /package/dist/pine-core/{p-b59a0c6b.system.entry.js.map → p-02f48157.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-b30424e3.system.entry.js.map → p-063afa19.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-15202869.entry.js.map → p-10dbe3e2.entry.js.map} +0 -0
- /package/dist/pine-core/{p-5b7ab891.entry.js.map → p-12360e47.entry.js.map} +0 -0
- /package/dist/pine-core/{p-ac14c8e3.system.entry.js.map → p-137b3289.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-a737df90.entry.js.map → p-154a32f4.entry.js.map} +0 -0
- /package/dist/pine-core/{p-a847fad3.entry.js.map → p-2537aacb.entry.js.map} +0 -0
- /package/dist/pine-core/{p-4d25449c.entry.js.map → p-2cd0d520.entry.js.map} +0 -0
- /package/dist/pine-core/{p-cd335ec2.system.entry.js.map → p-2fe330d0.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-d0e336b7.system.entry.js.map → p-30ea3668.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-1daf66d1.entry.js.map → p-31168da5.entry.js.map} +0 -0
- /package/dist/pine-core/{p-732e2564.system.entry.js.map → p-325b3b0d.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-95f2782c.entry.js.map → p-3f97a965.entry.js.map} +0 -0
- /package/dist/pine-core/{p-ff182316.system.entry.js.map → p-40988b4d.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-b02936d2.entry.js.map → p-415ba884.entry.js.map} +0 -0
- /package/dist/pine-core/{p-9bfaed7e.system.entry.js.map → p-4c23c75b.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-bdf8bff3.system.entry.js.map → p-4d85945b.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-3f8b0885.system.entry.js.map → p-4d9eee67.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-e2104c31.entry.js.map → p-5040a872.entry.js.map} +0 -0
- /package/dist/pine-core/{p-a08b60ae.entry.js.map → p-5b9110fe.entry.js.map} +0 -0
- /package/dist/pine-core/{p-e3d76aa3.system.entry.js.map → p-5c982339.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-94b1997d.system.entry.js.map → p-5e92aa34.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-43990889.entry.js.map → p-63269b89.entry.js.map} +0 -0
- /package/dist/pine-core/{p-cf2e1c07.system.entry.js.map → p-70aa35fc.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-fc0ee6da.entry.js.map → p-757c7b80.entry.js.map} +0 -0
- /package/dist/pine-core/{p-1df25b57.system.entry.js.map → p-78ee2e08.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-2319298c.system.entry.js.map → p-7b5c8248.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-dad604e4.system.entry.js.map → p-84c7f663.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-f9ef2f74.system.entry.js.map → p-87eb8d4b.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-e7e25d42.entry.js.map → p-8eb1c168.entry.js.map} +0 -0
- /package/dist/pine-core/{p-e5bc22b6.system.entry.js.map → p-8fdb10c4.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-232e4282.system.entry.js.map → p-90615423.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-f79f6f08.system.entry.js.map → p-932283cf.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-0b05708b.entry.js.map → p-9ada659b.entry.js.map} +0 -0
- /package/dist/pine-core/{p-4778ae70.entry.js.map → p-9bb6cc3d.entry.js.map} +0 -0
- /package/dist/pine-core/{p-3f6b9520.entry.js.map → p-9c928c44.entry.js.map} +0 -0
- /package/dist/pine-core/{p-646ac76d.entry.js.map → p-9e4fc025.entry.js.map} +0 -0
- /package/dist/pine-core/{p-e8aad8dc.entry.js.map → p-9eccf7b9.entry.js.map} +0 -0
- /package/dist/pine-core/{p-00568c20.system.entry.js.map → p-a07b8e45.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-c5013d20.entry.js.map → p-a3cdff85.entry.js.map} +0 -0
- /package/dist/pine-core/{p-a4b16b32.system.entry.js.map → p-a5b24b1d.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-596acf65.entry.js.map → p-a99e8caf.entry.js.map} +0 -0
- /package/dist/pine-core/{p-002fe322.system.entry.js.map → p-ac240034.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-fe28b975.system.entry.js.map → p-b9650ed9.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-f8fba315.entry.js.map → p-bc85016b.entry.js.map} +0 -0
- /package/dist/pine-core/{p-61588eac.entry.js.map → p-bddc9c5a.entry.js.map} +0 -0
- /package/dist/pine-core/{p-7de73ac5.entry.js.map → p-c24d11c7.entry.js.map} +0 -0
- /package/dist/pine-core/{p-0ace9c16.entry.js.map → p-c7c00a27.entry.js.map} +0 -0
- /package/dist/pine-core/{p-cb6c279a.system.entry.js.map → p-cac3128b.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-098cbcd7.system.entry.js.map → p-cfb24f97.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-6cba6806.entry.js.map → p-d6302edd.entry.js.map} +0 -0
- /package/dist/pine-core/{p-04294b28.system.entry.js.map → p-daa36570.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-15650db8.entry.js.map → p-e6dc2297.entry.js.map} +0 -0
- /package/dist/pine-core/{p-9f53eb94.system.entry.js.map → p-e8cf15d7.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-f92055f3.entry.js.map → p-eb026745.entry.js.map} +0 -0
- /package/dist/pine-core/{p-e011d7e5.entry.js.map → p-fa05ea14.entry.js.map} +0 -0
|
@@ -29,12 +29,14 @@
|
|
|
29
29
|
padding: var(--pine-dimension-xs);
|
|
30
30
|
text-align: start; /* Ensure text aligns properly */
|
|
31
31
|
width: 100%; /* Ensure full width */
|
|
32
|
-
/* Focus styles applied via class + browser focus */
|
|
33
32
|
}
|
|
34
33
|
.pds-dropdown-menu-item__content:hover {
|
|
35
34
|
background-color: var(--pine-color-background-muted);
|
|
36
35
|
color: var(--pine-color-text-hover);
|
|
37
36
|
}
|
|
37
|
+
.pds-dropdown-menu-item__content {
|
|
38
|
+
/* Focus styles applied via class + browser focus */
|
|
39
|
+
}
|
|
38
40
|
.pds-dropdown-menu-item__content:focus, .pds-dropdown-menu-item__content:focus-visible, .pds-dropdown-menu-item__content.has-focus {
|
|
39
41
|
outline: var(--pine-outline-focus);
|
|
40
42
|
outline-offset: var(--pine-border-width);
|
|
@@ -52,6 +52,7 @@ export class PdsDropdownMenu {
|
|
|
52
52
|
const updatePosition = () => {
|
|
53
53
|
computePosition(this.triggerEl, this.panelEl, {
|
|
54
54
|
placement: this.placement,
|
|
55
|
+
strategy: 'fixed',
|
|
55
56
|
middleware: [offset(6), flip(), shift({ padding: 5 })],
|
|
56
57
|
}).then(({ x, y }) => {
|
|
57
58
|
Object.assign(this.panelEl.style, {
|
|
@@ -262,7 +263,7 @@ export class PdsDropdownMenu {
|
|
|
262
263
|
}
|
|
263
264
|
}
|
|
264
265
|
render() {
|
|
265
|
-
return (h(Host, { key: '
|
|
266
|
+
return (h(Host, { key: '9ae650f3d8026060386ac3c3e766e7cc3c7ecc07', id: this.componentId }, h("slot", { key: '598502f3a1fc16df488fb9808f453a72e630cede', name: "trigger", onSlotchange: this.handleTriggerSlotChange }), h("pds-box", { key: '5be72ded41caad2d9a9569d0aeabf7d22cf1b44c', "border-radius": "sm", display: "flex", direction: "column", class: "pds-dropdown-menu--panel is-hidden", shadow: "100", role: "menu", "aria-orientation": "vertical", part: "menu-panel" }, h("slot", { key: '93b2d89a1e3714ac7895be71bc44583ce4cd3243', onSlotchange: this.handleSlotChange }))));
|
|
266
267
|
}
|
|
267
268
|
static get is() { return "pds-dropdown-menu"; }
|
|
268
269
|
static get encapsulation() { return "shadow"; }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pds-dropdown-menu.js","sourceRoot":"","sources":["../../../../src/components/pds-dropdown-menu/pds-dropdown-menu.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, Host, h, Prop, Listen, State } from '@stencil/core';\nimport type { BasePdsProps } from '@utils/interfaces';\nimport { PlacementType } from '@utils/types';\nimport { computePosition,\n flip,\n offset,\n shift,\n autoUpdate,\n} from '@floating-ui/dom';\n\n/**\n * @part menu-panel - Exposes the dropdown menu container for styling.\n */\n@Component({\n tag: 'pds-dropdown-menu',\n styleUrl: 'pds-dropdown-menu.scss',\n shadow: true,\n})\nexport class PdsDropdownMenu implements BasePdsProps {\n private slotEl: HTMLSlotElement;\n private triggerEl: HTMLElement;\n private panelEl: HTMLPdsBoxElement;\n private isOpen: boolean = false;\n private menuItems: HTMLPdsDropdownMenuItemElement[] = [];\n private cleanupAutoUpdate: (() => void) | null = null;\n\n @Element() host: HTMLPdsDropdownMenuElement;\n\n @State() currentFocusIndex: number = -1;\n\n /**\n * A unique identifier used for the underlying component `id` attribute.\n */\n @Prop() componentId: string;\n\n /**\n * The placement of the dropdown panel relative to the trigger.\n */\n @Prop() placement: PlacementType = 'bottom-start';\n\n componentDidRender() {\n this.panelEl = this.host.shadowRoot?.querySelector('pds-box') as HTMLPdsBoxElement;\n }\n\n disconnectedCallback() {\n // Clean up auto-update when component is removed from DOM\n if (this.cleanupAutoUpdate) {\n this.cleanupAutoUpdate();\n this.cleanupAutoUpdate = null;\n }\n }\n\n private handleTriggerSlotChange = (event: Event) => {\n this.slotEl = event.target as HTMLSlotElement;\n\n // Get all elements assigned to this slot\n const assignedElements = this.slotEl.assignedElements();\n\n this.triggerEl = assignedElements[0] as HTMLElement;\n this.triggerEl.onclick = this.handleClick;\n\n // Add accessibility attributes to trigger\n this.triggerEl.setAttribute('aria-haspopup', 'menu');\n this.triggerEl.setAttribute('aria-expanded', 'false');\n }\n\n private handleSlotChange = (event: Event) => {\n this.slotEl = event.target as HTMLSlotElement;\n\n // Get all elements assigned to this slot\n const assignedElements = this.slotEl.assignedElements();\n\n // ensure assignedElements only contains pds-dropdown-menu-item or pds-dropdown-menu-separator\n // if there are other elements, throw an error\n const invalidElements = assignedElements.filter(el => el.tagName.toLowerCase() !== 'pds-dropdown-menu-item' && el.tagName.toLowerCase() !== 'pds-dropdown-menu-separator');\n if (invalidElements.length > 0) {\n throw new Error(`pds-dropdown-menu only accepts pds-dropdown-menu-item and pds-dropdown-menu-separator elements`);\n }\n\n // Store all menu items for keyboard navigation\n this.menuItems = assignedElements.filter(\n el => el.tagName.toLowerCase() === 'pds-dropdown-menu-item'\n ) as HTMLPdsDropdownMenuItemElement[];\n }\n\n // Toggle dropdown open/closed\n private toggleDropdown = () => {\n this.isOpen = !this.isOpen;\n\n if (this.isOpen) {\n this.openDropdown();\n } else {\n this.closeDropdown();\n }\n }\n\n // Open the dropdown and position it\n private openDropdown = () => {\n const updatePosition = () => {\n computePosition(this.triggerEl, this.panelEl as HTMLElement, {\n placement: this.placement,\n middleware: [offset(6), flip(), shift({padding: 5})],\n }).then(({ x, y }) => {\n Object.assign(this.panelEl.style, {\n left: `${x}px`,\n top: `${y}px`,\n });\n });\n };\n\n // Initial position\n updatePosition();\n\n // Set up auto-update for window resize and scroll\n this.cleanupAutoUpdate = autoUpdate(\n this.triggerEl,\n this.panelEl as HTMLElement,\n updatePosition\n );\n\n this.host.shadowRoot?.querySelector('pds-box').classList.remove('is-hidden');\n this.isOpen = true;\n\n // Update ARIA attributes\n this.triggerEl.setAttribute('aria-expanded', 'true');\n }\n\n // Close the dropdown\n private closeDropdown = () => {\n this.host.shadowRoot?.querySelector('pds-box').classList.add('is-hidden');\n this.isOpen = false;\n\n // Clean up auto-update\n if (this.cleanupAutoUpdate) {\n this.cleanupAutoUpdate();\n this.cleanupAutoUpdate = null;\n }\n\n // Update ARIA attributes\n this.triggerEl.setAttribute('aria-expanded', 'false');\n\n // Reset focus index\n this.currentFocusIndex = -1;\n\n // Return focus to trigger\n this.triggerEl.focus();\n }\n\n // Handle click on the trigger element\n private handleClick = () => {\n this.toggleDropdown();\n }\n\n // Get the index of the currently focused menu item\n private getFocusedItemIndex(): number {\n const activeElement = document.activeElement as HTMLPdsDropdownMenuItemElement | null;\n if (!activeElement) return -1;\n return this.menuItems.findIndex(item => item === activeElement);\n }\n\n // Focus a specific menu item by index\n private focusItemByIndex(index: number): void {\n if (index >= 0 && index < this.menuItems.length) {\n this.currentFocusIndex = index;\n\n // Focus the inner button/link instead of the host element\n const menuItem = this.menuItems[index];\n const innerButton = menuItem.shadowRoot?.querySelector('button');\n const innerLink = menuItem.shadowRoot?.querySelector('pds-link')?.shadowRoot?.querySelector('a');\n\n if (innerButton) {\n return innerButton.focus();\n } else if (innerLink) {\n return innerLink.focus();\n } else {\n // Fallback to focusing the host if we can't find the inner element\n menuItem.focus();\n }\n }\n }\n\n // Focus the next menu item\n private focusNextItem(): void {\n let nextIndex = (this.currentFocusIndex + 1) % this.menuItems.length;\n\n // Skip disabled items\n let attempts = 0;\n const maxAttempts = this.menuItems.length;\n\n while (attempts < maxAttempts && this.menuItems[nextIndex].disabled) {\n nextIndex = (nextIndex + 1) % this.menuItems.length;\n attempts++;\n }\n\n // Only focus if we found a non-disabled item\n if (attempts < maxAttempts) {\n this.focusItemByIndex(nextIndex);\n }\n }\n\n // Focus the previous menu item\n private focusPreviousItem(): void {\n let prevIndex = this.currentFocusIndex <= 0\n ? this.menuItems.length - 1\n : this.currentFocusIndex - 1;\n\n // Skip disabled items\n let attempts = 0;\n const maxAttempts = this.menuItems.length;\n\n while (attempts < maxAttempts && this.menuItems[prevIndex].disabled) {\n prevIndex = prevIndex <= 0 ? this.menuItems.length - 1 : prevIndex - 1;\n attempts++;\n }\n\n // Only focus if we found a non-disabled item\n if (attempts < maxAttempts) {\n this.focusItemByIndex(prevIndex);\n }\n }\n\n // Handle keyboard events for the dropdown\n @Listen('keydown', { target: 'window' })\n handleKeyDown(event: KeyboardEvent) {\n if (!this.isOpen) return;\n\n switch (event.key) {\n case 'Escape':\n event.preventDefault();\n this.closeDropdown();\n break;\n\n case 'ArrowDown':\n event.preventDefault();\n this.focusNextItem();\n break;\n\n case 'ArrowUp':\n event.preventDefault();\n this.focusPreviousItem();\n break;\n\n case 'Home':\n event.preventDefault();\n if (this.menuItems.length > 0) {\n // Find first non-disabled item\n let firstIndex = 0;\n while (firstIndex < this.menuItems.length && this.menuItems[firstIndex].disabled) {\n firstIndex++;\n }\n if (firstIndex < this.menuItems.length) {\n this.focusItemByIndex(firstIndex);\n }\n }\n break;\n\n case 'End':\n event.preventDefault();\n if (this.menuItems.length > 0) {\n // Find last non-disabled item\n let lastIndex = this.menuItems.length - 1;\n while (lastIndex >= 0 && this.menuItems[lastIndex].disabled) {\n lastIndex--;\n }\n if (lastIndex >= 0) {\n this.focusItemByIndex(lastIndex);\n }\n }\n break;\n\n case 'Tab':\n if (event.shiftKey) {\n // Let Shift+Tab navigate naturally from first item to trigger\n // For all other items, move to previous item\n const currentIndex = this.getFocusedItemIndex();\n\n if (currentIndex > 0) {\n // If not on first item, prevent default and go to previous item\n event.preventDefault();\n this.focusPreviousItem(); // Use our method that skips disabled items\n }\n // If on first item or no item, let natural tab order move back to trigger\n } else {\n // Forward Tab navigation\n const activeElement = document.activeElement;\n const isTriggerFocused = activeElement === this.triggerEl;\n const currentIndex = this.getFocusedItemIndex();\n\n if (isTriggerFocused && this.menuItems.length > 0) {\n // If trigger is focused, move to first non-disabled menu item\n event.preventDefault();\n\n // Find the first non-disabled item\n let firstFocusableIndex = 0;\n while (firstFocusableIndex < this.menuItems.length && this.menuItems[firstFocusableIndex].disabled) {\n firstFocusableIndex++;\n }\n\n if (firstFocusableIndex < this.menuItems.length) {\n this.focusItemByIndex(firstFocusableIndex);\n }\n } else if (currentIndex === -1 && this.menuItems.length > 0) {\n // If no menu item is focused, focus the first non-disabled one\n event.preventDefault();\n\n // Find the first non-disabled item\n let firstFocusableIndex = 0;\n while (firstFocusableIndex < this.menuItems.length && this.menuItems[firstFocusableIndex].disabled) {\n firstFocusableIndex++;\n }\n\n if (firstFocusableIndex < this.menuItems.length) {\n this.focusItemByIndex(firstFocusableIndex);\n }\n } else if (currentIndex !== -1) {\n // Use our method that skips disabled items\n event.preventDefault();\n this.focusNextItem();\n }\n }\n break;\n }\n }\n\n // Handle clicks outside the dropdown to close it\n @Listen('click', { target: 'window' })\n handleWindowClick(event: MouseEvent) {\n if (this.isOpen && !this.host.contains(event.target as Node) && event.target !== this.triggerEl) {\n this.closeDropdown();\n }\n }\n\n\n render() {\n return (\n <Host id={this.componentId}>\n <slot\n name=\"trigger\"\n onSlotchange={this.handleTriggerSlotChange}\n ></slot>\n <pds-box\n border-radius=\"sm\"\n display=\"flex\"\n direction=\"column\"\n class=\"pds-dropdown-menu--panel is-hidden\"\n shadow=\"100\"\n role=\"menu\"\n aria-orientation=\"vertical\"\n part=\"menu-panel\"\n >\n <slot onSlotchange={this.handleSlotChange}></slot>\n </pds-box>\n </Host>\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"pds-dropdown-menu.js","sourceRoot":"","sources":["../../../../src/components/pds-dropdown-menu/pds-dropdown-menu.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, Host, h, Prop, Listen, State } from '@stencil/core';\nimport type { BasePdsProps } from '@utils/interfaces';\nimport { PlacementType } from '@utils/types';\nimport { computePosition,\n flip,\n offset,\n shift,\n autoUpdate,\n} from '@floating-ui/dom';\n\n/**\n * @part menu-panel - Exposes the dropdown menu container for styling.\n */\n@Component({\n tag: 'pds-dropdown-menu',\n styleUrl: 'pds-dropdown-menu.scss',\n shadow: true,\n})\nexport class PdsDropdownMenu implements BasePdsProps {\n private slotEl: HTMLSlotElement;\n private triggerEl: HTMLElement;\n private panelEl: HTMLPdsBoxElement;\n private isOpen: boolean = false;\n private menuItems: HTMLPdsDropdownMenuItemElement[] = [];\n private cleanupAutoUpdate: (() => void) | null = null;\n\n @Element() host: HTMLPdsDropdownMenuElement;\n\n @State() currentFocusIndex: number = -1;\n\n /**\n * A unique identifier used for the underlying component `id` attribute.\n */\n @Prop() componentId: string;\n\n /**\n * The placement of the dropdown panel relative to the trigger.\n */\n @Prop() placement: PlacementType = 'bottom-start';\n\n componentDidRender() {\n this.panelEl = this.host.shadowRoot?.querySelector('pds-box') as HTMLPdsBoxElement;\n }\n\n disconnectedCallback() {\n // Clean up auto-update when component is removed from DOM\n if (this.cleanupAutoUpdate) {\n this.cleanupAutoUpdate();\n this.cleanupAutoUpdate = null;\n }\n }\n\n private handleTriggerSlotChange = (event: Event) => {\n this.slotEl = event.target as HTMLSlotElement;\n\n // Get all elements assigned to this slot\n const assignedElements = this.slotEl.assignedElements();\n\n this.triggerEl = assignedElements[0] as HTMLElement;\n this.triggerEl.onclick = this.handleClick;\n\n // Add accessibility attributes to trigger\n this.triggerEl.setAttribute('aria-haspopup', 'menu');\n this.triggerEl.setAttribute('aria-expanded', 'false');\n }\n\n private handleSlotChange = (event: Event) => {\n this.slotEl = event.target as HTMLSlotElement;\n\n // Get all elements assigned to this slot\n const assignedElements = this.slotEl.assignedElements();\n\n // ensure assignedElements only contains pds-dropdown-menu-item or pds-dropdown-menu-separator\n // if there are other elements, throw an error\n const invalidElements = assignedElements.filter(el => el.tagName.toLowerCase() !== 'pds-dropdown-menu-item' && el.tagName.toLowerCase() !== 'pds-dropdown-menu-separator');\n if (invalidElements.length > 0) {\n throw new Error(`pds-dropdown-menu only accepts pds-dropdown-menu-item and pds-dropdown-menu-separator elements`);\n }\n\n // Store all menu items for keyboard navigation\n this.menuItems = assignedElements.filter(\n el => el.tagName.toLowerCase() === 'pds-dropdown-menu-item'\n ) as HTMLPdsDropdownMenuItemElement[];\n }\n\n // Toggle dropdown open/closed\n private toggleDropdown = () => {\n this.isOpen = !this.isOpen;\n\n if (this.isOpen) {\n this.openDropdown();\n } else {\n this.closeDropdown();\n }\n }\n\n // Open the dropdown and position it\n private openDropdown = () => {\n const updatePosition = () => {\n computePosition(this.triggerEl, this.panelEl as HTMLElement, {\n placement: this.placement,\n strategy: 'fixed',\n middleware: [offset(6), flip(), shift({padding: 5})],\n }).then(({ x, y }) => {\n Object.assign(this.panelEl.style, {\n left: `${x}px`,\n top: `${y}px`,\n });\n });\n };\n\n // Initial position\n updatePosition();\n\n // Set up auto-update for window resize and scroll\n this.cleanupAutoUpdate = autoUpdate(\n this.triggerEl,\n this.panelEl as HTMLElement,\n updatePosition\n );\n\n this.host.shadowRoot?.querySelector('pds-box').classList.remove('is-hidden');\n this.isOpen = true;\n\n // Update ARIA attributes\n this.triggerEl.setAttribute('aria-expanded', 'true');\n }\n\n // Close the dropdown\n private closeDropdown = () => {\n this.host.shadowRoot?.querySelector('pds-box').classList.add('is-hidden');\n this.isOpen = false;\n\n // Clean up auto-update\n if (this.cleanupAutoUpdate) {\n this.cleanupAutoUpdate();\n this.cleanupAutoUpdate = null;\n }\n\n // Update ARIA attributes\n this.triggerEl.setAttribute('aria-expanded', 'false');\n\n // Reset focus index\n this.currentFocusIndex = -1;\n\n // Return focus to trigger\n this.triggerEl.focus();\n }\n\n // Handle click on the trigger element\n private handleClick = () => {\n this.toggleDropdown();\n }\n\n // Get the index of the currently focused menu item\n private getFocusedItemIndex(): number {\n const activeElement = document.activeElement as HTMLPdsDropdownMenuItemElement | null;\n if (!activeElement) return -1;\n return this.menuItems.findIndex(item => item === activeElement);\n }\n\n // Focus a specific menu item by index\n private focusItemByIndex(index: number): void {\n if (index >= 0 && index < this.menuItems.length) {\n this.currentFocusIndex = index;\n\n // Focus the inner button/link instead of the host element\n const menuItem = this.menuItems[index];\n const innerButton = menuItem.shadowRoot?.querySelector('button');\n const innerLink = menuItem.shadowRoot?.querySelector('pds-link')?.shadowRoot?.querySelector('a');\n\n if (innerButton) {\n return innerButton.focus();\n } else if (innerLink) {\n return innerLink.focus();\n } else {\n // Fallback to focusing the host if we can't find the inner element\n menuItem.focus();\n }\n }\n }\n\n // Focus the next menu item\n private focusNextItem(): void {\n let nextIndex = (this.currentFocusIndex + 1) % this.menuItems.length;\n\n // Skip disabled items\n let attempts = 0;\n const maxAttempts = this.menuItems.length;\n\n while (attempts < maxAttempts && this.menuItems[nextIndex].disabled) {\n nextIndex = (nextIndex + 1) % this.menuItems.length;\n attempts++;\n }\n\n // Only focus if we found a non-disabled item\n if (attempts < maxAttempts) {\n this.focusItemByIndex(nextIndex);\n }\n }\n\n // Focus the previous menu item\n private focusPreviousItem(): void {\n let prevIndex = this.currentFocusIndex <= 0\n ? this.menuItems.length - 1\n : this.currentFocusIndex - 1;\n\n // Skip disabled items\n let attempts = 0;\n const maxAttempts = this.menuItems.length;\n\n while (attempts < maxAttempts && this.menuItems[prevIndex].disabled) {\n prevIndex = prevIndex <= 0 ? this.menuItems.length - 1 : prevIndex - 1;\n attempts++;\n }\n\n // Only focus if we found a non-disabled item\n if (attempts < maxAttempts) {\n this.focusItemByIndex(prevIndex);\n }\n }\n\n // Handle keyboard events for the dropdown\n @Listen('keydown', { target: 'window' })\n handleKeyDown(event: KeyboardEvent) {\n if (!this.isOpen) return;\n\n switch (event.key) {\n case 'Escape':\n event.preventDefault();\n this.closeDropdown();\n break;\n\n case 'ArrowDown':\n event.preventDefault();\n this.focusNextItem();\n break;\n\n case 'ArrowUp':\n event.preventDefault();\n this.focusPreviousItem();\n break;\n\n case 'Home':\n event.preventDefault();\n if (this.menuItems.length > 0) {\n // Find first non-disabled item\n let firstIndex = 0;\n while (firstIndex < this.menuItems.length && this.menuItems[firstIndex].disabled) {\n firstIndex++;\n }\n if (firstIndex < this.menuItems.length) {\n this.focusItemByIndex(firstIndex);\n }\n }\n break;\n\n case 'End':\n event.preventDefault();\n if (this.menuItems.length > 0) {\n // Find last non-disabled item\n let lastIndex = this.menuItems.length - 1;\n while (lastIndex >= 0 && this.menuItems[lastIndex].disabled) {\n lastIndex--;\n }\n if (lastIndex >= 0) {\n this.focusItemByIndex(lastIndex);\n }\n }\n break;\n\n case 'Tab':\n if (event.shiftKey) {\n // Let Shift+Tab navigate naturally from first item to trigger\n // For all other items, move to previous item\n const currentIndex = this.getFocusedItemIndex();\n\n if (currentIndex > 0) {\n // If not on first item, prevent default and go to previous item\n event.preventDefault();\n this.focusPreviousItem(); // Use our method that skips disabled items\n }\n // If on first item or no item, let natural tab order move back to trigger\n } else {\n // Forward Tab navigation\n const activeElement = document.activeElement;\n const isTriggerFocused = activeElement === this.triggerEl;\n const currentIndex = this.getFocusedItemIndex();\n\n if (isTriggerFocused && this.menuItems.length > 0) {\n // If trigger is focused, move to first non-disabled menu item\n event.preventDefault();\n\n // Find the first non-disabled item\n let firstFocusableIndex = 0;\n while (firstFocusableIndex < this.menuItems.length && this.menuItems[firstFocusableIndex].disabled) {\n firstFocusableIndex++;\n }\n\n if (firstFocusableIndex < this.menuItems.length) {\n this.focusItemByIndex(firstFocusableIndex);\n }\n } else if (currentIndex === -1 && this.menuItems.length > 0) {\n // If no menu item is focused, focus the first non-disabled one\n event.preventDefault();\n\n // Find the first non-disabled item\n let firstFocusableIndex = 0;\n while (firstFocusableIndex < this.menuItems.length && this.menuItems[firstFocusableIndex].disabled) {\n firstFocusableIndex++;\n }\n\n if (firstFocusableIndex < this.menuItems.length) {\n this.focusItemByIndex(firstFocusableIndex);\n }\n } else if (currentIndex !== -1) {\n // Use our method that skips disabled items\n event.preventDefault();\n this.focusNextItem();\n }\n }\n break;\n }\n }\n\n // Handle clicks outside the dropdown to close it\n @Listen('click', { target: 'window' })\n handleWindowClick(event: MouseEvent) {\n if (this.isOpen && !this.host.contains(event.target as Node) && event.target !== this.triggerEl) {\n this.closeDropdown();\n }\n }\n\n\n render() {\n return (\n <Host id={this.componentId}>\n <slot\n name=\"trigger\"\n onSlotchange={this.handleTriggerSlotChange}\n ></slot>\n <pds-box\n border-radius=\"sm\"\n display=\"flex\"\n direction=\"column\"\n class=\"pds-dropdown-menu--panel is-hidden\"\n shadow=\"100\"\n role=\"menu\"\n aria-orientation=\"vertical\"\n part=\"menu-panel\"\n >\n <slot onSlotchange={this.handleSlotChange}></slot>\n </pds-box>\n </Host>\n );\n }\n}\n"]}
|
|
@@ -148,11 +148,13 @@
|
|
|
148
148
|
padding: var(--pine-dimension-100);
|
|
149
149
|
z-index: var(--pine-z-index-overlay);
|
|
150
150
|
/* stylelint-disable-next-line selector-pseudo-class-no-unknown */
|
|
151
|
-
/* Modern browsers: CSS anchor positioning with JavaScript-controlled flipping */
|
|
152
151
|
}
|
|
153
152
|
.pds-filter__popover:popover-open, .pds-filter__popover.is-open {
|
|
154
153
|
display: block;
|
|
155
154
|
}
|
|
155
|
+
.pds-filter__popover {
|
|
156
|
+
/* Modern browsers: CSS anchor positioning with JavaScript-controlled flipping */
|
|
157
|
+
}
|
|
156
158
|
@supports (anchor-name: --test) {
|
|
157
159
|
.pds-filter__popover {
|
|
158
160
|
inset-block-start: calc(anchor(--filter-trigger bottom) + var(--pine-dimension-100));
|
|
@@ -162,7 +164,6 @@
|
|
|
162
164
|
position-anchor: --filter-trigger;
|
|
163
165
|
/* CSS position-try disabled for precise JavaScript-controlled flipping */
|
|
164
166
|
/* Flipping classes applied by JavaScript for precise control */
|
|
165
|
-
/* Ensure fallback class works with flipping in modern browsers */
|
|
166
167
|
}
|
|
167
168
|
.pds-filter__popover.popover-flip-horizontal {
|
|
168
169
|
inset-inline-start: anchor(--filter-trigger right);
|
|
@@ -177,6 +178,9 @@
|
|
|
177
178
|
inset-inline-start: anchor(--filter-trigger right);
|
|
178
179
|
transform: translate(-100%, calc(-100% - var(--pine-dimension-100)));
|
|
179
180
|
}
|
|
181
|
+
.pds-filter__popover {
|
|
182
|
+
/* Ensure fallback class works with flipping in modern browsers */
|
|
183
|
+
}
|
|
180
184
|
.pds-filter__popover.is-open.popover-flip-horizontal {
|
|
181
185
|
inset-inline-start: anchor(--filter-trigger right);
|
|
182
186
|
transform: translateX(-100%);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multiselect-interface.js","sourceRoot":"","sources":["../../../../src/components/pds-multiselect/multiselect-interface.ts"],"names":[],"mappings":"","sourcesContent":["export interface MultiselectOption {\n id: string | number;\n text: string;\n [key: string]: unknown;\n}\n\nexport interface MultiselectChangeEventDetail {\n values: string[];\n items: MultiselectOption[];\n}\n\nexport interface MultiselectSearchEventDetail {\n query: string;\n}\n\nexport interface MultiselectLoadOptionsEventDetail {\n query: string;\n page: number;\n}\n\nexport interface AsyncResponse {\n results: Array<{ id: string | number; text: string; [key: string]: unknown }>;\n totalCount?: number;\n}\n"]}
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
:host {
|
|
2
|
+
display: block;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
:host([aria-disabled=true]) .pds-multiselect__trigger {
|
|
6
|
+
background: var(--pine-color-background-container-disabled);
|
|
7
|
+
border-color: var(--pine-color-border-disabled);
|
|
8
|
+
color: var(--pine-color-text-disabled);
|
|
9
|
+
cursor: not-allowed;
|
|
10
|
+
}
|
|
11
|
+
:host([aria-disabled=true]) .pds-multiselect__icon {
|
|
12
|
+
color: var(--pine-color-text-disabled);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.pds-multiselect {
|
|
16
|
+
position: relative;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.pds-multiselect__label {
|
|
20
|
+
color: var(--pine-color-text-label);
|
|
21
|
+
display: block;
|
|
22
|
+
font: var(--pine-typography-body-medium);
|
|
23
|
+
letter-spacing: var(--pine-letter-spacing);
|
|
24
|
+
margin-block-end: var(--pine-dimension-2xs);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.pds-multiselect__wrapper {
|
|
28
|
+
position: relative;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.pds-multiselect__trigger {
|
|
32
|
+
align-items: center;
|
|
33
|
+
background: var(--pine-color-background-container);
|
|
34
|
+
border: var(--pine-border);
|
|
35
|
+
border-radius: var(--pine-dimension-125);
|
|
36
|
+
cursor: pointer;
|
|
37
|
+
display: flex;
|
|
38
|
+
font: var(--pine-typography-body);
|
|
39
|
+
gap: var(--pine-dimension-xs);
|
|
40
|
+
justify-content: space-between;
|
|
41
|
+
letter-spacing: var(--pine-letter-spacing);
|
|
42
|
+
min-height: var(--pine-dimension-550);
|
|
43
|
+
padding: var(--pine-dimension-xs) var(--pine-dimension-sm);
|
|
44
|
+
position: relative;
|
|
45
|
+
text-align: start;
|
|
46
|
+
transition: border-color 0.2s ease, box-shadow 0.2s ease;
|
|
47
|
+
width: 100%;
|
|
48
|
+
}
|
|
49
|
+
.pds-multiselect__trigger:hover:not(.pds-multiselect__trigger--disabled) {
|
|
50
|
+
border-color: var(--pine-color-border-hover);
|
|
51
|
+
}
|
|
52
|
+
.pds-multiselect__trigger:focus:not(.pds-multiselect__trigger--disabled) {
|
|
53
|
+
border-color: var(--pine-color-border-active);
|
|
54
|
+
outline: var(--pine-outline-focus);
|
|
55
|
+
outline-offset: var(--pine-border-width);
|
|
56
|
+
}
|
|
57
|
+
.pds-multiselect__trigger.pds-multiselect__trigger--open {
|
|
58
|
+
border-color: var(--pine-color-border-active);
|
|
59
|
+
}
|
|
60
|
+
.pds-multiselect__trigger.pds-multiselect__trigger--invalid {
|
|
61
|
+
background-color: var(--pine-color-red-050);
|
|
62
|
+
border-color: var(--pine-color-border-danger);
|
|
63
|
+
}
|
|
64
|
+
.pds-multiselect__trigger.pds-multiselect__trigger--invalid:focus {
|
|
65
|
+
outline-color: var(--pine-color-focus-ring-danger);
|
|
66
|
+
}
|
|
67
|
+
.pds-multiselect__trigger.pds-multiselect__trigger--disabled {
|
|
68
|
+
background: var(--pine-color-background-container-disabled);
|
|
69
|
+
border-color: var(--pine-color-border-disabled);
|
|
70
|
+
color: var(--pine-color-text-disabled);
|
|
71
|
+
cursor: not-allowed;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.pds-multiselect__trigger-text {
|
|
75
|
+
color: var(--pine-color-text-strong);
|
|
76
|
+
flex: 1;
|
|
77
|
+
overflow: hidden;
|
|
78
|
+
text-overflow: ellipsis;
|
|
79
|
+
white-space: nowrap;
|
|
80
|
+
}
|
|
81
|
+
.pds-multiselect__trigger-text.pds-multiselect__trigger-text--placeholder {
|
|
82
|
+
color: var(--pine-color-text-placeholder);
|
|
83
|
+
}
|
|
84
|
+
.pds-multiselect__trigger--disabled .pds-multiselect__trigger-text {
|
|
85
|
+
color: var(--pine-color-text-disabled);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.pds-multiselect__icon {
|
|
89
|
+
color: var(--pine-color-icon);
|
|
90
|
+
flex-shrink: var(--pine-dimension-none);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.pds-multiselect__panel {
|
|
94
|
+
background: var(--pine-color-background-container);
|
|
95
|
+
border-radius: var(--pine-dimension-125);
|
|
96
|
+
box-shadow: var(--pine-box-shadow);
|
|
97
|
+
box-sizing: border-box;
|
|
98
|
+
display: flex;
|
|
99
|
+
flex-direction: column;
|
|
100
|
+
position: absolute;
|
|
101
|
+
z-index: var(--pine-z-index-raised);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
.pds-multiselect__search {
|
|
105
|
+
align-items: center;
|
|
106
|
+
border-block-end: var(--pine-border);
|
|
107
|
+
border-block-end-color: var(--pine-color-border-subtle);
|
|
108
|
+
display: flex;
|
|
109
|
+
gap: var(--pine-dimension-xs);
|
|
110
|
+
padding: var(--pine-dimension-xs) var(--pine-dimension-sm);
|
|
111
|
+
}
|
|
112
|
+
.pds-multiselect__search pds-icon {
|
|
113
|
+
color: var(--pine-color-text-muted);
|
|
114
|
+
flex-shrink: var(--pine-dimension-none);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
.pds-multiselect__search-input {
|
|
118
|
+
background: transparent;
|
|
119
|
+
border: var(--pine-dimension-none);
|
|
120
|
+
color: var(--pine-color-text-strong);
|
|
121
|
+
flex: 1;
|
|
122
|
+
font: var(--pine-typography-body);
|
|
123
|
+
letter-spacing: var(--pine-letter-spacing);
|
|
124
|
+
min-width: var(--pine-dimension-none);
|
|
125
|
+
outline: none;
|
|
126
|
+
}
|
|
127
|
+
.pds-multiselect__search-input::placeholder {
|
|
128
|
+
color: var(--pine-color-text-placeholder);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
.pds-multiselect__selected-section {
|
|
132
|
+
border-block-end: var(--pine-border);
|
|
133
|
+
border-block-end-color: var(--pine-color-border-subtle);
|
|
134
|
+
padding: var(--pine-dimension-xs);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
.pds-multiselect__selected-list {
|
|
138
|
+
list-style: none;
|
|
139
|
+
margin: var(--pine-dimension-none);
|
|
140
|
+
padding: var(--pine-dimension-none);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
.pds-multiselect__selected-item {
|
|
144
|
+
color: var(--pine-color-text-strong);
|
|
145
|
+
font: var(--pine-typography-body);
|
|
146
|
+
letter-spacing: var(--pine-letter-spacing);
|
|
147
|
+
overflow: hidden;
|
|
148
|
+
padding: var(--pine-dimension-2xs) var(--pine-dimension-xs);
|
|
149
|
+
text-overflow: ellipsis;
|
|
150
|
+
white-space: nowrap;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
.pds-multiselect__listbox {
|
|
154
|
+
background: transparent;
|
|
155
|
+
border: var(--pine-dimension-none);
|
|
156
|
+
box-sizing: border-box;
|
|
157
|
+
list-style: none;
|
|
158
|
+
margin: var(--pine-dimension-none);
|
|
159
|
+
overflow-y: auto;
|
|
160
|
+
padding: var(--pine-dimension-xs);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
.pds-multiselect__option {
|
|
164
|
+
align-items: center;
|
|
165
|
+
background: transparent;
|
|
166
|
+
border-radius: var(--pine-dimension-xs);
|
|
167
|
+
cursor: pointer;
|
|
168
|
+
display: flex;
|
|
169
|
+
padding: var(--pine-dimension-2xs) var(--pine-dimension-xs);
|
|
170
|
+
transition: background 0.15s;
|
|
171
|
+
}
|
|
172
|
+
.pds-multiselect__option pds-checkbox {
|
|
173
|
+
pointer-events: none;
|
|
174
|
+
width: 100%;
|
|
175
|
+
}
|
|
176
|
+
.pds-multiselect__option:hover, .pds-multiselect__option.pds-multiselect__option--highlighted {
|
|
177
|
+
background: var(--pine-color-background-muted);
|
|
178
|
+
}
|
|
179
|
+
.pds-multiselect__option:focus-visible {
|
|
180
|
+
outline: var(--pine-dimension-none);
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
.pds-multiselect__empty,
|
|
184
|
+
.pds-multiselect__loading {
|
|
185
|
+
align-items: center;
|
|
186
|
+
color: var(--pine-color-text-muted);
|
|
187
|
+
display: flex;
|
|
188
|
+
font: var(--pine-typography-body);
|
|
189
|
+
justify-content: center;
|
|
190
|
+
padding: var(--pine-dimension-sm);
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
.pds-multiselect__load-more {
|
|
194
|
+
align-items: center;
|
|
195
|
+
display: flex;
|
|
196
|
+
justify-content: center;
|
|
197
|
+
padding: var(--pine-dimension-xs);
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
.pds-multiselect__helper {
|
|
201
|
+
color: var(--pine-color-text-message);
|
|
202
|
+
font: var(--pine-typography-body-sm);
|
|
203
|
+
margin-block-start: var(--pine-dimension-2xs);
|
|
204
|
+
margin-inline-start: var(--pine-dimension-none);
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
.pds-multiselect__error {
|
|
208
|
+
align-items: flex-start;
|
|
209
|
+
color: var(--pine-color-text-message-danger);
|
|
210
|
+
display: flex;
|
|
211
|
+
font: var(--pine-typography-body-sm);
|
|
212
|
+
gap: var(--pine-dimension-2xs);
|
|
213
|
+
margin-block-start: var(--pine-dimension-2xs);
|
|
214
|
+
margin-inline-start: var(--pine-dimension-none);
|
|
215
|
+
}
|
|
216
|
+
.pds-multiselect__error pds-icon {
|
|
217
|
+
flex-shrink: var(--pine-dimension-none);
|
|
218
|
+
margin-block-start: var(--pine-dimension-025);
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
.visually-hidden {
|
|
222
|
+
border: var(--pine-dimension-none);
|
|
223
|
+
clip: rect(0 0 0 0);
|
|
224
|
+
clip-path: polygon(0 0, 0 0, 0 0);
|
|
225
|
+
height: 1px;
|
|
226
|
+
margin: -1px;
|
|
227
|
+
overflow: hidden;
|
|
228
|
+
padding: var(--pine-dimension-none);
|
|
229
|
+
position: absolute;
|
|
230
|
+
white-space: nowrap;
|
|
231
|
+
width: 1px;
|
|
232
|
+
}
|