@pine-ds/core 5.0.0-mercury.0 → 5.0.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/aria-references.js +1 -0
- package/components/attributes.js +1 -0
- package/components/closest.js +1 -11
- package/components/floating-ui.dom.js +1 -0
- package/components/form.js +1 -0
- package/components/i18n-format.js +1 -0
- package/components/index.d.ts +51 -0
- package/components/index.js +1 -33
- package/components/index2.js +1 -14
- package/components/keep-hydrated.js +1 -0
- package/components/mock-pds-modal.d.ts +11 -0
- package/components/mock-pds-modal.js +1 -0
- package/components/pds-accordion.js +1 -68
- package/components/pds-alert.d.ts +11 -0
- package/components/pds-alert.js +1 -0
- package/components/pds-avatar.js +1 -103
- package/components/pds-box.js +1 -124
- package/components/pds-box2.js +1 -0
- package/components/pds-button.js +1 -8
- package/components/pds-button2.js +1 -84
- package/components/pds-checkbox.js +1 -8
- package/components/pds-checkbox2.js +1 -101
- package/components/pds-chip.js +1 -78
- package/components/pds-chip2.js +1 -0
- package/components/pds-combobox.d.ts +11 -0
- package/components/pds-combobox.js +2 -0
- package/components/pds-container.d.ts +11 -0
- package/components/pds-container.js +1 -0
- package/components/pds-copytext.js +1 -88
- package/components/pds-datepicker.d.ts +11 -0
- package/components/pds-datepicker.js +1 -0
- package/components/pds-divider.js +1 -54
- package/components/pds-drawer-content.d.ts +11 -0
- package/components/pds-drawer-content.js +1 -0
- package/components/pds-drawer-footer.d.ts +11 -0
- package/components/pds-drawer-footer.js +1 -0
- package/components/pds-drawer-header.d.ts +11 -0
- package/components/pds-drawer-header.js +1 -0
- package/components/pds-drawer.d.ts +11 -0
- package/components/pds-drawer.js +1 -0
- package/components/pds-dropdown-menu-item.d.ts +11 -0
- package/components/pds-dropdown-menu-item.js +1 -0
- package/components/pds-dropdown-menu-separator.d.ts +11 -0
- package/components/pds-dropdown-menu-separator.js +1 -0
- package/components/pds-dropdown-menu.d.ts +11 -0
- package/components/pds-dropdown-menu.js +1 -0
- package/components/pds-filter.d.ts +11 -0
- package/components/pds-filter.js +1 -0
- package/components/pds-filters.d.ts +11 -0
- package/components/pds-filters.js +1 -0
- package/components/pds-icon.js +1 -8
- package/components/pds-icon2.js +1 -370
- package/components/pds-image.js +1 -55
- package/components/pds-input.js +1 -72
- package/components/pds-input2.js +1 -0
- package/components/pds-link.js +1 -65
- package/components/pds-link2.js +1 -0
- package/components/pds-loader.js +1 -68
- package/components/pds-loader2.js +1 -0
- package/components/pds-modal-content.d.ts +11 -0
- package/components/pds-modal-content.js +1 -0
- package/components/pds-modal-footer.d.ts +11 -0
- package/components/pds-modal-footer.js +1 -0
- package/components/pds-modal-header.d.ts +11 -0
- package/components/pds-modal-header.js +1 -0
- package/components/pds-modal.d.ts +11 -0
- package/components/pds-modal.js +1 -0
- package/components/pds-modal2.js +1 -0
- package/components/pds-multiselect.d.ts +11 -0
- package/components/pds-multiselect.js +1 -0
- package/components/pds-popover.d.ts +11 -0
- package/components/pds-popover.js +1 -0
- package/components/pds-progress.js +1 -49
- package/components/pds-property.d.ts +11 -0
- package/components/pds-property.js +1 -0
- package/components/pds-radio-group.d.ts +11 -0
- package/components/pds-radio-group.js +1 -0
- package/components/pds-radio.js +1 -78
- package/components/pds-row.js +1 -72
- package/components/pds-select.d.ts +11 -0
- package/components/pds-select.js +1 -0
- package/components/pds-sortable-item.js +1 -58
- package/components/pds-sortable.js +3 -2718
- package/components/pds-switch.js +1 -82
- package/components/pds-tab.js +1 -53
- package/components/pds-table-body.js +1 -36
- package/components/pds-table-cell.js +1 -8
- package/components/pds-table-cell2.js +1 -72
- package/components/pds-table-head-cell.js +1 -8
- package/components/pds-table-head-cell2.js +1 -98
- package/components/pds-table-head.js +1 -90
- package/components/pds-table-row.js +1 -95
- package/components/pds-table.js +1 -124
- package/components/pds-tabpanel.js +1 -45
- package/components/pds-tabs.js +1 -119
- package/components/pds-text.d.ts +11 -0
- package/components/pds-text.js +1 -0
- package/components/pds-text2.js +1 -0
- package/components/pds-textarea.js +1 -82
- package/components/pds-toast.d.ts +11 -0
- package/components/pds-toast.js +1 -0
- package/components/pds-tooltip.js +1 -178
- package/components/portal-target.js +1 -0
- package/components/reconnected-content.js +1 -0
- package/components/reflected-attribute-default.js +1 -0
- package/components/scroll.js +1 -0
- package/components/sortable-label.js +1 -0
- package/components/tabbable.js +1 -0
- package/components/truncation-tooltip.js +1 -0
- package/components/utils.js +1 -0
- package/dist/cjs/aria-references-CUmqibnO.js +54 -0
- package/dist/cjs/attributes-Cgbkw6gO.js +188 -0
- package/dist/cjs/closest-D0qyYtJ3.js +20 -0
- package/dist/cjs/floating-ui.dom-Dw41zbyY.js +1715 -0
- package/dist/cjs/form-MhwfKTuo.js +69 -0
- package/dist/cjs/i18n-format-BD0PmYzT.js +65 -0
- package/dist/cjs/index-BDnbr0DK.js +39 -0
- package/dist/cjs/index-D9iJuJCP.js +2950 -0
- package/dist/cjs/index.cjs.js +21 -2
- package/dist/cjs/keep-hydrated-AKoh0DG4.js +197 -0
- package/dist/cjs/loader.cjs.js +4 -8
- package/dist/cjs/mock-pds-modal.cjs.entry.js +92 -0
- package/dist/cjs/pds-accordion.cjs.entry.js +16 -14
- package/dist/cjs/pds-alert.cjs.entry.js +88 -0
- package/dist/cjs/pds-avatar.cjs.entry.js +123 -28
- package/dist/cjs/pds-box.cjs.entry.js +143 -58
- package/dist/cjs/pds-button.cjs.entry.js +234 -25
- package/dist/cjs/pds-checkbox.cjs.entry.js +102 -26
- package/dist/cjs/pds-chip.cjs.entry.js +226 -23
- package/dist/cjs/pds-combobox.cjs.entry.js +4500 -0
- package/dist/cjs/pds-container.cjs.entry.js +37 -0
- package/dist/cjs/pds-copytext.cjs.entry.js +98 -17
- package/dist/cjs/pds-datepicker.cjs.entry.js +2139 -0
- package/dist/cjs/pds-divider.cjs.entry.js +16 -11
- package/dist/cjs/pds-drawer-content.cjs.entry.js +24 -0
- package/dist/cjs/pds-drawer-footer.cjs.entry.js +24 -0
- package/dist/cjs/pds-drawer-header.cjs.entry.js +24 -0
- package/dist/cjs/pds-drawer.cjs.entry.js +156 -0
- package/dist/cjs/pds-dropdown-menu-item.cjs.entry.js +151 -0
- package/dist/cjs/pds-dropdown-menu-separator.cjs.entry.js +23 -0
- package/dist/cjs/pds-dropdown-menu.cjs.entry.js +453 -0
- package/dist/cjs/pds-filter.cjs.entry.js +512 -0
- package/dist/cjs/pds-filters.cjs.entry.js +18 -0
- package/dist/cjs/pds-icon.cjs.entry.js +334 -44
- package/dist/cjs/pds-image.cjs.entry.js +158 -16
- package/dist/cjs/pds-input.cjs.entry.js +300 -26
- package/dist/cjs/pds-link.cjs.entry.js +50 -13
- package/dist/cjs/pds-loader.cjs.entry.js +49 -14
- package/dist/cjs/pds-modal-content.cjs.entry.js +199 -0
- package/dist/cjs/pds-modal-footer.cjs.entry.js +24 -0
- package/dist/cjs/pds-modal-header.cjs.entry.js +24 -0
- package/dist/cjs/pds-modal.cjs.entry.js +592 -0
- package/dist/cjs/pds-multiselect.cjs.entry.js +1384 -0
- package/dist/cjs/pds-popover.cjs.entry.js +1103 -0
- package/dist/cjs/pds-progress.cjs.entry.js +30 -12
- package/dist/cjs/pds-property.cjs.entry.js +22 -0
- package/dist/cjs/pds-radio-group.cjs.entry.js +260 -0
- package/dist/cjs/pds-radio.cjs.entry.js +101 -23
- package/dist/cjs/pds-row.cjs.entry.js +50 -21
- package/dist/cjs/pds-select.cjs.entry.js +380 -0
- package/dist/cjs/pds-sortable-item.cjs.entry.js +59 -11
- package/dist/cjs/pds-sortable.cjs.entry.js +504 -119
- package/dist/cjs/pds-switch.cjs.entry.js +185 -27
- package/dist/cjs/pds-tab.cjs.entry.js +78 -16
- package/dist/cjs/pds-table-body.cjs.entry.js +5 -9
- package/dist/cjs/pds-table-cell.cjs.entry.js +150 -19
- package/dist/cjs/pds-table-head-cell.cjs.entry.js +222 -30
- package/dist/cjs/pds-table-head.cjs.entry.js +17 -13
- package/dist/cjs/pds-table-row.cjs.entry.js +104 -16
- package/dist/cjs/pds-table.cjs.entry.js +434 -22
- package/dist/cjs/pds-tabpanel.cjs.entry.js +32 -13
- package/dist/cjs/pds-tabs.cjs.entry.js +206 -18
- package/dist/cjs/pds-text.cjs.entry.js +141 -0
- package/dist/cjs/pds-textarea.cjs.entry.js +318 -29
- package/dist/cjs/pds-toast.cjs.entry.js +156 -0
- package/dist/cjs/pds-tooltip.cjs.entry.js +401 -110
- package/dist/cjs/pine-core.cjs.js +8 -10
- package/dist/cjs/portal-target-e8WQ6dLx.js +70 -0
- package/dist/cjs/reconnected-content-CpnEQcTp.js +29 -0
- package/dist/cjs/reflected-attribute-default-DVYHG6O1.js +44 -0
- package/dist/cjs/scroll-2XcoE_6Q.js +79 -0
- package/dist/cjs/sortable-label-DOcJrHvA.js +37 -0
- package/dist/cjs/tabbable-BrrrGvdG.js +86 -0
- package/dist/cjs/truncation-tooltip-CM5HgRHh.js +430 -0
- package/dist/cjs/utils-BhRmyxT8.js +121 -0
- package/dist/collection/collection-manifest.json +30 -3
- package/dist/collection/components/_internal/pds-label/pds-label.js +0 -1
- package/dist/collection/components/pds-accordion/pds-accordion.css +24 -29
- package/dist/collection/components/pds-accordion/pds-accordion.js +36 -9
- package/dist/collection/components/pds-accordion/stories/pds-accordion.stories.js +12 -18
- package/dist/collection/components/pds-alert/pds-alert.css +141 -0
- package/dist/collection/components/pds-alert/pds-alert.js +291 -0
- package/dist/collection/components/pds-alert/pds-alert.tokens.css +85 -0
- package/dist/collection/components/pds-alert/stories/pds-alert.stories.js +114 -0
- package/dist/collection/components/pds-avatar/pds-avatar.css +56 -23
- package/dist/collection/components/pds-avatar/pds-avatar.js +284 -32
- package/dist/collection/components/pds-avatar/stories/pds-avatar.stories.js +41 -3
- package/dist/collection/components/pds-box/pds-box.css +5520 -264
- package/dist/collection/components/pds-box/pds-box.js +2854 -252
- package/dist/collection/components/pds-box/stories/pds-box.stories.js +86 -30
- package/dist/collection/components/pds-button/pds-button.css +255 -93
- package/dist/collection/components/pds-button/pds-button.js +470 -40
- package/dist/collection/components/pds-button/stories/pds-button.stories.js +242 -16
- package/dist/collection/components/pds-checkbox/checkbox-interface.js +0 -1
- package/dist/collection/components/pds-checkbox/pds-checkbox.css +168 -60
- package/dist/collection/components/pds-checkbox/pds-checkbox.js +186 -54
- package/dist/collection/components/pds-checkbox/stories/pds-checkbox.stories.js +45 -15
- package/dist/collection/components/pds-chip/pds-chip.css +239 -114
- package/dist/collection/components/pds-chip/pds-chip.js +437 -60
- package/dist/collection/components/pds-chip/pds-chip.tokens.css +69 -0
- package/dist/collection/components/pds-chip/stories/pds-chip.stories.js +164 -24
- package/dist/collection/components/pds-combobox/combobox-interface.js +1 -0
- package/dist/collection/components/pds-combobox/grouped-options-panel.js +318 -0
- package/dist/collection/components/pds-combobox/pds-combobox.css +953 -0
- package/dist/collection/components/pds-combobox/pds-combobox.js +3839 -0
- package/dist/collection/components/pds-combobox/stories/pds-combobox.stories.js +934 -0
- package/dist/collection/components/pds-container/pds-container.css +26 -0
- package/dist/collection/components/pds-container/pds-container.js +111 -0
- package/dist/collection/components/pds-container/stories/pds-container.stories.js +89 -0
- package/dist/collection/components/pds-copytext/pds-copytext.css +39 -51
- package/dist/collection/components/pds-copytext/pds-copytext.js +116 -23
- package/dist/collection/components/pds-copytext/stories/pds-copytext.stories.js +6 -12
- package/dist/collection/components/pds-datepicker/calendar-portal.js +99 -0
- package/dist/collection/components/pds-datepicker/date-utils.js +174 -0
- package/dist/collection/components/pds-datepicker/datepicker-interface.js +1 -0
- package/dist/collection/components/pds-datepicker/pds-datepicker.css +547 -0
- package/dist/collection/components/pds-datepicker/pds-datepicker.js +2505 -0
- package/dist/collection/components/pds-datepicker/presets.js +131 -0
- package/dist/collection/components/pds-datepicker/stories/pds-datepicker.stories.js +206 -0
- package/dist/collection/components/pds-datepicker/value.js +296 -0
- package/dist/collection/components/pds-divider/pds-divider.css +71 -40
- package/dist/collection/components/pds-divider/pds-divider.js +47 -11
- package/dist/collection/components/pds-divider/stories/pds-divider.stories.js +7 -2
- package/dist/collection/components/pds-drawer/pds-drawer-content/pds-drawer-content.css +22 -0
- package/dist/collection/components/pds-drawer/pds-drawer-content/pds-drawer-content.js +27 -0
- package/dist/collection/components/pds-drawer/pds-drawer-footer/pds-drawer-footer.css +15 -0
- package/dist/collection/components/pds-drawer/pds-drawer-footer/pds-drawer-footer.js +27 -0
- package/dist/collection/components/pds-drawer/pds-drawer-header/pds-drawer-header.css +15 -0
- package/dist/collection/components/pds-drawer/pds-drawer-header/pds-drawer-header.js +27 -0
- package/dist/collection/components/pds-drawer/pds-drawer.css +47 -0
- package/dist/collection/components/pds-drawer/pds-drawer.js +405 -0
- package/dist/collection/components/pds-drawer/stories/pds-drawer.stories.js +77 -0
- package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-item/pds-dropdown-menu-item.css +93 -0
- package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-item/pds-dropdown-menu-item.js +398 -0
- package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-separator/pds-dropdown-menu-separator.css +7 -0
- package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-separator/pds-dropdown-menu-separator.js +71 -0
- package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu.css +68 -0
- package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu.js +545 -0
- package/dist/collection/components/pds-dropdown-menu/stories/pds-dropdown-menu.stories.js +100 -0
- package/dist/collection/components/pds-filters/pds-filter/filter-interface.js +1 -0
- package/dist/collection/components/pds-filters/pds-filter/pds-filter.css +200 -0
- package/dist/collection/components/pds-filters/pds-filter/pds-filter.js +756 -0
- package/dist/collection/components/pds-filters/pds-filter/stories/pds-filter.stories.js +87 -0
- package/dist/collection/components/pds-filters/pds-filters.css +10 -0
- package/dist/collection/components/pds-filters/pds-filters.js +44 -0
- package/dist/collection/components/pds-filters/stories/pds-filters.stories.js +34 -0
- package/dist/collection/components/pds-icon/stories/pds-icon.stories.js +2 -2
- package/dist/collection/components/pds-image/image-interface.js +1 -0
- package/dist/collection/components/pds-image/pds-image.css +13 -1
- package/dist/collection/components/pds-image/pds-image.js +297 -31
- package/dist/collection/components/pds-image/stories/pds-image.stories.js +124 -8
- package/dist/collection/components/pds-input/input-interface.js +1 -0
- package/dist/collection/components/pds-input/pds-input.css +275 -63
- package/dist/collection/components/pds-input/pds-input.js +687 -57
- package/dist/collection/components/pds-input/pds-input.tokens.css +3 -0
- package/dist/collection/components/pds-input/stories/pds-input.stories.js +310 -14
- package/dist/collection/components/pds-link/pds-link.css +45 -30
- package/dist/collection/components/pds-link/pds-link.js +332 -19
- package/dist/collection/components/pds-link/stories/pds-link.stories.js +82 -4
- package/dist/collection/components/pds-loader/pds-loader.css +17 -30
- package/dist/collection/components/pds-loader/pds-loader.js +62 -14
- package/dist/collection/components/pds-loader/stories/pds-loader.stories.js +3 -5
- package/dist/collection/components/pds-modal/pds-modal-content/pds-modal-content.css +25 -0
- package/dist/collection/components/pds-modal/pds-modal-content/pds-modal-content.js +235 -0
- package/dist/collection/components/pds-modal/pds-modal-footer/pds-modal-footer.css +8 -0
- package/dist/collection/components/pds-modal/pds-modal-footer/pds-modal-footer.js +27 -0
- package/dist/collection/components/pds-modal/pds-modal-header/pds-modal-header.css +8 -0
- package/dist/collection/components/pds-modal/pds-modal-header/pds-modal-header.js +27 -0
- package/dist/collection/components/pds-modal/pds-modal.css +142 -0
- package/dist/collection/components/pds-modal/pds-modal.js +852 -0
- package/dist/collection/components/pds-modal/stories/pds-modal.stories.js +745 -0
- package/dist/collection/components/pds-modal/test/mock-pds-modal.js +286 -0
- package/dist/collection/components/pds-multiselect/multiselect-interface.js +1 -0
- package/dist/collection/components/pds-multiselect/pds-multiselect.css +365 -0
- package/dist/collection/components/pds-multiselect/pds-multiselect.js +2597 -0
- package/dist/collection/components/pds-multiselect/stories/pds-multiselect.stories.js +866 -0
- package/dist/collection/components/pds-popover/pds-popover.css +16 -0
- package/dist/collection/components/pds-popover/pds-popover.js +1347 -0
- package/dist/collection/components/pds-popover/popover-interface.js +1 -0
- package/dist/collection/components/pds-popover/stories/pds-popover.stories.js +117 -0
- package/dist/collection/components/pds-progress/pds-progress.css +11 -24
- package/dist/collection/components/pds-progress/pds-progress.js +49 -16
- package/dist/collection/components/pds-progress/stories/pds-progress.stories.js +2 -4
- package/dist/collection/components/pds-property/pds-property.css +4 -0
- package/dist/collection/components/pds-property/pds-property.js +70 -0
- package/dist/collection/components/pds-property/stories/pds-property.stories.js +16 -0
- package/dist/collection/components/pds-radio/pds-radio.css +285 -54
- package/dist/collection/components/pds-radio/pds-radio.js +226 -53
- package/dist/collection/components/pds-radio/stories/pds-radio.stories.js +66 -19
- package/dist/collection/components/pds-radio-group/pds-radio-group.css +45 -0
- package/dist/collection/components/pds-radio-group/pds-radio-group.js +514 -0
- package/dist/collection/components/pds-radio-group/radio-group-interface.js +1 -0
- package/dist/collection/components/pds-radio-group/stories/pds-radio-group.stories.js +179 -0
- package/dist/collection/components/pds-row/pds-row.css +10 -9
- package/dist/collection/components/pds-row/pds-row.js +132 -30
- package/dist/collection/components/pds-row/stories/pds-row.stories.js +27 -24
- package/dist/collection/components/pds-select/pds-select.css +168 -0
- package/dist/collection/components/pds-select/pds-select.js +728 -0
- package/dist/collection/components/pds-select/pds-select.tokens.css +3 -0
- package/dist/collection/components/pds-select/stories/pds-select.stories.js +205 -0
- package/dist/collection/components/pds-sortable/pds-sortable-item/pds-sortable-item.css +64 -26
- package/dist/collection/components/pds-sortable/pds-sortable-item/pds-sortable-item.js +87 -10
- package/dist/collection/components/pds-sortable/pds-sortable-item/stories/pds-sortable-item.stories.js +0 -2
- package/dist/collection/components/pds-sortable/pds-sortable.css +2 -4
- package/dist/collection/components/pds-sortable/pds-sortable.js +571 -17
- package/dist/collection/components/pds-sortable/sortable-interface.js +0 -1
- package/dist/collection/components/pds-sortable/sortable-label.js +33 -0
- package/dist/collection/components/pds-sortable/stories/pds-sortable.stories.js +49 -13
- package/dist/collection/components/pds-switch/pds-switch.css +60 -59
- package/dist/collection/components/pds-switch/pds-switch.js +268 -63
- package/dist/collection/components/pds-switch/stories/pds-switch.stories.js +90 -28
- package/dist/collection/components/pds-table/pds-table-body/pds-table-body.js +4 -2
- package/dist/collection/components/pds-table/pds-table-cell/pds-table-cell.css +36 -19
- package/dist/collection/components/pds-table/pds-table-cell/pds-table-cell.js +193 -15
- package/dist/collection/components/pds-table/pds-table-cell/stories/pds-table-cell.stories.js +22 -7
- package/dist/collection/components/pds-table/pds-table-head/pds-table-head.css +22 -5
- package/dist/collection/components/pds-table/pds-table-head/pds-table-head.js +75 -11
- package/dist/collection/components/pds-table/pds-table-head-cell/pds-table-head-cell.css +57 -25
- package/dist/collection/components/pds-table/pds-table-head-cell/pds-table-head-cell.js +328 -24
- package/dist/collection/components/pds-table/pds-table-head-cell/stories/pds-table-head-cell.stories.js +12 -7
- package/dist/collection/components/pds-table/pds-table-row/pds-table-row.css +14 -5
- package/dist/collection/components/pds-table/pds-table-row/pds-table-row.js +118 -13
- package/dist/collection/components/pds-table/pds-table-row/stories/pds-table-row.stories.js +3 -9
- package/dist/collection/components/pds-table/pds-table.css +106 -17
- package/dist/collection/components/pds-table/pds-table.js +576 -44
- package/dist/collection/components/pds-table/stories/pds-table.stories.js +428 -33
- package/dist/collection/components/pds-tabs/pds-tab/pds-tab.css +102 -60
- package/dist/collection/components/pds-tabs/pds-tab/pds-tab.js +240 -18
- package/dist/collection/components/pds-tabs/pds-tab/stories/pds-tab.stories.js +15 -0
- package/dist/collection/components/pds-tabs/pds-tabpanel/pds-tabpanel.css +15 -2
- package/dist/collection/components/pds-tabs/pds-tabpanel/pds-tabpanel.js +68 -12
- package/dist/collection/components/pds-tabs/pds-tabpanel/stories/pds-tabpanel.stories.js +15 -0
- package/dist/collection/components/pds-tabs/pds-tabs.css +31 -11
- package/dist/collection/components/pds-tabs/pds-tabs.js +301 -30
- package/dist/collection/components/pds-tabs/stories/pds-tabs.stories.js +70 -27
- package/dist/collection/components/pds-text/pds-text.css +207 -0
- package/dist/collection/components/pds-text/pds-text.js +328 -0
- package/dist/collection/components/pds-text/stories/pds-text.stories.js +141 -0
- package/dist/collection/components/pds-textarea/pds-textarea.css +127 -57
- package/dist/collection/components/pds-textarea/pds-textarea.js +598 -57
- package/dist/collection/components/pds-textarea/stories/pds-textarea.stories.js +101 -25
- package/dist/collection/components/pds-textarea/textarea-interface.js +0 -1
- package/dist/collection/components/pds-toast/pds-toast.css +167 -0
- package/dist/collection/components/pds-toast/pds-toast.js +362 -0
- package/dist/collection/components/pds-toast/stories/pds-toast.stories.js +98 -0
- package/dist/collection/components/pds-tooltip/pds-tooltip.css +73 -79
- package/dist/collection/components/pds-tooltip/pds-tooltip.js +451 -80
- package/dist/collection/components/pds-tooltip/stories/pds-tooltip.stories.js +52 -24
- package/dist/collection/global/pine-global.js +6 -0
- package/dist/collection/global/pine-ui-global.js +0 -1
- package/dist/collection/global/styles/utils/label.css +17 -0
- package/dist/collection/i18n/i18n-format.js +59 -0
- package/dist/collection/i18n/index.js +1 -0
- package/dist/collection/index.js +3 -1
- package/dist/collection/utils/aria-references.js +48 -0
- package/dist/collection/utils/attributes.js +180 -0
- package/dist/collection/utils/closest.js +8 -1
- package/dist/collection/utils/css.js +41 -0
- package/dist/collection/utils/form.js +41 -8
- package/dist/collection/utils/interfaces.js +1 -0
- package/dist/collection/utils/keep-hydrated.js +188 -0
- package/dist/collection/utils/overlay.js +66 -50
- package/dist/collection/utils/portal-target.js +64 -0
- package/dist/collection/utils/reconnected-content.js +25 -0
- package/dist/collection/utils/reflected-attribute-default.js +40 -0
- package/dist/collection/utils/scroll.js +77 -0
- package/dist/collection/utils/tabbable.js +82 -0
- package/dist/collection/utils/test/axe.js +106 -0
- package/dist/collection/utils/test/host-strip.js +50 -0
- package/dist/collection/utils/test/reconnect-safety.js +31 -0
- package/dist/collection/utils/test/reduced-motion.js +78 -0
- package/dist/collection/utils/truncation-tooltip.js +422 -0
- package/dist/collection/utils/types.js +18 -2
- package/dist/collection/utils/utils.js +109 -4
- package/dist/docs.d.ts +45 -0
- package/dist/docs.json +25718 -2809
- package/dist/esm/aria-references-CNn1lObg.js +50 -0
- package/dist/esm/attributes-CD8knu3a.js +183 -0
- package/dist/esm/closest-DHPzKMVS.js +17 -0
- package/dist/esm/floating-ui.dom-Cuc0DYlm.js +1706 -0
- package/dist/esm/form-BuRbS7Hp.js +63 -0
- package/dist/esm/i18n-format-BJgZHCWe.js +61 -0
- package/dist/esm/index-4_RRPJTO.js +2938 -0
- package/dist/esm/index-B0DXTeeV.js +21 -0
- package/dist/esm/index.js +21 -2
- package/dist/esm/keep-hydrated-BgNaWLoS.js +190 -0
- package/dist/esm/loader.js +4 -6
- package/dist/esm/mock-pds-modal.entry.js +90 -0
- package/dist/esm/pds-accordion.entry.js +16 -12
- package/dist/esm/pds-alert.entry.js +86 -0
- package/dist/esm/pds-avatar.entry.js +123 -26
- package/dist/esm/pds-box.entry.js +143 -56
- package/dist/esm/pds-button.entry.js +233 -22
- package/dist/esm/pds-checkbox.entry.js +103 -25
- package/dist/esm/pds-chip.entry.js +227 -22
- package/dist/esm/pds-combobox.entry.js +4498 -0
- package/dist/esm/pds-container.entry.js +35 -0
- package/dist/esm/pds-copytext.entry.js +98 -15
- package/dist/esm/pds-datepicker.entry.js +2137 -0
- package/dist/esm/pds-divider.entry.js +16 -9
- package/dist/esm/pds-drawer-content.entry.js +22 -0
- package/dist/esm/pds-drawer-footer.entry.js +22 -0
- package/dist/esm/pds-drawer-header.entry.js +22 -0
- package/dist/esm/pds-drawer.entry.js +154 -0
- package/dist/esm/pds-dropdown-menu-item.entry.js +149 -0
- package/dist/esm/pds-dropdown-menu-separator.entry.js +21 -0
- package/dist/esm/pds-dropdown-menu.entry.js +451 -0
- package/dist/esm/pds-filter.entry.js +510 -0
- package/dist/esm/pds-filters.entry.js +16 -0
- package/dist/esm/pds-icon.entry.js +334 -42
- package/dist/esm/pds-image.entry.js +158 -14
- package/dist/esm/pds-input.entry.js +301 -25
- package/dist/esm/pds-link.entry.js +50 -11
- package/dist/esm/pds-loader.entry.js +49 -12
- package/dist/esm/pds-modal-content.entry.js +197 -0
- package/dist/esm/pds-modal-footer.entry.js +22 -0
- package/dist/esm/pds-modal-header.entry.js +22 -0
- package/dist/esm/pds-modal.entry.js +590 -0
- package/dist/esm/pds-multiselect.entry.js +1382 -0
- package/dist/esm/pds-popover.entry.js +1101 -0
- package/dist/esm/pds-progress.entry.js +30 -10
- package/dist/esm/pds-property.entry.js +20 -0
- package/dist/esm/pds-radio-group.entry.js +258 -0
- package/dist/esm/pds-radio.entry.js +102 -22
- package/dist/esm/pds-row.entry.js +50 -19
- package/dist/esm/pds-select.entry.js +378 -0
- package/dist/esm/pds-sortable-item.entry.js +59 -9
- package/dist/esm/pds-sortable.entry.js +504 -117
- package/dist/esm/pds-switch.entry.js +186 -26
- package/dist/esm/pds-tab.entry.js +78 -14
- package/dist/esm/pds-table-body.entry.js +5 -7
- package/dist/esm/pds-table-cell.entry.js +150 -17
- package/dist/esm/pds-table-head-cell.entry.js +222 -28
- package/dist/esm/pds-table-head.entry.js +17 -11
- package/dist/esm/pds-table-row.entry.js +104 -14
- package/dist/esm/pds-table.entry.js +434 -20
- package/dist/esm/pds-tabpanel.entry.js +32 -11
- package/dist/esm/pds-tabs.entry.js +206 -16
- package/dist/esm/pds-text.entry.js +139 -0
- package/dist/esm/pds-textarea.entry.js +319 -28
- package/dist/esm/pds-toast.entry.js +154 -0
- package/dist/esm/pds-tooltip.entry.js +401 -108
- package/dist/esm/pine-core.js +6 -7
- package/dist/esm/portal-target-CKRzRKdO.js +66 -0
- package/dist/esm/reconnected-content-RFpTWV6r.js +27 -0
- package/dist/esm/reflected-attribute-default-t3idJwV0.js +42 -0
- package/dist/esm/scroll-DtgUQhjl.js +75 -0
- package/dist/esm/sortable-label-PItnzVVR.js +35 -0
- package/dist/esm/tabbable-C6ZWpp3v.js +84 -0
- package/dist/esm/truncation-tooltip-CkIWm6Z-.js +425 -0
- package/dist/esm/utils-OYK5-nwe.js +114 -0
- package/dist/esm-es5/aria-references-CNn1lObg.js +1 -0
- package/dist/esm-es5/attributes-CD8knu3a.js +1 -0
- package/dist/esm-es5/closest-DHPzKMVS.js +1 -0
- package/dist/esm-es5/floating-ui.dom-Cuc0DYlm.js +1 -0
- package/dist/esm-es5/form-BuRbS7Hp.js +1 -0
- package/dist/esm-es5/i18n-format-BJgZHCWe.js +1 -0
- package/dist/esm-es5/index-4_RRPJTO.js +2 -0
- package/dist/esm-es5/index-B0DXTeeV.js +1 -0
- package/dist/esm-es5/index.js +1 -2
- package/dist/esm-es5/keep-hydrated-BgNaWLoS.js +1 -0
- package/dist/esm-es5/loader.js +1 -2
- package/dist/esm-es5/mock-pds-modal.entry.js +1 -0
- package/dist/esm-es5/pds-accordion.entry.js +1 -2
- package/dist/esm-es5/pds-alert.entry.js +1 -0
- package/dist/esm-es5/pds-avatar.entry.js +1 -2
- package/dist/esm-es5/pds-box.entry.js +1 -2
- package/dist/esm-es5/pds-button.entry.js +1 -2
- package/dist/esm-es5/pds-checkbox.entry.js +1 -2
- package/dist/esm-es5/pds-chip.entry.js +1 -2
- package/dist/esm-es5/pds-combobox.entry.js +2 -0
- package/dist/esm-es5/pds-container.entry.js +1 -0
- package/dist/esm-es5/pds-copytext.entry.js +1 -2
- package/dist/esm-es5/pds-datepicker.entry.js +1 -0
- package/dist/esm-es5/pds-divider.entry.js +1 -2
- package/dist/esm-es5/pds-drawer-content.entry.js +1 -0
- package/dist/esm-es5/pds-drawer-footer.entry.js +1 -0
- package/dist/esm-es5/pds-drawer-header.entry.js +1 -0
- package/dist/esm-es5/pds-drawer.entry.js +1 -0
- package/dist/esm-es5/pds-dropdown-menu-item.entry.js +1 -0
- package/dist/esm-es5/pds-dropdown-menu-separator.entry.js +1 -0
- package/dist/esm-es5/pds-dropdown-menu.entry.js +1 -0
- package/dist/esm-es5/pds-filter.entry.js +1 -0
- package/dist/esm-es5/pds-filters.entry.js +1 -0
- package/dist/esm-es5/pds-icon.entry.js +1 -2
- package/dist/esm-es5/pds-image.entry.js +1 -2
- package/dist/esm-es5/pds-input.entry.js +1 -2
- package/dist/esm-es5/pds-link.entry.js +1 -2
- package/dist/esm-es5/pds-loader.entry.js +1 -2
- package/dist/esm-es5/pds-modal-content.entry.js +1 -0
- package/dist/esm-es5/pds-modal-footer.entry.js +1 -0
- package/dist/esm-es5/pds-modal-header.entry.js +1 -0
- package/dist/esm-es5/pds-modal.entry.js +1 -0
- package/dist/esm-es5/pds-multiselect.entry.js +1 -0
- package/dist/esm-es5/pds-popover.entry.js +1 -0
- package/dist/esm-es5/pds-progress.entry.js +1 -2
- package/dist/esm-es5/pds-property.entry.js +1 -0
- package/dist/esm-es5/pds-radio-group.entry.js +1 -0
- package/dist/esm-es5/pds-radio.entry.js +1 -2
- package/dist/esm-es5/pds-row.entry.js +1 -2
- package/dist/esm-es5/pds-select.entry.js +1 -0
- package/dist/esm-es5/pds-sortable-item.entry.js +1 -2
- package/dist/esm-es5/pds-sortable.entry.js +3 -4
- package/dist/esm-es5/pds-switch.entry.js +1 -2
- package/dist/esm-es5/pds-tab.entry.js +1 -2
- package/dist/esm-es5/pds-table-body.entry.js +1 -2
- package/dist/esm-es5/pds-table-cell.entry.js +1 -2
- package/dist/esm-es5/pds-table-head-cell.entry.js +1 -2
- package/dist/esm-es5/pds-table-head.entry.js +1 -2
- package/dist/esm-es5/pds-table-row.entry.js +1 -2
- package/dist/esm-es5/pds-table.entry.js +1 -2
- package/dist/esm-es5/pds-tabpanel.entry.js +1 -2
- package/dist/esm-es5/pds-tabs.entry.js +1 -2
- package/dist/esm-es5/pds-text.entry.js +1 -0
- package/dist/esm-es5/pds-textarea.entry.js +1 -2
- package/dist/esm-es5/pds-toast.entry.js +1 -0
- package/dist/esm-es5/pds-tooltip.entry.js +1 -2
- package/dist/esm-es5/pine-core.js +1 -2
- package/dist/esm-es5/portal-target-CKRzRKdO.js +1 -0
- package/dist/esm-es5/reconnected-content-RFpTWV6r.js +1 -0
- package/dist/esm-es5/reflected-attribute-default-t3idJwV0.js +1 -0
- package/dist/esm-es5/scroll-DtgUQhjl.js +1 -0
- package/dist/esm-es5/sortable-label-PItnzVVR.js +1 -0
- package/dist/esm-es5/tabbable-C6ZWpp3v.js +1 -0
- package/dist/esm-es5/truncation-tooltip-CkIWm6Z-.js +1 -0
- package/dist/esm-es5/utils-OYK5-nwe.js +1 -0
- package/dist/pine-core/index.esm.js +1 -2
- package/dist/pine-core/p-053ff8eb.system.entry.js +1 -0
- package/dist/pine-core/p-08b9e3ad.entry.js +1 -0
- package/dist/pine-core/p-0ac4262e.system.entry.js +1 -0
- package/dist/pine-core/p-0e1b8bd1.system.entry.js +1 -0
- package/dist/pine-core/p-12fdc65f.entry.js +1 -0
- package/dist/pine-core/p-1765a41b.system.entry.js +1 -0
- package/dist/pine-core/p-18524c25.entry.js +1 -0
- package/dist/pine-core/p-191eb9e5.system.entry.js +1 -0
- package/dist/pine-core/p-1c584a20.entry.js +1 -0
- package/dist/pine-core/p-1d4ecc35.entry.js +7 -0
- package/dist/pine-core/p-1e0c9738.system.entry.js +1 -0
- package/dist/pine-core/p-1fb1ca3d.entry.js +1 -0
- package/dist/pine-core/p-2482e4ab.system.entry.js +1 -0
- package/dist/pine-core/p-2cc7c682.entry.js +1 -0
- package/dist/pine-core/p-2f15e85f.entry.js +1 -0
- package/dist/pine-core/p-3306dc5a.system.entry.js +1 -0
- package/dist/pine-core/p-3338fc2e.entry.js +1 -0
- package/dist/pine-core/p-33da254f.system.entry.js +1 -0
- package/dist/pine-core/p-34d22a45.system.entry.js +1 -0
- package/dist/pine-core/p-35b90796.entry.js +1 -0
- package/dist/pine-core/p-38148f5b.entry.js +1 -0
- package/dist/pine-core/p-39264dfb.system.entry.js +1 -0
- package/dist/pine-core/p-3aed0418.system.entry.js +1 -0
- package/dist/pine-core/p-3dd879fd.entry.js +1 -0
- package/dist/pine-core/p-3f1c05cd.system.entry.js +1 -0
- package/dist/pine-core/p-3fc9ef80.system.entry.js +1 -0
- package/dist/pine-core/p-4125a4a6.system.entry.js +1 -0
- package/dist/pine-core/p-42376f2c.entry.js +1 -0
- package/dist/pine-core/p-4263038f.entry.js +1 -0
- package/dist/pine-core/p-47df9e9f.system.entry.js +3 -0
- package/dist/pine-core/p-55a4659a.system.entry.js +1 -0
- package/dist/pine-core/p-563baadd.system.entry.js +1 -0
- package/dist/pine-core/p-57af5c29.system.entry.js +1 -0
- package/dist/pine-core/p-587bd9ed.entry.js +1 -0
- package/dist/pine-core/p-5c7dfa7a.entry.js +1 -0
- package/dist/pine-core/p-5db87fda.system.entry.js +1 -0
- package/dist/pine-core/p-5eb0c78c.system.entry.js +1 -0
- package/dist/pine-core/p-6017afb5.system.entry.js +1 -0
- package/dist/pine-core/p-63d47dd4.system.entry.js +1 -0
- package/dist/pine-core/p-66e61921.system.entry.js +1 -0
- package/dist/pine-core/p-67999353.entry.js +1 -0
- package/dist/pine-core/p-68328afc.entry.js +1 -0
- package/dist/pine-core/p-6a965119.entry.js +1 -0
- package/dist/pine-core/p-6fdc6df9.system.entry.js +1 -0
- package/dist/pine-core/p-72668673.system.entry.js +1 -0
- package/dist/pine-core/p-765f4207.entry.js +1 -0
- package/dist/pine-core/p-77530cf2.entry.js +1 -0
- package/dist/pine-core/p-77a22399.entry.js +1 -0
- package/dist/pine-core/p-783127bf.entry.js +1 -0
- package/dist/pine-core/p-7a51f15e.entry.js +1 -0
- package/dist/pine-core/p-7b978fff.system.entry.js +1 -0
- package/dist/pine-core/p-82f7eed1.entry.js +1 -0
- package/dist/pine-core/p-863ff553.system.entry.js +1 -0
- package/dist/pine-core/p-87a32ded.system.entry.js +1 -0
- package/dist/pine-core/p-87cadd6f.system.entry.js +8 -0
- package/dist/pine-core/p-8db554fe.entry.js +1 -0
- package/dist/pine-core/p-8e7e7bba.entry.js +1 -0
- package/dist/pine-core/p-907c69e9.system.entry.js +1 -0
- package/dist/pine-core/p-90f83a5b.system.entry.js +1 -0
- package/dist/pine-core/p-931a0ccd.system.entry.js +1 -0
- package/dist/pine-core/p-94fd9595.entry.js +1 -0
- package/dist/pine-core/p-96bccf85.system.entry.js +1 -0
- package/dist/pine-core/p-9a63bf72.entry.js +1 -0
- package/dist/pine-core/p-9d983e09.system.entry.js +1 -0
- package/dist/pine-core/p-9da10cfb.system.entry.js +1 -0
- package/dist/pine-core/p-9e005996.entry.js +1 -0
- package/dist/pine-core/p-B0DXTeeV.js +1 -0
- package/dist/pine-core/p-BJgZHCWe.js +1 -0
- package/dist/pine-core/p-BK1sLRfg.system.js +2 -0
- package/dist/pine-core/p-BNTlHhoO.system.js +1 -0
- package/dist/pine-core/p-BSRFZB4I.system.js +1 -0
- package/dist/pine-core/p-BZ1l3LGl.system.js +1 -0
- package/dist/pine-core/p-BZsj6eAn.system.js +1 -0
- package/dist/pine-core/p-BbXp4qBM.system.js +1 -0
- package/dist/pine-core/p-BgNaWLoS.js +1 -0
- package/dist/pine-core/p-Bkho_oFB.system.js +1 -0
- package/dist/pine-core/p-BlJQebvG.system.js +1 -0
- package/dist/pine-core/p-BuRbS7Hp.js +1 -0
- package/dist/pine-core/p-BxIzb-Wc.system.js +1 -0
- package/dist/pine-core/p-C35-349-.system.js +1 -0
- package/dist/pine-core/p-C6ZWpp3v.js +1 -0
- package/dist/pine-core/p-CANeE7Ss.system.js +1 -0
- package/dist/pine-core/p-CIe1DGXa.system.js +1 -0
- package/dist/pine-core/p-CKRzRKdO.js +1 -0
- package/dist/pine-core/p-CNn1lObg.js +1 -0
- package/dist/pine-core/p-CQJ44c6o.system.js +1 -0
- package/dist/pine-core/p-Cuc0DYlm.js +1 -0
- package/dist/pine-core/p-DHPzKMVS.js +1 -0
- package/dist/pine-core/p-DVra397g.system.js +1 -0
- package/dist/pine-core/p-DtgUQhjl.js +1 -0
- package/dist/pine-core/p-Dv9QBmIF.js +1 -0
- package/dist/pine-core/p-Dx8tEj0U.system.js +1 -0
- package/dist/pine-core/p-M31tvpDN.js +2 -0
- package/dist/pine-core/p-OYK5-nwe.js +1 -0
- package/dist/pine-core/p-PItnzVVR.js +1 -0
- package/dist/pine-core/p-RFpTWV6r.js +1 -0
- package/dist/pine-core/p-VPGVqK3P.system.js +1 -0
- package/dist/pine-core/p-XK45dzWR.system.js +1 -0
- package/dist/pine-core/p-a0fa77b1.system.entry.js +1 -0
- package/dist/pine-core/p-a149af29.entry.js +1 -0
- package/dist/pine-core/p-a1575919.entry.js +1 -0
- package/dist/pine-core/p-a20d9eca.system.entry.js +1 -0
- package/dist/pine-core/p-a5782d99.entry.js +1 -0
- package/dist/pine-core/p-a9eaf160.system.entry.js +1 -0
- package/dist/pine-core/p-aae96744.entry.js +1 -0
- package/dist/pine-core/p-b379d9bc.system.entry.js +1 -0
- package/dist/pine-core/p-b96bdff6.entry.js +1 -0
- package/dist/pine-core/p-badde164.entry.js +1 -0
- package/dist/pine-core/p-bbd9ab75.entry.js +1 -0
- package/dist/pine-core/p-biShcgLI.js +1 -0
- package/dist/pine-core/p-c12b5cd7.system.entry.js +1 -0
- package/dist/pine-core/p-c2afe4f3.system.entry.js +1 -0
- package/dist/pine-core/p-c65f4eaa.system.entry.js +1 -0
- package/dist/pine-core/p-c6c5ada6.system.entry.js +1 -0
- package/dist/pine-core/p-c76d8b9e.system.entry.js +1 -0
- package/dist/pine-core/p-c89ea2d3.entry.js +1 -0
- package/dist/pine-core/p-ce9fa14b.entry.js +1 -0
- package/dist/pine-core/p-d4b0122f.system.entry.js +1 -0
- package/dist/pine-core/p-d61a0fe8.system.entry.js +1 -0
- package/dist/pine-core/p-d7d7a4e1.entry.js +1 -0
- package/dist/pine-core/p-d85d50cb.entry.js +1 -0
- package/dist/pine-core/p-daa802f1.entry.js +2 -0
- package/dist/pine-core/p-de3f4a28.system.entry.js +1 -0
- package/dist/pine-core/p-e00777da.system.entry.js +1 -0
- package/dist/pine-core/p-e2a1a49a.system.entry.js +1 -0
- package/dist/pine-core/p-e334af06.entry.js +1 -0
- package/dist/pine-core/p-e4216ff6.entry.js +1 -0
- package/dist/pine-core/p-e68044b3.entry.js +1 -0
- package/dist/pine-core/p-e75d8bc1.entry.js +1 -0
- package/dist/pine-core/p-e871cfce.entry.js +1 -0
- package/dist/pine-core/p-e92d0f0f.system.entry.js +1 -0
- package/dist/pine-core/p-eab165b9.system.entry.js +1 -0
- package/dist/pine-core/p-eabc4bd8.entry.js +1 -0
- package/dist/pine-core/p-eeYeEogd.system.js +1 -0
- package/dist/pine-core/p-eee042d3.entry.js +1 -0
- package/dist/pine-core/p-ef9f84f2.system.entry.js +1 -0
- package/dist/pine-core/p-f026af73.entry.js +1 -0
- package/dist/pine-core/p-f0509c8e.entry.js +1 -0
- package/dist/pine-core/p-f1252e72.system.entry.js +1 -0
- package/dist/pine-core/p-f3496fd1.entry.js +1 -0
- package/dist/pine-core/p-f65127f1.entry.js +1 -0
- package/dist/pine-core/p-f90f4be7.system.entry.js +1 -0
- package/dist/pine-core/p-f99bd77f.entry.js +1 -0
- package/dist/pine-core/p-fda791df.entry.js +1 -0
- package/dist/pine-core/p-t3idJwV0.js +1 -0
- package/dist/pine-core/p-wB2y8gR7.system.js +1 -0
- package/dist/pine-core/pine-core.css +1 -1
- package/dist/pine-core/pine-core.esm.js +1 -2
- package/dist/pine-core/pine-core.js +1 -1
- package/dist/scripts/vscode-custom-data-generator.js +406 -0
- package/dist/scripts/vscode-settings-patcher.cjs +89 -0
- package/dist/types/components/pds-accordion/pds-accordion.d.ts +9 -1
- package/dist/types/components/pds-alert/pds-alert.d.ts +62 -0
- package/dist/types/components/pds-avatar/pds-avatar.d.ts +53 -3
- package/dist/types/components/pds-box/pds-box.d.ts +495 -16
- package/dist/types/components/pds-button/pds-button.d.ts +91 -13
- package/dist/types/components/pds-checkbox/pds-checkbox.d.ts +43 -9
- package/dist/types/components/pds-chip/pds-chip.d.ts +77 -14
- package/dist/types/components/pds-combobox/combobox-interface.d.ts +73 -0
- package/dist/types/components/pds-combobox/grouped-options-panel.d.ts +128 -0
- package/dist/types/components/pds-combobox/pds-combobox.d.ts +714 -0
- package/dist/types/components/pds-container/pds-container.d.ts +22 -0
- package/dist/types/components/pds-copytext/pds-copytext.d.ts +20 -5
- package/dist/types/components/pds-datepicker/calendar-portal.d.ts +36 -0
- package/dist/types/components/pds-datepicker/date-utils.d.ts +67 -0
- package/dist/types/components/pds-datepicker/datepicker-interface.d.ts +47 -0
- package/dist/types/components/pds-datepicker/pds-datepicker.d.ts +515 -0
- package/dist/types/components/pds-datepicker/presets.d.ts +24 -0
- package/dist/types/components/pds-datepicker/value.d.ts +59 -0
- package/dist/types/components/pds-divider/pds-divider.d.ts +10 -2
- package/dist/types/components/pds-drawer/pds-drawer-content/pds-drawer-content.d.ts +9 -0
- package/dist/types/components/pds-drawer/pds-drawer-footer/pds-drawer-footer.d.ts +9 -0
- package/dist/types/components/pds-drawer/pds-drawer-header/pds-drawer-header.d.ts +9 -0
- package/dist/types/components/pds-drawer/pds-drawer.d.ts +89 -0
- package/dist/types/components/pds-dropdown-menu/pds-dropdown-menu-item/pds-dropdown-menu-item.d.ts +87 -0
- package/dist/types/components/pds-dropdown-menu/pds-dropdown-menu-separator/pds-dropdown-menu-separator.d.ts +13 -0
- package/dist/types/components/pds-dropdown-menu/pds-dropdown-menu.d.ts +60 -0
- package/dist/types/components/pds-filters/pds-filter/filter-interface.d.ts +19 -0
- package/dist/types/components/pds-filters/pds-filter/pds-filter.d.ts +135 -0
- package/dist/types/components/pds-filters/pds-filters.d.ts +11 -0
- package/dist/types/components/pds-image/image-interface.d.ts +12 -0
- package/dist/types/components/pds-image/pds-image.d.ts +75 -11
- package/dist/types/components/pds-input/input-interface.d.ts +12 -0
- package/dist/types/components/pds-input/pds-input.d.ts +174 -9
- package/dist/types/components/pds-link/pds-link.d.ts +81 -11
- package/dist/types/components/pds-loader/pds-loader.d.ts +10 -3
- package/dist/types/components/pds-modal/pds-modal-content/pds-modal-content.d.ts +43 -0
- package/dist/types/components/pds-modal/pds-modal-footer/pds-modal-footer.d.ts +9 -0
- package/dist/types/components/pds-modal/pds-modal-header/pds-modal-header.d.ts +9 -0
- package/dist/types/components/pds-modal/pds-modal.d.ts +152 -0
- package/dist/types/components/pds-modal/test/mock-pds-modal.d.ts +68 -0
- package/dist/types/components/pds-multiselect/multiselect-interface.d.ts +61 -0
- package/dist/types/components/pds-multiselect/pds-multiselect.d.ts +402 -0
- package/dist/types/components/pds-popover/pds-popover.d.ts +292 -0
- package/dist/types/components/pds-popover/popover-interface.d.ts +4 -0
- package/dist/types/components/pds-progress/pds-progress.d.ts +6 -2
- package/dist/types/components/pds-property/pds-property.d.ts +14 -0
- package/dist/types/components/pds-radio/pds-radio.d.ts +42 -11
- package/dist/types/components/pds-radio-group/pds-radio-group.d.ts +84 -0
- package/dist/types/components/pds-radio-group/radio-group-interface.d.ts +5 -0
- package/dist/types/components/pds-row/pds-row.d.ts +17 -2
- package/dist/types/components/pds-select/pds-select.d.ts +182 -0
- package/dist/types/components/pds-sortable/pds-sortable-item/pds-sortable-item.d.ts +14 -3
- package/dist/types/components/pds-sortable/pds-sortable.d.ts +99 -4
- package/dist/types/components/pds-sortable/sortable-interface.d.ts +3 -1
- package/dist/types/components/pds-sortable/sortable-label.d.ts +7 -0
- package/dist/types/components/pds-switch/pds-switch.d.ts +51 -17
- package/dist/types/components/pds-table/pds-table-body/pds-table-body.d.ts +3 -0
- package/dist/types/components/pds-table/pds-table-cell/pds-table-cell.d.ts +40 -1
- package/dist/types/components/pds-table/pds-table-head/pds-table-head.d.ts +19 -2
- package/dist/types/components/pds-table/pds-table-head-cell/pds-table-head-cell.d.ts +73 -2
- package/dist/types/components/pds-table/pds-table-row/pds-table-row.d.ts +27 -4
- package/dist/types/components/pds-table/pds-table.d.ts +138 -12
- package/dist/types/components/pds-tabs/pds-tab/pds-tab.d.ts +55 -0
- package/dist/types/components/pds-tabs/pds-tabpanel/pds-tabpanel.d.ts +12 -0
- package/dist/types/components/pds-tabs/pds-tabs.d.ts +45 -5
- package/dist/types/components/pds-text/pds-text.d.ts +61 -0
- package/dist/types/components/pds-textarea/pds-textarea.d.ts +140 -15
- package/dist/types/components/pds-textarea/textarea-interface.d.ts +5 -1
- package/dist/types/components/pds-toast/pds-toast.d.ts +83 -0
- package/dist/types/components/pds-tooltip/pds-tooltip.d.ts +80 -20
- package/dist/types/components.d.ts +7070 -1247
- package/dist/types/global/pine-global.d.ts +2 -0
- package/dist/types/home/runner/work/pine/pine/libs/core/.stencil/scripts/vscode-custom-data-generator.d.ts +6 -0
- package/dist/types/i18n/i18n-format.d.ts +38 -0
- package/dist/types/i18n/index.d.ts +2 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/stencil-public-runtime.d.ts +195 -8
- package/dist/types/utils/aria-references.d.ts +28 -0
- package/dist/types/utils/attributes.d.ts +44 -0
- package/dist/types/utils/closest.d.ts +2 -0
- package/dist/types/utils/css.d.ts +7 -0
- package/dist/types/utils/form.d.ts +23 -1
- package/dist/types/utils/interfaces.d.ts +6 -0
- package/dist/types/utils/keep-hydrated.d.ts +56 -0
- package/dist/types/utils/overlay.d.ts +3 -3
- package/dist/types/utils/portal-target.d.ts +17 -0
- package/dist/types/utils/reconnected-content.d.ts +14 -0
- package/dist/types/utils/reflected-attribute-default.d.ts +31 -0
- package/dist/types/utils/scroll.d.ts +21 -0
- package/dist/types/utils/tabbable.d.ts +2 -0
- package/dist/types/utils/test/axe.d.ts +81 -0
- package/dist/types/utils/test/host-strip.d.ts +10 -0
- package/dist/types/utils/test/reconnect-safety.d.ts +11 -0
- package/dist/types/utils/test/reduced-motion.d.ts +30 -0
- package/dist/types/utils/truncation-tooltip.d.ts +88 -0
- package/dist/types/utils/types.d.ts +13 -2
- package/dist/types/utils/utils.d.ts +37 -2
- package/dist/vscode.html-data.json +11913 -0
- package/hydrate/index.d.ts +58 -7
- package/hydrate/index.js +29932 -3726
- package/hydrate/index.mjs +29929 -3725
- package/package.json +52 -26
- package/readme.md +26 -55
- package/components/closest.js.map +0 -1
- package/components/index.js.map +0 -1
- package/components/index2.js.map +0 -1
- package/components/pds-accordion.js.map +0 -1
- package/components/pds-avatar.js.map +0 -1
- package/components/pds-box.js.map +0 -1
- package/components/pds-button.js.map +0 -1
- package/components/pds-button2.js.map +0 -1
- package/components/pds-checkbox.js.map +0 -1
- package/components/pds-checkbox2.js.map +0 -1
- package/components/pds-chip.js.map +0 -1
- package/components/pds-copytext.js.map +0 -1
- package/components/pds-divider.js.map +0 -1
- package/components/pds-icon.js.map +0 -1
- package/components/pds-icon2.js.map +0 -1
- package/components/pds-image.js.map +0 -1
- package/components/pds-input.js.map +0 -1
- package/components/pds-label.js +0 -39
- package/components/pds-label.js.map +0 -1
- package/components/pds-link.js.map +0 -1
- package/components/pds-loader.js.map +0 -1
- package/components/pds-progress.js.map +0 -1
- package/components/pds-radio.js.map +0 -1
- package/components/pds-row.js.map +0 -1
- package/components/pds-sortable-item.js.map +0 -1
- package/components/pds-sortable.js.map +0 -1
- package/components/pds-switch.js.map +0 -1
- package/components/pds-tab.js.map +0 -1
- package/components/pds-table-body.js.map +0 -1
- package/components/pds-table-cell.js.map +0 -1
- package/components/pds-table-cell2.js.map +0 -1
- package/components/pds-table-head-cell.js.map +0 -1
- package/components/pds-table-head-cell2.js.map +0 -1
- package/components/pds-table-head.js.map +0 -1
- package/components/pds-table-row.js.map +0 -1
- package/components/pds-table.js.map +0 -1
- package/components/pds-tabpanel.js.map +0 -1
- package/components/pds-tabs.js.map +0 -1
- package/components/pds-textarea.js.map +0 -1
- package/components/pds-tooltip.js.map +0 -1
- package/dist/cjs/app-globals-3a1e7e63.js +0 -7
- package/dist/cjs/app-globals-3a1e7e63.js.map +0 -1
- package/dist/cjs/closest-b45138d3.js +0 -13
- package/dist/cjs/closest-b45138d3.js.map +0 -1
- package/dist/cjs/index-46fb0736.js +0 -1956
- package/dist/cjs/index-46fb0736.js.map +0 -1
- package/dist/cjs/index-de3f0730.js +0 -24
- package/dist/cjs/index-de3f0730.js.map +0 -1
- package/dist/cjs/index.cjs.js.map +0 -1
- package/dist/cjs/loader.cjs.js.map +0 -1
- package/dist/cjs/pds-accordion.cjs.entry.js.map +0 -1
- package/dist/cjs/pds-avatar.cjs.entry.js.map +0 -1
- package/dist/cjs/pds-box.cjs.entry.js.map +0 -1
- package/dist/cjs/pds-button.cjs.entry.js.map +0 -1
- package/dist/cjs/pds-checkbox.cjs.entry.js.map +0 -1
- package/dist/cjs/pds-chip.cjs.entry.js.map +0 -1
- package/dist/cjs/pds-copytext.cjs.entry.js.map +0 -1
- package/dist/cjs/pds-divider.cjs.entry.js.map +0 -1
- package/dist/cjs/pds-icon.cjs.entry.js.map +0 -1
- package/dist/cjs/pds-image.cjs.entry.js.map +0 -1
- package/dist/cjs/pds-input.cjs.entry.js.map +0 -1
- package/dist/cjs/pds-label-7aabdc4e.js +0 -44
- package/dist/cjs/pds-label-7aabdc4e.js.map +0 -1
- package/dist/cjs/pds-link.cjs.entry.js.map +0 -1
- package/dist/cjs/pds-loader.cjs.entry.js.map +0 -1
- package/dist/cjs/pds-progress.cjs.entry.js.map +0 -1
- package/dist/cjs/pds-radio.cjs.entry.js.map +0 -1
- package/dist/cjs/pds-row.cjs.entry.js.map +0 -1
- package/dist/cjs/pds-sortable-item.cjs.entry.js.map +0 -1
- package/dist/cjs/pds-sortable.cjs.entry.js.map +0 -1
- package/dist/cjs/pds-switch.cjs.entry.js.map +0 -1
- package/dist/cjs/pds-tab.cjs.entry.js.map +0 -1
- package/dist/cjs/pds-table-body.cjs.entry.js.map +0 -1
- package/dist/cjs/pds-table-cell.cjs.entry.js.map +0 -1
- package/dist/cjs/pds-table-head-cell.cjs.entry.js.map +0 -1
- package/dist/cjs/pds-table-head.cjs.entry.js.map +0 -1
- package/dist/cjs/pds-table-row.cjs.entry.js.map +0 -1
- package/dist/cjs/pds-table.cjs.entry.js.map +0 -1
- package/dist/cjs/pds-tabpanel.cjs.entry.js.map +0 -1
- package/dist/cjs/pds-tabs.cjs.entry.js.map +0 -1
- package/dist/cjs/pds-textarea.cjs.entry.js.map +0 -1
- package/dist/cjs/pds-tooltip.cjs.entry.js.map +0 -1
- package/dist/cjs/pine-core.cjs.js.map +0 -1
- package/dist/collection/components/_internal/pds-label/pds-label.js.map +0 -1
- package/dist/collection/components/pds-accordion/pds-accordion.js.map +0 -1
- package/dist/collection/components/pds-avatar/pds-avatar.js.map +0 -1
- package/dist/collection/components/pds-box/pds-box.js.map +0 -1
- package/dist/collection/components/pds-button/pds-button.js.map +0 -1
- package/dist/collection/components/pds-checkbox/checkbox-interface.js.map +0 -1
- package/dist/collection/components/pds-checkbox/pds-checkbox.js.map +0 -1
- package/dist/collection/components/pds-chip/pds-chip.js.map +0 -1
- package/dist/collection/components/pds-copytext/pds-copytext.js.map +0 -1
- package/dist/collection/components/pds-divider/pds-divider.js.map +0 -1
- package/dist/collection/components/pds-image/pds-image.js.map +0 -1
- package/dist/collection/components/pds-input/pds-input.js.map +0 -1
- package/dist/collection/components/pds-link/pds-link.js.map +0 -1
- package/dist/collection/components/pds-loader/pds-loader.js.map +0 -1
- package/dist/collection/components/pds-progress/pds-progress.js.map +0 -1
- package/dist/collection/components/pds-radio/pds-radio.js.map +0 -1
- package/dist/collection/components/pds-row/pds-row.js.map +0 -1
- package/dist/collection/components/pds-sortable/pds-sortable-item/pds-sortable-item.js.map +0 -1
- package/dist/collection/components/pds-sortable/pds-sortable.js.map +0 -1
- package/dist/collection/components/pds-sortable/sortable-interface.js.map +0 -1
- package/dist/collection/components/pds-switch/pds-switch.js.map +0 -1
- package/dist/collection/components/pds-table/pds-table-body/pds-table-body.js.map +0 -1
- package/dist/collection/components/pds-table/pds-table-cell/pds-table-cell.js.map +0 -1
- package/dist/collection/components/pds-table/pds-table-head/pds-table-head.js.map +0 -1
- package/dist/collection/components/pds-table/pds-table-head-cell/pds-table-head-cell.js.map +0 -1
- package/dist/collection/components/pds-table/pds-table-row/pds-table-row.js.map +0 -1
- package/dist/collection/components/pds-table/pds-table.js.map +0 -1
- package/dist/collection/components/pds-tabs/pds-tab/pds-tab.js.map +0 -1
- package/dist/collection/components/pds-tabs/pds-tabpanel/pds-tabpanel.js.map +0 -1
- package/dist/collection/components/pds-tabs/pds-tabs.js.map +0 -1
- package/dist/collection/components/pds-textarea/pds-textarea.js.map +0 -1
- package/dist/collection/components/pds-textarea/textarea-interface.js.map +0 -1
- package/dist/collection/components/pds-tooltip/pds-tooltip.js.map +0 -1
- package/dist/collection/global/pine-ui-global.js.map +0 -1
- package/dist/collection/index.js.map +0 -1
- package/dist/collection/stories/_helpers/index.js +0 -15
- package/dist/collection/stories/_helpers/index.js.map +0 -1
- package/dist/collection/utils/closest.js.map +0 -1
- package/dist/collection/utils/form.js.map +0 -1
- package/dist/collection/utils/overlay.js.map +0 -1
- package/dist/collection/utils/types.js.map +0 -1
- package/dist/collection/utils/utils.js.map +0 -1
- package/dist/esm/app-globals-0f993ce5.js +0 -5
- package/dist/esm/app-globals-0f993ce5.js.map +0 -1
- package/dist/esm/closest-d2d192be.js +0 -11
- package/dist/esm/closest-d2d192be.js.map +0 -1
- package/dist/esm/index-2a33b470.js +0 -1927
- package/dist/esm/index-2a33b470.js.map +0 -1
- package/dist/esm/index-a1e2f9af.js +0 -14
- package/dist/esm/index-a1e2f9af.js.map +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/loader.js.map +0 -1
- package/dist/esm/pds-accordion.entry.js.map +0 -1
- package/dist/esm/pds-avatar.entry.js.map +0 -1
- package/dist/esm/pds-box.entry.js.map +0 -1
- package/dist/esm/pds-button.entry.js.map +0 -1
- package/dist/esm/pds-checkbox.entry.js.map +0 -1
- package/dist/esm/pds-chip.entry.js.map +0 -1
- package/dist/esm/pds-copytext.entry.js.map +0 -1
- package/dist/esm/pds-divider.entry.js.map +0 -1
- package/dist/esm/pds-icon.entry.js.map +0 -1
- package/dist/esm/pds-image.entry.js.map +0 -1
- package/dist/esm/pds-input.entry.js.map +0 -1
- package/dist/esm/pds-label-31a5848b.js +0 -39
- package/dist/esm/pds-label-31a5848b.js.map +0 -1
- package/dist/esm/pds-link.entry.js.map +0 -1
- package/dist/esm/pds-loader.entry.js.map +0 -1
- package/dist/esm/pds-progress.entry.js.map +0 -1
- package/dist/esm/pds-radio.entry.js.map +0 -1
- package/dist/esm/pds-row.entry.js.map +0 -1
- package/dist/esm/pds-sortable-item.entry.js.map +0 -1
- package/dist/esm/pds-sortable.entry.js.map +0 -1
- package/dist/esm/pds-switch.entry.js.map +0 -1
- package/dist/esm/pds-tab.entry.js.map +0 -1
- package/dist/esm/pds-table-body.entry.js.map +0 -1
- package/dist/esm/pds-table-cell.entry.js.map +0 -1
- package/dist/esm/pds-table-head-cell.entry.js.map +0 -1
- package/dist/esm/pds-table-head.entry.js.map +0 -1
- package/dist/esm/pds-table-row.entry.js.map +0 -1
- package/dist/esm/pds-table.entry.js.map +0 -1
- package/dist/esm/pds-tabpanel.entry.js.map +0 -1
- package/dist/esm/pds-tabs.entry.js.map +0 -1
- package/dist/esm/pds-textarea.entry.js.map +0 -1
- package/dist/esm/pds-tooltip.entry.js.map +0 -1
- package/dist/esm/pine-core.js.map +0 -1
- package/dist/esm-es5/app-globals-0f993ce5.js +0 -2
- package/dist/esm-es5/app-globals-0f993ce5.js.map +0 -1
- package/dist/esm-es5/closest-d2d192be.js +0 -2
- package/dist/esm-es5/closest-d2d192be.js.map +0 -1
- package/dist/esm-es5/index-2a33b470.js +0 -3
- package/dist/esm-es5/index-2a33b470.js.map +0 -1
- package/dist/esm-es5/index-a1e2f9af.js +0 -2
- package/dist/esm-es5/index-a1e2f9af.js.map +0 -1
- package/dist/esm-es5/index.js.map +0 -1
- package/dist/esm-es5/loader.js.map +0 -1
- package/dist/esm-es5/pds-accordion.entry.js.map +0 -1
- package/dist/esm-es5/pds-avatar.entry.js.map +0 -1
- package/dist/esm-es5/pds-box.entry.js.map +0 -1
- package/dist/esm-es5/pds-button.entry.js.map +0 -1
- package/dist/esm-es5/pds-checkbox.entry.js.map +0 -1
- package/dist/esm-es5/pds-chip.entry.js.map +0 -1
- package/dist/esm-es5/pds-copytext.entry.js.map +0 -1
- package/dist/esm-es5/pds-divider.entry.js.map +0 -1
- package/dist/esm-es5/pds-icon.entry.js.map +0 -1
- package/dist/esm-es5/pds-image.entry.js.map +0 -1
- package/dist/esm-es5/pds-input.entry.js.map +0 -1
- package/dist/esm-es5/pds-label-31a5848b.js +0 -2
- package/dist/esm-es5/pds-label-31a5848b.js.map +0 -1
- package/dist/esm-es5/pds-link.entry.js.map +0 -1
- package/dist/esm-es5/pds-loader.entry.js.map +0 -1
- package/dist/esm-es5/pds-progress.entry.js.map +0 -1
- package/dist/esm-es5/pds-radio.entry.js.map +0 -1
- package/dist/esm-es5/pds-row.entry.js.map +0 -1
- package/dist/esm-es5/pds-sortable-item.entry.js.map +0 -1
- package/dist/esm-es5/pds-sortable.entry.js.map +0 -1
- package/dist/esm-es5/pds-switch.entry.js.map +0 -1
- package/dist/esm-es5/pds-tab.entry.js.map +0 -1
- package/dist/esm-es5/pds-table-body.entry.js.map +0 -1
- package/dist/esm-es5/pds-table-cell.entry.js.map +0 -1
- package/dist/esm-es5/pds-table-head-cell.entry.js.map +0 -1
- package/dist/esm-es5/pds-table-head.entry.js.map +0 -1
- package/dist/esm-es5/pds-table-row.entry.js.map +0 -1
- package/dist/esm-es5/pds-table.entry.js.map +0 -1
- package/dist/esm-es5/pds-tabpanel.entry.js.map +0 -1
- package/dist/esm-es5/pds-tabs.entry.js.map +0 -1
- package/dist/esm-es5/pds-textarea.entry.js.map +0 -1
- package/dist/esm-es5/pds-tooltip.entry.js.map +0 -1
- package/dist/esm-es5/pine-core.js.map +0 -1
- package/dist/pine-core/index.esm.js.map +0 -1
- package/dist/pine-core/p-06c33261.system.entry.js +0 -2
- package/dist/pine-core/p-06c33261.system.entry.js.map +0 -1
- package/dist/pine-core/p-07f80cb6.entry.js +0 -2
- package/dist/pine-core/p-07f80cb6.entry.js.map +0 -1
- package/dist/pine-core/p-09b1c7f1.system.entry.js +0 -2
- package/dist/pine-core/p-09b1c7f1.system.entry.js.map +0 -1
- package/dist/pine-core/p-0a4b1ce9.system.entry.js +0 -2
- package/dist/pine-core/p-0a4b1ce9.system.entry.js.map +0 -1
- package/dist/pine-core/p-0b541f88.js +0 -3
- package/dist/pine-core/p-0b541f88.js.map +0 -1
- package/dist/pine-core/p-0b77685e.js +0 -2
- package/dist/pine-core/p-0b77685e.js.map +0 -1
- package/dist/pine-core/p-0d6fafef.system.entry.js +0 -2
- package/dist/pine-core/p-0d6fafef.system.entry.js.map +0 -1
- package/dist/pine-core/p-0e1c0d03.entry.js +0 -8
- package/dist/pine-core/p-0e1c0d03.entry.js.map +0 -1
- package/dist/pine-core/p-0e936138.entry.js +0 -2
- package/dist/pine-core/p-0e936138.entry.js.map +0 -1
- package/dist/pine-core/p-143795e5.system.entry.js +0 -2
- package/dist/pine-core/p-143795e5.system.entry.js.map +0 -1
- package/dist/pine-core/p-1f2b0be3.system.entry.js +0 -2
- package/dist/pine-core/p-1f2b0be3.system.entry.js.map +0 -1
- package/dist/pine-core/p-224a435b.system.js +0 -2
- package/dist/pine-core/p-224a435b.system.js.map +0 -1
- package/dist/pine-core/p-31056348.system.entry.js +0 -2
- package/dist/pine-core/p-31056348.system.entry.js.map +0 -1
- package/dist/pine-core/p-32498622.system.entry.js +0 -2
- package/dist/pine-core/p-32498622.system.entry.js.map +0 -1
- package/dist/pine-core/p-3261fdf5.system.entry.js +0 -2
- package/dist/pine-core/p-3261fdf5.system.entry.js.map +0 -1
- package/dist/pine-core/p-32e41e3d.system.entry.js +0 -2
- package/dist/pine-core/p-32e41e3d.system.entry.js.map +0 -1
- package/dist/pine-core/p-34631565.system.js +0 -2
- package/dist/pine-core/p-34631565.system.js.map +0 -1
- package/dist/pine-core/p-3ba3d44c.entry.js +0 -2
- package/dist/pine-core/p-3ba3d44c.entry.js.map +0 -1
- package/dist/pine-core/p-46161cec.entry.js +0 -2
- package/dist/pine-core/p-46161cec.entry.js.map +0 -1
- package/dist/pine-core/p-4f69a7b7.entry.js +0 -2
- package/dist/pine-core/p-4f69a7b7.entry.js.map +0 -1
- package/dist/pine-core/p-50a23474.entry.js +0 -2
- package/dist/pine-core/p-50a23474.entry.js.map +0 -1
- package/dist/pine-core/p-511bf308.entry.js +0 -2
- package/dist/pine-core/p-511bf308.entry.js.map +0 -1
- package/dist/pine-core/p-52515d64.system.entry.js +0 -2
- package/dist/pine-core/p-52515d64.system.entry.js.map +0 -1
- package/dist/pine-core/p-56ba5cbf.system.js +0 -2
- package/dist/pine-core/p-56ba5cbf.system.js.map +0 -1
- package/dist/pine-core/p-5a384517.entry.js +0 -2
- package/dist/pine-core/p-5a384517.entry.js.map +0 -1
- package/dist/pine-core/p-5bee6677.system.entry.js +0 -2
- package/dist/pine-core/p-5bee6677.system.entry.js.map +0 -1
- package/dist/pine-core/p-5df76e04.system.js +0 -2
- package/dist/pine-core/p-5df76e04.system.js.map +0 -1
- package/dist/pine-core/p-62ec9a0f.system.entry.js +0 -2
- package/dist/pine-core/p-62ec9a0f.system.entry.js.map +0 -1
- package/dist/pine-core/p-6a7a864f.entry.js +0 -2
- package/dist/pine-core/p-6a7a864f.entry.js.map +0 -1
- package/dist/pine-core/p-6ae2f0f5.entry.js +0 -2
- package/dist/pine-core/p-6ae2f0f5.entry.js.map +0 -1
- package/dist/pine-core/p-6e146962.entry.js +0 -2
- package/dist/pine-core/p-6e146962.entry.js.map +0 -1
- package/dist/pine-core/p-6ff9ebfa.entry.js +0 -2
- package/dist/pine-core/p-6ff9ebfa.entry.js.map +0 -1
- package/dist/pine-core/p-701ba882.entry.js +0 -2
- package/dist/pine-core/p-701ba882.entry.js.map +0 -1
- package/dist/pine-core/p-73eb1722.entry.js +0 -2
- package/dist/pine-core/p-73eb1722.entry.js.map +0 -1
- package/dist/pine-core/p-78c6c37a.system.entry.js +0 -2
- package/dist/pine-core/p-78c6c37a.system.entry.js.map +0 -1
- package/dist/pine-core/p-79ca4ab9.system.entry.js +0 -2
- package/dist/pine-core/p-79ca4ab9.system.entry.js.map +0 -1
- package/dist/pine-core/p-7c33a02e.entry.js +0 -2
- package/dist/pine-core/p-7c33a02e.entry.js.map +0 -1
- package/dist/pine-core/p-7dac515e.system.entry.js +0 -2
- package/dist/pine-core/p-7dac515e.system.entry.js.map +0 -1
- package/dist/pine-core/p-7ea6838b.system.entry.js +0 -2
- package/dist/pine-core/p-7ea6838b.system.entry.js.map +0 -1
- package/dist/pine-core/p-7ebfdef4.system.entry.js +0 -2
- package/dist/pine-core/p-7ebfdef4.system.entry.js.map +0 -1
- package/dist/pine-core/p-829777e4.system.entry.js +0 -2
- package/dist/pine-core/p-829777e4.system.entry.js.map +0 -1
- package/dist/pine-core/p-8317c6c2.js +0 -2
- package/dist/pine-core/p-8317c6c2.js.map +0 -1
- package/dist/pine-core/p-8469b65a.entry.js +0 -2
- package/dist/pine-core/p-8469b65a.entry.js.map +0 -1
- package/dist/pine-core/p-8d8de5fd.entry.js +0 -2
- package/dist/pine-core/p-8d8de5fd.entry.js.map +0 -1
- package/dist/pine-core/p-8df8debd.entry.js +0 -2
- package/dist/pine-core/p-8df8debd.entry.js.map +0 -1
- package/dist/pine-core/p-8f73bf14.system.entry.js +0 -2
- package/dist/pine-core/p-8f73bf14.system.entry.js.map +0 -1
- package/dist/pine-core/p-8fbec4fe.system.js +0 -2
- package/dist/pine-core/p-8fbec4fe.system.js.map +0 -1
- package/dist/pine-core/p-909b305c.system.entry.js +0 -2
- package/dist/pine-core/p-909b305c.system.entry.js.map +0 -1
- package/dist/pine-core/p-936d96ec.system.entry.js +0 -9
- package/dist/pine-core/p-936d96ec.system.entry.js.map +0 -1
- package/dist/pine-core/p-9583e6d5.entry.js +0 -2
- package/dist/pine-core/p-9583e6d5.entry.js.map +0 -1
- package/dist/pine-core/p-96c750d1.entry.js +0 -2
- package/dist/pine-core/p-96c750d1.entry.js.map +0 -1
- package/dist/pine-core/p-a03e587c.entry.js +0 -2
- package/dist/pine-core/p-a03e587c.entry.js.map +0 -1
- package/dist/pine-core/p-a79a8159.entry.js +0 -2
- package/dist/pine-core/p-a79a8159.entry.js.map +0 -1
- package/dist/pine-core/p-a962fe8e.entry.js +0 -2
- package/dist/pine-core/p-a962fe8e.entry.js.map +0 -1
- package/dist/pine-core/p-ac228abf.entry.js +0 -2
- package/dist/pine-core/p-ac228abf.entry.js.map +0 -1
- package/dist/pine-core/p-ad4238c9.system.entry.js +0 -2
- package/dist/pine-core/p-ad4238c9.system.entry.js.map +0 -1
- package/dist/pine-core/p-af7df3c2.system.entry.js +0 -2
- package/dist/pine-core/p-af7df3c2.system.entry.js.map +0 -1
- package/dist/pine-core/p-b18b20f4.system.js +0 -2
- package/dist/pine-core/p-b18b20f4.system.js.map +0 -1
- package/dist/pine-core/p-b4518566.entry.js +0 -2
- package/dist/pine-core/p-b4518566.entry.js.map +0 -1
- package/dist/pine-core/p-b5c7e02a.entry.js +0 -2
- package/dist/pine-core/p-b5c7e02a.entry.js.map +0 -1
- package/dist/pine-core/p-bc20946b.system.entry.js +0 -2
- package/dist/pine-core/p-bc20946b.system.entry.js.map +0 -1
- package/dist/pine-core/p-c52d0465.system.entry.js +0 -2
- package/dist/pine-core/p-c52d0465.system.entry.js.map +0 -1
- package/dist/pine-core/p-c84cc2f8.system.entry.js +0 -2
- package/dist/pine-core/p-c84cc2f8.system.entry.js.map +0 -1
- package/dist/pine-core/p-ca239d59.system.entry.js +0 -2
- package/dist/pine-core/p-ca239d59.system.entry.js.map +0 -1
- package/dist/pine-core/p-cfacf2e0.system.entry.js +0 -2
- package/dist/pine-core/p-cfacf2e0.system.entry.js.map +0 -1
- package/dist/pine-core/p-e1255160.js +0 -2
- package/dist/pine-core/p-e1255160.js.map +0 -1
- package/dist/pine-core/p-e4b3115c.entry.js +0 -2
- package/dist/pine-core/p-e4b3115c.entry.js.map +0 -1
- package/dist/pine-core/p-e60fccc0.js +0 -2
- package/dist/pine-core/p-e60fccc0.js.map +0 -1
- package/dist/pine-core/p-eb56f262.system.entry.js +0 -2
- package/dist/pine-core/p-eb56f262.system.entry.js.map +0 -1
- package/dist/pine-core/p-ec484bf6.entry.js +0 -2
- package/dist/pine-core/p-ec484bf6.entry.js.map +0 -1
- package/dist/pine-core/p-f59d4a46.entry.js +0 -2
- package/dist/pine-core/p-f59d4a46.entry.js.map +0 -1
- package/dist/pine-core/p-f74c489d.system.js +0 -3
- package/dist/pine-core/p-f74c489d.system.js.map +0 -1
- package/dist/pine-core/pine-core.esm.js.map +0 -1
- package/dist/pine-core/svg/access-key.svg +0 -1
- package/dist/pine-core/svg/add-circle.svg +0 -1
- package/dist/pine-core/svg/add-image.svg +0 -1
- package/dist/pine-core/svg/add-small.svg +0 -1
- package/dist/pine-core/svg/add-square.svg +0 -1
- package/dist/pine-core/svg/add.svg +0 -1
- package/dist/pine-core/svg/advanced.svg +0 -1
- package/dist/pine-core/svg/ai-sparkle.svg +0 -1
- package/dist/pine-core/svg/ai-writer-filled.svg +0 -1
- package/dist/pine-core/svg/ai-writer.svg +0 -1
- package/dist/pine-core/svg/align-center.svg +0 -1
- package/dist/pine-core/svg/align-justify.svg +0 -1
- package/dist/pine-core/svg/align-left.svg +0 -1
- package/dist/pine-core/svg/align-right.svg +0 -1
- package/dist/pine-core/svg/app-store.svg +0 -1
- package/dist/pine-core/svg/archive.svg +0 -1
- package/dist/pine-core/svg/arrow-corner.svg +0 -1
- package/dist/pine-core/svg/arrow-down.svg +0 -1
- package/dist/pine-core/svg/arrow-left.svg +0 -1
- package/dist/pine-core/svg/arrow-right.svg +0 -1
- package/dist/pine-core/svg/arrow-up.svg +0 -1
- package/dist/pine-core/svg/assessment.svg +0 -1
- package/dist/pine-core/svg/at-sign.svg +0 -1
- package/dist/pine-core/svg/attach.svg +0 -1
- package/dist/pine-core/svg/automations.svg +0 -1
- package/dist/pine-core/svg/ban.svg +0 -1
- package/dist/pine-core/svg/bank.svg +0 -1
- package/dist/pine-core/svg/bar-chart-10-tone.svg +0 -1
- package/dist/pine-core/svg/bell-01-tone.svg +0 -1
- package/dist/pine-core/svg/bell.svg +0 -1
- package/dist/pine-core/svg/block.svg +0 -1
- package/dist/pine-core/svg/blog-filled.svg +0 -1
- package/dist/pine-core/svg/blog.svg +0 -1
- package/dist/pine-core/svg/bold.svg +0 -1
- package/dist/pine-core/svg/broadcast.svg +0 -1
- package/dist/pine-core/svg/bulb.svg +0 -1
- package/dist/pine-core/svg/button.svg +0 -1
- package/dist/pine-core/svg/calendar-date.svg +0 -1
- package/dist/pine-core/svg/calendar-schedule.svg +0 -1
- package/dist/pine-core/svg/calendar-simple.svg +0 -1
- package/dist/pine-core/svg/card-amex.svg +0 -1
- package/dist/pine-core/svg/card-android.svg +0 -1
- package/dist/pine-core/svg/card-apple.svg +0 -1
- package/dist/pine-core/svg/card-diners-club.svg +0 -1
- package/dist/pine-core/svg/card-discover.svg +0 -1
- package/dist/pine-core/svg/card-generic.svg +0 -1
- package/dist/pine-core/svg/card-gpay.svg +0 -1
- package/dist/pine-core/svg/card-mastercard.svg +0 -1
- package/dist/pine-core/svg/card-paypal.svg +0 -1
- package/dist/pine-core/svg/card-stripe.svg +0 -1
- package/dist/pine-core/svg/card-update.svg +0 -1
- package/dist/pine-core/svg/card-visa.svg +0 -1
- package/dist/pine-core/svg/caret-down.svg +0 -1
- package/dist/pine-core/svg/caret-left.svg +0 -1
- package/dist/pine-core/svg/caret-right.svg +0 -1
- package/dist/pine-core/svg/caret-up.svg +0 -1
- package/dist/pine-core/svg/cart-add.svg +0 -1
- package/dist/pine-core/svg/cart.svg +0 -1
- package/dist/pine-core/svg/certificate.svg +0 -1
- package/dist/pine-core/svg/chart-filled.svg +0 -1
- package/dist/pine-core/svg/chart.svg +0 -1
- package/dist/pine-core/svg/check-circle-filled.svg +0 -1
- package/dist/pine-core/svg/check-circle.svg +0 -1
- package/dist/pine-core/svg/check.svg +0 -1
- package/dist/pine-core/svg/circle-1.svg +0 -1
- package/dist/pine-core/svg/circle-2.svg +0 -1
- package/dist/pine-core/svg/circle-3.svg +0 -1
- package/dist/pine-core/svg/circle-4.svg +0 -1
- package/dist/pine-core/svg/circle-5.svg +0 -1
- package/dist/pine-core/svg/circle-6.svg +0 -1
- package/dist/pine-core/svg/circle-7.svg +0 -1
- package/dist/pine-core/svg/circle-8.svg +0 -1
- package/dist/pine-core/svg/circle-9.svg +0 -1
- package/dist/pine-core/svg/circle-a.svg +0 -1
- package/dist/pine-core/svg/circle-b.svg +0 -1
- package/dist/pine-core/svg/circle-dashed.svg +0 -1
- package/dist/pine-core/svg/clapperboard-tone.svg +0 -1
- package/dist/pine-core/svg/clock.svg +0 -1
- package/dist/pine-core/svg/closed-captions.svg +0 -1
- package/dist/pine-core/svg/cloud-upload.svg +0 -1
- package/dist/pine-core/svg/code-block.svg +0 -1
- package/dist/pine-core/svg/code.svg +0 -1
- package/dist/pine-core/svg/color.svg +0 -1
- package/dist/pine-core/svg/columns.svg +0 -1
- package/dist/pine-core/svg/comment-no.svg +0 -1
- package/dist/pine-core/svg/comment.svg +0 -1
- package/dist/pine-core/svg/connect.svg +0 -1
- package/dist/pine-core/svg/contact.svg +0 -1
- package/dist/pine-core/svg/conversation.svg +0 -1
- package/dist/pine-core/svg/copy.svg +0 -1
- package/dist/pine-core/svg/coupon.svg +0 -1
- package/dist/pine-core/svg/course-filled.svg +0 -1
- package/dist/pine-core/svg/course.svg +0 -1
- package/dist/pine-core/svg/creator-studio-filled.svg +0 -1
- package/dist/pine-core/svg/creator-studio.svg +0 -1
- package/dist/pine-core/svg/credit-card-02-tone.svg +0 -1
- package/dist/pine-core/svg/cube-01-tone.svg +0 -1
- package/dist/pine-core/svg/cursor-pointer.svg +0 -1
- package/dist/pine-core/svg/cursor.svg +0 -1
- package/dist/pine-core/svg/custom-field.svg +0 -1
- package/dist/pine-core/svg/customize.svg +0 -1
- package/dist/pine-core/svg/danger-filled.svg +0 -1
- package/dist/pine-core/svg/danger.svg +0 -1
- package/dist/pine-core/svg/delete-circle.svg +0 -1
- package/dist/pine-core/svg/delete-key.svg +0 -1
- package/dist/pine-core/svg/delete-x.svg +0 -1
- package/dist/pine-core/svg/dollar.svg +0 -1
- package/dist/pine-core/svg/dot-menu-horizontal.svg +0 -1
- package/dist/pine-core/svg/dots-horizontal-tone.svg +0 -1
- package/dist/pine-core/svg/down-small.svg +0 -1
- package/dist/pine-core/svg/download.svg +0 -1
- package/dist/pine-core/svg/downsell.svg +0 -1
- package/dist/pine-core/svg/draft.svg +0 -1
- package/dist/pine-core/svg/drawer-collapse.svg +0 -1
- package/dist/pine-core/svg/drawer-expand.svg +0 -1
- package/dist/pine-core/svg/drop.svg +0 -1
- package/dist/pine-core/svg/duplicate.svg +0 -1
- package/dist/pine-core/svg/editor-filled.svg +0 -1
- package/dist/pine-core/svg/editor.svg +0 -1
- package/dist/pine-core/svg/email-activity.svg +0 -1
- package/dist/pine-core/svg/emoji.svg +0 -1
- package/dist/pine-core/svg/enlarge-vertical.svg +0 -1
- package/dist/pine-core/svg/enlarge.svg +0 -1
- package/dist/pine-core/svg/expand.svg +0 -1
- package/dist/pine-core/svg/favorite.svg +0 -1
- package/dist/pine-core/svg/feedback.svg +0 -1
- package/dist/pine-core/svg/file-02.svg +0 -1
- package/dist/pine-core/svg/file-money.svg +0 -1
- package/dist/pine-core/svg/file.svg +0 -1
- package/dist/pine-core/svg/filter.svg +0 -1
- package/dist/pine-core/svg/flag.svg +0 -1
- package/dist/pine-core/svg/flash-filled.svg +0 -1
- package/dist/pine-core/svg/flash.svg +0 -1
- package/dist/pine-core/svg/floppy-disk.svg +0 -1
- package/dist/pine-core/svg/folder-group.svg +0 -1
- package/dist/pine-core/svg/folder.svg +0 -1
- package/dist/pine-core/svg/form-field.svg +0 -1
- package/dist/pine-core/svg/form-filled.svg +0 -1
- package/dist/pine-core/svg/form.svg +0 -1
- package/dist/pine-core/svg/fullscreen.svg +0 -1
- package/dist/pine-core/svg/funnel.svg +0 -1
- package/dist/pine-core/svg/gear-filled.svg +0 -1
- package/dist/pine-core/svg/gear.svg +0 -1
- package/dist/pine-core/svg/grant-offer.svg +0 -1
- package/dist/pine-core/svg/handle-2-vertical.svg +0 -1
- package/dist/pine-core/svg/handle-2.svg +0 -1
- package/dist/pine-core/svg/handle.svg +0 -1
- package/dist/pine-core/svg/hashtag.svg +0 -1
- package/dist/pine-core/svg/hd-video.svg +0 -1
- package/dist/pine-core/svg/heading-1.svg +0 -1
- package/dist/pine-core/svg/heading-2.svg +0 -1
- package/dist/pine-core/svg/heading-3.svg +0 -1
- package/dist/pine-core/svg/heading-4.svg +0 -1
- package/dist/pine-core/svg/heading-5.svg +0 -1
- package/dist/pine-core/svg/heading-6.svg +0 -1
- package/dist/pine-core/svg/heading-large.svg +0 -1
- package/dist/pine-core/svg/heading-small.svg +0 -1
- package/dist/pine-core/svg/headset-tone.svg +0 -1
- package/dist/pine-core/svg/headset.svg +0 -1
- package/dist/pine-core/svg/help-filled.svg +0 -1
- package/dist/pine-core/svg/help.svg +0 -1
- package/dist/pine-core/svg/home-02-tone.svg +0 -1
- package/dist/pine-core/svg/home-alt.svg +0 -1
- package/dist/pine-core/svg/home-filled.svg +0 -1
- package/dist/pine-core/svg/home.svg +0 -1
- package/dist/pine-core/svg/horizontal-line.svg +0 -1
- package/dist/pine-core/svg/image.svg +0 -1
- package/dist/pine-core/svg/info-circle-filled.svg +0 -1
- package/dist/pine-core/svg/info-circle.svg +0 -1
- package/dist/pine-core/svg/ios-battery.svg +0 -1
- package/dist/pine-core/svg/ios-data.svg +0 -1
- package/dist/pine-core/svg/ios-wifi.svg +0 -1
- package/dist/pine-core/svg/italic.svg +0 -1
- package/dist/pine-core/svg/kajabi-filled.svg +0 -1
- package/dist/pine-core/svg/kajabi.svg +0 -1
- package/dist/pine-core/svg/klarna.svg +0 -1
- package/dist/pine-core/svg/lab.svg +0 -1
- package/dist/pine-core/svg/launch.svg +0 -1
- package/dist/pine-core/svg/layout-grid.svg +0 -1
- package/dist/pine-core/svg/layout-list.svg +0 -1
- package/dist/pine-core/svg/left-small.svg +0 -1
- package/dist/pine-core/svg/list-bullet.svg +0 -1
- package/dist/pine-core/svg/list-details.svg +0 -1
- package/dist/pine-core/svg/list-numbers.svg +0 -1
- package/dist/pine-core/svg/location.svg +0 -1
- package/dist/pine-core/svg/lock-alt.svg +0 -1
- package/dist/pine-core/svg/lock.svg +0 -1
- package/dist/pine-core/svg/logo-afterpay.svg +0 -1
- package/dist/pine-core/svg/logo-facebook-round.svg +0 -1
- package/dist/pine-core/svg/logo-facebook.svg +0 -1
- package/dist/pine-core/svg/logo-instagram.svg +0 -1
- package/dist/pine-core/svg/logo-linkedin.svg +0 -1
- package/dist/pine-core/svg/logo-tiktok.svg +0 -1
- package/dist/pine-core/svg/logo-twitter-x.svg +0 -1
- package/dist/pine-core/svg/logo-twitter.svg +0 -1
- package/dist/pine-core/svg/logo-youtube.svg +0 -1
- package/dist/pine-core/svg/loop.svg +0 -1
- package/dist/pine-core/svg/mail-01-tone.svg +0 -1
- package/dist/pine-core/svg/mail-filled.svg +0 -1
- package/dist/pine-core/svg/mail-open.svg +0 -1
- package/dist/pine-core/svg/mail.svg +0 -1
- package/dist/pine-core/svg/map.svg +0 -1
- package/dist/pine-core/svg/mapped.svg +0 -1
- package/dist/pine-core/svg/margin-left.svg +0 -1
- package/dist/pine-core/svg/margin-right.svg +0 -1
- package/dist/pine-core/svg/marker-filled.svg +0 -1
- package/dist/pine-core/svg/marker.svg +0 -1
- package/dist/pine-core/svg/megaphone-filled.svg +0 -1
- package/dist/pine-core/svg/megaphone.svg +0 -1
- package/dist/pine-core/svg/menu-alt.svg +0 -1
- package/dist/pine-core/svg/menu-bordered.svg +0 -1
- package/dist/pine-core/svg/menu.svg +0 -1
- package/dist/pine-core/svg/merge.svg +0 -1
- package/dist/pine-core/svg/microphone-off.svg +0 -1
- package/dist/pine-core/svg/microphone.svg +0 -1
- package/dist/pine-core/svg/monitor-03-tone.svg +0 -1
- package/dist/pine-core/svg/monitor-filled.svg +0 -1
- package/dist/pine-core/svg/monitor.svg +0 -1
- package/dist/pine-core/svg/more-menu-filled.svg +0 -1
- package/dist/pine-core/svg/more-menu.svg +0 -1
- package/dist/pine-core/svg/move-left.svg +0 -1
- package/dist/pine-core/svg/move-right.svg +0 -1
- package/dist/pine-core/svg/multi-pay.svg +0 -1
- package/dist/pine-core/svg/newsletter-2.svg +0 -1
- package/dist/pine-core/svg/newsletter.svg +0 -1
- package/dist/pine-core/svg/one-off-session.svg +0 -1
- package/dist/pine-core/svg/one-time.svg +0 -1
- package/dist/pine-core/svg/packages.svg +0 -1
- package/dist/pine-core/svg/pause-circle.svg +0 -1
- package/dist/pine-core/svg/pause.svg +0 -1
- package/dist/pine-core/svg/payout.svg +0 -1
- package/dist/pine-core/svg/pen.svg +0 -1
- package/dist/pine-core/svg/phone-02-tone.svg +0 -1
- package/dist/pine-core/svg/phone-portrait.svg +0 -1
- package/dist/pine-core/svg/phone-toolbar-filled.svg +0 -1
- package/dist/pine-core/svg/phone-toolbar.svg +0 -1
- package/dist/pine-core/svg/play-circle.svg +0 -1
- package/dist/pine-core/svg/play-outline.svg +0 -1
- package/dist/pine-core/svg/play-store.svg +0 -1
- package/dist/pine-core/svg/play.svg +0 -1
- package/dist/pine-core/svg/plug.svg +0 -1
- package/dist/pine-core/svg/premium.svg +0 -1
- package/dist/pine-core/svg/present.svg +0 -1
- package/dist/pine-core/svg/preview-off.svg +0 -1
- package/dist/pine-core/svg/preview-on.svg +0 -1
- package/dist/pine-core/svg/product-filled.svg +0 -1
- package/dist/pine-core/svg/product.svg +0 -1
- package/dist/pine-core/svg/question-circle.svg +0 -1
- package/dist/pine-core/svg/quote.svg +0 -1
- package/dist/pine-core/svg/redo.svg +0 -1
- package/dist/pine-core/svg/refresh.svg +0 -1
- package/dist/pine-core/svg/remove-circle.svg +0 -1
- package/dist/pine-core/svg/remove.svg +0 -1
- package/dist/pine-core/svg/rename.svg +0 -1
- package/dist/pine-core/svg/reset-password.svg +0 -1
- package/dist/pine-core/svg/restore.svg +0 -1
- package/dist/pine-core/svg/right-small.svg +0 -1
- package/dist/pine-core/svg/rocket-filled.svg +0 -1
- package/dist/pine-core/svg/rocket.svg +0 -1
- package/dist/pine-core/svg/round-dollar.svg +0 -1
- package/dist/pine-core/svg/rows.svg +0 -1
- package/dist/pine-core/svg/scissor.svg +0 -1
- package/dist/pine-core/svg/screen-share-off.svg +0 -1
- package/dist/pine-core/svg/screen-share-on.svg +0 -1
- package/dist/pine-core/svg/search-md-tone.svg +0 -1
- package/dist/pine-core/svg/search-small.svg +0 -1
- package/dist/pine-core/svg/search.svg +0 -1
- package/dist/pine-core/svg/send-message.svg +0 -1
- package/dist/pine-core/svg/sequences.svg +0 -1
- package/dist/pine-core/svg/settings-01-tone.svg +0 -1
- package/dist/pine-core/svg/share.svg +0 -1
- package/dist/pine-core/svg/skipped.svg +0 -1
- package/dist/pine-core/svg/slash-divider.svg +0 -1
- package/dist/pine-core/svg/speaker.svg +0 -1
- package/dist/pine-core/svg/stack.svg +0 -1
- package/dist/pine-core/svg/star.svg +0 -1
- package/dist/pine-core/svg/stars-01-tone.svg +0 -1
- package/dist/pine-core/svg/stop.svg +0 -1
- package/dist/pine-core/svg/stopwatch.svg +0 -1
- package/dist/pine-core/svg/strikethrough.svg +0 -1
- package/dist/pine-core/svg/subscript.svg +0 -1
- package/dist/pine-core/svg/subscriptions.svg +0 -1
- package/dist/pine-core/svg/super-admin.svg +0 -1
- package/dist/pine-core/svg/superscript.svg +0 -1
- package/dist/pine-core/svg/sync.svg +0 -1
- package/dist/pine-core/svg/tablet-landscape.svg +0 -1
- package/dist/pine-core/svg/tablet-portrait.svg +0 -1
- package/dist/pine-core/svg/tag-filled.svg +0 -1
- package/dist/pine-core/svg/tag.svg +0 -1
- package/dist/pine-core/svg/text-styles.svg +0 -1
- package/dist/pine-core/svg/theme-store-filled.svg +0 -1
- package/dist/pine-core/svg/theme-store.svg +0 -1
- package/dist/pine-core/svg/thumb-down-filled.svg +0 -1
- package/dist/pine-core/svg/thumb-down.svg +0 -1
- package/dist/pine-core/svg/thumb-up-filled.svg +0 -1
- package/dist/pine-core/svg/thumb-up.svg +0 -1
- package/dist/pine-core/svg/trash.svg +0 -1
- package/dist/pine-core/svg/trophy-filled.svg +0 -1
- package/dist/pine-core/svg/trophy.svg +0 -1
- package/dist/pine-core/svg/underline.svg +0 -1
- package/dist/pine-core/svg/undo.svg +0 -1
- package/dist/pine-core/svg/unlock.svg +0 -1
- package/dist/pine-core/svg/unmapped.svg +0 -1
- package/dist/pine-core/svg/up-small.svg +0 -1
- package/dist/pine-core/svg/upload.svg +0 -1
- package/dist/pine-core/svg/url.svg +0 -1
- package/dist/pine-core/svg/user-circle-filled.svg +0 -1
- package/dist/pine-core/svg/user-circle.svg +0 -1
- package/dist/pine-core/svg/user-filled.svg +0 -1
- package/dist/pine-core/svg/user-star-filled.svg +0 -1
- package/dist/pine-core/svg/user-star.svg +0 -1
- package/dist/pine-core/svg/user.svg +0 -1
- package/dist/pine-core/svg/users-02-tone.svg +0 -1
- package/dist/pine-core/svg/users-alt.svg +0 -1
- package/dist/pine-core/svg/users-filled.svg +0 -1
- package/dist/pine-core/svg/users.svg +0 -1
- package/dist/pine-core/svg/video-off.svg +0 -1
- package/dist/pine-core/svg/video-on.svg +0 -1
- package/dist/pine-core/svg/warning-filled.svg +0 -1
- package/dist/pine-core/svg/warning.svg +0 -1
- package/dist/pine-core/svg/window-paragraph.svg +0 -1
- package/dist/pine-core/svg/world.svg +0 -1
- package/dist/pine-core/svg/wrench.svg +0 -1
- package/dist/types/stories/_helpers/index.d.ts +0 -12
- package/loader/package.json +0 -11
|
@@ -0,0 +1,2597 @@
|
|
|
1
|
+
import { h, Host } from "@stencil/core";
|
|
2
|
+
import { computePosition, flip, offset, shift, size, autoUpdate } from "@floating-ui/dom";
|
|
3
|
+
import { cancelDebouncedEvent, debounceEvent, flushDebouncedEvent } from "../../utils/utils";
|
|
4
|
+
import { isSpecTest, messageId, assignDescription } from "../../utils/form";
|
|
5
|
+
import { danger, enlarge } from "@pine-ds/icons/icons";
|
|
6
|
+
import { formatMessage, pluralize } from "../../i18n";
|
|
7
|
+
import { bindTruncationTooltips } from "../../utils/truncation-tooltip";
|
|
8
|
+
// Names only: pds-icon's `icon` prop also fetches URLs and data: SVGs, unsanitized.
|
|
9
|
+
const PINE_ICON_NAME = /^[a-z0-9-]+$/i;
|
|
10
|
+
const TABBABLE_SELECTOR = 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])';
|
|
11
|
+
/**
|
|
12
|
+
* @slot (default) - Static option elements for the multiselect
|
|
13
|
+
* @slot empty - Custom empty state message when no options match
|
|
14
|
+
* @slot loading - Custom loading indicator
|
|
15
|
+
* @slot trigger - Custom trigger element that replaces the built-in trigger. It opens the dropdown panel and receives `aria-expanded` and `aria-haspopup`; it supplies its own accessible name. Slot the focusable control itself, not a wrapper around it.
|
|
16
|
+
* @slot footer - Links or buttons displayed below the options inside the dropdown panel
|
|
17
|
+
* @part trigger - The trigger surface that opens the dropdown panel
|
|
18
|
+
* @part pill-toggle - The chevron button inside the inline pill trigger
|
|
19
|
+
*/
|
|
20
|
+
export class PdsMultiselect {
|
|
21
|
+
constructor() {
|
|
22
|
+
this.triggerTextTooltip = bindTruncationTooltips((textEl) => {
|
|
23
|
+
var _a;
|
|
24
|
+
return ({
|
|
25
|
+
// Not the host, which holds the panel.
|
|
26
|
+
hostEl: (_a = textEl.closest('[part="trigger"]')) !== null && _a !== void 0 ? _a : textEl,
|
|
27
|
+
contentEl: textEl,
|
|
28
|
+
getTooltipText: () => this.getTriggerText(),
|
|
29
|
+
manageTabIndex: false,
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
this.selectedItemTooltips = bindTruncationTooltips((item) => ({
|
|
33
|
+
hostEl: item,
|
|
34
|
+
contentEl: item,
|
|
35
|
+
getTooltipText: () => { var _a; return (_a = item.textContent) !== null && _a !== void 0 ? _a : ''; },
|
|
36
|
+
}));
|
|
37
|
+
this.hasDisabledSlottedTrigger = false;
|
|
38
|
+
/**
|
|
39
|
+
* Placeholder text for the input field. Pass a translated string to localize it; defaults to English.
|
|
40
|
+
* @defaultValue 'Select...'
|
|
41
|
+
*/
|
|
42
|
+
this.placeholder = 'Select...';
|
|
43
|
+
/**
|
|
44
|
+
* Placeholder text for the search input inside the dropdown panel. Pass a translated string to localize it; defaults to English.
|
|
45
|
+
* @defaultValue 'Find...'
|
|
46
|
+
*/
|
|
47
|
+
this.searchPlaceholder = 'Find...';
|
|
48
|
+
/**
|
|
49
|
+
* Accessible label for the search input. Pass a translated string to localize it; defaults to English.
|
|
50
|
+
* @defaultValue 'Search options'
|
|
51
|
+
*/
|
|
52
|
+
this.searchOptionsLabel = 'Search options';
|
|
53
|
+
/**
|
|
54
|
+
* Accessible label for the selected-items region. Pass a translated string to localize it; defaults to English.
|
|
55
|
+
* @defaultValue 'Selected items'
|
|
56
|
+
*/
|
|
57
|
+
this.selectedItemsLabel = 'Selected items';
|
|
58
|
+
/**
|
|
59
|
+
* Accessible label for the options listbox (falls back to this when `label` is unset). Pass a translated string to localize it; defaults to English.
|
|
60
|
+
* @defaultValue 'Options'
|
|
61
|
+
*/
|
|
62
|
+
this.optionsLabel = 'Options';
|
|
63
|
+
/**
|
|
64
|
+
* Text shown when no options match the search. Pass a translated string to localize it; defaults to English.
|
|
65
|
+
* @defaultValue 'No options found'
|
|
66
|
+
*/
|
|
67
|
+
this.noOptionsFoundLabel = 'No options found';
|
|
68
|
+
/**
|
|
69
|
+
* Visible label for the create-new-option row. Pass a translated string to localize it; `{text}` is interpolated.
|
|
70
|
+
* @defaultValue 'Add "{text}"'
|
|
71
|
+
*/
|
|
72
|
+
this.createOptionLabel = 'Add "{text}"';
|
|
73
|
+
/**
|
|
74
|
+
* Accessible label for the create-new-option row. Pass a translated string to localize it; `{text}` is interpolated.
|
|
75
|
+
* @defaultValue 'Create new tag: {text}'
|
|
76
|
+
*/
|
|
77
|
+
this.createOptionAriaLabel = 'Create new tag: {text}';
|
|
78
|
+
/**
|
|
79
|
+
* Screen-reader announcement when an item is removed. Pass a translated string to localize it; `{item}` is interpolated.
|
|
80
|
+
* @defaultValue '{item} removed'
|
|
81
|
+
*/
|
|
82
|
+
this.itemRemovedLabel = '{item} removed';
|
|
83
|
+
/**
|
|
84
|
+
* Accessible label for the remove button on each selected-item pill. Pass a translated string to localize it; defaults to English.
|
|
85
|
+
* @defaultValue 'Remove'
|
|
86
|
+
*/
|
|
87
|
+
this.pillRemoveLabel = 'Remove';
|
|
88
|
+
/**
|
|
89
|
+
* Singular form of the selected-count trigger text. Pass a translated string to localize it; `{count}` is interpolated.
|
|
90
|
+
* A single selection shows the item's name instead, so this applies to other counts that a locale's plural rules treat as singular, and to a single selection whose item has no text.
|
|
91
|
+
* @defaultValue '{count} item'
|
|
92
|
+
*/
|
|
93
|
+
this.selectedCountLabelOne = '{count} item';
|
|
94
|
+
/**
|
|
95
|
+
* Plural (and fallback) form of the selected-count trigger text — used for English and any locale whose selected plural category isn't supplied via `selectedCountLabels`. Pass a translated string to localize it; `{count}` is interpolated.
|
|
96
|
+
* @defaultValue '{count} items'
|
|
97
|
+
*/
|
|
98
|
+
this.selectedCountLabelOther = '{count} items';
|
|
99
|
+
/**
|
|
100
|
+
* Whether to close the panel after an option is selected.
|
|
101
|
+
* Defaults to `false` (panel stays open for multi-select).
|
|
102
|
+
*/
|
|
103
|
+
this.closePanelOnSelect = false;
|
|
104
|
+
/**
|
|
105
|
+
* Array of selected option values.
|
|
106
|
+
*/
|
|
107
|
+
this.value = [];
|
|
108
|
+
/**
|
|
109
|
+
* Determines whether or not the multiselect is disabled.
|
|
110
|
+
*/
|
|
111
|
+
this.disabled = false;
|
|
112
|
+
/**
|
|
113
|
+
* HTTP method for async requests.
|
|
114
|
+
*/
|
|
115
|
+
this.asyncMethod = 'GET';
|
|
116
|
+
/**
|
|
117
|
+
* Debounce delay in milliseconds for search/fetch.
|
|
118
|
+
*/
|
|
119
|
+
this.debounce = 300;
|
|
120
|
+
/**
|
|
121
|
+
* Timeout in milliseconds for async fetch requests.
|
|
122
|
+
*/
|
|
123
|
+
this.fetchTimeout = 30000;
|
|
124
|
+
/**
|
|
125
|
+
* Maximum height of the dropdown before scrolling.
|
|
126
|
+
*/
|
|
127
|
+
this.maxHeight = '300px';
|
|
128
|
+
/**
|
|
129
|
+
* Width of the trigger button (and reference for dropdown positioning).
|
|
130
|
+
*/
|
|
131
|
+
this.triggerWidth = '100%';
|
|
132
|
+
/**
|
|
133
|
+
* Minimum width of the dropdown panel.
|
|
134
|
+
*/
|
|
135
|
+
this.minWidth = '250px';
|
|
136
|
+
/**
|
|
137
|
+
* Visually hides the label but keeps it accessible.
|
|
138
|
+
*/
|
|
139
|
+
this.hideLabel = false;
|
|
140
|
+
/**
|
|
141
|
+
* Hides the selected items summary section in the dropdown panel.
|
|
142
|
+
*/
|
|
143
|
+
this.hideSelectedItems = false;
|
|
144
|
+
/**
|
|
145
|
+
* Display mode for selected items outside the dropdown panel.
|
|
146
|
+
* `'count'` shows the item's name in the trigger when one is selected and
|
|
147
|
+
* "N items" text otherwise (default). `'pill'` renders selected items as
|
|
148
|
+
* dismissible pds-chip tags.
|
|
149
|
+
* @default 'count'
|
|
150
|
+
*/
|
|
151
|
+
this.selectedDisplay = 'count';
|
|
152
|
+
/**
|
|
153
|
+
* Position of pill chips when `selectedDisplay` is `'pill'`.
|
|
154
|
+
* `'inline'` places chips inside the trigger; `'below'` places chips in a
|
|
155
|
+
* flex-wrap row directly below the trigger.
|
|
156
|
+
* @default 'inline'
|
|
157
|
+
*/
|
|
158
|
+
this.pillPosition = 'inline';
|
|
159
|
+
/**
|
|
160
|
+
* Maximum chips shown inline before collapsing to a "+N more" badge.
|
|
161
|
+
* Only applies when `selectedDisplay='pill'` and `pillPosition='inline'`.
|
|
162
|
+
* @default 3
|
|
163
|
+
*/
|
|
164
|
+
this.maxInlinePills = 3;
|
|
165
|
+
/**
|
|
166
|
+
* Display mode for options in the dropdown panel.
|
|
167
|
+
* `'text'` shows each option's text (default). `'chip'` shows each option as a
|
|
168
|
+
* pds-chip, with a dot when the option has a `dotColor`.
|
|
169
|
+
* @defaultValue 'text'
|
|
170
|
+
*/
|
|
171
|
+
this.optionDisplay = 'text';
|
|
172
|
+
/**
|
|
173
|
+
* If true, the multiselect is required.
|
|
174
|
+
*/
|
|
175
|
+
this.required = false;
|
|
176
|
+
/**
|
|
177
|
+
* Whether the component is currently loading async options.
|
|
178
|
+
*/
|
|
179
|
+
this.loading = false;
|
|
180
|
+
/**
|
|
181
|
+
* CSRF header name for authenticated requests. Defaults to `X-CSRF-Token`.
|
|
182
|
+
*/
|
|
183
|
+
this.csrfHeaderName = 'X-CSRF-Token';
|
|
184
|
+
/**
|
|
185
|
+
* Shows an action icon on each option that has an `actionIcon`, such as an edit pencil.
|
|
186
|
+
* The icon shows on the hovered or highlighted option; clicking it, or pressing Right Arrow on the highlighted option, emits `pdsMultiselectOptionAction`.
|
|
187
|
+
*/
|
|
188
|
+
this.optionActions = false;
|
|
189
|
+
/**
|
|
190
|
+
* Tooltip for an option's action icon when the option has no `actionLabel`. Pass a translated string to localize it; `{text}` is interpolated.
|
|
191
|
+
* @defaultValue 'Edit {text}'
|
|
192
|
+
*/
|
|
193
|
+
this.optionActionLabel = 'Edit {text}';
|
|
194
|
+
/**
|
|
195
|
+
* Screen-reader hint on each option that has an action, naming the key that runs it. Pass a translated string to localize it; `{action}` is interpolated with the option's action label.
|
|
196
|
+
* @defaultValue 'Press Right Arrow to {action}'
|
|
197
|
+
*/
|
|
198
|
+
this.optionActionDescription = 'Press Right Arrow to {action}';
|
|
199
|
+
// Internal state
|
|
200
|
+
this.isOpen = false;
|
|
201
|
+
this.searchQuery = '';
|
|
202
|
+
this.highlightedIndex = -1;
|
|
203
|
+
this.internalOptions = [];
|
|
204
|
+
this.selectedItems = [];
|
|
205
|
+
this.currentPage = 1;
|
|
206
|
+
this.hasMore = false;
|
|
207
|
+
this.creating = false;
|
|
208
|
+
this.removalAnnouncement = '';
|
|
209
|
+
// Flag to prevent focusout from closing during open transition
|
|
210
|
+
this.isOpening = false;
|
|
211
|
+
// Flag to suppress dismiss event when panel closes due to selection (not user dismissal)
|
|
212
|
+
this.isClosingViaSelection = false;
|
|
213
|
+
// Flag to track if initial async fetch has been triggered (prevents double fetch)
|
|
214
|
+
this.initialAsyncFetchTriggered = false;
|
|
215
|
+
// Flag to track if value changed during loading and needs resolution after fetch completes
|
|
216
|
+
this.pendingUnresolvedFetch = false;
|
|
217
|
+
this.handleTriggerClick = (e) => {
|
|
218
|
+
if (this.disabled)
|
|
219
|
+
return;
|
|
220
|
+
// In inline-pill mode, ignore clicks that originated inside a pds-chip.
|
|
221
|
+
// Chip close-button clicks are handled by handlePillRemove; chip body clicks should not toggle the panel.
|
|
222
|
+
if (e && !this.slottedTriggerEl && this.selectedDisplay === 'pill' && this.pillPosition === 'inline') {
|
|
223
|
+
const fromChip = e.composedPath().some(el => { var _a; return ((_a = el.tagName) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === 'pds-chip'; });
|
|
224
|
+
if (fromChip)
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
if (this.isOpen) {
|
|
228
|
+
this.closeDropdown();
|
|
229
|
+
}
|
|
230
|
+
else {
|
|
231
|
+
this.openDropdown();
|
|
232
|
+
}
|
|
233
|
+
};
|
|
234
|
+
this.handleTriggerKeyDown = (e) => {
|
|
235
|
+
if (this.disabled)
|
|
236
|
+
return;
|
|
237
|
+
// Ignore keydown events that bubbled from child elements (e.g. chip close buttons).
|
|
238
|
+
// Only handle keys when the trigger itself is the event target.
|
|
239
|
+
if (e.target !== this.activeTriggerEl)
|
|
240
|
+
return;
|
|
241
|
+
switch (e.key) {
|
|
242
|
+
case 'ArrowDown':
|
|
243
|
+
case 'ArrowUp':
|
|
244
|
+
case 'Enter':
|
|
245
|
+
case ' ':
|
|
246
|
+
e.preventDefault();
|
|
247
|
+
if (!this.isOpen) {
|
|
248
|
+
this.openDropdown();
|
|
249
|
+
}
|
|
250
|
+
break;
|
|
251
|
+
}
|
|
252
|
+
};
|
|
253
|
+
this.handleSearchInputChange = (e) => {
|
|
254
|
+
const target = e.target;
|
|
255
|
+
this.searchQuery = target.value;
|
|
256
|
+
this.highlightedIndex = -1;
|
|
257
|
+
// Emit search event for consumer-managed async
|
|
258
|
+
this.pdsMultiselectSearch.emit({ query: this.searchQuery });
|
|
259
|
+
// Fetch from async URL if configured
|
|
260
|
+
if (this.asyncUrl) {
|
|
261
|
+
this.debouncedFetchAsyncOptions(this.searchQuery, 1);
|
|
262
|
+
}
|
|
263
|
+
};
|
|
264
|
+
this.handleSearchInputKeyDown = (e) => {
|
|
265
|
+
var _a, _b, _c;
|
|
266
|
+
const filteredOptions = this.getFilteredOptions();
|
|
267
|
+
switch (e.key) {
|
|
268
|
+
case 'ArrowDown': {
|
|
269
|
+
e.preventDefault();
|
|
270
|
+
let nextIndex = this.highlightedIndex + 1;
|
|
271
|
+
while (nextIndex < filteredOptions.length && ((_a = filteredOptions[nextIndex]) === null || _a === void 0 ? void 0 : _a.disabled)) {
|
|
272
|
+
nextIndex++;
|
|
273
|
+
}
|
|
274
|
+
if (nextIndex < filteredOptions.length) {
|
|
275
|
+
this.highlightedIndex = nextIndex;
|
|
276
|
+
this.scrollOptionIntoView();
|
|
277
|
+
}
|
|
278
|
+
break;
|
|
279
|
+
}
|
|
280
|
+
case 'ArrowUp': {
|
|
281
|
+
e.preventDefault();
|
|
282
|
+
// Clamp to 0 so ArrowUp from uninitialised state (-1) attempts the first option;
|
|
283
|
+
// stays at -1 if that option is disabled.
|
|
284
|
+
let prevIndex = Math.max(this.highlightedIndex - 1, 0);
|
|
285
|
+
while (prevIndex > 0 && ((_b = filteredOptions[prevIndex]) === null || _b === void 0 ? void 0 : _b.disabled)) {
|
|
286
|
+
prevIndex--;
|
|
287
|
+
}
|
|
288
|
+
if (!((_c = filteredOptions[prevIndex]) === null || _c === void 0 ? void 0 : _c.disabled)) {
|
|
289
|
+
this.highlightedIndex = prevIndex;
|
|
290
|
+
this.scrollOptionIntoView();
|
|
291
|
+
}
|
|
292
|
+
break;
|
|
293
|
+
}
|
|
294
|
+
case 'Enter':
|
|
295
|
+
e.preventDefault();
|
|
296
|
+
if (this.highlightedIndex >= 0) {
|
|
297
|
+
const option = filteredOptions[this.highlightedIndex];
|
|
298
|
+
if (option) {
|
|
299
|
+
this.selectOption(option);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
break;
|
|
303
|
+
// Right Arrow still moves the caret through typed text; a plain Right Arrow at the end runs the action.
|
|
304
|
+
case 'ArrowRight': {
|
|
305
|
+
const option = filteredOptions[this.highlightedIndex];
|
|
306
|
+
const isPlainKey = !e.altKey && !e.ctrlKey && !e.metaKey && !e.shiftKey && !e.isComposing;
|
|
307
|
+
if (isPlainKey && option && this.hasOptionAction(option) && this.isCaretAtEndOfSearch()) {
|
|
308
|
+
e.preventDefault();
|
|
309
|
+
this.runOptionAction(option);
|
|
310
|
+
}
|
|
311
|
+
break;
|
|
312
|
+
}
|
|
313
|
+
// Escape is handled by the global @Listen('keydown') handler
|
|
314
|
+
case 'Tab': {
|
|
315
|
+
const row = e.shiftKey ? undefined : this.getSelectedItemTabbables()[0];
|
|
316
|
+
if (row !== undefined) {
|
|
317
|
+
row.focus();
|
|
318
|
+
e.preventDefault();
|
|
319
|
+
}
|
|
320
|
+
else {
|
|
321
|
+
this.tabPastOptions(e);
|
|
322
|
+
}
|
|
323
|
+
break;
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
};
|
|
327
|
+
this.handleSelectedListKeyDown = (e) => {
|
|
328
|
+
if (e.key === 'Tab' && !e.shiftKey && e.composedPath()[0] === this.getSelectedItemTabbables().pop())
|
|
329
|
+
this.tabPastOptions(e);
|
|
330
|
+
};
|
|
331
|
+
this.handleFooterKeyDown = (e) => {
|
|
332
|
+
var _a, _b;
|
|
333
|
+
if (e.key !== 'Tab')
|
|
334
|
+
return;
|
|
335
|
+
const tabbables = this.getFooterTabbables();
|
|
336
|
+
const focused = e.composedPath()[0];
|
|
337
|
+
if (e.shiftKey && focused === tabbables[0]) {
|
|
338
|
+
e.preventDefault();
|
|
339
|
+
(_b = ((_a = this.getSelectedItemTabbables().pop()) !== null && _a !== void 0 ? _a : this.searchInputEl)) === null || _b === void 0 ? void 0 : _b.focus();
|
|
340
|
+
}
|
|
341
|
+
else if (!e.shiftKey && focused === tabbables[tabbables.length - 1]) {
|
|
342
|
+
this.closeDropdown();
|
|
343
|
+
}
|
|
344
|
+
};
|
|
345
|
+
this.handleContainerFocusOut = () => {
|
|
346
|
+
// Use setTimeout to delay the check - this allows click events and focus transitions to complete
|
|
347
|
+
// before we decide to close the dropdown
|
|
348
|
+
setTimeout(() => {
|
|
349
|
+
var _a;
|
|
350
|
+
// Don't close if we're in the middle of opening, already closed,
|
|
351
|
+
// or closing due to a selection (not a user dismissal)
|
|
352
|
+
if (!this.isOpen || this.isOpening || this.isClosingViaSelection)
|
|
353
|
+
return;
|
|
354
|
+
const activeElement = document.activeElement;
|
|
355
|
+
// Check if focus is within our component's shadow root
|
|
356
|
+
const isInShadowRoot = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.contains(activeElement);
|
|
357
|
+
// Also check the host itself and its light DOM, where slotted trigger and footer content live
|
|
358
|
+
const isInHost = this.el.contains(activeElement);
|
|
359
|
+
if (!isInShadowRoot && !isInHost) {
|
|
360
|
+
this.pdsMultiselectDismiss.emit();
|
|
361
|
+
this.closeDropdown();
|
|
362
|
+
}
|
|
363
|
+
}, 0);
|
|
364
|
+
};
|
|
365
|
+
this.handleOptionMouseDown = (option) => (e) => {
|
|
366
|
+
e.preventDefault(); // Prevent focus change
|
|
367
|
+
this.toggleOption(option);
|
|
368
|
+
};
|
|
369
|
+
// mousedown already toggled the option. Without this, a click on the chip reaches the
|
|
370
|
+
// checkbox through its label and toggles it a second time.
|
|
371
|
+
this.handleOptionClick = (e) => {
|
|
372
|
+
e.preventDefault();
|
|
373
|
+
};
|
|
374
|
+
this.handleOptionMouseEnter = (index, option) => () => {
|
|
375
|
+
if (option.disabled)
|
|
376
|
+
return;
|
|
377
|
+
this.highlightedIndex = index;
|
|
378
|
+
};
|
|
379
|
+
this.handleOptionActionMouseDown = (e) => {
|
|
380
|
+
// Stops the row's mousedown from toggling the option, and keeps focus in the search input.
|
|
381
|
+
e.preventDefault();
|
|
382
|
+
e.stopPropagation();
|
|
383
|
+
};
|
|
384
|
+
this.handleOptionActionClick = (option) => () => {
|
|
385
|
+
this.runOptionAction(option);
|
|
386
|
+
};
|
|
387
|
+
// Keeps focus in the search input so the panel stays open until the footer's click lands.
|
|
388
|
+
this.handleFooterMouseDown = (e) => {
|
|
389
|
+
e.preventDefault();
|
|
390
|
+
};
|
|
391
|
+
this.handleScroll = (e) => {
|
|
392
|
+
if (!this.asyncUrl || !this.hasMore || this.loading)
|
|
393
|
+
return;
|
|
394
|
+
const target = e.target;
|
|
395
|
+
const scrollBottom = target.scrollHeight - target.scrollTop - target.clientHeight;
|
|
396
|
+
// Load more when near bottom (within 50px)
|
|
397
|
+
if (scrollBottom < 50) {
|
|
398
|
+
this.pdsMultiselectLoadOptions.emit({
|
|
399
|
+
query: this.searchQuery,
|
|
400
|
+
page: this.currentPage + 1,
|
|
401
|
+
});
|
|
402
|
+
this.debouncedFetchAsyncOptions(this.searchQuery, this.currentPage + 1);
|
|
403
|
+
}
|
|
404
|
+
};
|
|
405
|
+
this.handlePillRemove = (item) => () => {
|
|
406
|
+
var _a, _b;
|
|
407
|
+
if (this.disabled)
|
|
408
|
+
return;
|
|
409
|
+
const optionId = String(item.id);
|
|
410
|
+
this.value = this.value.filter(v => v !== optionId);
|
|
411
|
+
this.syncSelectedItems();
|
|
412
|
+
this.emitChange({ removed: [optionId] });
|
|
413
|
+
// Clear first so screen readers re-announce even when the same item is removed twice
|
|
414
|
+
this.removalAnnouncement = '';
|
|
415
|
+
queueMicrotask(() => { this.removalAnnouncement = formatMessage(this.itemRemovedLabel, { item: item.text }); });
|
|
416
|
+
this.isClosingViaSelection = true;
|
|
417
|
+
if (this.isOpen) {
|
|
418
|
+
(_a = this.searchInputEl) === null || _a === void 0 ? void 0 : _a.focus();
|
|
419
|
+
}
|
|
420
|
+
else {
|
|
421
|
+
(_b = this.activeTriggerEl) === null || _b === void 0 ? void 0 : _b.focus();
|
|
422
|
+
}
|
|
423
|
+
setTimeout(() => { this.isClosingViaSelection = false; }, 0);
|
|
424
|
+
};
|
|
425
|
+
}
|
|
426
|
+
connectedCallback() {
|
|
427
|
+
// Initialize ElementInternals for form association (only once per element instance)
|
|
428
|
+
if (this.el.attachInternals && !this.internals) {
|
|
429
|
+
this.internals = this.el.attachInternals();
|
|
430
|
+
}
|
|
431
|
+
this.syncTruncationTooltips();
|
|
432
|
+
}
|
|
433
|
+
/**
|
|
434
|
+
* Form Associated Custom Elements API: Called when the form is disabled
|
|
435
|
+
*/
|
|
436
|
+
formDisabledCallback(disabled) {
|
|
437
|
+
// Also fires when this element's own `disabled` attribute is merely present, even as the
|
|
438
|
+
// literal string "false" (a consumer's or React's attribute serialization can write that) —
|
|
439
|
+
// the platform treats any value as disabled, independent of fieldset state. A real disabled
|
|
440
|
+
// fieldset ancestor confirms this is genuinely that, not this element's own attribute.
|
|
441
|
+
if (disabled && !this.el.closest('fieldset[disabled]'))
|
|
442
|
+
return;
|
|
443
|
+
this.disabled = disabled;
|
|
444
|
+
}
|
|
445
|
+
componentWillLoad() {
|
|
446
|
+
this.originalSearchEmitter = this.pdsMultiselectSearch;
|
|
447
|
+
this.syncSelectedItems();
|
|
448
|
+
this.syncSlottedTrigger();
|
|
449
|
+
}
|
|
450
|
+
componentDidLoad() {
|
|
451
|
+
this.setupDebounce();
|
|
452
|
+
this.setupMutationObserver();
|
|
453
|
+
this.setupSlotChangeListener();
|
|
454
|
+
this.updateFormValue();
|
|
455
|
+
// Ensure preselected values sync after DOM is fully ready
|
|
456
|
+
// This handles cases where slot content loads after initial render (e.g., in docs/MDX)
|
|
457
|
+
requestAnimationFrame(() => {
|
|
458
|
+
this.updateOptionsFromSlot();
|
|
459
|
+
this.syncSelectedItems();
|
|
460
|
+
});
|
|
461
|
+
// If we have preselected values and asyncUrl, fetch options to resolve them
|
|
462
|
+
// This ensures the trigger shows "X items" instead of placeholder on initial render
|
|
463
|
+
if (this.asyncUrl && this.ensureValueArray().length > 0) {
|
|
464
|
+
this.initialAsyncFetchTriggered = true;
|
|
465
|
+
this.fetchOptions('', 1);
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
setupSlotChangeListener() {
|
|
469
|
+
var _a;
|
|
470
|
+
const slot = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('slot:not([name])');
|
|
471
|
+
if (slot) {
|
|
472
|
+
slot.addEventListener('slotchange', () => {
|
|
473
|
+
this.updateOptionsFromSlot();
|
|
474
|
+
this.syncSelectedItems();
|
|
475
|
+
});
|
|
476
|
+
// Also call it immediately in case content is already slotted
|
|
477
|
+
this.updateOptionsFromSlot();
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
componentDidRender() {
|
|
481
|
+
this.syncTruncationTooltips();
|
|
482
|
+
}
|
|
483
|
+
syncTruncationTooltips() {
|
|
484
|
+
var _a;
|
|
485
|
+
const root = this.el.shadowRoot;
|
|
486
|
+
this.triggerTextTooltip.sync([root === null || root === void 0 ? void 0 : root.querySelector('.pds-multiselect__trigger-text')]);
|
|
487
|
+
this.selectedItemTooltips.sync((_a = root === null || root === void 0 ? void 0 : root.querySelectorAll('.pds-multiselect__selected-item')) !== null && _a !== void 0 ? _a : []);
|
|
488
|
+
}
|
|
489
|
+
disconnectedCallback() {
|
|
490
|
+
var _a, _b;
|
|
491
|
+
this.triggerTextTooltip.destroy();
|
|
492
|
+
this.selectedItemTooltips.destroy();
|
|
493
|
+
cancelDebouncedEvent(this.pdsMultiselectSearch);
|
|
494
|
+
(_a = this.observer) === null || _a === void 0 ? void 0 : _a.disconnect();
|
|
495
|
+
(_b = this.cleanupAutoUpdate) === null || _b === void 0 ? void 0 : _b.call(this);
|
|
496
|
+
this.clearAsyncFetchState();
|
|
497
|
+
}
|
|
498
|
+
setupDebounce() {
|
|
499
|
+
const { pdsMultiselectSearch, debounce, originalSearchEmitter } = this;
|
|
500
|
+
this.pdsMultiselectSearch = debounce === undefined
|
|
501
|
+
? originalSearchEmitter !== null && originalSearchEmitter !== void 0 ? originalSearchEmitter : pdsMultiselectSearch
|
|
502
|
+
: debounceEvent(pdsMultiselectSearch, debounce);
|
|
503
|
+
// After the swap, so an emit made while flushing goes to the new emitter, not the old one.
|
|
504
|
+
flushDebouncedEvent(pdsMultiselectSearch);
|
|
505
|
+
}
|
|
506
|
+
valueChanged(newValue) {
|
|
507
|
+
// Handle JSON string values (from HTML attributes)
|
|
508
|
+
if (typeof newValue === 'string') {
|
|
509
|
+
try {
|
|
510
|
+
const parsed = JSON.parse(newValue);
|
|
511
|
+
if (Array.isArray(parsed)) {
|
|
512
|
+
this.value = parsed;
|
|
513
|
+
return; // The assignment will trigger this watcher again with the array
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
catch (_a) {
|
|
517
|
+
// Not valid JSON, treat as single value
|
|
518
|
+
this.value = newValue ? [newValue] : [];
|
|
519
|
+
return;
|
|
520
|
+
}
|
|
521
|
+
}
|
|
522
|
+
this.syncSelectedItems();
|
|
523
|
+
this.updateFormValue();
|
|
524
|
+
// If using asyncUrl and some values couldn't be resolved, fetch options
|
|
525
|
+
// This handles programmatic value changes where the options aren't loaded yet
|
|
526
|
+
if (this.asyncUrl) {
|
|
527
|
+
const valueArray = this.ensureValueArray();
|
|
528
|
+
const hasUnresolvedValues = valueArray.length > 0 && this.selectedItems.length < valueArray.length;
|
|
529
|
+
if (hasUnresolvedValues) {
|
|
530
|
+
if (this.loading) {
|
|
531
|
+
// Mark that we need to re-check after current fetch completes
|
|
532
|
+
this.pendingUnresolvedFetch = true;
|
|
533
|
+
}
|
|
534
|
+
else {
|
|
535
|
+
this.fetchOptions('', 1);
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
optionsChanged() {
|
|
541
|
+
if (this.options) {
|
|
542
|
+
this.internalOptions = [...this.options];
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
internalOptionsChanged() {
|
|
546
|
+
// Re-sync selected items when options become available
|
|
547
|
+
// This handles the case where value is set before options are loaded (e.g., from slot)
|
|
548
|
+
this.syncSelectedItems();
|
|
549
|
+
}
|
|
550
|
+
isOpenChanged() {
|
|
551
|
+
var _a;
|
|
552
|
+
(_a = this.slottedTriggerEl) === null || _a === void 0 ? void 0 : _a.setAttribute('aria-expanded', String(this.isOpen));
|
|
553
|
+
}
|
|
554
|
+
disabledChanged(disabled) {
|
|
555
|
+
var _a, _b;
|
|
556
|
+
this.syncSlottedTrigger();
|
|
557
|
+
// A disabled control can't stay open, or its options could still be toggled.
|
|
558
|
+
if (!disabled || !this.isOpen)
|
|
559
|
+
return;
|
|
560
|
+
const activeElement = document.activeElement;
|
|
561
|
+
const focusInside = !!(((_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.contains(activeElement)) || this.el.contains(activeElement));
|
|
562
|
+
this.closeDropdown();
|
|
563
|
+
// A disabled built-in trigger can't take focus back (falls to <body>, as natively); a slotted
|
|
564
|
+
// trigger without its own disabled property only gets aria-disabled and stays focusable, so
|
|
565
|
+
// focus would otherwise stay stranded on the closed panel's former content.
|
|
566
|
+
if (focusInside)
|
|
567
|
+
(_b = this.activeTriggerEl) === null || _b === void 0 ? void 0 : _b.focus();
|
|
568
|
+
}
|
|
569
|
+
/**
|
|
570
|
+
* Sets focus on the trigger button.
|
|
571
|
+
*/
|
|
572
|
+
async setFocus() {
|
|
573
|
+
var _a;
|
|
574
|
+
(_a = this.activeTriggerEl) === null || _a === void 0 ? void 0 : _a.focus();
|
|
575
|
+
}
|
|
576
|
+
/**
|
|
577
|
+
* Clears all selected values and resets the component. Works while disabled too, as setting a
|
|
578
|
+
* native control's value from script does.
|
|
579
|
+
*/
|
|
580
|
+
async clear() {
|
|
581
|
+
const hadValues = this.value.length > 0 || this.searchQuery !== '';
|
|
582
|
+
const removed = this.ensureValueArray();
|
|
583
|
+
this.value = [];
|
|
584
|
+
this.searchQuery = '';
|
|
585
|
+
this.syncSelectedItems();
|
|
586
|
+
this.updateFormValue();
|
|
587
|
+
if (hadValues) {
|
|
588
|
+
this.emitChange({ removed });
|
|
589
|
+
}
|
|
590
|
+
}
|
|
591
|
+
/**
|
|
592
|
+
* Refetches the first page of options from `asyncUrl` for the current search, such as after an option is renamed
|
|
593
|
+
* or recolored elsewhere. Selected items in that page pick up the new text and dot color without emitting a change;
|
|
594
|
+
* other selected items keep the text and dot color they were last loaded with. Does nothing without `asyncUrl`.
|
|
595
|
+
*/
|
|
596
|
+
async refreshOptions() {
|
|
597
|
+
await this.fetchOptions(this.searchQuery, 1);
|
|
598
|
+
}
|
|
599
|
+
/**
|
|
600
|
+
* Handle global keyboard events for accessibility.
|
|
601
|
+
* Closes dropdown on Escape key press regardless of focus location. Taken in document's capture
|
|
602
|
+
* phase, before a modal around the multiselect hears it on document and closes too.
|
|
603
|
+
*/
|
|
604
|
+
handleWindowKeyDown(event) {
|
|
605
|
+
var _a;
|
|
606
|
+
if (!this.isOpen || event.defaultPrevented)
|
|
607
|
+
return;
|
|
608
|
+
if (event.key === 'Escape') {
|
|
609
|
+
event.preventDefault();
|
|
610
|
+
this.pdsMultiselectDismiss.emit();
|
|
611
|
+
this.closeDropdown();
|
|
612
|
+
(_a = this.activeTriggerEl) === null || _a === void 0 ? void 0 : _a.focus();
|
|
613
|
+
}
|
|
614
|
+
}
|
|
615
|
+
get activeTriggerEl() {
|
|
616
|
+
var _a;
|
|
617
|
+
return (_a = this.slottedTriggerEl) !== null && _a !== void 0 ? _a : this.triggerEl;
|
|
618
|
+
}
|
|
619
|
+
syncSlottedTrigger() {
|
|
620
|
+
const trigger = Array.from(this.el.children).find(child => child.getAttribute('slot') === 'trigger');
|
|
621
|
+
if (trigger !== this.slottedTriggerEl) {
|
|
622
|
+
const previous = this.slottedTriggerEl;
|
|
623
|
+
if (previous) {
|
|
624
|
+
previous.removeEventListener('click', this.handleTriggerClick);
|
|
625
|
+
previous.removeEventListener('keydown', this.handleTriggerKeyDown);
|
|
626
|
+
previous.removeAttribute('aria-expanded');
|
|
627
|
+
previous.removeAttribute('aria-haspopup');
|
|
628
|
+
previous.removeAttribute('aria-disabled');
|
|
629
|
+
this.setSlottedTriggerDisabled(previous, false);
|
|
630
|
+
}
|
|
631
|
+
trigger === null || trigger === void 0 ? void 0 : trigger.addEventListener('click', this.handleTriggerClick);
|
|
632
|
+
trigger === null || trigger === void 0 ? void 0 : trigger.addEventListener('keydown', this.handleTriggerKeyDown);
|
|
633
|
+
this.slottedTriggerEl = trigger;
|
|
634
|
+
}
|
|
635
|
+
if (!trigger)
|
|
636
|
+
return;
|
|
637
|
+
trigger.setAttribute('aria-haspopup', 'listbox');
|
|
638
|
+
trigger.setAttribute('aria-expanded', String(this.isOpen));
|
|
639
|
+
if (this.disabled) {
|
|
640
|
+
trigger.setAttribute('aria-disabled', 'true');
|
|
641
|
+
}
|
|
642
|
+
else {
|
|
643
|
+
trigger.removeAttribute('aria-disabled');
|
|
644
|
+
}
|
|
645
|
+
this.setSlottedTriggerDisabled(trigger, this.disabled);
|
|
646
|
+
}
|
|
647
|
+
setSlottedTriggerDisabled(trigger, disabled) {
|
|
648
|
+
if (!('disabled' in trigger)) {
|
|
649
|
+
// A custom element gets its `disabled` property once it's defined, which can be after the multiselect loads.
|
|
650
|
+
if (disabled && trigger.localName.includes('-') && customElements.get(trigger.localName) === undefined) {
|
|
651
|
+
customElements.whenDefined(trigger.localName).then(() => this.syncSlottedTrigger());
|
|
652
|
+
}
|
|
653
|
+
return;
|
|
654
|
+
}
|
|
655
|
+
const control = trigger;
|
|
656
|
+
// Only re-enable a trigger the multiselect disabled, so one the consumer disabled stays disabled.
|
|
657
|
+
if (disabled && !control.disabled) {
|
|
658
|
+
control.disabled = true;
|
|
659
|
+
this.hasDisabledSlottedTrigger = true;
|
|
660
|
+
}
|
|
661
|
+
else if (!disabled && this.hasDisabledSlottedTrigger) {
|
|
662
|
+
control.disabled = false;
|
|
663
|
+
this.hasDisabledSlottedTrigger = false;
|
|
664
|
+
}
|
|
665
|
+
}
|
|
666
|
+
setupMutationObserver() {
|
|
667
|
+
this.observer = new MutationObserver(records => {
|
|
668
|
+
if (records.some(record => record.target === this.el)) {
|
|
669
|
+
this.syncSlottedTrigger();
|
|
670
|
+
}
|
|
671
|
+
// Changes inside the slotted trigger, like re-rendered chips, can't change the options.
|
|
672
|
+
const trigger = this.slottedTriggerEl;
|
|
673
|
+
if (!trigger || records.some(record => !trigger.contains(record.target))) {
|
|
674
|
+
this.updateOptionsFromSlot();
|
|
675
|
+
}
|
|
676
|
+
});
|
|
677
|
+
this.observer.observe(this.el, {
|
|
678
|
+
childList: true,
|
|
679
|
+
subtree: true,
|
|
680
|
+
});
|
|
681
|
+
}
|
|
682
|
+
updateOptionsFromSlot() {
|
|
683
|
+
var _a;
|
|
684
|
+
const slot = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('slot:not([name])');
|
|
685
|
+
if (!slot)
|
|
686
|
+
return;
|
|
687
|
+
const options = [];
|
|
688
|
+
slot.assignedElements({ flatten: true }).forEach(el => {
|
|
689
|
+
if (el.tagName === 'OPTGROUP') {
|
|
690
|
+
const optgroup = el;
|
|
691
|
+
const groupLabel = optgroup.label;
|
|
692
|
+
const groupDisabled = optgroup.disabled;
|
|
693
|
+
optgroup.querySelectorAll('option').forEach((opt) => {
|
|
694
|
+
const option = this.parseSlottedOption(opt, groupDisabled);
|
|
695
|
+
if (groupLabel) {
|
|
696
|
+
option.group = groupLabel;
|
|
697
|
+
}
|
|
698
|
+
options.push(option);
|
|
699
|
+
});
|
|
700
|
+
}
|
|
701
|
+
else if (el.tagName === 'OPTION') {
|
|
702
|
+
options.push(this.parseSlottedOption(el, false));
|
|
703
|
+
}
|
|
704
|
+
});
|
|
705
|
+
// Only update if we actually found options AND we're not using async/external options
|
|
706
|
+
// Don't clear internalOptions if slot returns empty (might be mid-DOM-update)
|
|
707
|
+
if (options.length > 0 && !this.asyncUrl && !this.options) {
|
|
708
|
+
this.internalOptions = options;
|
|
709
|
+
}
|
|
710
|
+
}
|
|
711
|
+
parseSlottedOption(opt, groupDisabled) {
|
|
712
|
+
var _a;
|
|
713
|
+
const option = {
|
|
714
|
+
id: opt.value,
|
|
715
|
+
text: ((_a = opt.textContent) === null || _a === void 0 ? void 0 : _a.trim()) || opt.value,
|
|
716
|
+
disabled: opt.disabled || groupDisabled || undefined,
|
|
717
|
+
};
|
|
718
|
+
const dotColor = opt.getAttribute('data-dot-color');
|
|
719
|
+
if (dotColor) {
|
|
720
|
+
option.dotColor = dotColor;
|
|
721
|
+
}
|
|
722
|
+
const actionIcon = opt.getAttribute('data-action-icon');
|
|
723
|
+
if (actionIcon) {
|
|
724
|
+
option.actionIcon = actionIcon;
|
|
725
|
+
}
|
|
726
|
+
const actionLabel = opt.getAttribute('data-action-label');
|
|
727
|
+
if (actionLabel) {
|
|
728
|
+
option.actionLabel = actionLabel;
|
|
729
|
+
}
|
|
730
|
+
return option;
|
|
731
|
+
}
|
|
732
|
+
clearAsyncFetchState() {
|
|
733
|
+
var _a;
|
|
734
|
+
if (this.fetchDebounceTimer !== undefined) {
|
|
735
|
+
window.clearTimeout(this.fetchDebounceTimer);
|
|
736
|
+
this.fetchDebounceTimer = undefined;
|
|
737
|
+
}
|
|
738
|
+
if (this.fetchTimeoutTimer !== undefined) {
|
|
739
|
+
window.clearTimeout(this.fetchTimeoutTimer);
|
|
740
|
+
this.fetchTimeoutTimer = undefined;
|
|
741
|
+
}
|
|
742
|
+
(_a = this.abortController) === null || _a === void 0 ? void 0 : _a.abort();
|
|
743
|
+
this.abortController = undefined;
|
|
744
|
+
}
|
|
745
|
+
debouncedFetchAsyncOptions(query, page = 1) {
|
|
746
|
+
var _a;
|
|
747
|
+
if (!this.asyncUrl)
|
|
748
|
+
return;
|
|
749
|
+
if (this.fetchDebounceTimer !== undefined) {
|
|
750
|
+
window.clearTimeout(this.fetchDebounceTimer);
|
|
751
|
+
}
|
|
752
|
+
const delay = Math.max(0, (_a = this.debounce) !== null && _a !== void 0 ? _a : 0);
|
|
753
|
+
this.fetchDebounceTimer = window.setTimeout(() => {
|
|
754
|
+
this.fetchDebounceTimer = undefined;
|
|
755
|
+
this.fetchOptions(query, page);
|
|
756
|
+
}, delay);
|
|
757
|
+
}
|
|
758
|
+
syncSelectedItems() {
|
|
759
|
+
// Ensure value is an array (may be string from HTML attribute)
|
|
760
|
+
const valueArray = this.ensureValueArray();
|
|
761
|
+
const allOptions = this.getAllOptions();
|
|
762
|
+
// Map values to options, preserving existing selectedItems for values not yet in options
|
|
763
|
+
const newSelectedItems = [];
|
|
764
|
+
const existingItemsMap = new Map(this.selectedItems.map(item => [String(item.id), item]));
|
|
765
|
+
valueArray.forEach(val => {
|
|
766
|
+
// First try to find in available options
|
|
767
|
+
const option = allOptions.find(opt => String(opt.id) === String(val));
|
|
768
|
+
if (option) {
|
|
769
|
+
newSelectedItems.push(option);
|
|
770
|
+
}
|
|
771
|
+
else if (existingItemsMap.has(String(val))) {
|
|
772
|
+
// If not in options but exists in current selectedItems, preserve it
|
|
773
|
+
// This handles the case where async data hasn't loaded yet or newly created items
|
|
774
|
+
newSelectedItems.push(existingItemsMap.get(String(val)));
|
|
775
|
+
}
|
|
776
|
+
// Note: We don't create placeholders for values without matching options.
|
|
777
|
+
// This ensures selectedItems remains empty until options are actually loaded,
|
|
778
|
+
// which matches the expected behavior for preselected values.
|
|
779
|
+
});
|
|
780
|
+
this.selectedItems = newSelectedItems;
|
|
781
|
+
}
|
|
782
|
+
ensureValueArray() {
|
|
783
|
+
// Handle JSON string values passed via HTML attribute
|
|
784
|
+
if (typeof this.value === 'string') {
|
|
785
|
+
try {
|
|
786
|
+
const parsed = JSON.parse(this.value);
|
|
787
|
+
if (Array.isArray(parsed)) {
|
|
788
|
+
this.value = parsed;
|
|
789
|
+
return parsed;
|
|
790
|
+
}
|
|
791
|
+
}
|
|
792
|
+
catch (_a) {
|
|
793
|
+
// Not valid JSON, treat as single value
|
|
794
|
+
const singleValue = this.value;
|
|
795
|
+
this.value = singleValue ? [singleValue] : [];
|
|
796
|
+
return this.value;
|
|
797
|
+
}
|
|
798
|
+
}
|
|
799
|
+
return Array.isArray(this.value) ? this.value : [];
|
|
800
|
+
}
|
|
801
|
+
getAllOptions() {
|
|
802
|
+
return this.options || this.internalOptions;
|
|
803
|
+
}
|
|
804
|
+
getFilteredOptions() {
|
|
805
|
+
const allOptions = this.getAllOptions();
|
|
806
|
+
const query = this.searchQuery.toLowerCase();
|
|
807
|
+
const filtered = allOptions.filter(opt => {
|
|
808
|
+
// Filter by search query only - don't filter out selected items
|
|
809
|
+
if (query) {
|
|
810
|
+
return opt.text.toLowerCase().includes(query);
|
|
811
|
+
}
|
|
812
|
+
return true;
|
|
813
|
+
});
|
|
814
|
+
// Add create option if enabled and no matches found
|
|
815
|
+
if (this.createUrl && this.searchQuery.trim() && filtered.length === 0) {
|
|
816
|
+
return [{
|
|
817
|
+
id: '__create__',
|
|
818
|
+
text: this.searchQuery.trim(),
|
|
819
|
+
isCreateOption: true,
|
|
820
|
+
}];
|
|
821
|
+
}
|
|
822
|
+
return filtered;
|
|
823
|
+
}
|
|
824
|
+
updateFormValue() {
|
|
825
|
+
var _a;
|
|
826
|
+
if (isSpecTest())
|
|
827
|
+
return;
|
|
828
|
+
if ((_a = this.internals) === null || _a === void 0 ? void 0 : _a.setFormValue) {
|
|
829
|
+
// Ensure value is an array before iterating
|
|
830
|
+
const valueArray = this.ensureValueArray();
|
|
831
|
+
// Submit as multiple values with same name (native select multiple behavior)
|
|
832
|
+
const formData = new FormData();
|
|
833
|
+
valueArray.forEach(val => {
|
|
834
|
+
if (this.name) {
|
|
835
|
+
formData.append(this.name, val);
|
|
836
|
+
}
|
|
837
|
+
});
|
|
838
|
+
this.internals.setFormValue(formData);
|
|
839
|
+
// Update validity state for required validation
|
|
840
|
+
if (this.required && valueArray.length === 0) {
|
|
841
|
+
this.internals.setValidity({ valueMissing: true }, 'Please select at least one option.', this.activeTriggerEl);
|
|
842
|
+
}
|
|
843
|
+
else {
|
|
844
|
+
this.internals.setValidity({});
|
|
845
|
+
}
|
|
846
|
+
}
|
|
847
|
+
}
|
|
848
|
+
getCsrfToken() {
|
|
849
|
+
// Use provided token if available
|
|
850
|
+
if (this.csrfToken) {
|
|
851
|
+
return this.csrfToken;
|
|
852
|
+
}
|
|
853
|
+
// Try to read from meta tag
|
|
854
|
+
const metaTag = document.querySelector('meta[name="csrf-token"]');
|
|
855
|
+
return (metaTag === null || metaTag === void 0 ? void 0 : metaTag.content) || null;
|
|
856
|
+
}
|
|
857
|
+
async fetchOptions(query, page = 1) {
|
|
858
|
+
var _a;
|
|
859
|
+
if (!this.asyncUrl)
|
|
860
|
+
return;
|
|
861
|
+
// Abort any pending request and clear existing timeout
|
|
862
|
+
(_a = this.abortController) === null || _a === void 0 ? void 0 : _a.abort();
|
|
863
|
+
if (this.fetchTimeoutTimer !== undefined) {
|
|
864
|
+
window.clearTimeout(this.fetchTimeoutTimer);
|
|
865
|
+
this.fetchTimeoutTimer = undefined;
|
|
866
|
+
}
|
|
867
|
+
this.abortController = new AbortController();
|
|
868
|
+
this.loading = true;
|
|
869
|
+
// Set up timeout for fetch request
|
|
870
|
+
this.fetchTimeoutTimer = window.setTimeout(() => {
|
|
871
|
+
var _a;
|
|
872
|
+
(_a = this.abortController) === null || _a === void 0 ? void 0 : _a.abort();
|
|
873
|
+
this.fetchTimeoutTimer = undefined;
|
|
874
|
+
}, this.fetchTimeout);
|
|
875
|
+
try {
|
|
876
|
+
// Guard against malformed asyncUrl
|
|
877
|
+
let url;
|
|
878
|
+
try {
|
|
879
|
+
url = new URL(this.asyncUrl, window.location.origin);
|
|
880
|
+
}
|
|
881
|
+
catch (urlError) {
|
|
882
|
+
throw new TypeError(`Invalid asyncUrl: ${this.asyncUrl}`);
|
|
883
|
+
}
|
|
884
|
+
if (this.asyncMethod === 'GET') {
|
|
885
|
+
url.searchParams.set('search', query);
|
|
886
|
+
url.searchParams.set('page', String(page));
|
|
887
|
+
}
|
|
888
|
+
const csrfToken = this.getCsrfToken();
|
|
889
|
+
const headers = {
|
|
890
|
+
'Content-Type': 'application/json',
|
|
891
|
+
'Accept': 'application/json',
|
|
892
|
+
};
|
|
893
|
+
if (csrfToken) {
|
|
894
|
+
const headerName = this.csrfHeaderName || 'X-CSRF-Token';
|
|
895
|
+
headers[headerName] = csrfToken;
|
|
896
|
+
}
|
|
897
|
+
const response = await fetch(url.toString(), Object.assign({ method: this.asyncMethod, signal: this.abortController.signal, headers }, (this.asyncMethod === 'POST' && {
|
|
898
|
+
body: JSON.stringify({ search: query, page }),
|
|
899
|
+
})));
|
|
900
|
+
// Clear timeout on successful response
|
|
901
|
+
if (this.fetchTimeoutTimer !== undefined) {
|
|
902
|
+
window.clearTimeout(this.fetchTimeoutTimer);
|
|
903
|
+
this.fetchTimeoutTimer = undefined;
|
|
904
|
+
}
|
|
905
|
+
if (!response.ok)
|
|
906
|
+
throw new Error('Failed to fetch options');
|
|
907
|
+
const data = await response.json();
|
|
908
|
+
const formattedResults = data.results.map(item => {
|
|
909
|
+
// If formatResult is provided, use it
|
|
910
|
+
if (this.formatResult) {
|
|
911
|
+
return this.formatResult(item);
|
|
912
|
+
}
|
|
913
|
+
// Defensive check: ensure item is an object before spreading
|
|
914
|
+
if (typeof item === 'object' && item !== null) {
|
|
915
|
+
return Object.assign({ id: item.id, text: item.text }, item);
|
|
916
|
+
}
|
|
917
|
+
// Handle primitives by converting to safe shape
|
|
918
|
+
return {
|
|
919
|
+
id: String(item),
|
|
920
|
+
text: String(item),
|
|
921
|
+
};
|
|
922
|
+
});
|
|
923
|
+
if (page === 1) {
|
|
924
|
+
this.internalOptions = formattedResults;
|
|
925
|
+
}
|
|
926
|
+
else {
|
|
927
|
+
this.internalOptions = [...this.internalOptions, ...formattedResults];
|
|
928
|
+
}
|
|
929
|
+
this.hasMore = data.totalCount ? this.internalOptions.length < data.totalCount : false;
|
|
930
|
+
this.currentPage = page;
|
|
931
|
+
}
|
|
932
|
+
catch (error) {
|
|
933
|
+
// Clear timeout on error
|
|
934
|
+
if (this.fetchTimeoutTimer !== undefined) {
|
|
935
|
+
window.clearTimeout(this.fetchTimeoutTimer);
|
|
936
|
+
this.fetchTimeoutTimer = undefined;
|
|
937
|
+
}
|
|
938
|
+
if (error.name !== 'AbortError') {
|
|
939
|
+
console.error('PdsMultiselect: Failed to fetch options', error);
|
|
940
|
+
}
|
|
941
|
+
}
|
|
942
|
+
finally {
|
|
943
|
+
this.loading = false;
|
|
944
|
+
// Check if value changed during loading and still has unresolved values
|
|
945
|
+
if (this.pendingUnresolvedFetch) {
|
|
946
|
+
this.pendingUnresolvedFetch = false;
|
|
947
|
+
const valueArray = this.ensureValueArray();
|
|
948
|
+
const hasUnresolvedValues = valueArray.length > 0 && this.selectedItems.length < valueArray.length;
|
|
949
|
+
if (hasUnresolvedValues) {
|
|
950
|
+
this.fetchOptions('', 1);
|
|
951
|
+
}
|
|
952
|
+
}
|
|
953
|
+
}
|
|
954
|
+
}
|
|
955
|
+
async createOption(query) {
|
|
956
|
+
if (!this.createUrl || !query.trim())
|
|
957
|
+
return;
|
|
958
|
+
// Reentrancy guard: prevent duplicate POSTs if creation is already in-flight
|
|
959
|
+
if (this.creating)
|
|
960
|
+
return;
|
|
961
|
+
this.creating = true;
|
|
962
|
+
try {
|
|
963
|
+
const url = new URL(this.createUrl, window.location.origin);
|
|
964
|
+
const csrfToken = this.getCsrfToken();
|
|
965
|
+
const headers = {
|
|
966
|
+
'Content-Type': 'application/json',
|
|
967
|
+
'Accept': 'application/json',
|
|
968
|
+
};
|
|
969
|
+
if (csrfToken) {
|
|
970
|
+
const headerName = this.csrfHeaderName || 'X-CSRF-Token';
|
|
971
|
+
headers[headerName] = csrfToken;
|
|
972
|
+
}
|
|
973
|
+
const response = await fetch(url.toString(), {
|
|
974
|
+
method: 'POST',
|
|
975
|
+
headers,
|
|
976
|
+
body: JSON.stringify({ text: query.trim() }),
|
|
977
|
+
});
|
|
978
|
+
if (!response.ok)
|
|
979
|
+
throw new Error('Failed to create option');
|
|
980
|
+
const data = await response.json();
|
|
981
|
+
const newOption = Object.assign({ id: data.id, text: data.text }, data);
|
|
982
|
+
// Add to internal options first
|
|
983
|
+
this.internalOptions = [...this.internalOptions, newOption];
|
|
984
|
+
// Select the new option
|
|
985
|
+
this.value = [...this.value, String(newOption.id)];
|
|
986
|
+
// Sync selected items to update display with new option
|
|
987
|
+
this.syncSelectedItems();
|
|
988
|
+
// Emit create event
|
|
989
|
+
this.pdsMultiselectCreate.emit({
|
|
990
|
+
query: query.trim(),
|
|
991
|
+
newOption,
|
|
992
|
+
});
|
|
993
|
+
// Emit change event with synced items
|
|
994
|
+
this.emitChange({ added: [String(newOption.id)] });
|
|
995
|
+
// Clear search and keep dropdown open
|
|
996
|
+
this.searchQuery = '';
|
|
997
|
+
this.highlightedIndex = -1;
|
|
998
|
+
// Focus back on search input
|
|
999
|
+
requestAnimationFrame(() => {
|
|
1000
|
+
var _a;
|
|
1001
|
+
(_a = this.searchInputEl) === null || _a === void 0 ? void 0 : _a.focus();
|
|
1002
|
+
});
|
|
1003
|
+
}
|
|
1004
|
+
catch (error) {
|
|
1005
|
+
console.error('PdsMultiselect: Failed to create option', error);
|
|
1006
|
+
}
|
|
1007
|
+
finally {
|
|
1008
|
+
this.creating = false;
|
|
1009
|
+
}
|
|
1010
|
+
}
|
|
1011
|
+
tabPastOptions(e) {
|
|
1012
|
+
const firstFooterTabbable = e.shiftKey ? undefined : this.getFooterTabbables()[0];
|
|
1013
|
+
firstFooterTabbable === null || firstFooterTabbable === void 0 ? void 0 : firstFooterTabbable.focus();
|
|
1014
|
+
if (firstFooterTabbable === null || firstFooterTabbable === void 0 ? void 0 : firstFooterTabbable.matches(':focus')) {
|
|
1015
|
+
// Each option's checkbox is a tab stop, so jump past them to the footer.
|
|
1016
|
+
e.preventDefault();
|
|
1017
|
+
}
|
|
1018
|
+
else {
|
|
1019
|
+
this.closeDropdown();
|
|
1020
|
+
// Tab would move on to an option's checkbox, which closing removes, dropping focus to the page.
|
|
1021
|
+
// Land on the trigger instead, as Escape does; Shift+Tab already reaches it.
|
|
1022
|
+
const trigger = e.shiftKey ? undefined : this.activeTriggerEl;
|
|
1023
|
+
trigger === null || trigger === void 0 ? void 0 : trigger.focus();
|
|
1024
|
+
if (trigger === null || trigger === void 0 ? void 0 : trigger.matches(':focus'))
|
|
1025
|
+
e.preventDefault();
|
|
1026
|
+
}
|
|
1027
|
+
}
|
|
1028
|
+
getSelectedItemTabbables() {
|
|
1029
|
+
return Array.from(this.el.shadowRoot.querySelectorAll('.pds-multiselect__selected-item[tabindex="0"]'));
|
|
1030
|
+
}
|
|
1031
|
+
getFooterTabbables() {
|
|
1032
|
+
const candidates = [];
|
|
1033
|
+
Array.from(this.el.children)
|
|
1034
|
+
.filter(child => child.getAttribute('slot') === 'footer')
|
|
1035
|
+
.forEach(content => candidates.push(content, ...Array.from(content.querySelectorAll('*'))));
|
|
1036
|
+
// Browsers without checkVisibility (Safari before 17.4) count every control as visible.
|
|
1037
|
+
return candidates
|
|
1038
|
+
.map(el => { var _a; return (el.matches(TABBABLE_SELECTOR) ? el : (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector(TABBABLE_SELECTOR)); })
|
|
1039
|
+
.filter((el) => { var _a, _b; return !!el && ((_b = (_a = el.checkVisibility) === null || _a === void 0 ? void 0 : _a.call(el)) !== null && _b !== void 0 ? _b : true); });
|
|
1040
|
+
}
|
|
1041
|
+
isCaretAtEndOfSearch() {
|
|
1042
|
+
var _a, _b;
|
|
1043
|
+
const input = this.searchInputEl;
|
|
1044
|
+
if (!input)
|
|
1045
|
+
return true;
|
|
1046
|
+
const end = input.value.length;
|
|
1047
|
+
return ((_a = input.selectionStart) !== null && _a !== void 0 ? _a : end) === end && ((_b = input.selectionEnd) !== null && _b !== void 0 ? _b : end) === end;
|
|
1048
|
+
}
|
|
1049
|
+
hasOptionAction(option) {
|
|
1050
|
+
return (this.optionActions &&
|
|
1051
|
+
typeof option.actionIcon === 'string' &&
|
|
1052
|
+
PINE_ICON_NAME.test(option.actionIcon) &&
|
|
1053
|
+
!option.isCreateOption &&
|
|
1054
|
+
!option.disabled);
|
|
1055
|
+
}
|
|
1056
|
+
// Without hover, revealing the icon would take a tap that also toggles the option, so touch shows every icon.
|
|
1057
|
+
get isHoverless() {
|
|
1058
|
+
var _a, _b, _c;
|
|
1059
|
+
(_a = this.hoverlessQuery) !== null && _a !== void 0 ? _a : (this.hoverlessQuery = (_b = window.matchMedia) === null || _b === void 0 ? void 0 : _b.call(window, '(hover: none)'));
|
|
1060
|
+
return !!((_c = this.hoverlessQuery) === null || _c === void 0 ? void 0 : _c.matches);
|
|
1061
|
+
}
|
|
1062
|
+
runOptionAction(option) {
|
|
1063
|
+
var _a;
|
|
1064
|
+
this.isClosingViaSelection = true;
|
|
1065
|
+
this.closeDropdown();
|
|
1066
|
+
(_a = this.activeTriggerEl) === null || _a === void 0 ? void 0 : _a.focus();
|
|
1067
|
+
this.pdsMultiselectOptionAction.emit({ option });
|
|
1068
|
+
}
|
|
1069
|
+
openDropdown() {
|
|
1070
|
+
if (this.disabled)
|
|
1071
|
+
return;
|
|
1072
|
+
this.isOpening = true;
|
|
1073
|
+
this.isOpen = true;
|
|
1074
|
+
this.highlightedIndex = -1;
|
|
1075
|
+
// Trigger initial fetch if async (skip if already fetching from componentDidLoad)
|
|
1076
|
+
if (this.asyncUrl && this.internalOptions.length === 0 && !this.initialAsyncFetchTriggered) {
|
|
1077
|
+
this.debouncedFetchAsyncOptions(this.searchQuery, 1);
|
|
1078
|
+
}
|
|
1079
|
+
// Reset the flag so subsequent opens can fetch if needed
|
|
1080
|
+
this.initialAsyncFetchTriggered = false;
|
|
1081
|
+
requestAnimationFrame(() => {
|
|
1082
|
+
var _a;
|
|
1083
|
+
this.positionDropdown();
|
|
1084
|
+
// Focus the search input after the panel is positioned
|
|
1085
|
+
(_a = this.searchInputEl) === null || _a === void 0 ? void 0 : _a.focus();
|
|
1086
|
+
// Clear the opening flag after focus has moved
|
|
1087
|
+
setTimeout(() => {
|
|
1088
|
+
this.isOpening = false;
|
|
1089
|
+
}, 50);
|
|
1090
|
+
});
|
|
1091
|
+
}
|
|
1092
|
+
closeDropdown() {
|
|
1093
|
+
this.isOpen = false;
|
|
1094
|
+
this.highlightedIndex = -1;
|
|
1095
|
+
this.searchQuery = '';
|
|
1096
|
+
// Reset the selection-close guard after the focusout handler's setTimeout has resolved
|
|
1097
|
+
if (this.isClosingViaSelection) {
|
|
1098
|
+
setTimeout(() => {
|
|
1099
|
+
this.isClosingViaSelection = false;
|
|
1100
|
+
}, 0);
|
|
1101
|
+
}
|
|
1102
|
+
// Clean up auto-update
|
|
1103
|
+
if (this.cleanupAutoUpdate) {
|
|
1104
|
+
this.cleanupAutoUpdate();
|
|
1105
|
+
this.cleanupAutoUpdate = undefined;
|
|
1106
|
+
}
|
|
1107
|
+
}
|
|
1108
|
+
positionDropdown() {
|
|
1109
|
+
if (!this.containerEl || !this.panelEl)
|
|
1110
|
+
return;
|
|
1111
|
+
// In inline pill mode, triggerEl is the small chevron button — use the full-width
|
|
1112
|
+
// wrapper div as the Floating UI reference so the panel aligns with the whole trigger.
|
|
1113
|
+
const referenceEl = this.slottedTriggerEl || this.pillInlineTriggerEl || this.triggerEl || this.containerEl;
|
|
1114
|
+
const { minWidth, panelWidth } = this;
|
|
1115
|
+
const updatePosition = () => {
|
|
1116
|
+
computePosition(referenceEl, this.panelEl, {
|
|
1117
|
+
placement: 'bottom-start',
|
|
1118
|
+
strategy: 'fixed',
|
|
1119
|
+
middleware: [
|
|
1120
|
+
offset(12),
|
|
1121
|
+
flip(),
|
|
1122
|
+
shift({ padding: 8 }),
|
|
1123
|
+
size({
|
|
1124
|
+
apply: ({ rects, elements }) => {
|
|
1125
|
+
Object.assign(elements.floating.style, {
|
|
1126
|
+
width: panelWidth !== null && panelWidth !== void 0 ? panelWidth : `${rects.reference.width}px`,
|
|
1127
|
+
minWidth,
|
|
1128
|
+
});
|
|
1129
|
+
},
|
|
1130
|
+
}),
|
|
1131
|
+
],
|
|
1132
|
+
}).then(({ x, y }) => {
|
|
1133
|
+
if (this.panelEl) {
|
|
1134
|
+
this.panelEl.style.left = `${x}px`;
|
|
1135
|
+
this.panelEl.style.top = `${y}px`;
|
|
1136
|
+
}
|
|
1137
|
+
});
|
|
1138
|
+
};
|
|
1139
|
+
// Initial position
|
|
1140
|
+
updatePosition();
|
|
1141
|
+
// Set up auto-update for window resize and scroll
|
|
1142
|
+
const cleanupAutoUpdate = autoUpdate(referenceEl, this.panelEl, updatePosition);
|
|
1143
|
+
this.cleanupAutoUpdate = () => {
|
|
1144
|
+
cleanupAutoUpdate();
|
|
1145
|
+
this.clearAsyncFetchState();
|
|
1146
|
+
};
|
|
1147
|
+
}
|
|
1148
|
+
scrollOptionIntoView() {
|
|
1149
|
+
requestAnimationFrame(() => {
|
|
1150
|
+
var _a;
|
|
1151
|
+
const highlighted = (_a = this.listboxEl) === null || _a === void 0 ? void 0 : _a.querySelector(`[data-index="${this.highlightedIndex}"]`);
|
|
1152
|
+
highlighted === null || highlighted === void 0 ? void 0 : highlighted.scrollIntoView({ block: 'nearest', behavior: 'smooth' });
|
|
1153
|
+
});
|
|
1154
|
+
}
|
|
1155
|
+
emitChange({ added = [], removed = [] }) {
|
|
1156
|
+
this.pdsMultiselectChange.emit({ values: this.value, items: this.selectedItems, added, removed });
|
|
1157
|
+
}
|
|
1158
|
+
toggleOption(option) {
|
|
1159
|
+
var _a, _b;
|
|
1160
|
+
if (option.disabled)
|
|
1161
|
+
return;
|
|
1162
|
+
// Handle create option
|
|
1163
|
+
if (option.isCreateOption) {
|
|
1164
|
+
// Prevent multiple create calls while one is in-flight
|
|
1165
|
+
if (!this.creating) {
|
|
1166
|
+
this.createOption(this.searchQuery);
|
|
1167
|
+
}
|
|
1168
|
+
return;
|
|
1169
|
+
}
|
|
1170
|
+
const optionId = String(option.id);
|
|
1171
|
+
const isSelected = this.value.includes(optionId);
|
|
1172
|
+
if (isSelected) {
|
|
1173
|
+
// Remove from selection
|
|
1174
|
+
this.value = this.value.filter(v => v !== optionId);
|
|
1175
|
+
}
|
|
1176
|
+
else {
|
|
1177
|
+
// Add to selection
|
|
1178
|
+
if (this.maxSelections && this.value.length >= this.maxSelections) {
|
|
1179
|
+
return;
|
|
1180
|
+
}
|
|
1181
|
+
this.value = [...this.value, optionId];
|
|
1182
|
+
}
|
|
1183
|
+
// Sync selected items to ensure no duplicates and accurate state
|
|
1184
|
+
this.syncSelectedItems();
|
|
1185
|
+
// Emit change event with synced items
|
|
1186
|
+
this.emitChange(isSelected ? { removed: [optionId] } : { added: [optionId] });
|
|
1187
|
+
if (this.closePanelOnSelect) {
|
|
1188
|
+
this.isClosingViaSelection = true;
|
|
1189
|
+
this.closeDropdown();
|
|
1190
|
+
(_a = this.activeTriggerEl) === null || _a === void 0 ? void 0 : _a.focus();
|
|
1191
|
+
}
|
|
1192
|
+
else {
|
|
1193
|
+
// Keep focus on search input, don't close dropdown
|
|
1194
|
+
(_b = this.searchInputEl) === null || _b === void 0 ? void 0 : _b.focus();
|
|
1195
|
+
}
|
|
1196
|
+
}
|
|
1197
|
+
selectOption(option) {
|
|
1198
|
+
// For keyboard navigation - toggle the option
|
|
1199
|
+
this.toggleOption(option);
|
|
1200
|
+
}
|
|
1201
|
+
getGroupedRenderItems(filteredOptions) {
|
|
1202
|
+
const items = [];
|
|
1203
|
+
let currentGroup = null;
|
|
1204
|
+
filteredOptions.forEach((option, index) => {
|
|
1205
|
+
const group = option.group;
|
|
1206
|
+
if (group !== undefined) {
|
|
1207
|
+
if (!currentGroup || currentGroup.group !== group) {
|
|
1208
|
+
currentGroup = { type: 'group', group, options: [] };
|
|
1209
|
+
items.push(currentGroup);
|
|
1210
|
+
}
|
|
1211
|
+
currentGroup.options.push({ option, index });
|
|
1212
|
+
}
|
|
1213
|
+
else {
|
|
1214
|
+
currentGroup = null;
|
|
1215
|
+
items.push({ type: 'option', option, index });
|
|
1216
|
+
}
|
|
1217
|
+
});
|
|
1218
|
+
return items;
|
|
1219
|
+
}
|
|
1220
|
+
renderOption(option, index, valueArray) {
|
|
1221
|
+
const isSelected = valueArray.includes(String(option.id));
|
|
1222
|
+
const isCreateOption = option.isCreateOption;
|
|
1223
|
+
const isDisabled = option.disabled;
|
|
1224
|
+
const isHighlighted = index === this.highlightedIndex && !isCreateOption;
|
|
1225
|
+
const optionId = `${this.componentId}-option-${index}`;
|
|
1226
|
+
const isCreateDisabled = isCreateOption && this.creating;
|
|
1227
|
+
const hasAction = this.hasOptionAction(option);
|
|
1228
|
+
return (h("li", { key: String(option.id), id: optionId, class: {
|
|
1229
|
+
'pds-multiselect__option': true,
|
|
1230
|
+
'pds-multiselect__option--highlighted': isHighlighted,
|
|
1231
|
+
'pds-multiselect__option--selected': isSelected,
|
|
1232
|
+
'pds-multiselect__option--create': isCreateOption,
|
|
1233
|
+
'pds-multiselect__option--disabled': isDisabled || isCreateDisabled,
|
|
1234
|
+
}, role: "option", "aria-selected": isSelected ? 'true' : 'false', "aria-disabled": isDisabled || isCreateDisabled ? 'true' : undefined, "aria-label": isCreateOption ? formatMessage(this.createOptionAriaLabel, { text: option.text }) : undefined, "aria-describedby": hasAction ? `${optionId}-action-description` : undefined, "data-index": index, onMouseDown: this.handleOptionMouseDown(option), onClick: this.handleOptionClick, onMouseEnter: this.handleOptionMouseEnter(index, option) }, isCreateOption ? (h("pds-box", { class: "pds-multiselect__create-option", "align-items": "center", gap: "xs" }, h("pds-icon", { name: "add", size: "small", "aria-hidden": "true" }), h("pds-text", null, formatMessage(this.createOptionLabel, { text: option.text })))) : (h("pds-checkbox", { componentId: `${this.componentId}-checkbox-${index}`, checked: isSelected, label: option.text, disabled: isDisabled, style: { pointerEvents: 'none' } }, this.optionDisplay === 'chip' && (h("pds-chip", { slot: "label", sentiment: "subtle", dot: !!option.dotColor, "dot-color": option.dotColor, "max-width": "100%" }, option.text)))), hasAction && this.renderOptionAction(option, optionId, isHighlighted)));
|
|
1235
|
+
}
|
|
1236
|
+
renderOptionAction(option, optionId, isHighlighted) {
|
|
1237
|
+
var _a;
|
|
1238
|
+
const label = formatMessage((_a = option.actionLabel) !== null && _a !== void 0 ? _a : this.optionActionLabel, { text: option.text });
|
|
1239
|
+
return [
|
|
1240
|
+
h("span", { class: "pds-multiselect__option-action", title: label, "aria-hidden": "true", onMouseDown: this.handleOptionActionMouseDown, onClick: this.handleOptionActionClick(option) }, (isHighlighted || this.isHoverless) && h("pds-icon", { name: option.actionIcon })),
|
|
1241
|
+
h("span", { id: `${optionId}-action-description`, hidden: true }, formatMessage(this.optionActionDescription, { action: label })),
|
|
1242
|
+
];
|
|
1243
|
+
}
|
|
1244
|
+
renderSelectedItemsList() {
|
|
1245
|
+
if (this.hideSelectedItems || this.selectedItems.length === 0)
|
|
1246
|
+
return null;
|
|
1247
|
+
return (h("div", { class: "pds-multiselect__selected-section" }, h("ul", { class: "pds-multiselect__selected-list", role: "list", onKeyDown: this.handleSelectedListKeyDown }, this.selectedItems.map(item => (h("li", { key: String(item.id), class: "pds-multiselect__selected-item" }, item.text))))));
|
|
1248
|
+
}
|
|
1249
|
+
renderDropdown() {
|
|
1250
|
+
if (!this.isOpen)
|
|
1251
|
+
return null;
|
|
1252
|
+
const filteredOptions = this.getFilteredOptions();
|
|
1253
|
+
const valueArray = this.ensureValueArray();
|
|
1254
|
+
const hasSlottedEmpty = !!this.el.querySelector('[slot="empty"]');
|
|
1255
|
+
const hasSlottedLoading = !!this.el.querySelector('[slot="loading"]');
|
|
1256
|
+
const hasSlottedFooter = !!this.el.querySelector('[slot="footer"]');
|
|
1257
|
+
return (h("div", { class: "pds-multiselect__panel", ref: el => (this.panelEl = el), style: { minWidth: this.minWidth } }, h("div", { class: "pds-multiselect__search" }, h("pds-icon", { name: "search", size: "small", "aria-hidden": "true" }), h("input", { ref: el => (this.searchInputEl = el), type: "text", class: "pds-multiselect__search-input", placeholder: this.searchPlaceholder, value: this.searchQuery, "aria-label": this.searchOptionsLabel, "aria-controls": `${this.componentId}-listbox`, "aria-activedescendant": this.highlightedIndex >= 0 ? `${this.componentId}-option-${this.highlightedIndex}` : undefined, role: "combobox", "aria-haspopup": "listbox", "aria-expanded": "true", "aria-autocomplete": "list", autocomplete: "off", onInput: this.handleSearchInputChange, onKeyDown: this.handleSearchInputKeyDown })), this.renderSelectedItemsList(), h("ul", { class: "pds-multiselect__listbox", role: "listbox", "aria-multiselectable": "true", "aria-label": this.label || this.optionsLabel, id: `${this.componentId}-listbox`, ref: el => (this.listboxEl = el), style: { maxHeight: this.maxHeight }, onScroll: this.handleScroll }, this.loading && (h("li", { class: "pds-multiselect__loading", role: "presentation" }, hasSlottedLoading ? (h("slot", { name: "loading" })) : (h("pds-loader", { size: "small" })))), !this.loading && filteredOptions.length === 0 && (h("li", { class: "pds-multiselect__empty", role: "presentation" }, hasSlottedEmpty ? (h("slot", { name: "empty" })) : (h("span", null, this.noOptionsFoundLabel)))), this.getGroupedRenderItems(filteredOptions).map((item, itemIndex) => {
|
|
1258
|
+
if (item.type === 'group') {
|
|
1259
|
+
return (h("li", { key: `group-${itemIndex}`, role: "group", "aria-label": item.group, class: "pds-multiselect__group" }, h("span", { class: "pds-multiselect__group-header", "aria-hidden": "true" }, item.group), h("ul", { class: "pds-multiselect__group-list", role: "presentation" }, item.options.map(({ option, index }) => this.renderOption(option, index, valueArray)))));
|
|
1260
|
+
}
|
|
1261
|
+
return this.renderOption(item.option, item.index, valueArray);
|
|
1262
|
+
}), this.hasMore && !this.loading && (h("li", { class: "pds-multiselect__load-more", role: "presentation" }, h("pds-loader", { size: "small" })))), hasSlottedFooter && (h("div", { class: "pds-multiselect__footer", onMouseDown: this.handleFooterMouseDown, onKeyDown: this.handleFooterKeyDown }, h("slot", { name: "footer" })))));
|
|
1263
|
+
}
|
|
1264
|
+
renderInlinePills() {
|
|
1265
|
+
const hasSelections = this.selectedItems.length > 0;
|
|
1266
|
+
if (!hasSelections) {
|
|
1267
|
+
return (h("span", { class: "pds-multiselect__trigger-text pds-multiselect__trigger-text--placeholder" }, this.placeholder || 'Select...'));
|
|
1268
|
+
}
|
|
1269
|
+
const variant = this.disabled ? 'text' : 'tag';
|
|
1270
|
+
const visibleItems = this.selectedItems.slice(0, Math.max(1, this.maxInlinePills));
|
|
1271
|
+
const overflowCount = this.selectedItems.length - visibleItems.length;
|
|
1272
|
+
return (h("div", { class: "pds-multiselect__pill-list pds-multiselect__pill-list--inline", "aria-label": this.selectedItemsLabel }, visibleItems.map(item => (h("pds-chip", { key: String(item.id), "component-id": `${this.componentId}-pill-${item.id}`, variant: variant, size: "sm", sentiment: "neutral", "dismiss-label": this.pillRemoveLabel, onPdsTagCloseClick: this.handlePillRemove(item) }, item.text))), overflowCount > 0 && (h("span", { class: "pds-multiselect__pill-overflow" }, "+", overflowCount))));
|
|
1273
|
+
}
|
|
1274
|
+
renderBelowPills() {
|
|
1275
|
+
if (this.selectedItems.length === 0)
|
|
1276
|
+
return null;
|
|
1277
|
+
const variant = this.disabled ? 'text' : 'tag';
|
|
1278
|
+
return (h("div", { class: "pds-multiselect__pill-list pds-multiselect__pill-list--below", "aria-label": this.selectedItemsLabel }, this.selectedItems.map(item => (h("pds-chip", { key: String(item.id), "component-id": `${this.componentId}-pill-${item.id}`, variant: variant, size: "md", sentiment: "neutral", "dismiss-label": this.pillRemoveLabel, onPdsTagCloseClick: this.handlePillRemove(item) }, item.text)))));
|
|
1279
|
+
}
|
|
1280
|
+
getTriggerText() {
|
|
1281
|
+
var _a;
|
|
1282
|
+
const count = this.selectedItems.length;
|
|
1283
|
+
if (count === 0 || (this.selectedDisplay === 'pill' && this.pillPosition === 'below')) {
|
|
1284
|
+
// Fall back to a non-empty string: the trigger's accessible name comes from
|
|
1285
|
+
// this text, so an empty/undefined placeholder must never leave it nameless
|
|
1286
|
+
// (WCAG 4.1.2). The prop is localizable; this last-resort default is not.
|
|
1287
|
+
return this.placeholder || 'Select...';
|
|
1288
|
+
}
|
|
1289
|
+
// One selection shows its name; the count only says something once there's more than one.
|
|
1290
|
+
// An option without text still falls back to the count, so the trigger is never nameless.
|
|
1291
|
+
if (count === 1 && ((_a = this.selectedItems[0].text) === null || _a === void 0 ? void 0 : _a.trim())) {
|
|
1292
|
+
return this.selectedItems[0].text;
|
|
1293
|
+
}
|
|
1294
|
+
return pluralize(this.el, count, this.resolveCountForms());
|
|
1295
|
+
}
|
|
1296
|
+
/**
|
|
1297
|
+
* The text that sets the trigger's width. A single selection's name could be any length, so the
|
|
1298
|
+
* trigger keeps the width the count would give it and the name truncates inside that, rather than
|
|
1299
|
+
* widening a multiselect that has no width of its own.
|
|
1300
|
+
*/
|
|
1301
|
+
getTriggerSizerText() {
|
|
1302
|
+
const text = this.getTriggerText();
|
|
1303
|
+
const count = this.selectedItems.length;
|
|
1304
|
+
const showsName = count === 1 && text === this.selectedItems[0].text && !(this.selectedDisplay === 'pill' && this.pillPosition === 'below');
|
|
1305
|
+
return showsName ? pluralize(this.el, count, this.resolveCountForms()) : text;
|
|
1306
|
+
}
|
|
1307
|
+
/**
|
|
1308
|
+
* The `one`/`other` props are the ergonomic English defaults; `selectedCountLabels`
|
|
1309
|
+
* (object or JSON-string attribute) layers full CLDR forms on top for locales
|
|
1310
|
+
* that need `few`/`many`/`two`/`zero`. Malformed JSON degrades to the defaults.
|
|
1311
|
+
*/
|
|
1312
|
+
resolveCountForms() {
|
|
1313
|
+
const base = {
|
|
1314
|
+
one: this.selectedCountLabelOne,
|
|
1315
|
+
other: this.selectedCountLabelOther,
|
|
1316
|
+
};
|
|
1317
|
+
const extra = this.selectedCountLabels;
|
|
1318
|
+
if (!extra)
|
|
1319
|
+
return base;
|
|
1320
|
+
if (typeof extra === 'string') {
|
|
1321
|
+
try {
|
|
1322
|
+
const parsed = JSON.parse(extra);
|
|
1323
|
+
return parsed && typeof parsed === 'object' ? Object.assign(Object.assign({}, base), parsed) : base;
|
|
1324
|
+
}
|
|
1325
|
+
catch (_a) {
|
|
1326
|
+
return base; // not valid JSON → fall back to the English-shape defaults
|
|
1327
|
+
}
|
|
1328
|
+
}
|
|
1329
|
+
return Object.assign(Object.assign({}, base), extra);
|
|
1330
|
+
}
|
|
1331
|
+
render() {
|
|
1332
|
+
const hasSelections = this.selectedItems.length > 0;
|
|
1333
|
+
return (h(Host, { key: '12298f9692ac8644230195cc1abe0e26bb5715a9', "aria-disabled": this.disabled ? 'true' : null }, h("div", { key: '5d98f9edae2f471d9662c65454fbef7b2dec83e1', class: "pds-multiselect", onFocusout: this.handleContainerFocusOut }, this.label && (h("label", { key: '2f6d4162d0649978bc53c34327b6149dc971fd4c', id: `${this.componentId}-label`, htmlFor: this.componentId, class: {
|
|
1334
|
+
'pds-multiselect__label': true,
|
|
1335
|
+
'visually-hidden': this.hideLabel,
|
|
1336
|
+
} }, this.label)), h("div", { key: '7a337e876c8fff854e5b9a067ef89b9d5136df4f', class: "pds-multiselect__wrapper", ref: el => (this.containerEl = el), style: { width: this.triggerWidth } }, this.slottedTriggerEl ? (h("slot", { name: "trigger" })) : this.selectedDisplay === 'pill' && this.pillPosition === 'inline' ? (h("div", { ref: el => (this.pillInlineTriggerEl = el || undefined), part: "trigger", class: {
|
|
1337
|
+
'pds-multiselect__trigger': true,
|
|
1338
|
+
'pds-multiselect__trigger--open': this.isOpen,
|
|
1339
|
+
'pds-multiselect__trigger--disabled': this.disabled,
|
|
1340
|
+
'pds-multiselect__trigger--invalid': this.invalid || !!this.errorMessage,
|
|
1341
|
+
'pds-multiselect__trigger--has-value': hasSelections,
|
|
1342
|
+
'pds-multiselect__trigger--pill-inline': true,
|
|
1343
|
+
}, onClick: this.handleTriggerClick }, this.renderInlinePills(), h("button", { ref: el => (this.triggerEl = el), type: "button", id: this.componentId, part: "pill-toggle", class: "pds-multiselect__pill-toggle", disabled: this.disabled, "aria-expanded": this.isOpen ? 'true' : 'false', "aria-haspopup": "listbox", "aria-labelledby": this.label ? `${this.componentId}-label` : undefined, "aria-required": this.required ? 'true' : undefined, "aria-describedby": assignDescription(this.componentId, this.invalid || !!this.errorMessage, this.helperMessage, this.errorMessage), "aria-invalid": this.invalid || !!this.errorMessage ? 'true' : undefined, onKeyDown: this.handleTriggerKeyDown }, h("pds-icon", { "aria-hidden": "true", class: "pds-multiselect__icon", icon: enlarge })))) : (h("button", { ref: el => (this.triggerEl = el), type: "button", part: "trigger", class: {
|
|
1344
|
+
'pds-multiselect__trigger': true,
|
|
1345
|
+
'pds-multiselect__trigger--open': this.isOpen,
|
|
1346
|
+
'pds-multiselect__trigger--disabled': this.disabled,
|
|
1347
|
+
'pds-multiselect__trigger--invalid': this.invalid || !!this.errorMessage,
|
|
1348
|
+
'pds-multiselect__trigger--has-value': hasSelections,
|
|
1349
|
+
}, id: this.componentId, disabled: this.disabled, "aria-required": this.required ? 'true' : undefined, "aria-expanded": this.isOpen ? 'true' : 'false', "aria-haspopup": "listbox", "aria-describedby": assignDescription(this.componentId, this.invalid || !!this.errorMessage, this.helperMessage, this.errorMessage), "aria-invalid": this.invalid || !!this.errorMessage ? 'true' : undefined, onClick: this.handleTriggerClick, onKeyDown: this.handleTriggerKeyDown }, h("span", { class: "pds-multiselect__trigger-label" }, h("span", { class: "pds-multiselect__trigger-sizer", "aria-hidden": "true" }, this.getTriggerSizerText()), h("span", { class: {
|
|
1350
|
+
'pds-multiselect__trigger-text': true,
|
|
1351
|
+
'pds-multiselect__trigger-text--placeholder': !hasSelections || (this.selectedDisplay === 'pill' && this.pillPosition === 'below'),
|
|
1352
|
+
} }, this.getTriggerText())), h("pds-icon", { "aria-hidden": "true", class: "pds-multiselect__icon", icon: enlarge }))), this.renderDropdown()), this.selectedDisplay === 'pill' && this.pillPosition === 'below' && this.renderBelowPills(), h("span", { key: 'd3cf5bb64a6c296c84af30628698559c0c904117', class: "visually-hidden", "aria-live": "polite", "aria-atomic": "true" }, this.removalAnnouncement), this.helperMessage && !(this.errorMessage && this.errorMessage.length > 0) && (h("p", { key: 'a711280151ff360758143906a76fa2d25f4078a9', class: "pds-multiselect__helper", id: messageId(this.componentId, 'helper') }, this.helperMessage)), this.errorMessage && (h("p", { key: '17411d6bb55843f45f8d7ee410b627de846eed65', class: "pds-multiselect__error", id: messageId(this.componentId, 'error') }, h("pds-icon", { key: '446ffc0ed08b7856f0ef8c49bdf06b6011404a12', "aria-hidden": "true", icon: danger, size: "small" }), this.errorMessage)), h("div", { key: 'a83ed6c5d84cbf38f267f7e15bd871d09534c554', style: { display: 'none' } }, h("slot", { key: '294ce6a2bd4405854161aed5d8166fcc86e211e3' })))));
|
|
1353
|
+
}
|
|
1354
|
+
static get is() { return "pds-multiselect"; }
|
|
1355
|
+
static get encapsulation() { return "shadow"; }
|
|
1356
|
+
static get formAssociated() { return true; }
|
|
1357
|
+
static get originalStyleUrls() {
|
|
1358
|
+
return {
|
|
1359
|
+
"$": ["pds-multiselect.scss"]
|
|
1360
|
+
};
|
|
1361
|
+
}
|
|
1362
|
+
static get styleUrls() {
|
|
1363
|
+
return {
|
|
1364
|
+
"$": ["pds-multiselect.css"]
|
|
1365
|
+
};
|
|
1366
|
+
}
|
|
1367
|
+
static get properties() {
|
|
1368
|
+
return {
|
|
1369
|
+
"componentId": {
|
|
1370
|
+
"type": "string",
|
|
1371
|
+
"mutable": false,
|
|
1372
|
+
"complexType": {
|
|
1373
|
+
"original": "string",
|
|
1374
|
+
"resolved": "string",
|
|
1375
|
+
"references": {}
|
|
1376
|
+
},
|
|
1377
|
+
"required": true,
|
|
1378
|
+
"optional": false,
|
|
1379
|
+
"docs": {
|
|
1380
|
+
"tags": [],
|
|
1381
|
+
"text": "A unique identifier used for the underlying component `id` attribute."
|
|
1382
|
+
},
|
|
1383
|
+
"getter": false,
|
|
1384
|
+
"setter": false,
|
|
1385
|
+
"reflect": false,
|
|
1386
|
+
"attribute": "component-id"
|
|
1387
|
+
},
|
|
1388
|
+
"label": {
|
|
1389
|
+
"type": "string",
|
|
1390
|
+
"mutable": false,
|
|
1391
|
+
"complexType": {
|
|
1392
|
+
"original": "string",
|
|
1393
|
+
"resolved": "string",
|
|
1394
|
+
"references": {}
|
|
1395
|
+
},
|
|
1396
|
+
"required": false,
|
|
1397
|
+
"optional": true,
|
|
1398
|
+
"docs": {
|
|
1399
|
+
"tags": [],
|
|
1400
|
+
"text": "Text to be displayed as the multiselect label."
|
|
1401
|
+
},
|
|
1402
|
+
"getter": false,
|
|
1403
|
+
"setter": false,
|
|
1404
|
+
"reflect": false,
|
|
1405
|
+
"attribute": "label"
|
|
1406
|
+
},
|
|
1407
|
+
"placeholder": {
|
|
1408
|
+
"type": "string",
|
|
1409
|
+
"mutable": false,
|
|
1410
|
+
"complexType": {
|
|
1411
|
+
"original": "string",
|
|
1412
|
+
"resolved": "string",
|
|
1413
|
+
"references": {}
|
|
1414
|
+
},
|
|
1415
|
+
"required": false,
|
|
1416
|
+
"optional": false,
|
|
1417
|
+
"docs": {
|
|
1418
|
+
"tags": [{
|
|
1419
|
+
"name": "defaultValue",
|
|
1420
|
+
"text": "'Select...'"
|
|
1421
|
+
}],
|
|
1422
|
+
"text": "Placeholder text for the input field. Pass a translated string to localize it; defaults to English."
|
|
1423
|
+
},
|
|
1424
|
+
"getter": false,
|
|
1425
|
+
"setter": false,
|
|
1426
|
+
"reflect": false,
|
|
1427
|
+
"attribute": "placeholder",
|
|
1428
|
+
"defaultValue": "'Select...'"
|
|
1429
|
+
},
|
|
1430
|
+
"searchPlaceholder": {
|
|
1431
|
+
"type": "string",
|
|
1432
|
+
"mutable": false,
|
|
1433
|
+
"complexType": {
|
|
1434
|
+
"original": "string",
|
|
1435
|
+
"resolved": "string",
|
|
1436
|
+
"references": {}
|
|
1437
|
+
},
|
|
1438
|
+
"required": false,
|
|
1439
|
+
"optional": false,
|
|
1440
|
+
"docs": {
|
|
1441
|
+
"tags": [{
|
|
1442
|
+
"name": "defaultValue",
|
|
1443
|
+
"text": "'Find...'"
|
|
1444
|
+
}],
|
|
1445
|
+
"text": "Placeholder text for the search input inside the dropdown panel. Pass a translated string to localize it; defaults to English."
|
|
1446
|
+
},
|
|
1447
|
+
"getter": false,
|
|
1448
|
+
"setter": false,
|
|
1449
|
+
"reflect": false,
|
|
1450
|
+
"attribute": "search-placeholder",
|
|
1451
|
+
"defaultValue": "'Find...'"
|
|
1452
|
+
},
|
|
1453
|
+
"searchOptionsLabel": {
|
|
1454
|
+
"type": "string",
|
|
1455
|
+
"mutable": false,
|
|
1456
|
+
"complexType": {
|
|
1457
|
+
"original": "string",
|
|
1458
|
+
"resolved": "string",
|
|
1459
|
+
"references": {}
|
|
1460
|
+
},
|
|
1461
|
+
"required": false,
|
|
1462
|
+
"optional": false,
|
|
1463
|
+
"docs": {
|
|
1464
|
+
"tags": [{
|
|
1465
|
+
"name": "defaultValue",
|
|
1466
|
+
"text": "'Search options'"
|
|
1467
|
+
}],
|
|
1468
|
+
"text": "Accessible label for the search input. Pass a translated string to localize it; defaults to English."
|
|
1469
|
+
},
|
|
1470
|
+
"getter": false,
|
|
1471
|
+
"setter": false,
|
|
1472
|
+
"reflect": false,
|
|
1473
|
+
"attribute": "search-options-label",
|
|
1474
|
+
"defaultValue": "'Search options'"
|
|
1475
|
+
},
|
|
1476
|
+
"selectedItemsLabel": {
|
|
1477
|
+
"type": "string",
|
|
1478
|
+
"mutable": false,
|
|
1479
|
+
"complexType": {
|
|
1480
|
+
"original": "string",
|
|
1481
|
+
"resolved": "string",
|
|
1482
|
+
"references": {}
|
|
1483
|
+
},
|
|
1484
|
+
"required": false,
|
|
1485
|
+
"optional": false,
|
|
1486
|
+
"docs": {
|
|
1487
|
+
"tags": [{
|
|
1488
|
+
"name": "defaultValue",
|
|
1489
|
+
"text": "'Selected items'"
|
|
1490
|
+
}],
|
|
1491
|
+
"text": "Accessible label for the selected-items region. Pass a translated string to localize it; defaults to English."
|
|
1492
|
+
},
|
|
1493
|
+
"getter": false,
|
|
1494
|
+
"setter": false,
|
|
1495
|
+
"reflect": false,
|
|
1496
|
+
"attribute": "selected-items-label",
|
|
1497
|
+
"defaultValue": "'Selected items'"
|
|
1498
|
+
},
|
|
1499
|
+
"optionsLabel": {
|
|
1500
|
+
"type": "string",
|
|
1501
|
+
"mutable": false,
|
|
1502
|
+
"complexType": {
|
|
1503
|
+
"original": "string",
|
|
1504
|
+
"resolved": "string",
|
|
1505
|
+
"references": {}
|
|
1506
|
+
},
|
|
1507
|
+
"required": false,
|
|
1508
|
+
"optional": false,
|
|
1509
|
+
"docs": {
|
|
1510
|
+
"tags": [{
|
|
1511
|
+
"name": "defaultValue",
|
|
1512
|
+
"text": "'Options'"
|
|
1513
|
+
}],
|
|
1514
|
+
"text": "Accessible label for the options listbox (falls back to this when `label` is unset). Pass a translated string to localize it; defaults to English."
|
|
1515
|
+
},
|
|
1516
|
+
"getter": false,
|
|
1517
|
+
"setter": false,
|
|
1518
|
+
"reflect": false,
|
|
1519
|
+
"attribute": "options-label",
|
|
1520
|
+
"defaultValue": "'Options'"
|
|
1521
|
+
},
|
|
1522
|
+
"noOptionsFoundLabel": {
|
|
1523
|
+
"type": "string",
|
|
1524
|
+
"mutable": false,
|
|
1525
|
+
"complexType": {
|
|
1526
|
+
"original": "string",
|
|
1527
|
+
"resolved": "string",
|
|
1528
|
+
"references": {}
|
|
1529
|
+
},
|
|
1530
|
+
"required": false,
|
|
1531
|
+
"optional": false,
|
|
1532
|
+
"docs": {
|
|
1533
|
+
"tags": [{
|
|
1534
|
+
"name": "defaultValue",
|
|
1535
|
+
"text": "'No options found'"
|
|
1536
|
+
}],
|
|
1537
|
+
"text": "Text shown when no options match the search. Pass a translated string to localize it; defaults to English."
|
|
1538
|
+
},
|
|
1539
|
+
"getter": false,
|
|
1540
|
+
"setter": false,
|
|
1541
|
+
"reflect": false,
|
|
1542
|
+
"attribute": "no-options-found-label",
|
|
1543
|
+
"defaultValue": "'No options found'"
|
|
1544
|
+
},
|
|
1545
|
+
"createOptionLabel": {
|
|
1546
|
+
"type": "string",
|
|
1547
|
+
"mutable": false,
|
|
1548
|
+
"complexType": {
|
|
1549
|
+
"original": "string",
|
|
1550
|
+
"resolved": "string",
|
|
1551
|
+
"references": {}
|
|
1552
|
+
},
|
|
1553
|
+
"required": false,
|
|
1554
|
+
"optional": false,
|
|
1555
|
+
"docs": {
|
|
1556
|
+
"tags": [{
|
|
1557
|
+
"name": "defaultValue",
|
|
1558
|
+
"text": "'Add \"{text}\"'"
|
|
1559
|
+
}],
|
|
1560
|
+
"text": "Visible label for the create-new-option row. Pass a translated string to localize it; `{text}` is interpolated."
|
|
1561
|
+
},
|
|
1562
|
+
"getter": false,
|
|
1563
|
+
"setter": false,
|
|
1564
|
+
"reflect": false,
|
|
1565
|
+
"attribute": "create-option-label",
|
|
1566
|
+
"defaultValue": "'Add \"{text}\"'"
|
|
1567
|
+
},
|
|
1568
|
+
"createOptionAriaLabel": {
|
|
1569
|
+
"type": "string",
|
|
1570
|
+
"mutable": false,
|
|
1571
|
+
"complexType": {
|
|
1572
|
+
"original": "string",
|
|
1573
|
+
"resolved": "string",
|
|
1574
|
+
"references": {}
|
|
1575
|
+
},
|
|
1576
|
+
"required": false,
|
|
1577
|
+
"optional": false,
|
|
1578
|
+
"docs": {
|
|
1579
|
+
"tags": [{
|
|
1580
|
+
"name": "defaultValue",
|
|
1581
|
+
"text": "'Create new tag: {text}'"
|
|
1582
|
+
}],
|
|
1583
|
+
"text": "Accessible label for the create-new-option row. Pass a translated string to localize it; `{text}` is interpolated."
|
|
1584
|
+
},
|
|
1585
|
+
"getter": false,
|
|
1586
|
+
"setter": false,
|
|
1587
|
+
"reflect": false,
|
|
1588
|
+
"attribute": "create-option-aria-label",
|
|
1589
|
+
"defaultValue": "'Create new tag: {text}'"
|
|
1590
|
+
},
|
|
1591
|
+
"itemRemovedLabel": {
|
|
1592
|
+
"type": "string",
|
|
1593
|
+
"mutable": false,
|
|
1594
|
+
"complexType": {
|
|
1595
|
+
"original": "string",
|
|
1596
|
+
"resolved": "string",
|
|
1597
|
+
"references": {}
|
|
1598
|
+
},
|
|
1599
|
+
"required": false,
|
|
1600
|
+
"optional": false,
|
|
1601
|
+
"docs": {
|
|
1602
|
+
"tags": [{
|
|
1603
|
+
"name": "defaultValue",
|
|
1604
|
+
"text": "'{item} removed'"
|
|
1605
|
+
}],
|
|
1606
|
+
"text": "Screen-reader announcement when an item is removed. Pass a translated string to localize it; `{item}` is interpolated."
|
|
1607
|
+
},
|
|
1608
|
+
"getter": false,
|
|
1609
|
+
"setter": false,
|
|
1610
|
+
"reflect": false,
|
|
1611
|
+
"attribute": "item-removed-label",
|
|
1612
|
+
"defaultValue": "'{item} removed'"
|
|
1613
|
+
},
|
|
1614
|
+
"pillRemoveLabel": {
|
|
1615
|
+
"type": "string",
|
|
1616
|
+
"mutable": false,
|
|
1617
|
+
"complexType": {
|
|
1618
|
+
"original": "string",
|
|
1619
|
+
"resolved": "string",
|
|
1620
|
+
"references": {}
|
|
1621
|
+
},
|
|
1622
|
+
"required": false,
|
|
1623
|
+
"optional": false,
|
|
1624
|
+
"docs": {
|
|
1625
|
+
"tags": [{
|
|
1626
|
+
"name": "defaultValue",
|
|
1627
|
+
"text": "'Remove'"
|
|
1628
|
+
}],
|
|
1629
|
+
"text": "Accessible label for the remove button on each selected-item pill. Pass a translated string to localize it; defaults to English."
|
|
1630
|
+
},
|
|
1631
|
+
"getter": false,
|
|
1632
|
+
"setter": false,
|
|
1633
|
+
"reflect": false,
|
|
1634
|
+
"attribute": "pill-remove-label",
|
|
1635
|
+
"defaultValue": "'Remove'"
|
|
1636
|
+
},
|
|
1637
|
+
"selectedCountLabelOne": {
|
|
1638
|
+
"type": "string",
|
|
1639
|
+
"mutable": false,
|
|
1640
|
+
"complexType": {
|
|
1641
|
+
"original": "string",
|
|
1642
|
+
"resolved": "string",
|
|
1643
|
+
"references": {}
|
|
1644
|
+
},
|
|
1645
|
+
"required": false,
|
|
1646
|
+
"optional": false,
|
|
1647
|
+
"docs": {
|
|
1648
|
+
"tags": [{
|
|
1649
|
+
"name": "defaultValue",
|
|
1650
|
+
"text": "'{count} item'"
|
|
1651
|
+
}],
|
|
1652
|
+
"text": "Singular form of the selected-count trigger text. Pass a translated string to localize it; `{count}` is interpolated.\nA single selection shows the item's name instead, so this applies to other counts that a locale's plural rules treat as singular, and to a single selection whose item has no text."
|
|
1653
|
+
},
|
|
1654
|
+
"getter": false,
|
|
1655
|
+
"setter": false,
|
|
1656
|
+
"reflect": false,
|
|
1657
|
+
"attribute": "selected-count-label-one",
|
|
1658
|
+
"defaultValue": "'{count} item'"
|
|
1659
|
+
},
|
|
1660
|
+
"selectedCountLabelOther": {
|
|
1661
|
+
"type": "string",
|
|
1662
|
+
"mutable": false,
|
|
1663
|
+
"complexType": {
|
|
1664
|
+
"original": "string",
|
|
1665
|
+
"resolved": "string",
|
|
1666
|
+
"references": {}
|
|
1667
|
+
},
|
|
1668
|
+
"required": false,
|
|
1669
|
+
"optional": false,
|
|
1670
|
+
"docs": {
|
|
1671
|
+
"tags": [{
|
|
1672
|
+
"name": "defaultValue",
|
|
1673
|
+
"text": "'{count} items'"
|
|
1674
|
+
}],
|
|
1675
|
+
"text": "Plural (and fallback) form of the selected-count trigger text \u2014 used for English and any locale whose selected plural category isn't supplied via `selectedCountLabels`. Pass a translated string to localize it; `{count}` is interpolated."
|
|
1676
|
+
},
|
|
1677
|
+
"getter": false,
|
|
1678
|
+
"setter": false,
|
|
1679
|
+
"reflect": false,
|
|
1680
|
+
"attribute": "selected-count-label-other",
|
|
1681
|
+
"defaultValue": "'{count} items'"
|
|
1682
|
+
},
|
|
1683
|
+
"selectedCountLabels": {
|
|
1684
|
+
"type": "string",
|
|
1685
|
+
"mutable": false,
|
|
1686
|
+
"complexType": {
|
|
1687
|
+
"original": "PluralForms | string",
|
|
1688
|
+
"resolved": "\"few\" | \"many\" | \"one\" | \"other\" | \"two\" | \"zero\" | string",
|
|
1689
|
+
"references": {
|
|
1690
|
+
"PluralForms": {
|
|
1691
|
+
"location": "import",
|
|
1692
|
+
"path": "../../i18n",
|
|
1693
|
+
"id": "src/i18n/index.ts::PluralForms",
|
|
1694
|
+
"referenceLocation": "PluralForms"
|
|
1695
|
+
}
|
|
1696
|
+
}
|
|
1697
|
+
},
|
|
1698
|
+
"required": false,
|
|
1699
|
+
"optional": true,
|
|
1700
|
+
"docs": {
|
|
1701
|
+
"tags": [{
|
|
1702
|
+
"name": "defaultValue",
|
|
1703
|
+
"text": "undefined"
|
|
1704
|
+
}],
|
|
1705
|
+
"text": "Full CLDR plural forms for the selected-count trigger text, for locales with more than the English `one`/`other` categories (e.g. Polish `few`/`many`, Arabic `zero`/`two`). Accepts an object property or a JSON string attribute keyed by CLDR category \u2014 `{ one, other, few, many, two, zero }`. Any form omitted here falls back to `selectedCountLabelOne`/`selectedCountLabelOther`. `{count}` is interpolated. A single selection shows the item's name instead of any form, unless the item has no text."
|
|
1706
|
+
},
|
|
1707
|
+
"getter": false,
|
|
1708
|
+
"setter": false,
|
|
1709
|
+
"reflect": false,
|
|
1710
|
+
"attribute": "selected-count-labels"
|
|
1711
|
+
},
|
|
1712
|
+
"closePanelOnSelect": {
|
|
1713
|
+
"type": "boolean",
|
|
1714
|
+
"mutable": false,
|
|
1715
|
+
"complexType": {
|
|
1716
|
+
"original": "boolean",
|
|
1717
|
+
"resolved": "boolean",
|
|
1718
|
+
"references": {}
|
|
1719
|
+
},
|
|
1720
|
+
"required": false,
|
|
1721
|
+
"optional": false,
|
|
1722
|
+
"docs": {
|
|
1723
|
+
"tags": [],
|
|
1724
|
+
"text": "Whether to close the panel after an option is selected.\nDefaults to `false` (panel stays open for multi-select)."
|
|
1725
|
+
},
|
|
1726
|
+
"getter": false,
|
|
1727
|
+
"setter": false,
|
|
1728
|
+
"reflect": false,
|
|
1729
|
+
"attribute": "close-panel-on-select",
|
|
1730
|
+
"defaultValue": "false"
|
|
1731
|
+
},
|
|
1732
|
+
"name": {
|
|
1733
|
+
"type": "string",
|
|
1734
|
+
"mutable": false,
|
|
1735
|
+
"complexType": {
|
|
1736
|
+
"original": "string",
|
|
1737
|
+
"resolved": "string",
|
|
1738
|
+
"references": {}
|
|
1739
|
+
},
|
|
1740
|
+
"required": false,
|
|
1741
|
+
"optional": true,
|
|
1742
|
+
"docs": {
|
|
1743
|
+
"tags": [],
|
|
1744
|
+
"text": "Specifies the name. Submitted with the form as part of a name/value pair."
|
|
1745
|
+
},
|
|
1746
|
+
"getter": false,
|
|
1747
|
+
"setter": false,
|
|
1748
|
+
"reflect": false,
|
|
1749
|
+
"attribute": "name"
|
|
1750
|
+
},
|
|
1751
|
+
"value": {
|
|
1752
|
+
"type": "unknown",
|
|
1753
|
+
"mutable": true,
|
|
1754
|
+
"complexType": {
|
|
1755
|
+
"original": "string[]",
|
|
1756
|
+
"resolved": "string[]",
|
|
1757
|
+
"references": {}
|
|
1758
|
+
},
|
|
1759
|
+
"required": false,
|
|
1760
|
+
"optional": false,
|
|
1761
|
+
"docs": {
|
|
1762
|
+
"tags": [],
|
|
1763
|
+
"text": "Array of selected option values."
|
|
1764
|
+
},
|
|
1765
|
+
"getter": false,
|
|
1766
|
+
"setter": false,
|
|
1767
|
+
"defaultValue": "[]"
|
|
1768
|
+
},
|
|
1769
|
+
"disabled": {
|
|
1770
|
+
"type": "boolean",
|
|
1771
|
+
"mutable": false,
|
|
1772
|
+
"complexType": {
|
|
1773
|
+
"original": "boolean",
|
|
1774
|
+
"resolved": "boolean",
|
|
1775
|
+
"references": {}
|
|
1776
|
+
},
|
|
1777
|
+
"required": false,
|
|
1778
|
+
"optional": false,
|
|
1779
|
+
"docs": {
|
|
1780
|
+
"tags": [],
|
|
1781
|
+
"text": "Determines whether or not the multiselect is disabled."
|
|
1782
|
+
},
|
|
1783
|
+
"getter": false,
|
|
1784
|
+
"setter": false,
|
|
1785
|
+
"reflect": false,
|
|
1786
|
+
"attribute": "disabled",
|
|
1787
|
+
"defaultValue": "false"
|
|
1788
|
+
},
|
|
1789
|
+
"asyncUrl": {
|
|
1790
|
+
"type": "string",
|
|
1791
|
+
"mutable": false,
|
|
1792
|
+
"complexType": {
|
|
1793
|
+
"original": "string",
|
|
1794
|
+
"resolved": "string",
|
|
1795
|
+
"references": {}
|
|
1796
|
+
},
|
|
1797
|
+
"required": false,
|
|
1798
|
+
"optional": true,
|
|
1799
|
+
"docs": {
|
|
1800
|
+
"tags": [],
|
|
1801
|
+
"text": "URL endpoint for async data fetching."
|
|
1802
|
+
},
|
|
1803
|
+
"getter": false,
|
|
1804
|
+
"setter": false,
|
|
1805
|
+
"reflect": false,
|
|
1806
|
+
"attribute": "async-url"
|
|
1807
|
+
},
|
|
1808
|
+
"asyncMethod": {
|
|
1809
|
+
"type": "string",
|
|
1810
|
+
"mutable": false,
|
|
1811
|
+
"complexType": {
|
|
1812
|
+
"original": "'GET' | 'POST'",
|
|
1813
|
+
"resolved": "\"GET\" | \"POST\"",
|
|
1814
|
+
"references": {}
|
|
1815
|
+
},
|
|
1816
|
+
"required": false,
|
|
1817
|
+
"optional": false,
|
|
1818
|
+
"docs": {
|
|
1819
|
+
"tags": [],
|
|
1820
|
+
"text": "HTTP method for async requests."
|
|
1821
|
+
},
|
|
1822
|
+
"getter": false,
|
|
1823
|
+
"setter": false,
|
|
1824
|
+
"reflect": false,
|
|
1825
|
+
"attribute": "async-method",
|
|
1826
|
+
"defaultValue": "'GET'"
|
|
1827
|
+
},
|
|
1828
|
+
"debounce": {
|
|
1829
|
+
"type": "number",
|
|
1830
|
+
"mutable": false,
|
|
1831
|
+
"complexType": {
|
|
1832
|
+
"original": "number",
|
|
1833
|
+
"resolved": "number",
|
|
1834
|
+
"references": {}
|
|
1835
|
+
},
|
|
1836
|
+
"required": false,
|
|
1837
|
+
"optional": false,
|
|
1838
|
+
"docs": {
|
|
1839
|
+
"tags": [],
|
|
1840
|
+
"text": "Debounce delay in milliseconds for search/fetch."
|
|
1841
|
+
},
|
|
1842
|
+
"getter": false,
|
|
1843
|
+
"setter": false,
|
|
1844
|
+
"reflect": false,
|
|
1845
|
+
"attribute": "debounce",
|
|
1846
|
+
"defaultValue": "300"
|
|
1847
|
+
},
|
|
1848
|
+
"fetchTimeout": {
|
|
1849
|
+
"type": "number",
|
|
1850
|
+
"mutable": false,
|
|
1851
|
+
"complexType": {
|
|
1852
|
+
"original": "number",
|
|
1853
|
+
"resolved": "number",
|
|
1854
|
+
"references": {}
|
|
1855
|
+
},
|
|
1856
|
+
"required": false,
|
|
1857
|
+
"optional": false,
|
|
1858
|
+
"docs": {
|
|
1859
|
+
"tags": [],
|
|
1860
|
+
"text": "Timeout in milliseconds for async fetch requests."
|
|
1861
|
+
},
|
|
1862
|
+
"getter": false,
|
|
1863
|
+
"setter": false,
|
|
1864
|
+
"reflect": false,
|
|
1865
|
+
"attribute": "fetch-timeout",
|
|
1866
|
+
"defaultValue": "30000"
|
|
1867
|
+
},
|
|
1868
|
+
"maxSelections": {
|
|
1869
|
+
"type": "number",
|
|
1870
|
+
"mutable": false,
|
|
1871
|
+
"complexType": {
|
|
1872
|
+
"original": "number",
|
|
1873
|
+
"resolved": "number",
|
|
1874
|
+
"references": {}
|
|
1875
|
+
},
|
|
1876
|
+
"required": false,
|
|
1877
|
+
"optional": true,
|
|
1878
|
+
"docs": {
|
|
1879
|
+
"tags": [],
|
|
1880
|
+
"text": "Maximum number of selections allowed."
|
|
1881
|
+
},
|
|
1882
|
+
"getter": false,
|
|
1883
|
+
"setter": false,
|
|
1884
|
+
"reflect": false,
|
|
1885
|
+
"attribute": "max-selections"
|
|
1886
|
+
},
|
|
1887
|
+
"maxHeight": {
|
|
1888
|
+
"type": "string",
|
|
1889
|
+
"mutable": false,
|
|
1890
|
+
"complexType": {
|
|
1891
|
+
"original": "string",
|
|
1892
|
+
"resolved": "string",
|
|
1893
|
+
"references": {}
|
|
1894
|
+
},
|
|
1895
|
+
"required": false,
|
|
1896
|
+
"optional": false,
|
|
1897
|
+
"docs": {
|
|
1898
|
+
"tags": [],
|
|
1899
|
+
"text": "Maximum height of the dropdown before scrolling."
|
|
1900
|
+
},
|
|
1901
|
+
"getter": false,
|
|
1902
|
+
"setter": false,
|
|
1903
|
+
"reflect": false,
|
|
1904
|
+
"attribute": "max-height",
|
|
1905
|
+
"defaultValue": "'300px'"
|
|
1906
|
+
},
|
|
1907
|
+
"triggerWidth": {
|
|
1908
|
+
"type": "string",
|
|
1909
|
+
"mutable": false,
|
|
1910
|
+
"complexType": {
|
|
1911
|
+
"original": "string",
|
|
1912
|
+
"resolved": "string",
|
|
1913
|
+
"references": {}
|
|
1914
|
+
},
|
|
1915
|
+
"required": false,
|
|
1916
|
+
"optional": false,
|
|
1917
|
+
"docs": {
|
|
1918
|
+
"tags": [],
|
|
1919
|
+
"text": "Width of the trigger button (and reference for dropdown positioning)."
|
|
1920
|
+
},
|
|
1921
|
+
"getter": false,
|
|
1922
|
+
"setter": false,
|
|
1923
|
+
"reflect": false,
|
|
1924
|
+
"attribute": "trigger-width",
|
|
1925
|
+
"defaultValue": "'100%'"
|
|
1926
|
+
},
|
|
1927
|
+
"minWidth": {
|
|
1928
|
+
"type": "string",
|
|
1929
|
+
"mutable": false,
|
|
1930
|
+
"complexType": {
|
|
1931
|
+
"original": "string",
|
|
1932
|
+
"resolved": "string",
|
|
1933
|
+
"references": {}
|
|
1934
|
+
},
|
|
1935
|
+
"required": false,
|
|
1936
|
+
"optional": false,
|
|
1937
|
+
"docs": {
|
|
1938
|
+
"tags": [],
|
|
1939
|
+
"text": "Minimum width of the dropdown panel."
|
|
1940
|
+
},
|
|
1941
|
+
"getter": false,
|
|
1942
|
+
"setter": false,
|
|
1943
|
+
"reflect": false,
|
|
1944
|
+
"attribute": "min-width",
|
|
1945
|
+
"defaultValue": "'250px'"
|
|
1946
|
+
},
|
|
1947
|
+
"panelWidth": {
|
|
1948
|
+
"type": "string",
|
|
1949
|
+
"mutable": false,
|
|
1950
|
+
"complexType": {
|
|
1951
|
+
"original": "string",
|
|
1952
|
+
"resolved": "string",
|
|
1953
|
+
"references": {}
|
|
1954
|
+
},
|
|
1955
|
+
"required": false,
|
|
1956
|
+
"optional": true,
|
|
1957
|
+
"docs": {
|
|
1958
|
+
"tags": [],
|
|
1959
|
+
"text": "Width of the dropdown panel. Defaults to the trigger width."
|
|
1960
|
+
},
|
|
1961
|
+
"getter": false,
|
|
1962
|
+
"setter": false,
|
|
1963
|
+
"reflect": false,
|
|
1964
|
+
"attribute": "panel-width"
|
|
1965
|
+
},
|
|
1966
|
+
"hideLabel": {
|
|
1967
|
+
"type": "boolean",
|
|
1968
|
+
"mutable": false,
|
|
1969
|
+
"complexType": {
|
|
1970
|
+
"original": "boolean",
|
|
1971
|
+
"resolved": "boolean",
|
|
1972
|
+
"references": {}
|
|
1973
|
+
},
|
|
1974
|
+
"required": false,
|
|
1975
|
+
"optional": false,
|
|
1976
|
+
"docs": {
|
|
1977
|
+
"tags": [],
|
|
1978
|
+
"text": "Visually hides the label but keeps it accessible."
|
|
1979
|
+
},
|
|
1980
|
+
"getter": false,
|
|
1981
|
+
"setter": false,
|
|
1982
|
+
"reflect": false,
|
|
1983
|
+
"attribute": "hide-label",
|
|
1984
|
+
"defaultValue": "false"
|
|
1985
|
+
},
|
|
1986
|
+
"hideSelectedItems": {
|
|
1987
|
+
"type": "boolean",
|
|
1988
|
+
"mutable": false,
|
|
1989
|
+
"complexType": {
|
|
1990
|
+
"original": "boolean",
|
|
1991
|
+
"resolved": "boolean",
|
|
1992
|
+
"references": {}
|
|
1993
|
+
},
|
|
1994
|
+
"required": false,
|
|
1995
|
+
"optional": false,
|
|
1996
|
+
"docs": {
|
|
1997
|
+
"tags": [],
|
|
1998
|
+
"text": "Hides the selected items summary section in the dropdown panel."
|
|
1999
|
+
},
|
|
2000
|
+
"getter": false,
|
|
2001
|
+
"setter": false,
|
|
2002
|
+
"reflect": false,
|
|
2003
|
+
"attribute": "hide-selected-items",
|
|
2004
|
+
"defaultValue": "false"
|
|
2005
|
+
},
|
|
2006
|
+
"selectedDisplay": {
|
|
2007
|
+
"type": "string",
|
|
2008
|
+
"mutable": false,
|
|
2009
|
+
"complexType": {
|
|
2010
|
+
"original": "'count' | 'pill'",
|
|
2011
|
+
"resolved": "\"count\" | \"pill\"",
|
|
2012
|
+
"references": {}
|
|
2013
|
+
},
|
|
2014
|
+
"required": false,
|
|
2015
|
+
"optional": false,
|
|
2016
|
+
"docs": {
|
|
2017
|
+
"tags": [{
|
|
2018
|
+
"name": "default",
|
|
2019
|
+
"text": "'count'"
|
|
2020
|
+
}],
|
|
2021
|
+
"text": "Display mode for selected items outside the dropdown panel.\n`'count'` shows the item's name in the trigger when one is selected and\n\"N items\" text otherwise (default). `'pill'` renders selected items as\ndismissible pds-chip tags."
|
|
2022
|
+
},
|
|
2023
|
+
"getter": false,
|
|
2024
|
+
"setter": false,
|
|
2025
|
+
"reflect": false,
|
|
2026
|
+
"attribute": "selected-display",
|
|
2027
|
+
"defaultValue": "'count'"
|
|
2028
|
+
},
|
|
2029
|
+
"pillPosition": {
|
|
2030
|
+
"type": "string",
|
|
2031
|
+
"mutable": false,
|
|
2032
|
+
"complexType": {
|
|
2033
|
+
"original": "'inline' | 'below'",
|
|
2034
|
+
"resolved": "\"below\" | \"inline\"",
|
|
2035
|
+
"references": {}
|
|
2036
|
+
},
|
|
2037
|
+
"required": false,
|
|
2038
|
+
"optional": false,
|
|
2039
|
+
"docs": {
|
|
2040
|
+
"tags": [{
|
|
2041
|
+
"name": "default",
|
|
2042
|
+
"text": "'inline'"
|
|
2043
|
+
}],
|
|
2044
|
+
"text": "Position of pill chips when `selectedDisplay` is `'pill'`.\n`'inline'` places chips inside the trigger; `'below'` places chips in a\nflex-wrap row directly below the trigger."
|
|
2045
|
+
},
|
|
2046
|
+
"getter": false,
|
|
2047
|
+
"setter": false,
|
|
2048
|
+
"reflect": false,
|
|
2049
|
+
"attribute": "pill-position",
|
|
2050
|
+
"defaultValue": "'inline'"
|
|
2051
|
+
},
|
|
2052
|
+
"maxInlinePills": {
|
|
2053
|
+
"type": "number",
|
|
2054
|
+
"mutable": false,
|
|
2055
|
+
"complexType": {
|
|
2056
|
+
"original": "number",
|
|
2057
|
+
"resolved": "number",
|
|
2058
|
+
"references": {}
|
|
2059
|
+
},
|
|
2060
|
+
"required": false,
|
|
2061
|
+
"optional": false,
|
|
2062
|
+
"docs": {
|
|
2063
|
+
"tags": [{
|
|
2064
|
+
"name": "default",
|
|
2065
|
+
"text": "3"
|
|
2066
|
+
}],
|
|
2067
|
+
"text": "Maximum chips shown inline before collapsing to a \"+N more\" badge.\nOnly applies when `selectedDisplay='pill'` and `pillPosition='inline'`."
|
|
2068
|
+
},
|
|
2069
|
+
"getter": false,
|
|
2070
|
+
"setter": false,
|
|
2071
|
+
"reflect": false,
|
|
2072
|
+
"attribute": "max-inline-pills",
|
|
2073
|
+
"defaultValue": "3"
|
|
2074
|
+
},
|
|
2075
|
+
"optionDisplay": {
|
|
2076
|
+
"type": "string",
|
|
2077
|
+
"mutable": false,
|
|
2078
|
+
"complexType": {
|
|
2079
|
+
"original": "'text' | 'chip'",
|
|
2080
|
+
"resolved": "\"chip\" | \"text\"",
|
|
2081
|
+
"references": {}
|
|
2082
|
+
},
|
|
2083
|
+
"required": false,
|
|
2084
|
+
"optional": false,
|
|
2085
|
+
"docs": {
|
|
2086
|
+
"tags": [{
|
|
2087
|
+
"name": "defaultValue",
|
|
2088
|
+
"text": "'text'"
|
|
2089
|
+
}],
|
|
2090
|
+
"text": "Display mode for options in the dropdown panel.\n`'text'` shows each option's text (default). `'chip'` shows each option as a\npds-chip, with a dot when the option has a `dotColor`."
|
|
2091
|
+
},
|
|
2092
|
+
"getter": false,
|
|
2093
|
+
"setter": false,
|
|
2094
|
+
"reflect": false,
|
|
2095
|
+
"attribute": "option-display",
|
|
2096
|
+
"defaultValue": "'text'"
|
|
2097
|
+
},
|
|
2098
|
+
"errorMessage": {
|
|
2099
|
+
"type": "string",
|
|
2100
|
+
"mutable": false,
|
|
2101
|
+
"complexType": {
|
|
2102
|
+
"original": "string",
|
|
2103
|
+
"resolved": "string",
|
|
2104
|
+
"references": {}
|
|
2105
|
+
},
|
|
2106
|
+
"required": false,
|
|
2107
|
+
"optional": true,
|
|
2108
|
+
"docs": {
|
|
2109
|
+
"tags": [],
|
|
2110
|
+
"text": "Error message to display."
|
|
2111
|
+
},
|
|
2112
|
+
"getter": false,
|
|
2113
|
+
"setter": false,
|
|
2114
|
+
"reflect": false,
|
|
2115
|
+
"attribute": "error-message"
|
|
2116
|
+
},
|
|
2117
|
+
"helperMessage": {
|
|
2118
|
+
"type": "string",
|
|
2119
|
+
"mutable": false,
|
|
2120
|
+
"complexType": {
|
|
2121
|
+
"original": "string",
|
|
2122
|
+
"resolved": "string",
|
|
2123
|
+
"references": {}
|
|
2124
|
+
},
|
|
2125
|
+
"required": false,
|
|
2126
|
+
"optional": true,
|
|
2127
|
+
"docs": {
|
|
2128
|
+
"tags": [],
|
|
2129
|
+
"text": "Helper message to display below the input."
|
|
2130
|
+
},
|
|
2131
|
+
"getter": false,
|
|
2132
|
+
"setter": false,
|
|
2133
|
+
"reflect": false,
|
|
2134
|
+
"attribute": "helper-message"
|
|
2135
|
+
},
|
|
2136
|
+
"invalid": {
|
|
2137
|
+
"type": "boolean",
|
|
2138
|
+
"mutable": false,
|
|
2139
|
+
"complexType": {
|
|
2140
|
+
"original": "boolean",
|
|
2141
|
+
"resolved": "boolean",
|
|
2142
|
+
"references": {}
|
|
2143
|
+
},
|
|
2144
|
+
"required": false,
|
|
2145
|
+
"optional": true,
|
|
2146
|
+
"docs": {
|
|
2147
|
+
"tags": [],
|
|
2148
|
+
"text": "If true, the multiselect is in an invalid state."
|
|
2149
|
+
},
|
|
2150
|
+
"getter": false,
|
|
2151
|
+
"setter": false,
|
|
2152
|
+
"reflect": false,
|
|
2153
|
+
"attribute": "invalid"
|
|
2154
|
+
},
|
|
2155
|
+
"required": {
|
|
2156
|
+
"type": "boolean",
|
|
2157
|
+
"mutable": false,
|
|
2158
|
+
"complexType": {
|
|
2159
|
+
"original": "boolean",
|
|
2160
|
+
"resolved": "boolean",
|
|
2161
|
+
"references": {}
|
|
2162
|
+
},
|
|
2163
|
+
"required": false,
|
|
2164
|
+
"optional": false,
|
|
2165
|
+
"docs": {
|
|
2166
|
+
"tags": [],
|
|
2167
|
+
"text": "If true, the multiselect is required."
|
|
2168
|
+
},
|
|
2169
|
+
"getter": false,
|
|
2170
|
+
"setter": false,
|
|
2171
|
+
"reflect": false,
|
|
2172
|
+
"attribute": "required",
|
|
2173
|
+
"defaultValue": "false"
|
|
2174
|
+
},
|
|
2175
|
+
"loading": {
|
|
2176
|
+
"type": "boolean",
|
|
2177
|
+
"mutable": true,
|
|
2178
|
+
"complexType": {
|
|
2179
|
+
"original": "boolean",
|
|
2180
|
+
"resolved": "boolean",
|
|
2181
|
+
"references": {}
|
|
2182
|
+
},
|
|
2183
|
+
"required": false,
|
|
2184
|
+
"optional": false,
|
|
2185
|
+
"docs": {
|
|
2186
|
+
"tags": [],
|
|
2187
|
+
"text": "Whether the component is currently loading async options."
|
|
2188
|
+
},
|
|
2189
|
+
"getter": false,
|
|
2190
|
+
"setter": false,
|
|
2191
|
+
"reflect": false,
|
|
2192
|
+
"attribute": "loading",
|
|
2193
|
+
"defaultValue": "false"
|
|
2194
|
+
},
|
|
2195
|
+
"options": {
|
|
2196
|
+
"type": "unknown",
|
|
2197
|
+
"mutable": false,
|
|
2198
|
+
"complexType": {
|
|
2199
|
+
"original": "MultiselectOption[]",
|
|
2200
|
+
"resolved": "MultiselectOption[]",
|
|
2201
|
+
"references": {
|
|
2202
|
+
"MultiselectOption": {
|
|
2203
|
+
"location": "import",
|
|
2204
|
+
"path": "./multiselect-interface",
|
|
2205
|
+
"id": "src/components/pds-multiselect/multiselect-interface.ts::MultiselectOption",
|
|
2206
|
+
"referenceLocation": "MultiselectOption"
|
|
2207
|
+
}
|
|
2208
|
+
}
|
|
2209
|
+
},
|
|
2210
|
+
"required": false,
|
|
2211
|
+
"optional": true,
|
|
2212
|
+
"docs": {
|
|
2213
|
+
"tags": [],
|
|
2214
|
+
"text": "Options provided externally (for consumer-managed async).\nWhen using `group` on options, keep each group block contiguous in the array.\nThe same `group` label appearing again after other items produces a separate header (same as native `<optgroup>`)."
|
|
2215
|
+
},
|
|
2216
|
+
"getter": false,
|
|
2217
|
+
"setter": false
|
|
2218
|
+
},
|
|
2219
|
+
"formatResult": {
|
|
2220
|
+
"type": "unknown",
|
|
2221
|
+
"mutable": false,
|
|
2222
|
+
"complexType": {
|
|
2223
|
+
"original": "(item: unknown) => MultiselectOption",
|
|
2224
|
+
"resolved": "(item: unknown) => MultiselectOption",
|
|
2225
|
+
"references": {
|
|
2226
|
+
"MultiselectOption": {
|
|
2227
|
+
"location": "import",
|
|
2228
|
+
"path": "./multiselect-interface",
|
|
2229
|
+
"id": "src/components/pds-multiselect/multiselect-interface.ts::MultiselectOption",
|
|
2230
|
+
"referenceLocation": "MultiselectOption"
|
|
2231
|
+
}
|
|
2232
|
+
}
|
|
2233
|
+
},
|
|
2234
|
+
"required": false,
|
|
2235
|
+
"optional": true,
|
|
2236
|
+
"docs": {
|
|
2237
|
+
"tags": [],
|
|
2238
|
+
"text": "Function to format async results. Receives raw API response item."
|
|
2239
|
+
},
|
|
2240
|
+
"getter": false,
|
|
2241
|
+
"setter": false
|
|
2242
|
+
},
|
|
2243
|
+
"createUrl": {
|
|
2244
|
+
"type": "string",
|
|
2245
|
+
"mutable": false,
|
|
2246
|
+
"complexType": {
|
|
2247
|
+
"original": "string",
|
|
2248
|
+
"resolved": "string",
|
|
2249
|
+
"references": {}
|
|
2250
|
+
},
|
|
2251
|
+
"required": false,
|
|
2252
|
+
"optional": true,
|
|
2253
|
+
"docs": {
|
|
2254
|
+
"tags": [],
|
|
2255
|
+
"text": "URL endpoint for creating new options. When set, shows \"Add\" option when no matches found."
|
|
2256
|
+
},
|
|
2257
|
+
"getter": false,
|
|
2258
|
+
"setter": false,
|
|
2259
|
+
"reflect": false,
|
|
2260
|
+
"attribute": "create-url"
|
|
2261
|
+
},
|
|
2262
|
+
"csrfToken": {
|
|
2263
|
+
"type": "string",
|
|
2264
|
+
"mutable": false,
|
|
2265
|
+
"complexType": {
|
|
2266
|
+
"original": "string",
|
|
2267
|
+
"resolved": "string",
|
|
2268
|
+
"references": {}
|
|
2269
|
+
},
|
|
2270
|
+
"required": false,
|
|
2271
|
+
"optional": true,
|
|
2272
|
+
"docs": {
|
|
2273
|
+
"tags": [],
|
|
2274
|
+
"text": "CSRF token for authenticated requests. If not provided, attempts to read from meta tag."
|
|
2275
|
+
},
|
|
2276
|
+
"getter": false,
|
|
2277
|
+
"setter": false,
|
|
2278
|
+
"reflect": false,
|
|
2279
|
+
"attribute": "csrf-token"
|
|
2280
|
+
},
|
|
2281
|
+
"csrfHeaderName": {
|
|
2282
|
+
"type": "string",
|
|
2283
|
+
"mutable": false,
|
|
2284
|
+
"complexType": {
|
|
2285
|
+
"original": "string",
|
|
2286
|
+
"resolved": "string",
|
|
2287
|
+
"references": {}
|
|
2288
|
+
},
|
|
2289
|
+
"required": false,
|
|
2290
|
+
"optional": true,
|
|
2291
|
+
"docs": {
|
|
2292
|
+
"tags": [],
|
|
2293
|
+
"text": "CSRF header name for authenticated requests. Defaults to `X-CSRF-Token`."
|
|
2294
|
+
},
|
|
2295
|
+
"getter": false,
|
|
2296
|
+
"setter": false,
|
|
2297
|
+
"reflect": false,
|
|
2298
|
+
"attribute": "csrf-header-name",
|
|
2299
|
+
"defaultValue": "'X-CSRF-Token'"
|
|
2300
|
+
},
|
|
2301
|
+
"optionActions": {
|
|
2302
|
+
"type": "boolean",
|
|
2303
|
+
"mutable": false,
|
|
2304
|
+
"complexType": {
|
|
2305
|
+
"original": "boolean",
|
|
2306
|
+
"resolved": "boolean",
|
|
2307
|
+
"references": {}
|
|
2308
|
+
},
|
|
2309
|
+
"required": false,
|
|
2310
|
+
"optional": false,
|
|
2311
|
+
"docs": {
|
|
2312
|
+
"tags": [],
|
|
2313
|
+
"text": "Shows an action icon on each option that has an `actionIcon`, such as an edit pencil.\nThe icon shows on the hovered or highlighted option; clicking it, or pressing Right Arrow on the highlighted option, emits `pdsMultiselectOptionAction`."
|
|
2314
|
+
},
|
|
2315
|
+
"getter": false,
|
|
2316
|
+
"setter": false,
|
|
2317
|
+
"reflect": false,
|
|
2318
|
+
"attribute": "option-actions",
|
|
2319
|
+
"defaultValue": "false"
|
|
2320
|
+
},
|
|
2321
|
+
"optionActionLabel": {
|
|
2322
|
+
"type": "string",
|
|
2323
|
+
"mutable": false,
|
|
2324
|
+
"complexType": {
|
|
2325
|
+
"original": "string",
|
|
2326
|
+
"resolved": "string",
|
|
2327
|
+
"references": {}
|
|
2328
|
+
},
|
|
2329
|
+
"required": false,
|
|
2330
|
+
"optional": false,
|
|
2331
|
+
"docs": {
|
|
2332
|
+
"tags": [{
|
|
2333
|
+
"name": "defaultValue",
|
|
2334
|
+
"text": "'Edit {text}'"
|
|
2335
|
+
}],
|
|
2336
|
+
"text": "Tooltip for an option's action icon when the option has no `actionLabel`. Pass a translated string to localize it; `{text}` is interpolated."
|
|
2337
|
+
},
|
|
2338
|
+
"getter": false,
|
|
2339
|
+
"setter": false,
|
|
2340
|
+
"reflect": false,
|
|
2341
|
+
"attribute": "option-action-label",
|
|
2342
|
+
"defaultValue": "'Edit {text}'"
|
|
2343
|
+
},
|
|
2344
|
+
"optionActionDescription": {
|
|
2345
|
+
"type": "string",
|
|
2346
|
+
"mutable": false,
|
|
2347
|
+
"complexType": {
|
|
2348
|
+
"original": "string",
|
|
2349
|
+
"resolved": "string",
|
|
2350
|
+
"references": {}
|
|
2351
|
+
},
|
|
2352
|
+
"required": false,
|
|
2353
|
+
"optional": false,
|
|
2354
|
+
"docs": {
|
|
2355
|
+
"tags": [{
|
|
2356
|
+
"name": "defaultValue",
|
|
2357
|
+
"text": "'Press Right Arrow to {action}'"
|
|
2358
|
+
}],
|
|
2359
|
+
"text": "Screen-reader hint on each option that has an action, naming the key that runs it. Pass a translated string to localize it; `{action}` is interpolated with the option's action label."
|
|
2360
|
+
},
|
|
2361
|
+
"getter": false,
|
|
2362
|
+
"setter": false,
|
|
2363
|
+
"reflect": false,
|
|
2364
|
+
"attribute": "option-action-description",
|
|
2365
|
+
"defaultValue": "'Press Right Arrow to {action}'"
|
|
2366
|
+
}
|
|
2367
|
+
};
|
|
2368
|
+
}
|
|
2369
|
+
static get states() {
|
|
2370
|
+
return {
|
|
2371
|
+
"isOpen": {},
|
|
2372
|
+
"searchQuery": {},
|
|
2373
|
+
"highlightedIndex": {},
|
|
2374
|
+
"internalOptions": {},
|
|
2375
|
+
"selectedItems": {},
|
|
2376
|
+
"currentPage": {},
|
|
2377
|
+
"hasMore": {},
|
|
2378
|
+
"creating": {},
|
|
2379
|
+
"removalAnnouncement": {},
|
|
2380
|
+
"slottedTriggerEl": {}
|
|
2381
|
+
};
|
|
2382
|
+
}
|
|
2383
|
+
static get events() {
|
|
2384
|
+
return [{
|
|
2385
|
+
"method": "pdsMultiselectChange",
|
|
2386
|
+
"name": "pdsMultiselectChange",
|
|
2387
|
+
"bubbles": true,
|
|
2388
|
+
"cancelable": true,
|
|
2389
|
+
"composed": true,
|
|
2390
|
+
"docs": {
|
|
2391
|
+
"tags": [],
|
|
2392
|
+
"text": "Emitted when selection changes."
|
|
2393
|
+
},
|
|
2394
|
+
"complexType": {
|
|
2395
|
+
"original": "MultiselectChangeEventDetail",
|
|
2396
|
+
"resolved": "MultiselectChangeEventDetail",
|
|
2397
|
+
"references": {
|
|
2398
|
+
"MultiselectChangeEventDetail": {
|
|
2399
|
+
"location": "import",
|
|
2400
|
+
"path": "./multiselect-interface",
|
|
2401
|
+
"id": "src/components/pds-multiselect/multiselect-interface.ts::MultiselectChangeEventDetail",
|
|
2402
|
+
"referenceLocation": "MultiselectChangeEventDetail"
|
|
2403
|
+
}
|
|
2404
|
+
}
|
|
2405
|
+
}
|
|
2406
|
+
}, {
|
|
2407
|
+
"method": "pdsMultiselectSearch",
|
|
2408
|
+
"name": "pdsMultiselectSearch",
|
|
2409
|
+
"bubbles": true,
|
|
2410
|
+
"cancelable": true,
|
|
2411
|
+
"composed": true,
|
|
2412
|
+
"docs": {
|
|
2413
|
+
"tags": [],
|
|
2414
|
+
"text": "Emitted on search input (for consumer-managed async)."
|
|
2415
|
+
},
|
|
2416
|
+
"complexType": {
|
|
2417
|
+
"original": "MultiselectSearchEventDetail",
|
|
2418
|
+
"resolved": "MultiselectSearchEventDetail",
|
|
2419
|
+
"references": {
|
|
2420
|
+
"MultiselectSearchEventDetail": {
|
|
2421
|
+
"location": "import",
|
|
2422
|
+
"path": "./multiselect-interface",
|
|
2423
|
+
"id": "src/components/pds-multiselect/multiselect-interface.ts::MultiselectSearchEventDetail",
|
|
2424
|
+
"referenceLocation": "MultiselectSearchEventDetail"
|
|
2425
|
+
}
|
|
2426
|
+
}
|
|
2427
|
+
}
|
|
2428
|
+
}, {
|
|
2429
|
+
"method": "pdsMultiselectLoadOptions",
|
|
2430
|
+
"name": "pdsMultiselectLoadOptions",
|
|
2431
|
+
"bubbles": true,
|
|
2432
|
+
"cancelable": true,
|
|
2433
|
+
"composed": true,
|
|
2434
|
+
"docs": {
|
|
2435
|
+
"tags": [],
|
|
2436
|
+
"text": "Emitted to request more options (pagination)."
|
|
2437
|
+
},
|
|
2438
|
+
"complexType": {
|
|
2439
|
+
"original": "MultiselectLoadOptionsEventDetail",
|
|
2440
|
+
"resolved": "MultiselectLoadOptionsEventDetail",
|
|
2441
|
+
"references": {
|
|
2442
|
+
"MultiselectLoadOptionsEventDetail": {
|
|
2443
|
+
"location": "import",
|
|
2444
|
+
"path": "./multiselect-interface",
|
|
2445
|
+
"id": "src/components/pds-multiselect/multiselect-interface.ts::MultiselectLoadOptionsEventDetail",
|
|
2446
|
+
"referenceLocation": "MultiselectLoadOptionsEventDetail"
|
|
2447
|
+
}
|
|
2448
|
+
}
|
|
2449
|
+
}
|
|
2450
|
+
}, {
|
|
2451
|
+
"method": "pdsMultiselectCreate",
|
|
2452
|
+
"name": "pdsMultiselectCreate",
|
|
2453
|
+
"bubbles": true,
|
|
2454
|
+
"cancelable": true,
|
|
2455
|
+
"composed": true,
|
|
2456
|
+
"docs": {
|
|
2457
|
+
"tags": [],
|
|
2458
|
+
"text": "Emitted when a new option is created."
|
|
2459
|
+
},
|
|
2460
|
+
"complexType": {
|
|
2461
|
+
"original": "MultiselectCreateEventDetail",
|
|
2462
|
+
"resolved": "MultiselectCreateEventDetail",
|
|
2463
|
+
"references": {
|
|
2464
|
+
"MultiselectCreateEventDetail": {
|
|
2465
|
+
"location": "import",
|
|
2466
|
+
"path": "./multiselect-interface",
|
|
2467
|
+
"id": "src/components/pds-multiselect/multiselect-interface.ts::MultiselectCreateEventDetail",
|
|
2468
|
+
"referenceLocation": "MultiselectCreateEventDetail"
|
|
2469
|
+
}
|
|
2470
|
+
}
|
|
2471
|
+
}
|
|
2472
|
+
}, {
|
|
2473
|
+
"method": "pdsMultiselectDismiss",
|
|
2474
|
+
"name": "pdsMultiselectDismiss",
|
|
2475
|
+
"bubbles": true,
|
|
2476
|
+
"cancelable": true,
|
|
2477
|
+
"composed": true,
|
|
2478
|
+
"docs": {
|
|
2479
|
+
"tags": [],
|
|
2480
|
+
"text": "Emitted when the dropdown is dismissed with the Escape key, or by focus moving outside the\ncomponent, such as with a click elsewhere on the page.\n\nIt doesn't fire when the panel closes any other way: from a selection (including with\n`closePanelOnSelect`) or an option action, a click on the trigger, Tab, or the multiselect\nbecoming disabled. Safari doesn't focus a clicked button, so there a click on the trigger while\nthe panel is open fires this event, and the panel opens again.\nUse it to restore parent UI state or run cleanup when the user cancels."
|
|
2481
|
+
},
|
|
2482
|
+
"complexType": {
|
|
2483
|
+
"original": "void",
|
|
2484
|
+
"resolved": "void",
|
|
2485
|
+
"references": {}
|
|
2486
|
+
}
|
|
2487
|
+
}, {
|
|
2488
|
+
"method": "pdsMultiselectOptionAction",
|
|
2489
|
+
"name": "pdsMultiselectOptionAction",
|
|
2490
|
+
"bubbles": true,
|
|
2491
|
+
"cancelable": true,
|
|
2492
|
+
"composed": true,
|
|
2493
|
+
"docs": {
|
|
2494
|
+
"tags": [],
|
|
2495
|
+
"text": "Emitted when an option's action runs, from a click on its icon or Right Arrow on the highlighted option.\nThe panel closes and focus returns to the trigger first, so a modal opened from the handler restores focus to the trigger."
|
|
2496
|
+
},
|
|
2497
|
+
"complexType": {
|
|
2498
|
+
"original": "MultiselectOptionActionEventDetail",
|
|
2499
|
+
"resolved": "MultiselectOptionActionEventDetail",
|
|
2500
|
+
"references": {
|
|
2501
|
+
"MultiselectOptionActionEventDetail": {
|
|
2502
|
+
"location": "import",
|
|
2503
|
+
"path": "./multiselect-interface",
|
|
2504
|
+
"id": "src/components/pds-multiselect/multiselect-interface.ts::MultiselectOptionActionEventDetail",
|
|
2505
|
+
"referenceLocation": "MultiselectOptionActionEventDetail"
|
|
2506
|
+
}
|
|
2507
|
+
}
|
|
2508
|
+
}
|
|
2509
|
+
}];
|
|
2510
|
+
}
|
|
2511
|
+
static get methods() {
|
|
2512
|
+
return {
|
|
2513
|
+
"setFocus": {
|
|
2514
|
+
"complexType": {
|
|
2515
|
+
"signature": "() => Promise<void>",
|
|
2516
|
+
"parameters": [],
|
|
2517
|
+
"references": {
|
|
2518
|
+
"Promise": {
|
|
2519
|
+
"location": "global",
|
|
2520
|
+
"id": "global::Promise"
|
|
2521
|
+
}
|
|
2522
|
+
},
|
|
2523
|
+
"return": "Promise<void>"
|
|
2524
|
+
},
|
|
2525
|
+
"docs": {
|
|
2526
|
+
"text": "Sets focus on the trigger button.",
|
|
2527
|
+
"tags": []
|
|
2528
|
+
}
|
|
2529
|
+
},
|
|
2530
|
+
"clear": {
|
|
2531
|
+
"complexType": {
|
|
2532
|
+
"signature": "() => Promise<void>",
|
|
2533
|
+
"parameters": [],
|
|
2534
|
+
"references": {
|
|
2535
|
+
"Promise": {
|
|
2536
|
+
"location": "global",
|
|
2537
|
+
"id": "global::Promise"
|
|
2538
|
+
}
|
|
2539
|
+
},
|
|
2540
|
+
"return": "Promise<void>"
|
|
2541
|
+
},
|
|
2542
|
+
"docs": {
|
|
2543
|
+
"text": "Clears all selected values and resets the component. Works while disabled too, as setting a\nnative control's value from script does.",
|
|
2544
|
+
"tags": []
|
|
2545
|
+
}
|
|
2546
|
+
},
|
|
2547
|
+
"refreshOptions": {
|
|
2548
|
+
"complexType": {
|
|
2549
|
+
"signature": "() => Promise<void>",
|
|
2550
|
+
"parameters": [],
|
|
2551
|
+
"references": {
|
|
2552
|
+
"Promise": {
|
|
2553
|
+
"location": "global",
|
|
2554
|
+
"id": "global::Promise"
|
|
2555
|
+
}
|
|
2556
|
+
},
|
|
2557
|
+
"return": "Promise<void>"
|
|
2558
|
+
},
|
|
2559
|
+
"docs": {
|
|
2560
|
+
"text": "Refetches the first page of options from `asyncUrl` for the current search, such as after an option is renamed\nor recolored elsewhere. Selected items in that page pick up the new text and dot color without emitting a change;\nother selected items keep the text and dot color they were last loaded with. Does nothing without `asyncUrl`.",
|
|
2561
|
+
"tags": []
|
|
2562
|
+
}
|
|
2563
|
+
}
|
|
2564
|
+
};
|
|
2565
|
+
}
|
|
2566
|
+
static get elementRef() { return "el"; }
|
|
2567
|
+
static get watchers() {
|
|
2568
|
+
return [{
|
|
2569
|
+
"propName": "debounce",
|
|
2570
|
+
"methodName": "setupDebounce"
|
|
2571
|
+
}, {
|
|
2572
|
+
"propName": "value",
|
|
2573
|
+
"methodName": "valueChanged"
|
|
2574
|
+
}, {
|
|
2575
|
+
"propName": "options",
|
|
2576
|
+
"methodName": "optionsChanged"
|
|
2577
|
+
}, {
|
|
2578
|
+
"propName": "internalOptions",
|
|
2579
|
+
"methodName": "internalOptionsChanged"
|
|
2580
|
+
}, {
|
|
2581
|
+
"propName": "isOpen",
|
|
2582
|
+
"methodName": "isOpenChanged"
|
|
2583
|
+
}, {
|
|
2584
|
+
"propName": "disabled",
|
|
2585
|
+
"methodName": "disabledChanged"
|
|
2586
|
+
}];
|
|
2587
|
+
}
|
|
2588
|
+
static get listeners() {
|
|
2589
|
+
return [{
|
|
2590
|
+
"name": "keydown",
|
|
2591
|
+
"method": "handleWindowKeyDown",
|
|
2592
|
+
"target": "document",
|
|
2593
|
+
"capture": true,
|
|
2594
|
+
"passive": false
|
|
2595
|
+
}];
|
|
2596
|
+
}
|
|
2597
|
+
}
|