@pine-ds/core 3.6.0 → 3.8.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/form.js +16 -1
- package/components/form.js.map +1 -1
- package/components/index.d.ts +4 -0
- package/components/index.js +2 -0
- package/components/index.js.map +1 -1
- package/components/index2.js +4 -2
- package/components/index2.js.map +1 -1
- package/components/mock-pds-modal.js +2 -2
- package/components/mock-pds-modal.js.map +1 -1
- package/components/pds-avatar.js +1 -1
- package/components/pds-button2.js +7 -4
- package/components/pds-button2.js.map +1 -1
- package/components/pds-checkbox2.js +8 -5
- package/components/pds-checkbox2.js.map +1 -1
- package/components/pds-chip.js +1 -100
- package/components/pds-chip.js.map +1 -1
- package/components/pds-chip2.js +105 -0
- package/components/pds-chip2.js.map +1 -0
- package/components/pds-combobox.js +735 -54
- package/components/pds-combobox.js.map +1 -1
- package/components/pds-copytext.js +4 -4
- package/components/pds-copytext.js.map +1 -1
- package/components/pds-dropdown-menu-separator.js +1 -1
- package/components/pds-dropdown-menu-separator.js.map +1 -1
- package/components/pds-dropdown-menu.js +1 -1
- package/components/pds-dropdown-menu.js.map +1 -1
- package/components/pds-filter.d.ts +11 -0
- package/components/pds-filter.js +518 -0
- package/components/pds-filter.js.map +1 -0
- package/components/pds-filters.d.ts +11 -0
- package/components/pds-filters.js +38 -0
- package/components/pds-filters.js.map +1 -0
- package/components/pds-image.js +2 -2
- package/components/pds-input.js +3 -3
- package/components/pds-input.js.map +1 -1
- package/components/pds-link2.js +2 -2
- package/components/pds-loader2.js +1 -1
- package/components/pds-modal-content.js +2 -2
- package/components/pds-modal-footer.js +1 -1
- package/components/pds-modal-header.js +1 -1
- package/components/pds-modal.js +4 -4
- package/components/pds-modal.js.map +1 -1
- package/components/pds-popover.js +123 -15
- package/components/pds-popover.js.map +1 -1
- package/components/pds-progress.js +1 -1
- package/components/pds-property.js +1 -1
- package/components/pds-radio.js +11 -5
- package/components/pds-radio.js.map +1 -1
- package/components/pds-row.js +1 -1
- package/components/pds-select.js +22 -6
- package/components/pds-select.js.map +1 -1
- package/components/pds-sortable-item.js +1 -1
- package/components/pds-sortable.js +1 -1
- package/components/pds-switch.js +8 -5
- package/components/pds-switch.js.map +1 -1
- package/components/pds-tab.js +4 -4
- package/components/pds-tab.js.map +1 -1
- package/components/pds-table-body.js +1 -1
- package/components/pds-table-cell2.js +3 -3
- package/components/pds-table-cell2.js.map +1 -1
- package/components/pds-table-head-cell2.js +3 -3
- package/components/pds-table-head-cell2.js.map +1 -1
- package/components/pds-table-head.js +2 -2
- package/components/pds-table-head.js.map +1 -1
- package/components/pds-table-row.js +2 -2
- package/components/pds-table-row.js.map +1 -1
- package/components/pds-table.js +1 -1
- package/components/pds-table.js.map +1 -1
- package/components/pds-tabpanel.js +1 -1
- package/components/pds-tabs.js +14 -4
- package/components/pds-tabs.js.map +1 -1
- package/components/pds-text2.js +1 -1
- package/components/pds-textarea.js +10 -7
- package/components/pds-textarea.js.map +1 -1
- package/components/pds-toast.js +3 -3
- package/components/pds-tooltip.js +4 -4
- package/components/pds-tooltip.js.map +1 -1
- package/dist/cjs/{form-Bx4nzJBo.js → form-hmpgbT1I.js} +18 -2
- package/dist/cjs/form-hmpgbT1I.js.map +1 -0
- package/dist/cjs/{index-g-uSeICs.js → index-DDTyvZD7.js} +5 -2
- package/dist/cjs/index-DDTyvZD7.js.map +1 -0
- package/dist/cjs/{index-DVaLegMK.js → index-DtnvzYhe.js} +7 -3
- package/dist/cjs/index-DtnvzYhe.js.map +1 -0
- package/dist/cjs/index.cjs.js +1 -1
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/mock-pds-modal.cjs.entry.js +3 -3
- package/dist/cjs/mock-pds-modal.cjs.entry.js.map +1 -1
- package/dist/cjs/mock-pds-modal.entry.cjs.js.map +1 -1
- package/dist/cjs/pds-accordion.cjs.entry.js +2 -2
- package/dist/cjs/pds-alert.cjs.entry.js +1 -1
- package/dist/cjs/pds-avatar.cjs.entry.js +2 -2
- package/dist/cjs/pds-box.cjs.entry.js +1 -1
- package/dist/cjs/pds-button.cjs.entry.js +8 -5
- package/dist/cjs/pds-button.cjs.entry.js.map +1 -1
- package/dist/cjs/pds-button.entry.cjs.js.map +1 -1
- package/dist/cjs/pds-checkbox.cjs.entry.js +9 -6
- package/dist/cjs/pds-checkbox.cjs.entry.js.map +1 -1
- package/dist/cjs/pds-checkbox.entry.cjs.js.map +1 -1
- package/dist/cjs/pds-chip.cjs.entry.js +4 -4
- package/dist/cjs/pds-chip.cjs.entry.js.map +1 -1
- package/dist/cjs/pds-chip.entry.cjs.js.map +1 -1
- package/dist/cjs/pds-combobox.cjs.entry.js +719 -51
- package/dist/cjs/pds-combobox.cjs.entry.js.map +1 -1
- package/dist/cjs/pds-combobox.entry.cjs.js.map +1 -1
- package/dist/cjs/pds-copytext.cjs.entry.js +5 -5
- package/dist/cjs/pds-copytext.cjs.entry.js.map +1 -1
- package/dist/cjs/pds-copytext.entry.cjs.js.map +1 -1
- package/dist/cjs/pds-divider.cjs.entry.js +1 -1
- package/dist/cjs/pds-dropdown-menu-item.cjs.entry.js +1 -1
- package/dist/cjs/pds-dropdown-menu-separator.cjs.entry.js +2 -2
- package/dist/cjs/pds-dropdown-menu-separator.cjs.entry.js.map +1 -1
- package/dist/cjs/pds-dropdown-menu-separator.entry.cjs.js.map +1 -1
- package/dist/cjs/pds-dropdown-menu.cjs.entry.js +2 -2
- package/dist/cjs/pds-dropdown-menu.cjs.entry.js.map +1 -1
- package/dist/cjs/pds-dropdown-menu.entry.cjs.js.map +1 -1
- package/dist/cjs/pds-filter.cjs.entry.js +488 -0
- package/dist/cjs/pds-filter.cjs.entry.js.map +1 -0
- package/dist/cjs/pds-filter.entry.cjs.js.map +1 -0
- package/dist/cjs/pds-filters.cjs.entry.js +20 -0
- package/dist/cjs/pds-filters.cjs.entry.js.map +1 -0
- package/dist/cjs/pds-filters.entry.cjs.js.map +1 -0
- package/dist/cjs/pds-icon.cjs.entry.js +1 -1
- package/dist/cjs/pds-image.cjs.entry.js +3 -3
- package/dist/cjs/pds-input.cjs.entry.js +5 -5
- package/dist/cjs/pds-input.cjs.entry.js.map +1 -1
- package/dist/cjs/pds-input.entry.cjs.js.map +1 -1
- package/dist/cjs/pds-link.cjs.entry.js +4 -4
- package/dist/cjs/pds-loader.cjs.entry.js +2 -2
- package/dist/cjs/pds-modal-content.cjs.entry.js +3 -3
- package/dist/cjs/pds-modal-footer.cjs.entry.js +2 -2
- package/dist/cjs/pds-modal-header.cjs.entry.js +2 -2
- package/dist/cjs/pds-modal.cjs.entry.js +5 -5
- package/dist/cjs/pds-modal.cjs.entry.js.map +1 -1
- package/dist/cjs/pds-modal.entry.cjs.js.map +1 -1
- package/dist/cjs/pds-popover.cjs.entry.js +118 -13
- package/dist/cjs/pds-popover.cjs.entry.js.map +1 -1
- package/dist/cjs/pds-popover.entry.cjs.js.map +1 -1
- package/dist/cjs/pds-progress.cjs.entry.js +2 -2
- package/dist/cjs/pds-property.cjs.entry.js +2 -2
- package/dist/cjs/pds-radio.cjs.entry.js +12 -6
- package/dist/cjs/pds-radio.cjs.entry.js.map +1 -1
- package/dist/cjs/pds-radio.entry.cjs.js.map +1 -1
- package/dist/cjs/pds-row.cjs.entry.js +2 -2
- package/dist/cjs/pds-select.cjs.entry.js +21 -6
- package/dist/cjs/pds-select.cjs.entry.js.map +1 -1
- package/dist/cjs/pds-select.entry.cjs.js.map +1 -1
- package/dist/cjs/pds-sortable-item.cjs.entry.js +3 -3
- package/dist/cjs/pds-sortable.cjs.entry.js +2 -2
- package/dist/cjs/pds-switch.cjs.entry.js +9 -6
- package/dist/cjs/pds-switch.cjs.entry.js.map +1 -1
- package/dist/cjs/pds-switch.entry.cjs.js.map +1 -1
- package/dist/cjs/pds-tab.cjs.entry.js +5 -5
- package/dist/cjs/pds-tab.cjs.entry.js.map +1 -1
- package/dist/cjs/pds-tab.entry.cjs.js.map +1 -1
- package/dist/cjs/pds-table-body.cjs.entry.js +2 -2
- package/dist/cjs/pds-table-cell.cjs.entry.js +4 -4
- package/dist/cjs/pds-table-cell.cjs.entry.js.map +1 -1
- package/dist/cjs/pds-table-cell.entry.cjs.js.map +1 -1
- package/dist/cjs/pds-table-head-cell.cjs.entry.js +5 -5
- package/dist/cjs/pds-table-head-cell.cjs.entry.js.map +1 -1
- package/dist/cjs/pds-table-head-cell.entry.cjs.js.map +1 -1
- package/dist/cjs/pds-table-head.cjs.entry.js +3 -3
- package/dist/cjs/pds-table-head.cjs.entry.js.map +1 -1
- package/dist/cjs/pds-table-head.entry.cjs.js.map +1 -1
- package/dist/cjs/pds-table-row.cjs.entry.js +3 -3
- package/dist/cjs/pds-table-row.cjs.entry.js.map +1 -1
- package/dist/cjs/pds-table-row.entry.cjs.js.map +1 -1
- package/dist/cjs/pds-table.cjs.entry.js +2 -2
- package/dist/cjs/pds-table.cjs.entry.js.map +1 -1
- package/dist/cjs/pds-table.entry.cjs.js.map +1 -1
- package/dist/cjs/pds-tabpanel.cjs.entry.js +2 -2
- package/dist/cjs/pds-tabs.cjs.entry.js +15 -5
- package/dist/cjs/pds-tabs.cjs.entry.js.map +1 -1
- package/dist/cjs/pds-tabs.entry.cjs.js.map +1 -1
- package/dist/cjs/pds-text.cjs.entry.js +2 -2
- package/dist/cjs/pds-textarea.cjs.entry.js +11 -8
- package/dist/cjs/pds-textarea.cjs.entry.js.map +1 -1
- package/dist/cjs/pds-textarea.entry.cjs.js.map +1 -1
- package/dist/cjs/pds-toast.cjs.entry.js +4 -4
- package/dist/cjs/pds-tooltip.cjs.entry.js +5 -5
- package/dist/cjs/pds-tooltip.cjs.entry.js.map +1 -1
- package/dist/cjs/pds-tooltip.entry.cjs.js.map +1 -1
- package/dist/cjs/pine-core.cjs.js +2 -2
- package/dist/collection/collection-manifest.json +2 -0
- package/dist/collection/components/pds-button/pds-button.css +29 -3
- package/dist/collection/components/pds-button/pds-button.js +8 -5
- package/dist/collection/components/pds-button/pds-button.js.map +1 -1
- package/dist/collection/components/pds-button/stories/pds-button.stories.js +28 -1
- package/dist/collection/components/pds-checkbox/pds-checkbox.js +7 -4
- package/dist/collection/components/pds-checkbox/pds-checkbox.js.map +1 -1
- package/dist/collection/components/pds-chip/pds-chip.css +2 -2
- package/dist/collection/components/pds-chip/pds-chip.js +17 -5
- package/dist/collection/components/pds-chip/pds-chip.js.map +1 -1
- package/dist/collection/components/pds-combobox/pds-combobox.css +213 -4
- package/dist/collection/components/pds-combobox/pds-combobox.js +837 -54
- package/dist/collection/components/pds-combobox/pds-combobox.js.map +1 -1
- package/dist/collection/components/pds-combobox/stories/pds-combobox.stories.js +182 -2
- package/dist/collection/components/pds-copytext/pds-copytext.css +6 -3
- package/dist/collection/components/pds-copytext/pds-copytext.js +2 -2
- package/dist/collection/components/pds-copytext/pds-copytext.js.map +1 -1
- package/dist/collection/components/pds-copytext/stories/pds-copytext.stories.js +1 -1
- package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-separator/pds-dropdown-menu-separator.css +4 -1
- package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu.css +1 -1
- package/dist/collection/components/pds-filters/pds-filter/filter-interface.js +2 -0
- package/dist/collection/components/pds-filters/pds-filter/filter-interface.js.map +1 -0
- package/dist/collection/components/pds-filters/pds-filter/pds-filter.css +193 -0
- package/dist/collection/components/pds-filters/pds-filter/pds-filter.js +732 -0
- package/dist/collection/components/pds-filters/pds-filter/pds-filter.js.map +1 -0
- package/dist/collection/components/pds-filters/pds-filter/stories/pds-filter.stories.js +93 -0
- package/dist/collection/components/pds-filters/pds-filters.css +10 -0
- package/dist/collection/components/pds-filters/pds-filters.js +45 -0
- package/dist/collection/components/pds-filters/pds-filters.js.map +1 -0
- package/dist/collection/components/pds-filters/stories/pds-filters.stories.js +40 -0
- package/dist/collection/components/pds-image/pds-image.js +2 -2
- package/dist/collection/components/pds-input/pds-input.css +18 -3
- package/dist/collection/components/pds-input/pds-input.js +1 -1
- package/dist/collection/components/pds-input/stories/pds-input.stories.js +42 -0
- package/dist/collection/components/pds-link/pds-link.js +2 -2
- package/dist/collection/components/pds-loader/pds-loader.js +1 -1
- package/dist/collection/components/pds-modal/pds-modal-content/pds-modal-content.js +2 -2
- package/dist/collection/components/pds-modal/pds-modal-footer/pds-modal-footer.js +1 -1
- package/dist/collection/components/pds-modal/pds-modal-header/pds-modal-header.js +1 -1
- package/dist/collection/components/pds-modal/pds-modal.css +2 -2
- package/dist/collection/components/pds-modal/pds-modal.js +3 -3
- package/dist/collection/components/pds-modal/test/mock-pds-modal.js +1 -1
- package/dist/collection/components/pds-popover/pds-popover.css +3 -0
- package/dist/collection/components/pds-popover/pds-popover.js +226 -17
- package/dist/collection/components/pds-popover/pds-popover.js.map +1 -1
- package/dist/collection/components/pds-popover/popover-interface.js +2 -0
- package/dist/collection/components/pds-popover/popover-interface.js.map +1 -0
- package/dist/collection/components/pds-popover/stories/pds-popover.stories.js +1 -1
- package/dist/collection/components/pds-progress/pds-progress.js +1 -1
- package/dist/collection/components/pds-property/pds-property.js +1 -1
- package/dist/collection/components/pds-radio/pds-radio.js +10 -4
- package/dist/collection/components/pds-radio/pds-radio.js.map +1 -1
- package/dist/collection/components/pds-row/pds-row.js +1 -1
- package/dist/collection/components/pds-select/pds-select.css +1 -1
- package/dist/collection/components/pds-select/pds-select.js +19 -2
- package/dist/collection/components/pds-select/pds-select.js.map +1 -1
- package/dist/collection/components/pds-sortable/pds-sortable-item/pds-sortable-item.js +1 -1
- package/dist/collection/components/pds-sortable/pds-sortable.js +1 -1
- package/dist/collection/components/pds-switch/pds-switch.js +7 -4
- package/dist/collection/components/pds-switch/pds-switch.js.map +1 -1
- package/dist/collection/components/pds-table/pds-table-body/pds-table-body.js +1 -1
- package/dist/collection/components/pds-table/pds-table-cell/pds-table-cell.css +1 -1
- package/dist/collection/components/pds-table/pds-table-cell/pds-table-cell.js +2 -2
- package/dist/collection/components/pds-table/pds-table-head/pds-table-head.css +1 -1
- package/dist/collection/components/pds-table/pds-table-head/pds-table-head.js +1 -1
- package/dist/collection/components/pds-table/pds-table-head-cell/pds-table-head-cell.css +1 -1
- package/dist/collection/components/pds-table/pds-table-head-cell/pds-table-head-cell.js +2 -2
- package/dist/collection/components/pds-table/pds-table-row/pds-table-row.css +1 -1
- package/dist/collection/components/pds-table/pds-table-row/pds-table-row.js +1 -1
- package/dist/collection/components/pds-table/pds-table.css +1 -1
- package/dist/collection/components/pds-tabs/pds-tab/pds-tab.css +5 -2
- package/dist/collection/components/pds-tabs/pds-tab/pds-tab.js +3 -3
- package/dist/collection/components/pds-tabs/pds-tabpanel/pds-tabpanel.js +1 -1
- package/dist/collection/components/pds-tabs/pds-tabs.js +15 -4
- package/dist/collection/components/pds-tabs/pds-tabs.js.map +1 -1
- package/dist/collection/components/pds-tabs/stories/pds-tabs.stories.js +1 -1
- package/dist/collection/components/pds-text/pds-text.js +1 -1
- package/dist/collection/components/pds-textarea/pds-textarea.css +1 -1
- package/dist/collection/components/pds-textarea/pds-textarea.js +8 -5
- package/dist/collection/components/pds-textarea/pds-textarea.js.map +1 -1
- package/dist/collection/components/pds-toast/pds-toast.js +3 -3
- package/dist/collection/components/pds-tooltip/pds-tooltip.css +1 -1
- package/dist/collection/components/pds-tooltip/pds-tooltip.js +3 -3
- package/dist/collection/components/pds-tooltip/pds-tooltip.js.map +1 -1
- package/dist/collection/utils/form.js +15 -0
- package/dist/collection/utils/form.js.map +1 -1
- package/dist/collection/utils/types.js.map +1 -1
- package/dist/docs.json +825 -84
- package/dist/esm/form-DwjNklzi.js +47 -0
- package/dist/esm/form-DwjNklzi.js.map +1 -0
- package/dist/esm/{index-BVCWKPy3.js → index-Bf1dou5H.js} +5 -2
- package/dist/esm/index-Bf1dou5H.js.map +1 -0
- package/dist/esm/{index-DrJ5r5Pu.js → index-D4zJBIgl.js} +6 -4
- package/dist/esm/index-D4zJBIgl.js.map +1 -0
- package/dist/esm/index.js +1 -1
- package/dist/esm/loader.js +3 -3
- package/dist/esm/mock-pds-modal.entry.js +3 -3
- package/dist/esm/mock-pds-modal.entry.js.map +1 -1
- package/dist/esm/pds-accordion.entry.js +2 -2
- package/dist/esm/pds-alert.entry.js +1 -1
- package/dist/esm/pds-avatar.entry.js +2 -2
- package/dist/esm/pds-box.entry.js +1 -1
- package/dist/esm/pds-button.entry.js +8 -5
- package/dist/esm/pds-button.entry.js.map +1 -1
- package/dist/esm/pds-checkbox.entry.js +9 -6
- package/dist/esm/pds-checkbox.entry.js.map +1 -1
- package/dist/esm/pds-chip.entry.js +4 -4
- package/dist/esm/pds-chip.entry.js.map +1 -1
- package/dist/esm/pds-combobox.entry.js +719 -51
- package/dist/esm/pds-combobox.entry.js.map +1 -1
- package/dist/esm/pds-copytext.entry.js +5 -5
- package/dist/esm/pds-copytext.entry.js.map +1 -1
- package/dist/esm/pds-divider.entry.js +1 -1
- package/dist/esm/pds-dropdown-menu-item.entry.js +1 -1
- package/dist/esm/pds-dropdown-menu-separator.entry.js +2 -2
- package/dist/esm/pds-dropdown-menu-separator.entry.js.map +1 -1
- package/dist/esm/pds-dropdown-menu.entry.js +2 -2
- package/dist/esm/pds-dropdown-menu.entry.js.map +1 -1
- package/dist/esm/pds-filter.entry.js +486 -0
- package/dist/esm/pds-filter.entry.js.map +1 -0
- package/dist/esm/pds-filters.entry.js +18 -0
- package/dist/esm/pds-filters.entry.js.map +1 -0
- package/dist/esm/pds-icon.entry.js +1 -1
- package/dist/esm/pds-image.entry.js +3 -3
- package/dist/esm/pds-input.entry.js +5 -5
- package/dist/esm/pds-input.entry.js.map +1 -1
- package/dist/esm/pds-link.entry.js +4 -4
- package/dist/esm/pds-loader.entry.js +2 -2
- package/dist/esm/pds-modal-content.entry.js +3 -3
- package/dist/esm/pds-modal-footer.entry.js +2 -2
- package/dist/esm/pds-modal-header.entry.js +2 -2
- package/dist/esm/pds-modal.entry.js +5 -5
- package/dist/esm/pds-modal.entry.js.map +1 -1
- package/dist/esm/pds-popover.entry.js +118 -13
- package/dist/esm/pds-popover.entry.js.map +1 -1
- package/dist/esm/pds-progress.entry.js +2 -2
- package/dist/esm/pds-property.entry.js +2 -2
- package/dist/esm/pds-radio.entry.js +12 -6
- package/dist/esm/pds-radio.entry.js.map +1 -1
- package/dist/esm/pds-row.entry.js +2 -2
- package/dist/esm/pds-select.entry.js +21 -6
- package/dist/esm/pds-select.entry.js.map +1 -1
- package/dist/esm/pds-sortable-item.entry.js +3 -3
- package/dist/esm/pds-sortable.entry.js +2 -2
- package/dist/esm/pds-switch.entry.js +9 -6
- package/dist/esm/pds-switch.entry.js.map +1 -1
- package/dist/esm/pds-tab.entry.js +5 -5
- package/dist/esm/pds-tab.entry.js.map +1 -1
- package/dist/esm/pds-table-body.entry.js +2 -2
- package/dist/esm/pds-table-cell.entry.js +4 -4
- package/dist/esm/pds-table-cell.entry.js.map +1 -1
- package/dist/esm/pds-table-head-cell.entry.js +5 -5
- package/dist/esm/pds-table-head-cell.entry.js.map +1 -1
- package/dist/esm/pds-table-head.entry.js +3 -3
- package/dist/esm/pds-table-head.entry.js.map +1 -1
- package/dist/esm/pds-table-row.entry.js +3 -3
- package/dist/esm/pds-table-row.entry.js.map +1 -1
- package/dist/esm/pds-table.entry.js +2 -2
- package/dist/esm/pds-table.entry.js.map +1 -1
- package/dist/esm/pds-tabpanel.entry.js +2 -2
- package/dist/esm/pds-tabs.entry.js +15 -5
- package/dist/esm/pds-tabs.entry.js.map +1 -1
- package/dist/esm/pds-text.entry.js +2 -2
- package/dist/esm/pds-textarea.entry.js +11 -8
- package/dist/esm/pds-textarea.entry.js.map +1 -1
- package/dist/esm/pds-toast.entry.js +4 -4
- package/dist/esm/pds-tooltip.entry.js +5 -5
- package/dist/esm/pds-tooltip.entry.js.map +1 -1
- package/dist/esm/pine-core.js +3 -3
- package/dist/esm-es5/form-DwjNklzi.js +2 -0
- package/dist/esm-es5/form-DwjNklzi.js.map +1 -0
- package/dist/esm-es5/{index-BVCWKPy3.js → index-Bf1dou5H.js} +2 -2
- package/dist/esm-es5/index-Bf1dou5H.js.map +1 -0
- package/dist/esm-es5/index-D4zJBIgl.js +2 -0
- package/dist/esm-es5/index-D4zJBIgl.js.map +1 -0
- package/dist/esm-es5/index.js +1 -1
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/mock-pds-modal.entry.js +1 -1
- package/dist/esm-es5/mock-pds-modal.entry.js.map +1 -1
- package/dist/esm-es5/pds-accordion.entry.js +1 -1
- package/dist/esm-es5/pds-alert.entry.js +1 -1
- package/dist/esm-es5/pds-avatar.entry.js +1 -1
- package/dist/esm-es5/pds-box.entry.js +1 -1
- package/dist/esm-es5/pds-button.entry.js +1 -1
- package/dist/esm-es5/pds-button.entry.js.map +1 -1
- package/dist/esm-es5/pds-checkbox.entry.js +1 -1
- package/dist/esm-es5/pds-checkbox.entry.js.map +1 -1
- package/dist/esm-es5/pds-chip.entry.js +1 -1
- package/dist/esm-es5/pds-chip.entry.js.map +1 -1
- package/dist/esm-es5/pds-combobox.entry.js +2 -2
- package/dist/esm-es5/pds-combobox.entry.js.map +1 -1
- package/dist/esm-es5/pds-copytext.entry.js +1 -1
- package/dist/esm-es5/pds-copytext.entry.js.map +1 -1
- package/dist/esm-es5/pds-divider.entry.js +1 -1
- package/dist/esm-es5/pds-dropdown-menu-item.entry.js +1 -1
- package/dist/esm-es5/pds-dropdown-menu-separator.entry.js +1 -1
- package/dist/esm-es5/pds-dropdown-menu-separator.entry.js.map +1 -1
- package/dist/esm-es5/pds-dropdown-menu.entry.js +1 -1
- package/dist/esm-es5/pds-dropdown-menu.entry.js.map +1 -1
- package/dist/esm-es5/pds-filter.entry.js +2 -0
- package/dist/esm-es5/pds-filter.entry.js.map +1 -0
- package/dist/esm-es5/pds-filters.entry.js +2 -0
- package/dist/esm-es5/pds-filters.entry.js.map +1 -0
- package/dist/esm-es5/pds-icon.entry.js +1 -1
- package/dist/esm-es5/pds-image.entry.js +1 -1
- package/dist/esm-es5/pds-input.entry.js +1 -1
- package/dist/esm-es5/pds-input.entry.js.map +1 -1
- package/dist/esm-es5/pds-link.entry.js +1 -1
- package/dist/esm-es5/pds-loader.entry.js +1 -1
- package/dist/esm-es5/pds-modal-content.entry.js +1 -1
- package/dist/esm-es5/pds-modal-footer.entry.js +1 -1
- package/dist/esm-es5/pds-modal-header.entry.js +1 -1
- package/dist/esm-es5/pds-modal.entry.js +1 -1
- package/dist/esm-es5/pds-modal.entry.js.map +1 -1
- package/dist/esm-es5/pds-popover.entry.js +1 -1
- package/dist/esm-es5/pds-popover.entry.js.map +1 -1
- package/dist/esm-es5/pds-progress.entry.js +1 -1
- package/dist/esm-es5/pds-property.entry.js +1 -1
- package/dist/esm-es5/pds-radio.entry.js +1 -1
- package/dist/esm-es5/pds-radio.entry.js.map +1 -1
- package/dist/esm-es5/pds-row.entry.js +1 -1
- package/dist/esm-es5/pds-select.entry.js +1 -1
- package/dist/esm-es5/pds-select.entry.js.map +1 -1
- package/dist/esm-es5/pds-sortable-item.entry.js +1 -1
- package/dist/esm-es5/pds-sortable.entry.js +2 -2
- package/dist/esm-es5/pds-switch.entry.js +1 -1
- package/dist/esm-es5/pds-switch.entry.js.map +1 -1
- package/dist/esm-es5/pds-tab.entry.js +1 -1
- package/dist/esm-es5/pds-tab.entry.js.map +1 -1
- package/dist/esm-es5/pds-table-body.entry.js +1 -1
- package/dist/esm-es5/pds-table-cell.entry.js +1 -1
- package/dist/esm-es5/pds-table-cell.entry.js.map +1 -1
- package/dist/esm-es5/pds-table-head-cell.entry.js +1 -1
- package/dist/esm-es5/pds-table-head-cell.entry.js.map +1 -1
- package/dist/esm-es5/pds-table-head.entry.js +1 -1
- package/dist/esm-es5/pds-table-head.entry.js.map +1 -1
- package/dist/esm-es5/pds-table-row.entry.js +1 -1
- package/dist/esm-es5/pds-table-row.entry.js.map +1 -1
- package/dist/esm-es5/pds-table.entry.js +1 -1
- package/dist/esm-es5/pds-table.entry.js.map +1 -1
- package/dist/esm-es5/pds-tabpanel.entry.js +1 -1
- package/dist/esm-es5/pds-tabs.entry.js +1 -1
- package/dist/esm-es5/pds-tabs.entry.js.map +1 -1
- package/dist/esm-es5/pds-text.entry.js +1 -1
- package/dist/esm-es5/pds-textarea.entry.js +1 -1
- package/dist/esm-es5/pds-textarea.entry.js.map +1 -1
- package/dist/esm-es5/pds-toast.entry.js +1 -1
- package/dist/esm-es5/pds-tooltip.entry.js +1 -1
- package/dist/esm-es5/pds-tooltip.entry.js.map +1 -1
- package/dist/esm-es5/pine-core.js +1 -1
- package/dist/pine-core/index.esm.js +1 -1
- package/dist/pine-core/mock-pds-modal.entry.esm.js.map +1 -1
- package/dist/pine-core/p-00346c62.system.entry.js +2 -0
- package/dist/pine-core/p-00346c62.system.entry.js.map +1 -0
- package/dist/pine-core/{p-72b05928.system.entry.js → p-0486ecc6.system.entry.js} +2 -2
- package/dist/pine-core/{p-72b05928.system.entry.js.map → p-0486ecc6.system.entry.js.map} +1 -1
- package/dist/pine-core/p-07e129db.entry.js +2 -0
- package/dist/pine-core/{p-540cfd70.entry.js → p-1009009c.entry.js} +2 -2
- package/dist/pine-core/{p-349a8869.entry.js → p-100de2b7.entry.js} +2 -2
- package/dist/pine-core/p-1b932ee3.entry.js +2 -0
- package/dist/pine-core/p-1b932ee3.entry.js.map +1 -0
- package/dist/pine-core/{p-e2887e78.entry.js → p-1b9d4482.entry.js} +2 -2
- package/dist/pine-core/p-1c32ffb3.entry.js +2 -0
- package/dist/pine-core/p-1c32ffb3.entry.js.map +1 -0
- package/dist/pine-core/p-20466115.entry.js +2 -0
- package/dist/pine-core/p-20466115.entry.js.map +1 -0
- package/dist/pine-core/{p-dfc5ab34.system.entry.js → p-2054b5cb.system.entry.js} +2 -2
- package/dist/pine-core/{p-8726c99d.system.entry.js → p-2597bc59.system.entry.js} +2 -2
- package/dist/pine-core/{p-5a709348.entry.js → p-25cb810d.entry.js} +2 -2
- package/dist/pine-core/{p-a1b51557.system.entry.js → p-25cf2860.system.entry.js} +2 -2
- package/dist/pine-core/{p-54183d70.system.entry.js → p-2aab28b1.system.entry.js} +2 -2
- package/dist/pine-core/p-2b102034.system.entry.js +2 -0
- package/dist/pine-core/p-2b102034.system.entry.js.map +1 -0
- package/dist/pine-core/p-2b12bc55.system.entry.js +2 -0
- package/dist/pine-core/p-2efc646c.system.entry.js +2 -0
- package/dist/pine-core/{p-ecb9edf8.entry.js → p-2fb6f9d5.entry.js} +2 -2
- package/dist/pine-core/p-2fd7f74e.entry.js +2 -0
- package/dist/pine-core/{p-39488f2c.system.entry.js → p-302849cf.system.entry.js} +2 -2
- package/dist/pine-core/{p-51d83489.system.entry.js → p-307f415a.system.entry.js} +2 -2
- package/dist/pine-core/p-378df5eb.system.entry.js +2 -0
- package/dist/pine-core/{p-e08f492a.entry.js → p-39648ce2.entry.js} +2 -2
- package/dist/pine-core/p-3dce3bc0.system.entry.js +2 -0
- package/dist/pine-core/p-3dce3bc0.system.entry.js.map +1 -0
- package/dist/pine-core/{p-5f5b19f4.entry.js → p-41e2fe3a.entry.js} +2 -2
- package/dist/pine-core/p-449ebe39.system.entry.js +2 -0
- package/dist/pine-core/p-45d574f1.system.entry.js +2 -0
- package/dist/pine-core/p-45d574f1.system.entry.js.map +1 -0
- package/dist/pine-core/p-465e3418.system.entry.js +2 -0
- package/dist/pine-core/p-465e3418.system.entry.js.map +1 -0
- package/dist/pine-core/p-4xv5UVkx.system.js.map +1 -0
- package/dist/pine-core/p-538b3902.system.entry.js +2 -0
- package/dist/pine-core/p-538b3902.system.entry.js.map +1 -0
- package/dist/pine-core/{p-c13ef6a7.system.entry.js → p-55d06d0a.system.entry.js} +3 -3
- package/dist/pine-core/{p-075eecf9.entry.js → p-5ac7af9e.entry.js} +2 -2
- package/dist/pine-core/p-61a25ab2.entry.js +2 -0
- package/dist/pine-core/p-61a25ab2.entry.js.map +1 -0
- package/dist/pine-core/p-6381a811.system.entry.js +4 -0
- package/dist/pine-core/p-6381a811.system.entry.js.map +1 -0
- package/dist/pine-core/p-6c36cab6.entry.js +2 -0
- package/dist/pine-core/p-6c36cab6.entry.js.map +1 -0
- package/dist/pine-core/p-6ed297cb.entry.js +2 -0
- package/dist/pine-core/p-6ed297cb.entry.js.map +1 -0
- package/dist/pine-core/p-708e963c.system.entry.js +2 -0
- package/dist/pine-core/p-708e963c.system.entry.js.map +1 -0
- package/dist/pine-core/p-7090d42d.system.entry.js +2 -0
- package/dist/pine-core/p-7090d42d.system.entry.js.map +1 -0
- package/dist/pine-core/{p-4deb7b8c.entry.js → p-725c350c.entry.js} +2 -2
- package/dist/pine-core/{p-4deb7b8c.entry.js.map → p-725c350c.entry.js.map} +1 -1
- package/dist/pine-core/{p-b2b1b7a9.system.entry.js → p-73a2e028.system.entry.js} +2 -2
- package/dist/pine-core/p-75187352.system.entry.js +2 -0
- package/dist/pine-core/p-75187352.system.entry.js.map +1 -0
- package/dist/pine-core/p-786967e8.entry.js +2 -0
- package/dist/pine-core/p-79422986.entry.js +2 -0
- package/dist/pine-core/p-79422986.entry.js.map +1 -0
- package/dist/pine-core/p-81bc089e.entry.js +2 -0
- package/dist/pine-core/p-81bc089e.entry.js.map +1 -0
- package/dist/pine-core/p-85c41629.entry.js +2 -0
- package/dist/pine-core/p-85c41629.entry.js.map +1 -0
- package/dist/pine-core/p-86263a62.entry.js +2 -0
- package/dist/pine-core/p-86263a62.entry.js.map +1 -0
- package/dist/pine-core/p-875d5d5a.system.entry.js +2 -0
- package/dist/pine-core/p-87ed43d5.entry.js +2 -0
- package/dist/pine-core/p-87ed43d5.entry.js.map +1 -0
- package/dist/pine-core/{p-c8122bea.entry.js → p-88773b86.entry.js} +2 -2
- package/dist/pine-core/p-8b4fb3f0.entry.js +2 -0
- package/dist/pine-core/p-8b4fb3f0.entry.js.map +1 -0
- package/dist/pine-core/p-8b5fc4b4.system.entry.js +2 -0
- package/dist/pine-core/p-8b5fc4b4.system.entry.js.map +1 -0
- package/dist/pine-core/{p-e89cb1f2.system.entry.js → p-8f69dd71.system.entry.js} +2 -2
- package/dist/pine-core/p-94183716.entry.js +2 -0
- package/dist/pine-core/p-94183716.entry.js.map +1 -0
- package/dist/pine-core/p-96c27dba.entry.js +2 -0
- package/dist/pine-core/p-96c27dba.entry.js.map +1 -0
- package/dist/pine-core/p-9766923f.entry.js +2 -0
- package/dist/pine-core/p-9766923f.entry.js.map +1 -0
- package/dist/pine-core/p-9b335a9f.entry.js +2 -0
- package/dist/pine-core/p-9b335a9f.entry.js.map +1 -0
- package/dist/pine-core/p-9c579956.system.entry.js +2 -0
- package/dist/pine-core/p-9c579956.system.entry.js.map +1 -0
- package/dist/pine-core/p-9cf2b7a6.entry.js +2 -0
- package/dist/pine-core/p-9cf2b7a6.entry.js.map +1 -0
- package/dist/pine-core/{p-Dh7jcLgJ.system.js.map → p-B-Doh1Wu.system.js.map} +1 -1
- package/dist/pine-core/{p-B1fiSdbt.system.js.map → p-BEgEi4w5.system.js.map} +1 -1
- package/dist/pine-core/p-BG99uNIQ.system.js +2 -0
- package/dist/pine-core/p-BG99uNIQ.system.js.map +1 -0
- package/dist/pine-core/p-BHavepTY.system.js +2 -0
- package/dist/pine-core/p-BHavepTY.system.js.map +1 -0
- package/dist/pine-core/{p-_E9ZEzfO.system.js.map → p-BIjeWHX_.system.js.map} +1 -1
- package/dist/pine-core/{p-EYhpJx2s.system.js.map → p-BJjdD3yf.system.js.map} +1 -1
- package/dist/pine-core/p-BLC5kuro.system.js.map +1 -0
- package/dist/pine-core/p-BPjnTOEL.system.js +2 -0
- package/dist/pine-core/{p-De9tROL-.system.js.map → p-BPjnTOEL.system.js.map} +1 -1
- package/dist/pine-core/{p-D05FrqXr.system.js.map → p-BRIdBthP.system.js.map} +1 -1
- package/dist/pine-core/{p-BVCWKPy3.js → p-Bf1dou5H.js} +2 -2
- package/dist/pine-core/p-Bf1dou5H.js.map +1 -0
- package/dist/pine-core/{p-Kj_j7PHx.system.js.map → p-BkPtASB1.system.js.map} +1 -1
- package/dist/pine-core/p-Bkfqi7zE.system.js.map +1 -0
- package/dist/pine-core/p-ByzULH8m.system.js.map +1 -0
- package/dist/pine-core/p-C1KChp5Q.system.js.map +1 -0
- package/dist/pine-core/p-C2W-sHx5.system.js.map +1 -0
- package/dist/pine-core/{p-CE6b_LzB.system.js.map → p-C3iAHQC6.system.js.map} +1 -1
- package/dist/pine-core/{p-ACQU83St.system.js.map → p-CCQd5PVN.system.js.map} +1 -1
- package/dist/pine-core/{p-ChslVme6.system.js.map → p-CG2PKUWT.system.js.map} +1 -1
- package/dist/pine-core/p-CIBXMJd-.system.js.map +1 -0
- package/dist/pine-core/p-CJNB_wrl.system.js.map +1 -0
- package/dist/pine-core/p-CSa_b_JX.system.js.map +1 -0
- package/dist/pine-core/p-Cid662up.system.js.map +1 -0
- package/dist/pine-core/{p-CWdEolqa.system.js.map → p-Cl47ROcT.system.js.map} +1 -1
- package/dist/pine-core/{p-0KTU2Jt-.system.js.map → p-CnPN6prI.system.js.map} +1 -1
- package/dist/pine-core/p-Cqzmj3D8.system.js.map +1 -0
- package/dist/pine-core/{p-B1FQkx7R.system.js.map → p-Ctdx1tCG.system.js.map} +1 -1
- package/dist/pine-core/{p-3gYSFJIn.system.js.map → p-CwNRZQss.system.js.map} +1 -1
- package/dist/pine-core/p-Cxlv_2hD.system.js.map +1 -0
- package/dist/pine-core/{p-B_C-mRjx.system.js → p-Cxvdulqq.system.js} +2 -2
- package/dist/pine-core/p-Cxvdulqq.system.js.map +1 -0
- package/dist/pine-core/p-D0foS5EP.system.js.map +1 -0
- package/dist/pine-core/p-D4zJBIgl.js +2 -0
- package/dist/pine-core/p-D4zJBIgl.js.map +1 -0
- package/dist/pine-core/{p-MBv7PsKc.system.js.map → p-D52TGCLt.system.js.map} +1 -1
- package/dist/pine-core/{p-CHJgq_z7.system.js.map → p-D7B3vOdC.system.js.map} +1 -1
- package/dist/pine-core/p-DCjZr2HA.system.js.map +1 -0
- package/dist/pine-core/p-DN3VK2yy.system.js.map +1 -0
- package/dist/pine-core/{p-Df_3qA_L.system.js.map → p-DOqVoXeA.system.js.map} +1 -1
- package/dist/pine-core/p-DW3lkDNz.system.js.map +1 -0
- package/dist/pine-core/p-DfrSuf6X.system.js.map +1 -0
- package/dist/pine-core/{p-CLoi4eKt.system.js.map → p-DmWU0f_O.system.js.map} +1 -1
- package/dist/pine-core/p-DpemOPFJ.system.js.map +1 -0
- package/dist/pine-core/p-DpzRSULT.system.js.map +1 -0
- package/dist/pine-core/{p-DYb5Y47j.system.js.map → p-Dq7Wu9rr.system.js.map} +1 -1
- package/dist/pine-core/p-DtdXdmNp.system.js.map +1 -0
- package/dist/pine-core/p-Dw05F6Xg.system.js.map +1 -0
- package/dist/pine-core/p-Dw7zXw_6.system.js.map +1 -0
- package/dist/pine-core/p-DwjNklzi.js +2 -0
- package/dist/pine-core/p-DwjNklzi.js.map +1 -0
- package/dist/pine-core/p-GrmqKqN8.system.js.map +1 -0
- package/dist/pine-core/p-HHZU8rBT.system.js.map +1 -0
- package/dist/pine-core/{p-C5Y492i0.system.js.map → p-M-zMP2QX.system.js.map} +1 -1
- package/dist/pine-core/p-WWWd_vEd.system.js +2 -0
- package/dist/pine-core/p-WWWd_vEd.system.js.map +1 -0
- package/dist/pine-core/p-a2708028.entry.js +2 -0
- package/dist/pine-core/p-a2708028.entry.js.map +1 -0
- package/dist/pine-core/{p-72053224.entry.js → p-a2cb65df.entry.js} +3 -3
- package/dist/pine-core/{p-52d37cc1.entry.js → p-a3785977.entry.js} +2 -2
- package/dist/pine-core/p-a645818a.entry.js +2 -0
- package/dist/pine-core/p-a707a7da.system.entry.js +2 -0
- package/dist/pine-core/p-a707a7da.system.entry.js.map +1 -0
- package/dist/pine-core/{p-f583e5d4.entry.js → p-a9cfaa1f.entry.js} +2 -2
- package/dist/pine-core/p-acd87a10.entry.js +2 -0
- package/dist/pine-core/p-acd87a10.entry.js.map +1 -0
- package/dist/pine-core/p-ae4ec5cf.system.entry.js +2 -0
- package/dist/pine-core/p-ae4ec5cf.system.entry.js.map +1 -0
- package/dist/pine-core/p-b23dd01c.entry.js +2 -0
- package/dist/pine-core/p-b23dd01c.entry.js.map +1 -0
- package/dist/pine-core/p-b669e1d9.entry.js +2 -0
- package/dist/pine-core/p-b9aafec7.system.entry.js +2 -0
- package/dist/pine-core/p-b9aafec7.system.entry.js.map +1 -0
- package/dist/pine-core/{p-52cb152b.system.entry.js → p-bc2fecd4.system.entry.js} +2 -2
- package/dist/pine-core/{p-e3fb0bc2.system.entry.js → p-bc637bed.system.entry.js} +2 -2
- package/dist/pine-core/{p-b6ea3332.entry.js → p-be5ef841.entry.js} +2 -2
- package/dist/pine-core/p-c3579585.system.entry.js +2 -0
- package/dist/pine-core/p-c3579585.system.entry.js.map +1 -0
- package/dist/pine-core/{p-fcb39155.system.entry.js → p-c3f84df8.system.entry.js} +2 -2
- package/dist/pine-core/p-c44d3551.entry.js +2 -0
- package/dist/pine-core/{p-e8d76117.entry.js → p-c55fc47e.entry.js} +2 -2
- package/dist/pine-core/p-cffc98ae.entry.js +3 -0
- package/dist/pine-core/p-cffc98ae.entry.js.map +1 -0
- package/dist/pine-core/{p-5e8badb9.entry.js → p-d1b27fa4.entry.js} +2 -2
- package/dist/pine-core/p-d2b15290.system.entry.js +2 -0
- package/dist/pine-core/p-d2b15290.system.entry.js.map +1 -0
- package/dist/pine-core/p-d4d22aee.entry.js +2 -0
- package/dist/pine-core/p-d4d22aee.entry.js.map +1 -0
- package/dist/pine-core/{p-5da82e8c.system.entry.js → p-dace69e7.system.entry.js} +2 -2
- package/dist/pine-core/p-db12273e.system.entry.js +2 -0
- package/dist/pine-core/p-e34c1224.system.entry.js +2 -0
- package/dist/pine-core/p-e34c1224.system.entry.js.map +1 -0
- package/dist/pine-core/p-e5adbf74.system.entry.js +2 -0
- package/dist/pine-core/p-e5adbf74.system.entry.js.map +1 -0
- package/dist/pine-core/p-e6085566.system.entry.js +2 -0
- package/dist/pine-core/p-e6085566.system.entry.js.map +1 -0
- package/dist/pine-core/p-e683e197.system.entry.js +2 -0
- package/dist/pine-core/p-e683e197.system.entry.js.map +1 -0
- package/dist/pine-core/p-e6b051e8.system.entry.js +2 -0
- package/dist/pine-core/p-e6b051e8.system.entry.js.map +1 -0
- package/dist/pine-core/{p-f55b9f90.system.entry.js → p-e702a8dc.system.entry.js} +2 -2
- package/dist/pine-core/{p-6db1e029.system.entry.js → p-ee583234.system.entry.js} +2 -2
- package/dist/pine-core/p-f15cd180.entry.js +2 -0
- package/dist/pine-core/p-f15cd180.entry.js.map +1 -0
- package/dist/pine-core/{p-0066d249.entry.js → p-f5d78141.entry.js} +2 -2
- package/dist/pine-core/p-f61ee383.system.entry.js +2 -0
- package/dist/pine-core/p-f61ee383.system.entry.js.map +1 -0
- package/dist/pine-core/p-f6d0bd39.entry.js +2 -0
- package/dist/pine-core/p-f6d0bd39.entry.js.map +1 -0
- package/dist/pine-core/{p-52af1890.system.entry.js → p-f911dde3.system.entry.js} +2 -2
- package/dist/pine-core/p-f92d7570.system.entry.js +2 -0
- package/dist/pine-core/p-f92d7570.system.entry.js.map +1 -0
- package/dist/pine-core/{p-BZoPY2dP.system.js.map → p-iazk4jjL.system.js.map} +1 -1
- package/dist/pine-core/{p-CqzGa2j0.system.js.map → p-k9JOparb.system.js.map} +1 -1
- package/dist/pine-core/{p-B7S-9dbT.system.js.map → p-kcOuXqWo.system.js.map} +1 -1
- package/dist/pine-core/{p-c0df3222.entry.js.map → p-ozqEY4Zc.system.js.map} +1 -1
- package/dist/pine-core/{p-CqK-uhv8.system.js.map → p-yaM1kuaC.system.js.map} +1 -1
- package/dist/pine-core/pds-button.entry.esm.js.map +1 -1
- package/dist/pine-core/pds-checkbox.entry.esm.js.map +1 -1
- package/dist/pine-core/pds-chip.entry.esm.js.map +1 -1
- package/dist/pine-core/pds-combobox.entry.esm.js.map +1 -1
- package/dist/pine-core/pds-copytext.entry.esm.js.map +1 -1
- package/dist/pine-core/pds-dropdown-menu-separator.entry.esm.js.map +1 -1
- package/dist/pine-core/pds-dropdown-menu.entry.esm.js.map +1 -1
- package/dist/pine-core/pds-filter.entry.esm.js.map +1 -0
- package/dist/pine-core/pds-filters.entry.esm.js.map +1 -0
- package/dist/pine-core/pds-input.entry.esm.js.map +1 -1
- package/dist/pine-core/pds-modal.entry.esm.js.map +1 -1
- package/dist/pine-core/pds-popover.entry.esm.js.map +1 -1
- package/dist/pine-core/pds-radio.entry.esm.js.map +1 -1
- package/dist/pine-core/pds-select.entry.esm.js.map +1 -1
- package/dist/pine-core/pds-switch.entry.esm.js.map +1 -1
- package/dist/pine-core/pds-tab.entry.esm.js.map +1 -1
- package/dist/pine-core/pds-table-cell.entry.esm.js.map +1 -1
- package/dist/pine-core/pds-table-head-cell.entry.esm.js.map +1 -1
- package/dist/pine-core/pds-table-head.entry.esm.js.map +1 -1
- package/dist/pine-core/pds-table-row.entry.esm.js.map +1 -1
- package/dist/pine-core/pds-table.entry.esm.js.map +1 -1
- package/dist/pine-core/pds-tabs.entry.esm.js.map +1 -1
- package/dist/pine-core/pds-textarea.entry.esm.js.map +1 -1
- package/dist/pine-core/pds-tooltip.entry.esm.js.map +1 -1
- package/dist/pine-core/pine-core.css +1 -1
- package/dist/pine-core/pine-core.esm.js +1 -1
- package/dist/pine-core/pine-core.js +1 -1
- package/dist/types/components/pds-button/pds-button.d.ts +1 -1
- package/dist/types/components/pds-checkbox/pds-checkbox.d.ts +1 -0
- package/dist/types/components/pds-chip/pds-chip.d.ts +3 -2
- package/dist/types/components/pds-combobox/pds-combobox.d.ts +84 -5
- 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 +133 -0
- package/dist/types/components/pds-filters/pds-filters.d.ts +11 -0
- package/dist/types/components/pds-popover/pds-popover.d.ts +33 -2
- package/dist/types/components/pds-popover/popover-interface.d.ts +8 -0
- package/dist/types/components/pds-radio/pds-radio.d.ts +3 -0
- package/dist/types/components/pds-select/pds-select.d.ts +6 -0
- package/dist/types/components/pds-switch/pds-switch.d.ts +1 -0
- package/dist/types/components/pds-tabs/pds-tabs.d.ts +1 -0
- package/dist/types/components/pds-textarea/pds-textarea.d.ts +1 -0
- package/dist/types/components.d.ts +227 -12
- package/dist/types/utils/form.d.ts +9 -0
- package/dist/types/utils/types.d.ts +2 -0
- package/hydrate/index.js +1529 -146
- package/hydrate/index.mjs +1529 -146
- package/package.json +2 -2
- package/dist/cjs/form-Bx4nzJBo.js.map +0 -1
- package/dist/cjs/index-DVaLegMK.js.map +0 -1
- package/dist/cjs/index-g-uSeICs.js.map +0 -1
- package/dist/esm/form-DTL_39D_.js +0 -32
- package/dist/esm/form-DTL_39D_.js.map +0 -1
- package/dist/esm/index-BVCWKPy3.js.map +0 -1
- package/dist/esm/index-DrJ5r5Pu.js.map +0 -1
- package/dist/esm-es5/form-DTL_39D_.js +0 -2
- package/dist/esm-es5/form-DTL_39D_.js.map +0 -1
- package/dist/esm-es5/index-BVCWKPy3.js.map +0 -1
- package/dist/esm-es5/index-DrJ5r5Pu.js +0 -2
- package/dist/esm-es5/index-DrJ5r5Pu.js.map +0 -1
- package/dist/pine-core/p-00616fc9.entry.js +0 -2
- package/dist/pine-core/p-00616fc9.entry.js.map +0 -1
- package/dist/pine-core/p-023d8b71.system.entry.js +0 -2
- package/dist/pine-core/p-023d8b71.system.entry.js.map +0 -1
- package/dist/pine-core/p-051ff780.system.entry.js +0 -2
- package/dist/pine-core/p-051ff780.system.entry.js.map +0 -1
- package/dist/pine-core/p-0TIvNV5c.system.js.map +0 -1
- package/dist/pine-core/p-0de9f8da.system.entry.js +0 -2
- package/dist/pine-core/p-0de9f8da.system.entry.js.map +0 -1
- package/dist/pine-core/p-14a52961.system.entry.js +0 -2
- package/dist/pine-core/p-14a52961.system.entry.js.map +0 -1
- package/dist/pine-core/p-232a2043.entry.js +0 -2
- package/dist/pine-core/p-25190921.entry.js +0 -2
- package/dist/pine-core/p-25190921.entry.js.map +0 -1
- package/dist/pine-core/p-297afc49.system.entry.js +0 -2
- package/dist/pine-core/p-297afc49.system.entry.js.map +0 -1
- package/dist/pine-core/p-2e19f167.system.entry.js +0 -2
- package/dist/pine-core/p-2e19f167.system.entry.js.map +0 -1
- package/dist/pine-core/p-318fd0cf.entry.js +0 -2
- package/dist/pine-core/p-318fd0cf.entry.js.map +0 -1
- package/dist/pine-core/p-346561a6.system.entry.js +0 -2
- package/dist/pine-core/p-346561a6.system.entry.js.map +0 -1
- package/dist/pine-core/p-3pEJO0vO.system.js.map +0 -1
- package/dist/pine-core/p-41d1b164.entry.js +0 -2
- package/dist/pine-core/p-41d1b164.entry.js.map +0 -1
- package/dist/pine-core/p-44087d1c.entry.js +0 -2
- package/dist/pine-core/p-44087d1c.entry.js.map +0 -1
- package/dist/pine-core/p-464dd476.entry.js +0 -2
- package/dist/pine-core/p-464dd476.entry.js.map +0 -1
- package/dist/pine-core/p-47670150.entry.js +0 -3
- package/dist/pine-core/p-47670150.entry.js.map +0 -1
- package/dist/pine-core/p-4bbf3e31.entry.js +0 -2
- package/dist/pine-core/p-4bbf3e31.entry.js.map +0 -1
- package/dist/pine-core/p-4c81420c.entry.js +0 -2
- package/dist/pine-core/p-4c81420c.entry.js.map +0 -1
- package/dist/pine-core/p-503cab1f.entry.js +0 -2
- package/dist/pine-core/p-503cab1f.entry.js.map +0 -1
- package/dist/pine-core/p-50c9e865.entry.js +0 -2
- package/dist/pine-core/p-50c9e865.entry.js.map +0 -1
- package/dist/pine-core/p-5708f95a.entry.js +0 -2
- package/dist/pine-core/p-651861ff.entry.js +0 -2
- package/dist/pine-core/p-651861ff.entry.js.map +0 -1
- package/dist/pine-core/p-66b10d29.entry.js +0 -2
- package/dist/pine-core/p-6d4d4705.system.entry.js +0 -2
- package/dist/pine-core/p-6d4d4705.system.entry.js.map +0 -1
- package/dist/pine-core/p-6f4a6d0b.entry.js +0 -2
- package/dist/pine-core/p-6f4a6d0b.entry.js.map +0 -1
- package/dist/pine-core/p-7004d1ea.system.entry.js +0 -2
- package/dist/pine-core/p-71169b66.system.entry.js +0 -2
- package/dist/pine-core/p-71169b66.system.entry.js.map +0 -1
- package/dist/pine-core/p-73158adf.system.entry.js +0 -2
- package/dist/pine-core/p-73158adf.system.entry.js.map +0 -1
- package/dist/pine-core/p-77336705.entry.js +0 -2
- package/dist/pine-core/p-77336705.entry.js.map +0 -1
- package/dist/pine-core/p-7cb4f0de.entry.js +0 -2
- package/dist/pine-core/p-7cb4f0de.entry.js.map +0 -1
- package/dist/pine-core/p-84949a12.entry.js +0 -2
- package/dist/pine-core/p-84949a12.entry.js.map +0 -1
- package/dist/pine-core/p-8722865f.system.entry.js +0 -2
- package/dist/pine-core/p-8722865f.system.entry.js.map +0 -1
- package/dist/pine-core/p-8999b63d.system.entry.js +0 -2
- package/dist/pine-core/p-8999b63d.system.entry.js.map +0 -1
- package/dist/pine-core/p-8ab7f0d7.system.entry.js +0 -4
- package/dist/pine-core/p-8ab7f0d7.system.entry.js.map +0 -1
- package/dist/pine-core/p-8d7abc83.entry.js +0 -2
- package/dist/pine-core/p-8d7abc83.entry.js.map +0 -1
- package/dist/pine-core/p-92c52409.system.entry.js +0 -2
- package/dist/pine-core/p-92c52409.system.entry.js.map +0 -1
- package/dist/pine-core/p-98fe56d9.entry.js +0 -2
- package/dist/pine-core/p-98fe56d9.entry.js.map +0 -1
- package/dist/pine-core/p-BEn3hirk.system.js +0 -2
- package/dist/pine-core/p-BEn3hirk.system.js.map +0 -1
- package/dist/pine-core/p-BG7_qxVr.system.js +0 -2
- package/dist/pine-core/p-BG7_qxVr.system.js.map +0 -1
- package/dist/pine-core/p-BGbUqsWH.system.js +0 -2
- package/dist/pine-core/p-BGbUqsWH.system.js.map +0 -1
- package/dist/pine-core/p-BKFboaI5.system.js.map +0 -1
- package/dist/pine-core/p-BRygGju8.system.js.map +0 -1
- package/dist/pine-core/p-BVCWKPy3.js.map +0 -1
- package/dist/pine-core/p-BVKCNX0X.system.js.map +0 -1
- package/dist/pine-core/p-B_C-mRjx.system.js.map +0 -1
- package/dist/pine-core/p-C0zqu7Gr.system.js.map +0 -1
- package/dist/pine-core/p-CCQUgOoR.system.js.map +0 -1
- package/dist/pine-core/p-CJT--ZXC.system.js.map +0 -1
- package/dist/pine-core/p-CQ8f8GnD.system.js.map +0 -1
- package/dist/pine-core/p-CcXaBX2A.system.js.map +0 -1
- package/dist/pine-core/p-CgyVIfOY.system.js.map +0 -1
- package/dist/pine-core/p-Cmzqpibo.system.js.map +0 -1
- package/dist/pine-core/p-Co5XZmTN.system.js.map +0 -1
- package/dist/pine-core/p-CpdNWpfd.system.js.map +0 -1
- package/dist/pine-core/p-Czoq9yJM.system.js.map +0 -1
- package/dist/pine-core/p-D9_z2w3q.system.js.map +0 -1
- package/dist/pine-core/p-DHmJZxQk.system.js.map +0 -1
- package/dist/pine-core/p-DTL_39D_.js +0 -2
- package/dist/pine-core/p-DTL_39D_.js.map +0 -1
- package/dist/pine-core/p-DXuK7cEc.system.js.map +0 -1
- package/dist/pine-core/p-De9tROL-.system.js +0 -2
- package/dist/pine-core/p-DrJ5r5Pu.js +0 -2
- package/dist/pine-core/p-DrJ5r5Pu.js.map +0 -1
- package/dist/pine-core/p-IhWWc2L_.system.js.map +0 -1
- package/dist/pine-core/p-UsEwlBJ0.system.js.map +0 -1
- package/dist/pine-core/p-WkrM7Vv0.system.js.map +0 -1
- package/dist/pine-core/p-a04556e4.system.entry.js +0 -2
- package/dist/pine-core/p-a04556e4.system.entry.js.map +0 -1
- package/dist/pine-core/p-a54f1d9e.entry.js +0 -2
- package/dist/pine-core/p-a54f1d9e.entry.js.map +0 -1
- package/dist/pine-core/p-a9895385.system.entry.js +0 -2
- package/dist/pine-core/p-a9895385.system.entry.js.map +0 -1
- package/dist/pine-core/p-aa645f28.system.entry.js +0 -2
- package/dist/pine-core/p-aa645f28.system.entry.js.map +0 -1
- package/dist/pine-core/p-ac37cf0d.entry.js +0 -2
- package/dist/pine-core/p-ac37cf0d.entry.js.map +0 -1
- package/dist/pine-core/p-ba187a35.entry.js +0 -2
- package/dist/pine-core/p-ba187a35.entry.js.map +0 -1
- package/dist/pine-core/p-bb8ef74a.system.entry.js +0 -2
- package/dist/pine-core/p-be939cb0.entry.js +0 -2
- package/dist/pine-core/p-c0df3222.entry.js +0 -2
- package/dist/pine-core/p-c1099665.system.entry.js +0 -2
- package/dist/pine-core/p-c2ffb466.system.entry.js +0 -2
- package/dist/pine-core/p-cd785026.system.entry.js +0 -2
- package/dist/pine-core/p-d8d8fe07.system.entry.js +0 -2
- package/dist/pine-core/p-d8d8fe07.system.entry.js.map +0 -1
- package/dist/pine-core/p-da367b5e.system.entry.js +0 -2
- package/dist/pine-core/p-da367b5e.system.entry.js.map +0 -1
- package/dist/pine-core/p-dc19ce6c.system.entry.js +0 -2
- package/dist/pine-core/p-dc19ce6c.system.entry.js.map +0 -1
- package/dist/pine-core/p-deb8a499.system.entry.js +0 -2
- package/dist/pine-core/p-deb8a499.system.entry.js.map +0 -1
- package/dist/pine-core/p-e65a7d1c.system.entry.js +0 -2
- package/dist/pine-core/p-efa788ea.entry.js +0 -2
- package/dist/pine-core/p-f880adaa.entry.js +0 -2
- package/dist/pine-core/p-fd091234.system.entry.js +0 -2
- package/dist/pine-core/p-fd091234.system.entry.js.map +0 -1
- package/dist/pine-core/p-m6UZWRsP.system.js.map +0 -1
- package/dist/pine-core/p-pQqXEKPh.system.js.map +0 -1
- /package/dist/pine-core/{p-66b10d29.entry.js.map → p-07e129db.entry.js.map} +0 -0
- /package/dist/pine-core/{p-540cfd70.entry.js.map → p-1009009c.entry.js.map} +0 -0
- /package/dist/pine-core/{p-349a8869.entry.js.map → p-100de2b7.entry.js.map} +0 -0
- /package/dist/pine-core/{p-e2887e78.entry.js.map → p-1b9d4482.entry.js.map} +0 -0
- /package/dist/pine-core/{p-dfc5ab34.system.entry.js.map → p-2054b5cb.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-8726c99d.system.entry.js.map → p-2597bc59.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-5a709348.entry.js.map → p-25cb810d.entry.js.map} +0 -0
- /package/dist/pine-core/{p-a1b51557.system.entry.js.map → p-25cf2860.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-54183d70.system.entry.js.map → p-2aab28b1.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-c2ffb466.system.entry.js.map → p-2b12bc55.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-cd785026.system.entry.js.map → p-2efc646c.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-ecb9edf8.entry.js.map → p-2fb6f9d5.entry.js.map} +0 -0
- /package/dist/pine-core/{p-efa788ea.entry.js.map → p-2fd7f74e.entry.js.map} +0 -0
- /package/dist/pine-core/{p-39488f2c.system.entry.js.map → p-302849cf.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-51d83489.system.entry.js.map → p-307f415a.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-bb8ef74a.system.entry.js.map → p-378df5eb.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-e08f492a.entry.js.map → p-39648ce2.entry.js.map} +0 -0
- /package/dist/pine-core/{p-5f5b19f4.entry.js.map → p-41e2fe3a.entry.js.map} +0 -0
- /package/dist/pine-core/{p-7004d1ea.system.entry.js.map → p-449ebe39.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-c13ef6a7.system.entry.js.map → p-55d06d0a.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-075eecf9.entry.js.map → p-5ac7af9e.entry.js.map} +0 -0
- /package/dist/pine-core/{p-b2b1b7a9.system.entry.js.map → p-73a2e028.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-be939cb0.entry.js.map → p-786967e8.entry.js.map} +0 -0
- /package/dist/pine-core/{p-e65a7d1c.system.entry.js.map → p-875d5d5a.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-c8122bea.entry.js.map → p-88773b86.entry.js.map} +0 -0
- /package/dist/pine-core/{p-e89cb1f2.system.entry.js.map → p-8f69dd71.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-72053224.entry.js.map → p-a2cb65df.entry.js.map} +0 -0
- /package/dist/pine-core/{p-52d37cc1.entry.js.map → p-a3785977.entry.js.map} +0 -0
- /package/dist/pine-core/{p-f880adaa.entry.js.map → p-a645818a.entry.js.map} +0 -0
- /package/dist/pine-core/{p-f583e5d4.entry.js.map → p-a9cfaa1f.entry.js.map} +0 -0
- /package/dist/pine-core/{p-5708f95a.entry.js.map → p-b669e1d9.entry.js.map} +0 -0
- /package/dist/pine-core/{p-52cb152b.system.entry.js.map → p-bc2fecd4.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-e3fb0bc2.system.entry.js.map → p-bc637bed.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-b6ea3332.entry.js.map → p-be5ef841.entry.js.map} +0 -0
- /package/dist/pine-core/{p-fcb39155.system.entry.js.map → p-c3f84df8.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-232a2043.entry.js.map → p-c44d3551.entry.js.map} +0 -0
- /package/dist/pine-core/{p-e8d76117.entry.js.map → p-c55fc47e.entry.js.map} +0 -0
- /package/dist/pine-core/{p-5e8badb9.entry.js.map → p-d1b27fa4.entry.js.map} +0 -0
- /package/dist/pine-core/{p-5da82e8c.system.entry.js.map → p-dace69e7.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-c1099665.system.entry.js.map → p-db12273e.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-f55b9f90.system.entry.js.map → p-e702a8dc.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-6db1e029.system.entry.js.map → p-ee583234.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-0066d249.entry.js.map → p-f5d78141.entry.js.map} +0 -0
- /package/dist/pine-core/{p-52af1890.system.entry.js.map → p-f911dde3.system.entry.js.map} +0 -0
|
@@ -45,7 +45,7 @@ export class PdsCombobox {
|
|
|
45
45
|
*/
|
|
46
46
|
this.mode = 'filter';
|
|
47
47
|
/**
|
|
48
|
-
* Determines the combobox trigger: 'input' (editable input)
|
|
48
|
+
* Determines the combobox trigger: 'input' (editable input), 'button' (button-like, non-editable), or 'chip' (chip-like, non-editable).
|
|
49
49
|
* @default 'input'
|
|
50
50
|
*/
|
|
51
51
|
this.trigger = 'input';
|
|
@@ -59,14 +59,33 @@ export class PdsCombobox {
|
|
|
59
59
|
* @default 'secondary'
|
|
60
60
|
*/
|
|
61
61
|
this.triggerVariant = 'secondary';
|
|
62
|
+
/**
|
|
63
|
+
* The sentiment for the chip trigger. Matches Pine chip sentiments.
|
|
64
|
+
* @default 'neutral'
|
|
65
|
+
*/
|
|
66
|
+
this.chipSentiment = 'neutral';
|
|
67
|
+
/**
|
|
68
|
+
* Whether the chip trigger should be displayed in a larger size.
|
|
69
|
+
* @default false
|
|
70
|
+
*/
|
|
71
|
+
this.chipLarge = false;
|
|
72
|
+
/**
|
|
73
|
+
* Whether a dot should be displayed on the chip trigger.
|
|
74
|
+
* @default false
|
|
75
|
+
*/
|
|
76
|
+
this.chipDot = false;
|
|
62
77
|
/**
|
|
63
78
|
* The value of the combobox input.
|
|
64
79
|
*/
|
|
65
80
|
this.value = '';
|
|
66
81
|
/**
|
|
67
|
-
* Internal state for
|
|
82
|
+
* Internal state for the display text shown in the input/trigger
|
|
83
|
+
*/
|
|
84
|
+
this.displayText = '';
|
|
85
|
+
/**
|
|
86
|
+
* Internal state for filtered options and group labels
|
|
68
87
|
*/
|
|
69
|
-
this.
|
|
88
|
+
this.filteredItems = [];
|
|
70
89
|
/**
|
|
71
90
|
* Internal state for the currently highlighted option index
|
|
72
91
|
*/
|
|
@@ -83,45 +102,143 @@ export class PdsCombobox {
|
|
|
83
102
|
* Internal state for the sanitized layout content of the selected option
|
|
84
103
|
*/
|
|
85
104
|
this.selectedOptionLayoutContent = '';
|
|
105
|
+
/**
|
|
106
|
+
* Internal state to track chip properties for automatic rendering
|
|
107
|
+
*/
|
|
108
|
+
this.selectedOptionChipProps = null;
|
|
86
109
|
this.optionEls = [];
|
|
110
|
+
this.allItems = [];
|
|
111
|
+
this.isUpdatingFromSelection = false;
|
|
87
112
|
this.handleInput = (e) => {
|
|
88
113
|
const target = e.target;
|
|
89
|
-
this.
|
|
114
|
+
this.displayText = target.value;
|
|
90
115
|
this.isOpen = true;
|
|
91
116
|
this.filterOptions();
|
|
92
117
|
setTimeout(() => this.openDropdownPositioning(), 0);
|
|
93
118
|
};
|
|
94
|
-
this.
|
|
95
|
-
|
|
96
|
-
this.
|
|
97
|
-
|
|
119
|
+
this.handleInputClick = () => {
|
|
120
|
+
// Open dropdown when input is clicked (but not when tabbed into)
|
|
121
|
+
if (!this.isOpen) {
|
|
122
|
+
this.isOpen = true;
|
|
123
|
+
this.filterOptions();
|
|
124
|
+
this.setInitialHighlightedIndex();
|
|
125
|
+
setTimeout(() => this.openDropdownPositioning(), 0);
|
|
126
|
+
}
|
|
98
127
|
};
|
|
99
128
|
this.handleKeyDown = (e) => {
|
|
100
|
-
if (!this.isOpen && (e.key === 'ArrowDown' || e.key === 'ArrowUp')) {
|
|
129
|
+
if (!this.isOpen && (e.key === 'ArrowDown' || e.key === 'ArrowUp' || (e.altKey && e.key === 'ArrowDown'))) {
|
|
130
|
+
e.preventDefault();
|
|
101
131
|
this.isOpen = true;
|
|
132
|
+
this.filterOptions();
|
|
133
|
+
// Set highlighted index immediately for testing
|
|
134
|
+
this.setInitialHighlightedIndex();
|
|
135
|
+
setTimeout(() => {
|
|
136
|
+
this.openDropdownPositioning();
|
|
137
|
+
// For input trigger, keep focus on input and use aria-activedescendant
|
|
138
|
+
// For button trigger, move focus to first option for keyboard navigation
|
|
139
|
+
if (this.trigger === 'input') {
|
|
140
|
+
this.focusFirstOption();
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
this.focusFirstOptionForArrowKeys();
|
|
144
|
+
}
|
|
145
|
+
}, 0);
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
if (!this.isOpen) {
|
|
102
149
|
return;
|
|
103
150
|
}
|
|
151
|
+
// Get only the option elements (skip group labels) for navigation
|
|
152
|
+
const selectableOptions = this.filteredItems.filter(item => item.tagName === 'OPTION');
|
|
104
153
|
switch (e.key) {
|
|
105
154
|
case 'ArrowDown':
|
|
106
|
-
|
|
155
|
+
e.preventDefault();
|
|
156
|
+
// If no option is highlighted and we have options, start at 0
|
|
157
|
+
if (this.highlightedIndex < 0 && selectableOptions.length > 0) {
|
|
158
|
+
this.highlightedIndex = 0;
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
this.highlightedIndex = Math.min(this.highlightedIndex + 1, selectableOptions.length - 1);
|
|
162
|
+
}
|
|
163
|
+
this.updateOptionFocus();
|
|
107
164
|
break;
|
|
108
165
|
case 'ArrowUp':
|
|
109
|
-
|
|
166
|
+
e.preventDefault();
|
|
167
|
+
// If no option is highlighted and we have options, start at last option
|
|
168
|
+
if (this.highlightedIndex < 0 && selectableOptions.length > 0) {
|
|
169
|
+
this.highlightedIndex = selectableOptions.length - 1;
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
this.highlightedIndex = Math.max(this.highlightedIndex - 1, 0);
|
|
173
|
+
}
|
|
174
|
+
this.updateOptionFocus();
|
|
175
|
+
break;
|
|
176
|
+
case 'Home':
|
|
177
|
+
e.preventDefault();
|
|
178
|
+
if (selectableOptions.length > 0) {
|
|
179
|
+
this.highlightedIndex = 0;
|
|
180
|
+
this.updateOptionFocus();
|
|
181
|
+
}
|
|
182
|
+
break;
|
|
183
|
+
case 'End':
|
|
184
|
+
e.preventDefault();
|
|
185
|
+
if (selectableOptions.length > 0) {
|
|
186
|
+
this.highlightedIndex = selectableOptions.length - 1;
|
|
187
|
+
this.updateOptionFocus();
|
|
188
|
+
}
|
|
189
|
+
break;
|
|
190
|
+
case 'PageDown':
|
|
191
|
+
e.preventDefault();
|
|
192
|
+
if (selectableOptions.length > 0) {
|
|
193
|
+
const nextIndex = Math.min(this.highlightedIndex + 10, selectableOptions.length - 1);
|
|
194
|
+
this.highlightedIndex = nextIndex;
|
|
195
|
+
this.updateOptionFocus();
|
|
196
|
+
}
|
|
197
|
+
break;
|
|
198
|
+
case 'PageUp':
|
|
199
|
+
e.preventDefault();
|
|
200
|
+
if (selectableOptions.length > 0) {
|
|
201
|
+
const prevIndex = Math.max(this.highlightedIndex - 10, 0);
|
|
202
|
+
this.highlightedIndex = prevIndex;
|
|
203
|
+
this.updateOptionFocus();
|
|
204
|
+
}
|
|
110
205
|
break;
|
|
111
206
|
case 'Enter':
|
|
112
|
-
|
|
113
|
-
|
|
207
|
+
e.preventDefault();
|
|
208
|
+
if (this.highlightedIndex >= 0 && this.highlightedIndex < selectableOptions.length) {
|
|
209
|
+
this.handleOptionClick(selectableOptions[this.highlightedIndex]);
|
|
210
|
+
this.restoreFocusToTrigger();
|
|
211
|
+
}
|
|
212
|
+
break;
|
|
213
|
+
case ' ':
|
|
214
|
+
e.preventDefault();
|
|
215
|
+
if (this.highlightedIndex >= 0 && this.highlightedIndex < selectableOptions.length) {
|
|
216
|
+
this.handleOptionClick(selectableOptions[this.highlightedIndex]);
|
|
217
|
+
this.restoreFocusToTrigger();
|
|
114
218
|
}
|
|
115
219
|
break;
|
|
116
220
|
case 'Escape':
|
|
221
|
+
e.preventDefault();
|
|
117
222
|
this.isOpen = false;
|
|
223
|
+
this.highlightedIndex = -1;
|
|
224
|
+
this.isArrowKeyNavigationMode = false; // Reset arrow-key navigation mode
|
|
225
|
+
this.restoreFocusToTrigger();
|
|
226
|
+
break;
|
|
227
|
+
case 'Tab':
|
|
228
|
+
// Allow normal tab behavior to close dropdown and move focus
|
|
229
|
+
this.isOpen = false;
|
|
230
|
+
this.highlightedIndex = -1;
|
|
231
|
+
this.isArrowKeyNavigationMode = false; // Reset arrow-key navigation mode
|
|
118
232
|
break;
|
|
119
233
|
}
|
|
120
234
|
};
|
|
235
|
+
// Track if we're in arrow-key navigation mode (focus should move between options)
|
|
236
|
+
this.isArrowKeyNavigationMode = false;
|
|
121
237
|
// Event handler for option click
|
|
122
238
|
this.onOptionClick = (event) => {
|
|
123
239
|
const idx = Number(event.currentTarget.getAttribute('data-option-index'));
|
|
124
|
-
const
|
|
240
|
+
const selectableOptions = this.filteredItems.filter(item => item.tagName === 'OPTION');
|
|
241
|
+
const option = selectableOptions[idx];
|
|
125
242
|
this.handleOptionClick(option);
|
|
126
243
|
};
|
|
127
244
|
// Event handler for mouse enter on option
|
|
@@ -133,58 +250,233 @@ export class PdsCombobox {
|
|
|
133
250
|
this.onOptionMouseDown = (event) => {
|
|
134
251
|
event.preventDefault();
|
|
135
252
|
};
|
|
253
|
+
// Event handler for option keyboard events
|
|
254
|
+
this.onOptionKeyDown = (event) => {
|
|
255
|
+
// Delegate to main keyboard handler
|
|
256
|
+
this.handleKeyDown(event);
|
|
257
|
+
};
|
|
136
258
|
// Handler for button trigger click
|
|
137
259
|
this.onButtonTriggerClick = () => {
|
|
138
260
|
this.isOpen = !this.isOpen;
|
|
139
|
-
if (this.isOpen)
|
|
261
|
+
if (this.isOpen) {
|
|
262
|
+
this.filterOptions();
|
|
263
|
+
// Set highlighted index and prepare for keyboard navigation
|
|
264
|
+
this.setInitialHighlightedIndex();
|
|
265
|
+
// For button trigger, prepare for arrow-key navigation mode
|
|
266
|
+
this.isArrowKeyNavigationMode = true;
|
|
140
267
|
setTimeout(() => this.openDropdownPositioning(), 0);
|
|
268
|
+
}
|
|
269
|
+
else {
|
|
270
|
+
// Reset navigation mode when closing
|
|
271
|
+
this.isArrowKeyNavigationMode = false;
|
|
272
|
+
}
|
|
141
273
|
};
|
|
142
274
|
// Handler for button trigger keyboard events
|
|
143
275
|
this.onButtonTriggerKeyDown = (e) => {
|
|
144
|
-
if (e.key === 'Enter' || e.key === ' ' || e.key === 'ArrowDown') {
|
|
276
|
+
if ((e.key === 'Enter' || e.key === ' ' || e.key === 'ArrowDown' || e.key === 'ArrowUp') && !this.isOpen) {
|
|
145
277
|
e.preventDefault();
|
|
278
|
+
e.stopPropagation(); // Prevent the event from bubbling and triggering click
|
|
146
279
|
this.isOpen = true;
|
|
147
|
-
this.
|
|
148
|
-
|
|
280
|
+
this.filterOptions();
|
|
281
|
+
// Set highlighted index immediately
|
|
282
|
+
this.setInitialHighlightedIndex();
|
|
283
|
+
setTimeout(() => {
|
|
284
|
+
this.openDropdownPositioning();
|
|
285
|
+
// For all button trigger keyboard opening, focus the first option so subsequent navigation works
|
|
286
|
+
this.focusFirstOptionForArrowKeys();
|
|
287
|
+
}, 0);
|
|
149
288
|
}
|
|
150
289
|
else if (e.key === 'Escape') {
|
|
151
|
-
|
|
290
|
+
e.preventDefault();
|
|
291
|
+
if (this.isOpen) {
|
|
292
|
+
this.isOpen = false;
|
|
293
|
+
this.highlightedIndex = -1;
|
|
294
|
+
this.updateAriaActiveDescendant(); // Clear aria-activedescendant
|
|
295
|
+
this.restoreFocusToTrigger();
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
else if (this.isOpen) {
|
|
299
|
+
// Delegate other keys to main keyboard handler when dropdown is open
|
|
300
|
+
this.handleKeyDown(e);
|
|
301
|
+
}
|
|
302
|
+
};
|
|
303
|
+
// Handler for button trigger keyup events - prevents space key from triggering synthetic click
|
|
304
|
+
this.onButtonTriggerKeyUp = (e) => {
|
|
305
|
+
if (e.key === ' ') {
|
|
306
|
+
e.preventDefault();
|
|
307
|
+
e.stopPropagation();
|
|
152
308
|
}
|
|
153
309
|
};
|
|
154
310
|
// Close dropdown when focus leaves the combobox
|
|
155
311
|
this.onComboboxFocusOut = (event) => {
|
|
312
|
+
var _a;
|
|
156
313
|
const relatedTarget = event.relatedTarget;
|
|
157
|
-
if (
|
|
314
|
+
// Check if the related target is within our shadow DOM (listbox options)
|
|
315
|
+
const isRelatedTargetInListbox = relatedTarget && ((_a = this.listboxEl) === null || _a === void 0 ? void 0 : _a.contains(relatedTarget));
|
|
316
|
+
const isRelatedTargetInCombobox = this.el.contains(relatedTarget);
|
|
317
|
+
// Don't close if focus is moving to an option in the listbox or staying within the combobox
|
|
318
|
+
if (!isRelatedTargetInCombobox && !isRelatedTargetInListbox) {
|
|
158
319
|
this.isOpen = false;
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
320
|
+
this.highlightedIndex = -1;
|
|
321
|
+
this.isArrowKeyNavigationMode = false; // Reset arrow-key navigation mode
|
|
322
|
+
this.updateAriaActiveDescendant(); // Clear aria-activedescendant
|
|
323
|
+
// If there's a selected option but the display text doesn't match, restore the selected option's display text
|
|
324
|
+
if (this.selectedOption && this.displayText !== this.getOptionLabel(this.selectedOption)) {
|
|
325
|
+
this.displayText = this.getOptionLabel(this.selectedOption);
|
|
326
|
+
// The @Watch('selectedOption') will handle value and form internals if needed
|
|
162
327
|
}
|
|
163
328
|
}
|
|
164
329
|
};
|
|
165
330
|
}
|
|
331
|
+
connectedCallback() {
|
|
332
|
+
// Initialize ElementInternals for form association
|
|
333
|
+
if (this.el.attachInternals) {
|
|
334
|
+
this.internals = this.el.attachInternals();
|
|
335
|
+
}
|
|
336
|
+
}
|
|
166
337
|
componentWillLoad() {
|
|
167
338
|
this.updateOptions();
|
|
168
339
|
}
|
|
340
|
+
componentDidLoad() {
|
|
341
|
+
var _a, _b, _c;
|
|
342
|
+
// Check for value-based preselection if no option is selected yet
|
|
343
|
+
if (!this.selectedOption && this.value && this.optionEls.length > 0) {
|
|
344
|
+
const matchingOption = this.optionEls.find(opt => opt.value === this.value);
|
|
345
|
+
if (matchingOption) {
|
|
346
|
+
this.setSelectedOption(matchingOption);
|
|
347
|
+
// Update the display text to show the option's text content
|
|
348
|
+
this.displayText = this.getOptionLabel(matchingOption);
|
|
349
|
+
// Keep this.value as the actual option value
|
|
350
|
+
// this.value remains unchanged (already matches matchingOption.value)
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
// Initialize form value with current value
|
|
354
|
+
if (this.internals) {
|
|
355
|
+
try {
|
|
356
|
+
this.internals.setFormValue((_c = (_b = (_a = this.selectedOption) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : this.value) !== null && _c !== void 0 ? _c : '');
|
|
357
|
+
}
|
|
358
|
+
catch (e) {
|
|
359
|
+
// ElementInternals.setFormValue not available in unit tests
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
}
|
|
169
363
|
handleValueChange() {
|
|
170
364
|
this.filterOptions();
|
|
365
|
+
// Sync with form internals for form association
|
|
366
|
+
if (this.internals) {
|
|
367
|
+
try {
|
|
368
|
+
this.internals.setFormValue(this.value);
|
|
369
|
+
}
|
|
370
|
+
catch (e) {
|
|
371
|
+
// ElementInternals.setFormValue not available in unit tests
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
// Find and select option that matches the value (for external value changes)
|
|
375
|
+
// Only do this if we're not already updating from a selection
|
|
376
|
+
if (!this.isUpdatingFromSelection && this.value && this.optionEls.length > 0) {
|
|
377
|
+
const currentSelectedValue = this.selectedOption ? this.selectedOption.value : null;
|
|
378
|
+
// If the value doesn't match the currently selected option's value, we need to update
|
|
379
|
+
if (this.value !== currentSelectedValue) {
|
|
380
|
+
const matchingOption = this.optionEls.find(opt => opt.value === this.value);
|
|
381
|
+
if (matchingOption) {
|
|
382
|
+
this.isUpdatingFromSelection = true;
|
|
383
|
+
this.setSelectedOption(matchingOption);
|
|
384
|
+
// Update the display text to show the option's text content
|
|
385
|
+
this.displayText = this.getOptionLabel(matchingOption);
|
|
386
|
+
// Keep this.value as the actual option value (already correct)
|
|
387
|
+
this.isUpdatingFromSelection = false;
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
}
|
|
171
391
|
}
|
|
172
392
|
handleSelectedOptionChange() {
|
|
173
393
|
// Update the layout content when selected option changes
|
|
174
394
|
this.selectedOptionLayoutContent = this.selectedOption && this.isOptionLayout(this.selectedOption)
|
|
175
395
|
? this.getOptionLayoutContent(this.selectedOption)
|
|
176
396
|
: '';
|
|
397
|
+
// Update chip properties for automatic rendering when selected option changes
|
|
398
|
+
this.selectedOptionChipProps = this.selectedOption && this.isOptionChip(this.selectedOption)
|
|
399
|
+
? this.getOptionChipProps(this.selectedOption)
|
|
400
|
+
: null;
|
|
401
|
+
// Update display text when selected option changes
|
|
402
|
+
if (this.selectedOption) {
|
|
403
|
+
this.displayText = this.getOptionLabel(this.selectedOption);
|
|
404
|
+
this.value = this.selectedOption.value;
|
|
405
|
+
// Update form internals with the actual option value
|
|
406
|
+
if (this.internals) {
|
|
407
|
+
try {
|
|
408
|
+
this.internals.setFormValue(this.selectedOption.value);
|
|
409
|
+
}
|
|
410
|
+
catch (e) {
|
|
411
|
+
// ElementInternals.setFormValue not available in unit tests
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
else {
|
|
416
|
+
this.displayText = '';
|
|
417
|
+
this.value = '';
|
|
418
|
+
if (this.internals) {
|
|
419
|
+
try {
|
|
420
|
+
this.internals.setFormValue('');
|
|
421
|
+
}
|
|
422
|
+
catch (e) {
|
|
423
|
+
// ElementInternals.setFormValue not available in unit tests
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
}
|
|
177
427
|
}
|
|
178
428
|
updateOptions() {
|
|
179
429
|
var _a;
|
|
180
|
-
// Get all
|
|
430
|
+
// Get all elements from the slot
|
|
181
431
|
const slot = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('slot[name="option"], slot:not([name])');
|
|
182
432
|
if (slot) {
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
433
|
+
const allElements = slot.assignedElements({ flatten: true });
|
|
434
|
+
// Separate options from group labels and flatten optgroups
|
|
435
|
+
this.allItems = [];
|
|
436
|
+
this.optionEls = [];
|
|
437
|
+
allElements.forEach(el => {
|
|
438
|
+
if (el.tagName === 'OPTION') {
|
|
439
|
+
this.optionEls.push(el);
|
|
440
|
+
this.allItems.push(el);
|
|
441
|
+
}
|
|
442
|
+
else if (el.tagName === 'OPTGROUP') {
|
|
443
|
+
const optgroup = el;
|
|
444
|
+
this.allItems.push(optgroup);
|
|
445
|
+
// Add optgroup children (options)
|
|
446
|
+
Array.from(optgroup.children).forEach(child => {
|
|
447
|
+
if (child.tagName === 'OPTION') {
|
|
448
|
+
this.optionEls.push(child);
|
|
449
|
+
this.allItems.push(child);
|
|
450
|
+
}
|
|
451
|
+
});
|
|
452
|
+
}
|
|
453
|
+
else if (el.tagName === 'PDS-TEXT') {
|
|
454
|
+
this.allItems.push(el);
|
|
455
|
+
}
|
|
456
|
+
});
|
|
457
|
+
// Set initial selected option based on value property
|
|
458
|
+
let initialSelected = null;
|
|
459
|
+
// Check if value property matches any option
|
|
460
|
+
if (this.value) {
|
|
461
|
+
initialSelected = this.optionEls.find(opt => opt.value === this.value) || null;
|
|
462
|
+
if (initialSelected) {
|
|
463
|
+
// Update the display text to show the option's text content
|
|
464
|
+
this.displayText = this.getOptionLabel(initialSelected);
|
|
465
|
+
// Keep this.value as the actual option value (already correct)
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
// For chip triggers, ensure we always have a selected option
|
|
469
|
+
if (!initialSelected && this.trigger === 'chip' && this.optionEls.length > 0) {
|
|
470
|
+
initialSelected = this.optionEls[0]; // Select first option as default
|
|
471
|
+
this.value = initialSelected.value;
|
|
472
|
+
this.displayText = this.getOptionLabel(initialSelected);
|
|
473
|
+
console.warn('PDS Combobox: Chip triggers should always have a selected option. Automatically selected the first option.');
|
|
474
|
+
}
|
|
475
|
+
// Update selection if we found a different selected option or if we don't have one
|
|
476
|
+
if (initialSelected && initialSelected !== this.selectedOption) {
|
|
477
|
+
this.setSelectedOption(initialSelected);
|
|
478
|
+
}
|
|
479
|
+
else if (!this.selectedOption && initialSelected) {
|
|
188
480
|
this.setSelectedOption(initialSelected);
|
|
189
481
|
}
|
|
190
482
|
this.filterOptions();
|
|
@@ -234,6 +526,22 @@ export class PdsCombobox {
|
|
|
234
526
|
isOptionLayout(option) {
|
|
235
527
|
return this.customOptionLayouts && option.hasAttribute('data-layout');
|
|
236
528
|
}
|
|
529
|
+
// Helper method to check if option has chip attributes (new automatic approach)
|
|
530
|
+
isOptionChip(option) {
|
|
531
|
+
return option.hasAttribute('chip-sentiment') ||
|
|
532
|
+
option.hasAttribute('chip-large') ||
|
|
533
|
+
option.hasAttribute('chip-icon') ||
|
|
534
|
+
option.hasAttribute('chip-dot');
|
|
535
|
+
}
|
|
536
|
+
// Helper method to get chip properties from option attributes
|
|
537
|
+
getOptionChipProps(option) {
|
|
538
|
+
return {
|
|
539
|
+
sentiment: option.getAttribute('chip-sentiment') || 'neutral',
|
|
540
|
+
large: option.hasAttribute('chip-large'),
|
|
541
|
+
icon: option.getAttribute('chip-icon') || undefined,
|
|
542
|
+
dot: option.hasAttribute('chip-dot')
|
|
543
|
+
};
|
|
544
|
+
}
|
|
237
545
|
// Helper method to check if option is selected (single source of truth)
|
|
238
546
|
isOptionSelected(option) {
|
|
239
547
|
return this.selectedOption === option;
|
|
@@ -241,14 +549,25 @@ export class PdsCombobox {
|
|
|
241
549
|
// Helper method to set selected option (centralized state management)
|
|
242
550
|
setSelectedOption(option) {
|
|
243
551
|
this.selectedOption = option;
|
|
552
|
+
// Immediately update chip properties for automatic rendering to ensure reactivity
|
|
553
|
+
if (option && this.isOptionChip(option)) {
|
|
554
|
+
this.selectedOptionChipProps = this.getOptionChipProps(option);
|
|
555
|
+
}
|
|
556
|
+
else {
|
|
557
|
+
this.selectedOptionChipProps = null;
|
|
558
|
+
}
|
|
244
559
|
}
|
|
245
560
|
filterOptions() {
|
|
561
|
+
// Ensure allItems includes optionEls if not already populated (for edge cases)
|
|
562
|
+
if (this.allItems.length === 0 && this.optionEls.length > 0) {
|
|
563
|
+
this.allItems = [...this.optionEls];
|
|
564
|
+
}
|
|
246
565
|
if (this.mode === 'select-only') {
|
|
247
|
-
this.
|
|
566
|
+
this.filteredItems = [...this.allItems];
|
|
248
567
|
}
|
|
249
568
|
else {
|
|
250
|
-
const val = this.
|
|
251
|
-
|
|
569
|
+
const val = this.displayText.toLowerCase();
|
|
570
|
+
const filteredOptions = this.optionEls.filter(option => {
|
|
252
571
|
// For layout options, search both text content and data-search-text attribute
|
|
253
572
|
if (this.isOptionLayout(option)) {
|
|
254
573
|
const searchText = option.getAttribute('data-search-text') || option.textContent || '';
|
|
@@ -256,6 +575,31 @@ export class PdsCombobox {
|
|
|
256
575
|
}
|
|
257
576
|
return this.getOptionLabel(option).toLowerCase().includes(val);
|
|
258
577
|
});
|
|
578
|
+
// Rebuild filtered items maintaining group structure - simplified approach
|
|
579
|
+
this.filteredItems = [];
|
|
580
|
+
let currentGroupLabel = null;
|
|
581
|
+
this.allItems.forEach(item => {
|
|
582
|
+
if (item.tagName === 'OPTGROUP' || item.tagName === 'PDS-TEXT') {
|
|
583
|
+
currentGroupLabel = item;
|
|
584
|
+
}
|
|
585
|
+
else if (item.tagName === 'OPTION' && filteredOptions.includes(item)) {
|
|
586
|
+
const optionEl = item;
|
|
587
|
+
const parent = optionEl.parentElement;
|
|
588
|
+
let labelToUse = null;
|
|
589
|
+
if (parent && parent.tagName === 'OPTGROUP') {
|
|
590
|
+
// Only use the actual parent optgroup as label
|
|
591
|
+
labelToUse = parent;
|
|
592
|
+
}
|
|
593
|
+
else if (currentGroupLabel && currentGroupLabel.tagName === 'PDS-TEXT') {
|
|
594
|
+
// Allow pds-text to label subsequent top-level options until another label appears
|
|
595
|
+
labelToUse = currentGroupLabel;
|
|
596
|
+
}
|
|
597
|
+
if (labelToUse && !this.filteredItems.includes(labelToUse)) {
|
|
598
|
+
this.filteredItems.push(labelToUse);
|
|
599
|
+
}
|
|
600
|
+
this.filteredItems.push(optionEl);
|
|
601
|
+
}
|
|
602
|
+
});
|
|
259
603
|
}
|
|
260
604
|
this.highlightedIndex = -1;
|
|
261
605
|
}
|
|
@@ -278,7 +622,7 @@ export class PdsCombobox {
|
|
|
278
622
|
left: `${x}px`,
|
|
279
623
|
top: `${y}px`,
|
|
280
624
|
position: 'absolute',
|
|
281
|
-
zIndex:
|
|
625
|
+
zIndex: 'var(--pine-z-index-raised)',
|
|
282
626
|
});
|
|
283
627
|
});
|
|
284
628
|
}
|
|
@@ -288,7 +632,130 @@ export class PdsCombobox {
|
|
|
288
632
|
*/
|
|
289
633
|
async setFocus() {
|
|
290
634
|
var _a;
|
|
291
|
-
(
|
|
635
|
+
if (this.inputEl) {
|
|
636
|
+
this.inputEl.focus();
|
|
637
|
+
}
|
|
638
|
+
else {
|
|
639
|
+
(_a = this.triggerEl) === null || _a === void 0 ? void 0 : _a.focus();
|
|
640
|
+
}
|
|
641
|
+
}
|
|
642
|
+
/**
|
|
643
|
+
* Sets the initial highlighted index when dropdown opens.
|
|
644
|
+
* If there's a selected option, highlight it. Otherwise, highlight the first option.
|
|
645
|
+
*/
|
|
646
|
+
setInitialHighlightedIndex() {
|
|
647
|
+
const selectableOptions = this.filteredItems.filter(item => item.tagName === 'OPTION');
|
|
648
|
+
if (selectableOptions.length === 0) {
|
|
649
|
+
this.highlightedIndex = -1;
|
|
650
|
+
return;
|
|
651
|
+
}
|
|
652
|
+
// If there's a selected option, find its index in the filtered options
|
|
653
|
+
if (this.selectedOption) {
|
|
654
|
+
const selectedIndex = selectableOptions.findIndex(option => option === this.selectedOption);
|
|
655
|
+
if (selectedIndex >= 0) {
|
|
656
|
+
this.highlightedIndex = selectedIndex;
|
|
657
|
+
return;
|
|
658
|
+
}
|
|
659
|
+
}
|
|
660
|
+
// No selected option or selected option not in filtered results, highlight first option
|
|
661
|
+
this.highlightedIndex = 0;
|
|
662
|
+
}
|
|
663
|
+
/**
|
|
664
|
+
* Focus management helper - moves focus to the first option when dropdown opens
|
|
665
|
+
*/
|
|
666
|
+
focusFirstOption() {
|
|
667
|
+
if (this.isOpen) {
|
|
668
|
+
const selectableOptions = this.filteredItems.filter(item => item.tagName === 'OPTION');
|
|
669
|
+
if (selectableOptions.length > 0) {
|
|
670
|
+
this.setInitialHighlightedIndex();
|
|
671
|
+
// DON'T focus the option elements - keep focus on trigger and use aria-activedescendant
|
|
672
|
+
// This prevents the focusout event that was closing the dropdown
|
|
673
|
+
// But still call updateOptionFocus for scrolling
|
|
674
|
+
if (this.listboxEl) {
|
|
675
|
+
this.updateOptionFocus();
|
|
676
|
+
}
|
|
677
|
+
}
|
|
678
|
+
}
|
|
679
|
+
}
|
|
680
|
+
/**
|
|
681
|
+
* Focus management helper - actually focuses the first option when opened via arrow keys
|
|
682
|
+
*/
|
|
683
|
+
focusFirstOptionForArrowKeys() {
|
|
684
|
+
if (this.isOpen) {
|
|
685
|
+
// Set arrow-key navigation mode
|
|
686
|
+
this.isArrowKeyNavigationMode = true;
|
|
687
|
+
const selectableOptions = this.filteredItems.filter(item => item.tagName === 'OPTION');
|
|
688
|
+
if (selectableOptions.length > 0) {
|
|
689
|
+
this.setInitialHighlightedIndex();
|
|
690
|
+
// For arrow key navigation, actually focus the highlighted option
|
|
691
|
+
if (this.listboxEl) {
|
|
692
|
+
const optionElements = this.listboxEl.querySelectorAll('[role="option"]');
|
|
693
|
+
const highlightedOption = optionElements[this.highlightedIndex];
|
|
694
|
+
if (highlightedOption) {
|
|
695
|
+
// Remove tabindex from all options first
|
|
696
|
+
optionElements.forEach(option => {
|
|
697
|
+
option.setAttribute('tabindex', '-1');
|
|
698
|
+
});
|
|
699
|
+
// Set tabindex and focus on highlighted option
|
|
700
|
+
highlightedOption.setAttribute('tabindex', '0');
|
|
701
|
+
highlightedOption.focus();
|
|
702
|
+
highlightedOption.scrollIntoView({ block: 'nearest', behavior: 'smooth' });
|
|
703
|
+
}
|
|
704
|
+
}
|
|
705
|
+
// Update aria-activedescendant on trigger
|
|
706
|
+
this.updateAriaActiveDescendant();
|
|
707
|
+
}
|
|
708
|
+
}
|
|
709
|
+
}
|
|
710
|
+
/**
|
|
711
|
+
* Focus management helper - updates visual state and scrolling for the currently highlighted option
|
|
712
|
+
* Note: We don't actually focus the option to prevent focusout events that close the dropdown
|
|
713
|
+
*/
|
|
714
|
+
updateOptionFocus() {
|
|
715
|
+
if (!this.listboxEl || this.highlightedIndex < 0)
|
|
716
|
+
return;
|
|
717
|
+
const optionElements = this.listboxEl.querySelectorAll('[role="option"]');
|
|
718
|
+
const currentOption = optionElements[this.highlightedIndex];
|
|
719
|
+
if (currentOption) {
|
|
720
|
+
// Check if any option currently has focus OR if we're in arrow-key navigation mode
|
|
721
|
+
const hasOptionFocus = Array.from(optionElements).some(el => el === document.activeElement);
|
|
722
|
+
if (hasOptionFocus || this.isArrowKeyNavigationMode) {
|
|
723
|
+
// We're in arrow-key navigation mode, so actually move focus between options
|
|
724
|
+
optionElements.forEach(option => {
|
|
725
|
+
option.setAttribute('tabindex', '-1');
|
|
726
|
+
});
|
|
727
|
+
currentOption.setAttribute('tabindex', '0');
|
|
728
|
+
currentOption.focus();
|
|
729
|
+
}
|
|
730
|
+
// Always scroll the option into view
|
|
731
|
+
currentOption.scrollIntoView({ block: 'nearest', behavior: 'smooth' });
|
|
732
|
+
}
|
|
733
|
+
// Always update aria-activedescendant on the trigger element
|
|
734
|
+
this.updateAriaActiveDescendant();
|
|
735
|
+
}
|
|
736
|
+
/**
|
|
737
|
+
* Updates aria-activedescendant on the trigger element
|
|
738
|
+
*/
|
|
739
|
+
updateAriaActiveDescendant() {
|
|
740
|
+
if (this.triggerEl && this.highlightedIndex >= 0) {
|
|
741
|
+
this.triggerEl.setAttribute('aria-activedescendant', `pds-combobox-option-${this.highlightedIndex}`);
|
|
742
|
+
}
|
|
743
|
+
else if (this.triggerEl) {
|
|
744
|
+
this.triggerEl.removeAttribute('aria-activedescendant');
|
|
745
|
+
}
|
|
746
|
+
}
|
|
747
|
+
/**
|
|
748
|
+
* Focus management helper - restores focus to the trigger element
|
|
749
|
+
*/
|
|
750
|
+
restoreFocusToTrigger() {
|
|
751
|
+
setTimeout(() => {
|
|
752
|
+
if (this.inputEl) {
|
|
753
|
+
this.inputEl.focus();
|
|
754
|
+
}
|
|
755
|
+
else if (this.triggerEl) {
|
|
756
|
+
this.triggerEl.focus();
|
|
757
|
+
}
|
|
758
|
+
}, 0);
|
|
292
759
|
}
|
|
293
760
|
/**
|
|
294
761
|
* Gets the value of the currently selected option.
|
|
@@ -298,7 +765,7 @@ export class PdsCombobox {
|
|
|
298
765
|
}
|
|
299
766
|
// Get the label of the selected option
|
|
300
767
|
get selectedLabel() {
|
|
301
|
-
return this.
|
|
768
|
+
return this.displayText || '';
|
|
302
769
|
}
|
|
303
770
|
// Get the layout content of the selected option for button trigger
|
|
304
771
|
get selectedLayoutContent() {
|
|
@@ -308,30 +775,148 @@ export class PdsCombobox {
|
|
|
308
775
|
get selectedHasLayout() {
|
|
309
776
|
return this.selectedOption ? this.isOptionLayout(this.selectedOption) : false;
|
|
310
777
|
}
|
|
778
|
+
// Extract chip sentiment from selected option's attributes, layout content, or slotted trigger content
|
|
779
|
+
get selectedChipSentiment() {
|
|
780
|
+
// First priority: Check selected option's chip attributes (new automatic approach)
|
|
781
|
+
if (this.selectedOption && this.isOptionChip(this.selectedOption)) {
|
|
782
|
+
const sentiment = this.selectedOption.getAttribute('chip-sentiment');
|
|
783
|
+
if (sentiment)
|
|
784
|
+
return sentiment;
|
|
785
|
+
}
|
|
786
|
+
// Second priority: Check selected option's layout content (existing custom layout approach)
|
|
787
|
+
if (this.selectedOption && this.isOptionLayout(this.selectedOption)) {
|
|
788
|
+
const chipElement = this.selectedOption.querySelector('pds-chip');
|
|
789
|
+
const sentiment = chipElement === null || chipElement === void 0 ? void 0 : chipElement.getAttribute('sentiment');
|
|
790
|
+
if (sentiment)
|
|
791
|
+
return sentiment;
|
|
792
|
+
}
|
|
793
|
+
// Third priority: Check if we have custom trigger content with a chip (initial state)
|
|
794
|
+
if (this.customTriggerContent) {
|
|
795
|
+
const slottedChip = this.el.querySelector('pds-chip[slot="trigger-content"]');
|
|
796
|
+
if (slottedChip) {
|
|
797
|
+
const sentiment = slottedChip.getAttribute('sentiment');
|
|
798
|
+
if (sentiment)
|
|
799
|
+
return sentiment;
|
|
800
|
+
}
|
|
801
|
+
}
|
|
802
|
+
// Fallback: Use component props
|
|
803
|
+
return this.chipSentiment;
|
|
804
|
+
}
|
|
805
|
+
// Extract chip large from selected option's attributes, layout content, or slotted trigger content
|
|
806
|
+
get selectedChipLarge() {
|
|
807
|
+
// First priority: Check selected option's chip attributes (new automatic approach)
|
|
808
|
+
if (this.selectedOption && this.isOptionChip(this.selectedOption)) {
|
|
809
|
+
if (this.selectedOption.hasAttribute('chip-large'))
|
|
810
|
+
return true;
|
|
811
|
+
}
|
|
812
|
+
// Second priority: Check selected option's layout content (existing custom layout approach)
|
|
813
|
+
if (this.selectedOption && this.isOptionLayout(this.selectedOption)) {
|
|
814
|
+
const chipElement = this.selectedOption.querySelector('pds-chip');
|
|
815
|
+
if (chipElement === null || chipElement === void 0 ? void 0 : chipElement.hasAttribute('large'))
|
|
816
|
+
return true;
|
|
817
|
+
}
|
|
818
|
+
// Third priority: Check if we have custom trigger content with a chip (initial state)
|
|
819
|
+
if (this.customTriggerContent) {
|
|
820
|
+
const slottedChip = this.el.querySelector('pds-chip[slot="trigger-content"]');
|
|
821
|
+
if (slottedChip && slottedChip.hasAttribute('large')) {
|
|
822
|
+
return true;
|
|
823
|
+
}
|
|
824
|
+
}
|
|
825
|
+
// Fallback: Use component props
|
|
826
|
+
return this.chipLarge;
|
|
827
|
+
}
|
|
828
|
+
// Extract chip icon from selected option's attributes, layout content, or slotted trigger content
|
|
829
|
+
get selectedChipIcon() {
|
|
830
|
+
// First priority: Check selected option's chip attributes (new automatic approach)
|
|
831
|
+
if (this.selectedOption && this.isOptionChip(this.selectedOption)) {
|
|
832
|
+
const icon = this.selectedOption.getAttribute('chip-icon');
|
|
833
|
+
if (icon)
|
|
834
|
+
return icon;
|
|
835
|
+
}
|
|
836
|
+
// Second priority: Check selected option's layout content (existing custom layout approach)
|
|
837
|
+
if (this.selectedOption && this.isOptionLayout(this.selectedOption)) {
|
|
838
|
+
const chipElement = this.selectedOption.querySelector('pds-chip');
|
|
839
|
+
const icon = chipElement === null || chipElement === void 0 ? void 0 : chipElement.getAttribute('icon');
|
|
840
|
+
if (icon)
|
|
841
|
+
return icon;
|
|
842
|
+
}
|
|
843
|
+
// Third priority: Check if we have custom trigger content with a chip (initial state)
|
|
844
|
+
if (this.customTriggerContent) {
|
|
845
|
+
const slottedChip = this.el.querySelector('pds-chip[slot="trigger-content"]');
|
|
846
|
+
if (slottedChip) {
|
|
847
|
+
const icon = slottedChip.getAttribute('icon');
|
|
848
|
+
if (icon)
|
|
849
|
+
return icon;
|
|
850
|
+
}
|
|
851
|
+
}
|
|
852
|
+
// Fallback: Use component props
|
|
853
|
+
return this.chipIcon;
|
|
854
|
+
}
|
|
855
|
+
// Extract chip dot from selected option's attributes, layout content, or slotted trigger content
|
|
856
|
+
get selectedChipDot() {
|
|
857
|
+
// First priority: Check selected option's chip attributes (new automatic approach)
|
|
858
|
+
if (this.selectedOption && this.isOptionChip(this.selectedOption)) {
|
|
859
|
+
if (this.selectedOption.hasAttribute('chip-dot'))
|
|
860
|
+
return true;
|
|
861
|
+
}
|
|
862
|
+
// Second priority: Check selected option's layout content (existing custom layout approach)
|
|
863
|
+
if (this.selectedOption && this.isOptionLayout(this.selectedOption)) {
|
|
864
|
+
const chipElement = this.selectedOption.querySelector('pds-chip');
|
|
865
|
+
if (chipElement === null || chipElement === void 0 ? void 0 : chipElement.hasAttribute('dot'))
|
|
866
|
+
return true;
|
|
867
|
+
}
|
|
868
|
+
// Third priority: Check if we have custom trigger content with a chip (initial state)
|
|
869
|
+
if (this.customTriggerContent) {
|
|
870
|
+
const slottedChip = this.el.querySelector('pds-chip[slot="trigger-content"]');
|
|
871
|
+
if (slottedChip && slottedChip.hasAttribute('dot')) {
|
|
872
|
+
return true;
|
|
873
|
+
}
|
|
874
|
+
}
|
|
875
|
+
// Fallback: Use component props
|
|
876
|
+
return this.chipDot;
|
|
877
|
+
}
|
|
311
878
|
handleOptionClick(option) {
|
|
312
879
|
// Update reactive state - single source of truth
|
|
880
|
+
// The @Watch('selectedOption') will handle displayText, value, and form internals
|
|
313
881
|
this.setSelectedOption(option);
|
|
314
|
-
this.value = this.getOptionLabel(option);
|
|
315
882
|
this.isOpen = false;
|
|
316
883
|
this.pdsComboboxChange.emit({ value: option.value });
|
|
317
884
|
}
|
|
318
885
|
renderDropdown() {
|
|
319
|
-
if (!this.isOpen || this.
|
|
886
|
+
if (!this.isOpen || this.filteredItems.length === 0) {
|
|
887
|
+
return null;
|
|
888
|
+
}
|
|
889
|
+
let optionIndex = 0;
|
|
890
|
+
const selectableOptions = this.filteredItems.filter(item => item.tagName === 'OPTION');
|
|
891
|
+
return (h("ul", { class: "pds-combobox__listbox", role: "listbox", id: "pds-combobox-listbox", "aria-label": this.label || 'Options', "aria-multiselectable": "false", ref: el => (this.listboxEl = el) }, this.filteredItems.map((item, itemIdx) => {
|
|
892
|
+
if (item.tagName === 'OPTGROUP') {
|
|
893
|
+
const optgroup = item;
|
|
894
|
+
return (h("li", { key: `optgroup-${itemIdx}`, class: "pds-combobox__group-label", role: "presentation", "aria-label": optgroup.label }, optgroup.label));
|
|
895
|
+
}
|
|
896
|
+
else if (item.tagName === 'PDS-TEXT') {
|
|
897
|
+
const pdsText = item;
|
|
898
|
+
return (h("li", { key: `pds-text-${itemIdx}`, class: "pds-combobox__group-label", role: "presentation" }, pdsText.textContent));
|
|
899
|
+
}
|
|
900
|
+
else if (item.tagName === 'OPTION') {
|
|
901
|
+
const option = item;
|
|
902
|
+
const isSelected = this.isOptionSelected(option);
|
|
903
|
+
const isHighlighted = this.highlightedIndex === optionIndex;
|
|
904
|
+
const isLayout = this.isOptionLayout(option);
|
|
905
|
+
const isChip = this.isOptionChip(option);
|
|
906
|
+
const currentOptionIndex = optionIndex++;
|
|
907
|
+
return (h("li", { key: option.value, id: `pds-combobox-option-${currentOptionIndex}`, role: "option", "aria-selected": isSelected ? 'true' : 'false', "aria-setsize": selectableOptions.length, "aria-posinset": currentOptionIndex + 1, "aria-label": isLayout || isChip ? option.getAttribute('aria-label') || this.getOptionLabel(option) : undefined, tabindex: isHighlighted ? '0' : '-1', class: {
|
|
908
|
+
'pds-combobox__option': true,
|
|
909
|
+
'pds-combobox__option--highlighted': isHighlighted,
|
|
910
|
+
'pds-combobox__option--layout': isLayout,
|
|
911
|
+
'pds-combobox__option--chip': isChip,
|
|
912
|
+
}, "data-option-index": currentOptionIndex, onMouseDown: this.onOptionMouseDown, onClick: this.onOptionClick, onMouseEnter: this.onOptionMouseEnter, onKeyDown: this.onOptionKeyDown }, isLayout ? (h("pds-box", { class: "pds-combobox__option-layout-wrapper", innerHTML: this.getOptionLayoutContent(option) })) : isChip ? (this.renderOptionChip(option)) : (this.getOptionLabel(option)), isSelected && h("pds-icon", { icon: "check", size: "regular", class: "pds-combobox__option-check" })));
|
|
913
|
+
}
|
|
320
914
|
return null;
|
|
321
|
-
return (h("ul", { class: "pds-combobox__listbox", role: "listbox", id: "pds-combobox-listbox", ref: el => (this.listboxEl = el) }, this.filteredOptions.map((option, idx) => {
|
|
322
|
-
const isSelected = this.isOptionSelected(option);
|
|
323
|
-
const isHighlighted = this.highlightedIndex === idx;
|
|
324
|
-
const isLayout = this.isOptionLayout(option);
|
|
325
|
-
return (h("li", { key: option.value, id: `pds-combobox-option-${idx}`, role: "option", "aria-selected": isSelected ? 'true' : 'false', class: {
|
|
326
|
-
'pds-combobox__option': true,
|
|
327
|
-
'pds-combobox__option--highlighted': isHighlighted,
|
|
328
|
-
'pds-combobox__option--layout': isLayout,
|
|
329
|
-
}, "data-option-index": idx, onMouseDown: this.onOptionMouseDown, onClick: this.onOptionClick, onMouseEnter: this.onOptionMouseEnter }, isLayout ? (h("pds-box", { class: "pds-combobox__option-layout-wrapper", innerHTML: this.getOptionLayoutContent(option) })) : (this.getOptionLabel(option)), isSelected && h("pds-icon", { icon: "check", size: "regular", class: "pds-combobox__option-check" })));
|
|
330
915
|
})));
|
|
331
916
|
}
|
|
332
917
|
// Helper method to render the caret icon
|
|
333
918
|
renderCaretIcon() {
|
|
334
|
-
return h("pds-icon", { icon: "caret-down", "aria-hidden": "true",
|
|
919
|
+
return h("pds-icon", { icon: "caret-down", "aria-hidden": "true", class: "pds-combobox__button-trigger-chevron" });
|
|
335
920
|
}
|
|
336
921
|
// Helper method to render layout content
|
|
337
922
|
renderLayoutContent() {
|
|
@@ -345,6 +930,23 @@ export class PdsCombobox {
|
|
|
345
930
|
shouldShowLayoutContent() {
|
|
346
931
|
return this.selectedHasLayout && !!this.selectedLayoutContent;
|
|
347
932
|
}
|
|
933
|
+
// Helper method to build chip trigger CSS classes
|
|
934
|
+
getChipTriggerClass() {
|
|
935
|
+
const classes = ['pds-combobox__chip-trigger'];
|
|
936
|
+
// Add sentiment class
|
|
937
|
+
classes.push(`pds-combobox__chip-trigger--${this.selectedChipSentiment}`);
|
|
938
|
+
// Always use dropdown variant for chip triggers
|
|
939
|
+
classes.push('pds-combobox__chip-trigger--dropdown');
|
|
940
|
+
// Add large class if needed
|
|
941
|
+
if (this.selectedChipLarge) {
|
|
942
|
+
classes.push('pds-combobox__chip-trigger--large');
|
|
943
|
+
}
|
|
944
|
+
// Add dot class if needed
|
|
945
|
+
if (this.selectedChipDot) {
|
|
946
|
+
classes.push('pds-combobox__chip-trigger--dot');
|
|
947
|
+
}
|
|
948
|
+
return classes.join(' ');
|
|
949
|
+
}
|
|
348
950
|
renderButtonTriggerContent() {
|
|
349
951
|
// Case 1: Custom trigger content with layout priority
|
|
350
952
|
if (this.customTriggerContent) {
|
|
@@ -361,15 +963,81 @@ export class PdsCombobox {
|
|
|
361
963
|
// Case 3: Standard mode with default text content
|
|
362
964
|
return [this.renderDefaultContent(), this.renderCaretIcon()];
|
|
363
965
|
}
|
|
966
|
+
renderChipTriggerContent() {
|
|
967
|
+
// Case 1: Custom trigger content with layout priority
|
|
968
|
+
if (this.customTriggerContent) {
|
|
969
|
+
if (this.shouldShowLayoutContent()) {
|
|
970
|
+
// When using custom layouts, the chip handles its own dropdown arrow
|
|
971
|
+
return this.renderChipTriggerLayoutContent();
|
|
972
|
+
}
|
|
973
|
+
// Fall back to slot content when no layout is available - chip handles its own dropdown arrow
|
|
974
|
+
return h("slot", { name: "trigger-content" });
|
|
975
|
+
}
|
|
976
|
+
// Case 2: Standard mode with layout content
|
|
977
|
+
if (this.shouldShowLayoutContent()) {
|
|
978
|
+
// When using custom layouts, the chip handles its own dropdown arrow
|
|
979
|
+
return this.renderChipTriggerLayoutContent();
|
|
980
|
+
}
|
|
981
|
+
// Case 3: Automatic chip mode - selected option has chip attributes
|
|
982
|
+
if (this.selectedOption && this.selectedOptionChipProps) {
|
|
983
|
+
// Render as chip automatically - chip handles its own dropdown arrow
|
|
984
|
+
return this.renderSelectedOptionAsChip();
|
|
985
|
+
}
|
|
986
|
+
// Case 4: Standard mode with default text content
|
|
987
|
+
return [
|
|
988
|
+
this.renderChipTriggerDefaultContent(),
|
|
989
|
+
this.renderCaretIcon()
|
|
990
|
+
];
|
|
991
|
+
}
|
|
992
|
+
// Helper method to render selected option as chip for trigger (automatic approach)
|
|
993
|
+
renderSelectedOptionAsChip() {
|
|
994
|
+
if (!this.selectedOption || !this.selectedOptionChipProps)
|
|
995
|
+
return null;
|
|
996
|
+
return (h("pds-chip", { sentiment: this.selectedOptionChipProps.sentiment, variant: "dropdown" // Always use dropdown variant for triggers
|
|
997
|
+
,
|
|
998
|
+
large: this.selectedOptionChipProps.large, icon: this.selectedOptionChipProps.icon, dot: this.selectedOptionChipProps.dot, class: "pds-combobox__chip-trigger-auto" }, this.getOptionLabel(this.selectedOption)));
|
|
999
|
+
}
|
|
1000
|
+
// Helper method to render chip trigger layout content
|
|
1001
|
+
renderChipTriggerLayoutContent() {
|
|
1002
|
+
return (h("div", { class: "pds-combobox__chip-trigger-layout-wrapper", innerHTML: this.getModifiedLayoutContentForTrigger() }));
|
|
1003
|
+
}
|
|
1004
|
+
// Helper method to modify layout content for trigger use (ensure dropdown variant)
|
|
1005
|
+
getModifiedLayoutContentForTrigger() {
|
|
1006
|
+
let content = this.selectedLayoutContent;
|
|
1007
|
+
// If the content contains a pds-chip, ensure it has variant="dropdown"
|
|
1008
|
+
if (content.includes('<pds-chip')) {
|
|
1009
|
+
// Use a temporary div to parse and modify the HTML
|
|
1010
|
+
const tempDiv = document.createElement('div');
|
|
1011
|
+
tempDiv.innerHTML = content;
|
|
1012
|
+
const chipElement = tempDiv.querySelector('pds-chip');
|
|
1013
|
+
if (chipElement) {
|
|
1014
|
+
chipElement.setAttribute('variant', 'dropdown');
|
|
1015
|
+
content = tempDiv.innerHTML;
|
|
1016
|
+
}
|
|
1017
|
+
}
|
|
1018
|
+
return content;
|
|
1019
|
+
}
|
|
1020
|
+
// Helper method to render chip trigger default content
|
|
1021
|
+
renderChipTriggerDefaultContent() {
|
|
1022
|
+
return (h("span", { class: "pds-combobox__chip-trigger-label" }, this.selectedChipIcon && h("pds-icon", { icon: this.selectedChipIcon, class: "pds-combobox__chip-trigger-icon" }), this.selectedLabel || this.placeholder));
|
|
1023
|
+
}
|
|
1024
|
+
// Helper method to render option as chip (new automatic approach)
|
|
1025
|
+
renderOptionChip(option) {
|
|
1026
|
+
const chipProps = this.getOptionChipProps(option);
|
|
1027
|
+
return (h("pds-chip", { sentiment: chipProps.sentiment, variant: "text" // Dropdown options use text variant, not dropdown
|
|
1028
|
+
,
|
|
1029
|
+
large: chipProps.large, icon: chipProps.icon, dot: chipProps.dot, class: "pds-combobox__option-chip" }, this.getOptionLabel(option)));
|
|
1030
|
+
}
|
|
364
1031
|
render() {
|
|
365
1032
|
const triggerClass = `pds-combobox__button-trigger pds-combobox__button-trigger--${this.triggerVariant}`;
|
|
366
|
-
return (h(Host, { key: '
|
|
1033
|
+
return (h(Host, { key: 'd62992abd6eae05cfff52cfc0272490ca6370291' }, h("div", { key: 'affff971535065b7352daee494742bf7b65a61f4', class: "pds-combobox", tabIndex: -1, onFocusout: this.onComboboxFocusOut }, this.label && (h("label", { key: 'c27f88928932bc4535698cb88595b1559cb22e55', htmlFor: this.componentId, class: "pds-combobox__label" }, h("span", { key: '0b65e67897735819cb2a4dc7d6d7d355af2f28d5', class: this.hideLabel ? 'visually-hidden' : '' }, this.label))), this.trigger === 'input' ? (h("div", { class: "pds-combobox__input-wrapper", style: { width: this.triggerWidth } }, h("input", { ref: el => {
|
|
367
1034
|
this.inputEl = el;
|
|
368
1035
|
this.triggerEl = el;
|
|
369
|
-
}, class: "pds-combobox__input",
|
|
1036
|
+
}, class: "pds-combobox__input", type: "text", role: "combobox", "aria-autocomplete": "list", "aria-controls": "pds-combobox-listbox", "aria-activedescendant": this.isOpen && this.highlightedIndex >= 0 ? `pds-combobox-option-${this.highlightedIndex}` : undefined, "aria-expanded": this.isOpen ? 'true' : 'false', "aria-disabled": this.disabled ? 'true' : 'false', "aria-label": this.hideLabel ? this.label : undefined, id: this.componentId, value: this.displayText, placeholder: this.placeholder, disabled: this.disabled, onInput: this.handleInput, onClick: this.handleInputClick, onKeyDown: this.handleKeyDown, autocomplete: "off", part: "input" }), h("pds-icon", { icon: "enlarge", "aria-hidden": "true", class: "pds-combobox__input-icon" }))) : this.trigger === 'chip' ? (h("div", { class: this.getChipTriggerClass(), style: { width: this.triggerWidth }, role: "combobox", "aria-haspopup": "listbox", "aria-controls": "pds-combobox-listbox", "aria-activedescendant": this.isOpen && this.highlightedIndex >= 0 ? `pds-combobox-option-${this.highlightedIndex}` : undefined, "aria-expanded": this.isOpen ? 'true' : 'false', "aria-disabled": this.disabled ? 'true' : 'false', "aria-label": this.hideLabel ? this.label : undefined, id: this.componentId, tabIndex: this.disabled ? -1 : 0, onClick: this.onButtonTriggerClick, "data-layout": this.customTriggerContent, onKeyDown: this.onButtonTriggerKeyDown, onKeyUp: this.onButtonTriggerKeyUp, ref: el => (this.triggerEl = el), part: "chip-trigger" }, this.renderChipTriggerContent())) : (h("div", { class: triggerClass, style: { width: this.triggerWidth }, role: "combobox", "aria-haspopup": "listbox", "aria-controls": "pds-combobox-listbox", "aria-activedescendant": this.isOpen && this.highlightedIndex >= 0 ? `pds-combobox-option-${this.highlightedIndex}` : undefined, "aria-expanded": this.isOpen ? 'true' : 'false', "aria-disabled": this.disabled ? 'true' : 'false', "aria-label": this.hideLabel ? this.label : undefined, id: this.componentId, tabIndex: this.disabled ? -1 : 0, onClick: this.onButtonTriggerClick, "data-layout": this.customTriggerContent, onKeyDown: this.onButtonTriggerKeyDown, onKeyUp: this.onButtonTriggerKeyUp, ref: el => (this.triggerEl = el), part: "button-trigger" }, this.renderButtonTriggerContent())), h("div", { key: '47c259c2bc5b6f4f1d249d9bddd476b11c5a90fe', style: { display: 'none' } }, h("slot", { key: '83355a804fe978b6fb58838b4174bc815cf2f933', onSlotchange: () => this.updateOptions() })), this.renderDropdown())));
|
|
370
1037
|
}
|
|
371
1038
|
static get is() { return "pds-combobox"; }
|
|
372
1039
|
static get encapsulation() { return "shadow"; }
|
|
1040
|
+
static get formAssociated() { return true; }
|
|
373
1041
|
static get originalStyleUrls() {
|
|
374
1042
|
return {
|
|
375
1043
|
"$": ["pds-combobox.scss"]
|
|
@@ -401,6 +1069,25 @@ export class PdsCombobox {
|
|
|
401
1069
|
"attribute": "component-id",
|
|
402
1070
|
"reflect": false
|
|
403
1071
|
},
|
|
1072
|
+
"name": {
|
|
1073
|
+
"type": "string",
|
|
1074
|
+
"mutable": false,
|
|
1075
|
+
"complexType": {
|
|
1076
|
+
"original": "string",
|
|
1077
|
+
"resolved": "string",
|
|
1078
|
+
"references": {}
|
|
1079
|
+
},
|
|
1080
|
+
"required": false,
|
|
1081
|
+
"optional": true,
|
|
1082
|
+
"docs": {
|
|
1083
|
+
"tags": [],
|
|
1084
|
+
"text": "The name of the form control. Submitted with the form as part of a name/value pair."
|
|
1085
|
+
},
|
|
1086
|
+
"getter": false,
|
|
1087
|
+
"setter": false,
|
|
1088
|
+
"attribute": "name",
|
|
1089
|
+
"reflect": true
|
|
1090
|
+
},
|
|
404
1091
|
"customOptionLayouts": {
|
|
405
1092
|
"type": "boolean",
|
|
406
1093
|
"mutable": false,
|
|
@@ -617,8 +1304,8 @@ export class PdsCombobox {
|
|
|
617
1304
|
"type": "string",
|
|
618
1305
|
"mutable": false,
|
|
619
1306
|
"complexType": {
|
|
620
|
-
"original": "'input' | 'button'",
|
|
621
|
-
"resolved": "\"button\" | \"input\"",
|
|
1307
|
+
"original": "'input' | 'button' | 'chip'",
|
|
1308
|
+
"resolved": "\"button\" | \"chip\" | \"input\"",
|
|
622
1309
|
"references": {}
|
|
623
1310
|
},
|
|
624
1311
|
"required": false,
|
|
@@ -628,7 +1315,7 @@ export class PdsCombobox {
|
|
|
628
1315
|
"name": "default",
|
|
629
1316
|
"text": "'input'"
|
|
630
1317
|
}],
|
|
631
|
-
"text": "Determines the combobox trigger: 'input' (editable input)
|
|
1318
|
+
"text": "Determines the combobox trigger: 'input' (editable input), 'button' (button-like, non-editable), or 'chip' (chip-like, non-editable)."
|
|
632
1319
|
},
|
|
633
1320
|
"getter": false,
|
|
634
1321
|
"setter": false,
|
|
@@ -682,6 +1369,100 @@ export class PdsCombobox {
|
|
|
682
1369
|
"reflect": false,
|
|
683
1370
|
"defaultValue": "'secondary'"
|
|
684
1371
|
},
|
|
1372
|
+
"chipSentiment": {
|
|
1373
|
+
"type": "string",
|
|
1374
|
+
"mutable": false,
|
|
1375
|
+
"complexType": {
|
|
1376
|
+
"original": "ChipSentimentType",
|
|
1377
|
+
"resolved": "\"accent\" | \"brand\" | \"danger\" | \"info\" | \"neutral\" | \"success\" | \"warning\"",
|
|
1378
|
+
"references": {
|
|
1379
|
+
"ChipSentimentType": {
|
|
1380
|
+
"location": "import",
|
|
1381
|
+
"path": "@utils/types",
|
|
1382
|
+
"id": "src/utils/types.ts::ChipSentimentType"
|
|
1383
|
+
}
|
|
1384
|
+
}
|
|
1385
|
+
},
|
|
1386
|
+
"required": false,
|
|
1387
|
+
"optional": false,
|
|
1388
|
+
"docs": {
|
|
1389
|
+
"tags": [{
|
|
1390
|
+
"name": "default",
|
|
1391
|
+
"text": "'neutral'"
|
|
1392
|
+
}],
|
|
1393
|
+
"text": "The sentiment for the chip trigger. Matches Pine chip sentiments."
|
|
1394
|
+
},
|
|
1395
|
+
"getter": false,
|
|
1396
|
+
"setter": false,
|
|
1397
|
+
"attribute": "chip-sentiment",
|
|
1398
|
+
"reflect": false,
|
|
1399
|
+
"defaultValue": "'neutral'"
|
|
1400
|
+
},
|
|
1401
|
+
"chipLarge": {
|
|
1402
|
+
"type": "boolean",
|
|
1403
|
+
"mutable": false,
|
|
1404
|
+
"complexType": {
|
|
1405
|
+
"original": "boolean",
|
|
1406
|
+
"resolved": "boolean",
|
|
1407
|
+
"references": {}
|
|
1408
|
+
},
|
|
1409
|
+
"required": false,
|
|
1410
|
+
"optional": false,
|
|
1411
|
+
"docs": {
|
|
1412
|
+
"tags": [{
|
|
1413
|
+
"name": "default",
|
|
1414
|
+
"text": "false"
|
|
1415
|
+
}],
|
|
1416
|
+
"text": "Whether the chip trigger should be displayed in a larger size."
|
|
1417
|
+
},
|
|
1418
|
+
"getter": false,
|
|
1419
|
+
"setter": false,
|
|
1420
|
+
"attribute": "chip-large",
|
|
1421
|
+
"reflect": false,
|
|
1422
|
+
"defaultValue": "false"
|
|
1423
|
+
},
|
|
1424
|
+
"chipIcon": {
|
|
1425
|
+
"type": "string",
|
|
1426
|
+
"mutable": false,
|
|
1427
|
+
"complexType": {
|
|
1428
|
+
"original": "string",
|
|
1429
|
+
"resolved": "string",
|
|
1430
|
+
"references": {}
|
|
1431
|
+
},
|
|
1432
|
+
"required": false,
|
|
1433
|
+
"optional": true,
|
|
1434
|
+
"docs": {
|
|
1435
|
+
"tags": [],
|
|
1436
|
+
"text": "The name of the icon to display in the chip trigger."
|
|
1437
|
+
},
|
|
1438
|
+
"getter": false,
|
|
1439
|
+
"setter": false,
|
|
1440
|
+
"attribute": "chip-icon",
|
|
1441
|
+
"reflect": false
|
|
1442
|
+
},
|
|
1443
|
+
"chipDot": {
|
|
1444
|
+
"type": "boolean",
|
|
1445
|
+
"mutable": false,
|
|
1446
|
+
"complexType": {
|
|
1447
|
+
"original": "boolean",
|
|
1448
|
+
"resolved": "boolean",
|
|
1449
|
+
"references": {}
|
|
1450
|
+
},
|
|
1451
|
+
"required": false,
|
|
1452
|
+
"optional": false,
|
|
1453
|
+
"docs": {
|
|
1454
|
+
"tags": [{
|
|
1455
|
+
"name": "default",
|
|
1456
|
+
"text": "false"
|
|
1457
|
+
}],
|
|
1458
|
+
"text": "Whether a dot should be displayed on the chip trigger."
|
|
1459
|
+
},
|
|
1460
|
+
"getter": false,
|
|
1461
|
+
"setter": false,
|
|
1462
|
+
"attribute": "chip-dot",
|
|
1463
|
+
"reflect": false,
|
|
1464
|
+
"defaultValue": "false"
|
|
1465
|
+
},
|
|
685
1466
|
"value": {
|
|
686
1467
|
"type": "string",
|
|
687
1468
|
"mutable": true,
|
|
@@ -706,11 +1487,13 @@ export class PdsCombobox {
|
|
|
706
1487
|
}
|
|
707
1488
|
static get states() {
|
|
708
1489
|
return {
|
|
709
|
-
"
|
|
1490
|
+
"displayText": {},
|
|
1491
|
+
"filteredItems": {},
|
|
710
1492
|
"highlightedIndex": {},
|
|
711
1493
|
"isOpen": {},
|
|
712
1494
|
"selectedOption": {},
|
|
713
|
-
"selectedOptionLayoutContent": {}
|
|
1495
|
+
"selectedOptionLayoutContent": {},
|
|
1496
|
+
"selectedOptionChipProps": {}
|
|
714
1497
|
};
|
|
715
1498
|
}
|
|
716
1499
|
static get events() {
|