@pine-ds/core 3.11.0 → 3.12.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/index.d.ts +2 -0
- package/components/index.js +1 -0
- package/components/index.js.map +1 -1
- package/components/index2.js +1 -1
- package/components/mock-pds-modal.js +1 -1
- package/components/mock-pds-modal.js.map +1 -1
- package/components/pds-accordion.js +1 -1
- package/components/pds-accordion.js.map +1 -1
- package/components/pds-alert.js +2 -2
- package/components/pds-alert.js.map +1 -1
- package/components/pds-avatar.js +1 -1
- package/components/pds-avatar.js.map +1 -1
- package/components/pds-box2.js +1 -1
- package/components/pds-box2.js.map +1 -1
- package/components/pds-button2.js +1 -1
- package/components/pds-button2.js.map +1 -1
- package/components/pds-checkbox2.js +2 -2
- package/components/pds-checkbox2.js.map +1 -1
- package/components/pds-chip2.js +2 -2
- package/components/pds-chip2.js.map +1 -1
- package/components/pds-combobox.js +1 -1
- package/components/pds-combobox.js.map +1 -1
- package/components/pds-copytext.js +2 -2
- package/components/pds-copytext.js.map +1 -1
- package/components/pds-dropdown-menu-item.js +1 -1
- package/components/pds-dropdown-menu-item.js.map +1 -1
- package/components/pds-dropdown-menu-separator.js +1 -1
- package/components/pds-dropdown-menu-separator.js.map +1 -1
- package/components/pds-dropdown-menu.js +30 -11
- package/components/pds-dropdown-menu.js.map +1 -1
- package/components/pds-filter.js +1 -1
- package/components/pds-filter.js.map +1 -1
- package/components/pds-input.js +2 -2
- package/components/pds-input.js.map +1 -1
- package/components/pds-link2.js +1 -1
- package/components/pds-link2.js.map +1 -1
- package/components/pds-loader2.js +1 -1
- package/components/pds-loader2.js.map +1 -1
- package/components/pds-modal-content.js +1 -1
- package/components/pds-modal-content.js.map +1 -1
- package/components/pds-popover.js +6 -3
- package/components/pds-popover.js.map +1 -1
- package/components/pds-progress.js +1 -1
- package/components/pds-progress.js.map +1 -1
- package/components/pds-radio-group.d.ts +11 -0
- package/components/pds-radio-group.js +211 -0
- package/components/pds-radio-group.js.map +1 -0
- package/components/pds-radio.js +10 -5
- package/components/pds-radio.js.map +1 -1
- package/components/pds-row.js +1 -1
- package/components/pds-select.js +3 -3
- package/components/pds-select.js.map +1 -1
- package/components/pds-sortable-item.js +2 -2
- package/components/pds-sortable.js +1 -1
- package/components/pds-sortable.js.map +1 -1
- package/components/pds-switch.js +5 -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 +2 -2
- 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 +2 -2
- package/components/pds-tabs.js.map +1 -1
- package/components/pds-text2.js +2 -2
- package/components/pds-text2.js.map +1 -1
- package/components/pds-textarea.js +6 -6
- package/components/pds-textarea.js.map +1 -1
- package/components/pds-toast.js +3 -3
- package/components/pds-tooltip.js +2 -2
- package/dist/cjs/{index-2Lf0E1JO.js → index-CI0W8NCh.js} +3 -3
- package/dist/cjs/index-CI0W8NCh.js.map +1 -0
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/mock-pds-modal.cjs.entry.js +2 -2
- 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-accordion.entry.cjs.js.map +1 -1
- package/dist/cjs/pds-alert.cjs.entry.js +3 -3
- package/dist/cjs/pds-alert.entry.cjs.js.map +1 -1
- package/dist/cjs/pds-avatar.cjs.entry.js +2 -2
- package/dist/cjs/pds-avatar.entry.cjs.js.map +1 -1
- package/dist/cjs/pds-box.cjs.entry.js +2 -2
- package/dist/cjs/pds-box.entry.cjs.js.map +1 -1
- package/dist/cjs/pds-button.cjs.entry.js +2 -2
- package/dist/cjs/pds-button.entry.cjs.js.map +1 -1
- package/dist/cjs/pds-checkbox.cjs.entry.js +2 -2
- package/dist/cjs/pds-checkbox.entry.cjs.js.map +1 -1
- package/dist/cjs/pds-chip.cjs.entry.js +3 -3
- package/dist/cjs/pds-chip.entry.cjs.js.map +1 -1
- package/dist/cjs/pds-combobox.cjs.entry.js +2 -2
- package/dist/cjs/pds-combobox.entry.cjs.js.map +1 -1
- package/dist/cjs/pds-copytext.cjs.entry.js +3 -3
- 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 +2 -2
- package/dist/cjs/pds-dropdown-menu-item.entry.cjs.js.map +1 -1
- package/dist/cjs/pds-dropdown-menu-separator.cjs.entry.js +2 -2
- package/dist/cjs/pds-dropdown-menu-separator.entry.cjs.js.map +1 -1
- package/dist/cjs/pds-dropdown-menu.cjs.entry.js +30 -11
- package/dist/cjs/pds-dropdown-menu.entry.cjs.js.map +1 -1
- package/dist/cjs/pds-filter.cjs.entry.js +2 -2
- package/dist/cjs/pds-filter.entry.cjs.js.map +1 -1
- package/dist/cjs/pds-filters.cjs.entry.js +1 -1
- package/dist/cjs/pds-icon.cjs.entry.js +1 -1
- package/dist/cjs/pds-image.cjs.entry.js +1 -1
- package/dist/cjs/pds-input.cjs.entry.js +2 -2
- package/dist/cjs/pds-input.entry.cjs.js.map +1 -1
- package/dist/cjs/pds-link.cjs.entry.js +2 -2
- package/dist/cjs/pds-link.entry.cjs.js.map +1 -1
- package/dist/cjs/pds-loader.cjs.entry.js +2 -2
- package/dist/cjs/pds-loader.entry.cjs.js.map +1 -1
- package/dist/cjs/pds-modal-content.cjs.entry.js +2 -2
- package/dist/cjs/pds-modal-content.entry.cjs.js.map +1 -1
- package/dist/cjs/pds-modal-footer.cjs.entry.js +1 -1
- package/dist/cjs/pds-modal-header.cjs.entry.js +1 -1
- package/dist/cjs/pds-modal.cjs.entry.js +1 -1
- package/dist/cjs/pds-popover.cjs.entry.js +7 -4
- 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-progress.entry.cjs.js.map +1 -1
- package/dist/cjs/pds-property.cjs.entry.js +1 -1
- package/dist/cjs/pds-radio-group.cjs.entry.js +170 -0
- package/dist/cjs/pds-radio-group.entry.cjs.js.map +1 -0
- package/dist/cjs/pds-radio.cjs.entry.js +10 -5
- 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 +3 -3
- package/dist/cjs/pds-select.entry.cjs.js.map +1 -1
- package/dist/cjs/pds-sortable-item.cjs.entry.js +2 -2
- package/dist/cjs/pds-sortable.cjs.entry.js +2 -2
- package/dist/cjs/pds-sortable.entry.cjs.js.map +1 -1
- package/dist/cjs/pds-switch.cjs.entry.js +5 -5
- 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.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 +3 -3
- package/dist/cjs/pds-table-head-cell.cjs.entry.js +4 -4
- 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.entry.cjs.js.map +1 -1
- package/dist/cjs/pds-table-row.cjs.entry.js +3 -3
- 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.entry.cjs.js.map +1 -1
- package/dist/cjs/pds-tabpanel.cjs.entry.js +2 -2
- package/dist/cjs/pds-tabs.cjs.entry.js +3 -3
- package/dist/cjs/pds-tabs.entry.cjs.js.map +1 -1
- package/dist/cjs/pds-text.cjs.entry.js +3 -3
- package/dist/cjs/pds-text.entry.cjs.js.map +1 -1
- package/dist/cjs/pds-textarea.cjs.entry.js +6 -6
- 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 +3 -3
- package/dist/cjs/pine-core.cjs.js +2 -2
- package/dist/collection/collection-manifest.json +1 -0
- package/dist/collection/components/_internal/pds-label/pds-label.js.map +1 -1
- package/dist/collection/components/pds-accordion/pds-accordion.css +1 -1
- package/dist/collection/components/pds-accordion/pds-accordion.js.map +1 -1
- package/dist/collection/components/pds-accordion/stories/pds-accordion.stories.js +0 -2
- package/dist/collection/components/pds-alert/pds-alert.css +1 -0
- package/dist/collection/components/pds-alert/pds-alert.js +1 -1
- package/dist/collection/components/pds-alert/pds-alert.js.map +1 -1
- package/dist/collection/components/pds-alert/stories/pds-alert.stories.js +3 -9
- package/dist/collection/components/pds-avatar/pds-avatar.css +3 -3
- package/dist/collection/components/pds-avatar/pds-avatar.js.map +1 -1
- package/dist/collection/components/pds-avatar/stories/pds-avatar.stories.js +0 -2
- package/dist/collection/components/pds-box/pds-box.css +754 -30
- package/dist/collection/components/pds-box/pds-box.js.map +1 -1
- package/dist/collection/components/pds-box/stories/pds-box.stories.js +0 -2
- package/dist/collection/components/pds-button/pds-button.css +11 -8
- package/dist/collection/components/pds-button/pds-button.js +9 -3
- package/dist/collection/components/pds-button/pds-button.js.map +1 -1
- package/dist/collection/components/pds-button/stories/pds-button.stories.js +2 -5
- package/dist/collection/components/pds-checkbox/checkbox-interface.js.map +1 -1
- package/dist/collection/components/pds-checkbox/pds-checkbox.css +3 -3
- package/dist/collection/components/pds-checkbox/pds-checkbox.js.map +1 -1
- package/dist/collection/components/pds-checkbox/stories/pds-checkbox.stories.js +1 -9
- package/dist/collection/components/pds-chip/pds-chip.css +3 -3
- package/dist/collection/components/pds-chip/pds-chip.js +3 -3
- package/dist/collection/components/pds-chip/pds-chip.js.map +1 -1
- package/dist/collection/components/pds-chip/stories/pds-chip.stories.js +3 -9
- package/dist/collection/components/pds-combobox/pds-combobox.css +7 -7
- package/dist/collection/components/pds-combobox/pds-combobox.js.map +1 -1
- package/dist/collection/components/pds-combobox/stories/pds-combobox.stories.js +2 -9
- package/dist/collection/components/pds-copytext/pds-copytext.css +1 -1
- package/dist/collection/components/pds-copytext/pds-copytext.js +3 -3
- package/dist/collection/components/pds-copytext/pds-copytext.js.map +1 -1
- package/dist/collection/components/pds-copytext/stories/pds-copytext.stories.js +3 -9
- package/dist/collection/components/pds-divider/pds-divider.js.map +1 -1
- package/dist/collection/components/pds-divider/stories/pds-divider.stories.js +0 -2
- package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-item/pds-dropdown-menu-item.css +2 -1
- package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-item/pds-dropdown-menu-item.js.map +1 -1
- package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-separator/pds-dropdown-menu-separator.css +1 -1
- package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-separator/pds-dropdown-menu-separator.js.map +1 -1
- package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu.css +4 -0
- package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu.js +32 -10
- package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu.js.map +1 -1
- package/dist/collection/components/pds-dropdown-menu/stories/pds-dropdown-menu.stories.js +3 -9
- package/dist/collection/components/pds-filters/pds-filter/filter-interface.js.map +1 -1
- package/dist/collection/components/pds-filters/pds-filter/pds-filter.css +13 -13
- package/dist/collection/components/pds-filters/pds-filter/pds-filter.js.map +1 -1
- package/dist/collection/components/pds-filters/pds-filter/stories/pds-filter.stories.js +3 -9
- package/dist/collection/components/pds-filters/pds-filters.js.map +1 -1
- package/dist/collection/components/pds-filters/stories/pds-filters.stories.js +3 -9
- package/dist/collection/components/pds-image/pds-image.js.map +1 -1
- package/dist/collection/components/pds-image/stories/pds-image.stories.js +0 -2
- package/dist/collection/components/pds-input/input-interface.js.map +1 -1
- package/dist/collection/components/pds-input/pds-input.css +8 -2
- package/dist/collection/components/pds-input/pds-input.js.map +1 -1
- package/dist/collection/components/pds-input/stories/pds-input.stories.js +3 -13
- package/dist/collection/components/pds-link/pds-link.css +1 -1
- package/dist/collection/components/pds-link/pds-link.js.map +1 -1
- package/dist/collection/components/pds-link/stories/pds-link.stories.js +0 -2
- package/dist/collection/components/pds-loader/pds-loader.css +2 -2
- package/dist/collection/components/pds-loader/pds-loader.js.map +1 -1
- package/dist/collection/components/pds-loader/stories/pds-loader.stories.js +0 -2
- package/dist/collection/components/pds-modal/pds-modal-content/pds-modal-content.css +4 -4
- package/dist/collection/components/pds-modal/pds-modal-content/pds-modal-content.js.map +1 -1
- package/dist/collection/components/pds-modal/pds-modal-footer/pds-modal-footer.js.map +1 -1
- package/dist/collection/components/pds-modal/pds-modal-header/pds-modal-header.js.map +1 -1
- package/dist/collection/components/pds-modal/pds-modal.js.map +1 -1
- package/dist/collection/components/pds-modal/stories/pds-modal.stories.js +3 -9
- package/dist/collection/components/pds-modal/test/mock-pds-modal.js +7 -7
- package/dist/collection/components/pds-modal/test/mock-pds-modal.js.map +1 -1
- package/dist/collection/components/pds-popover/pds-popover.js +6 -3
- package/dist/collection/components/pds-popover/pds-popover.js.map +1 -1
- package/dist/collection/components/pds-popover/popover-interface.js.map +1 -1
- package/dist/collection/components/pds-popover/stories/pds-popover.stories.js +3 -9
- package/dist/collection/components/pds-progress/pds-progress.css +4 -4
- package/dist/collection/components/pds-progress/pds-progress.js.map +1 -1
- package/dist/collection/components/pds-progress/stories/pds-progress.stories.js +0 -2
- package/dist/collection/components/pds-property/pds-property.js.map +1 -1
- package/dist/collection/components/pds-property/stories/pds-property.stories.js +0 -4
- package/dist/collection/components/pds-radio/pds-radio.css +49 -50
- package/dist/collection/components/pds-radio/pds-radio.js +8 -3
- package/dist/collection/components/pds-radio/pds-radio.js.map +1 -1
- package/dist/collection/components/pds-radio/stories/pds-radio.stories.js +4 -11
- package/dist/collection/components/pds-radio-group/pds-radio-group.css +43 -0
- package/dist/collection/components/pds-radio-group/pds-radio-group.js +431 -0
- package/dist/collection/components/pds-radio-group/pds-radio-group.js.map +1 -0
- package/dist/collection/components/pds-radio-group/radio-group-interface.js +2 -0
- package/dist/collection/components/pds-radio-group/radio-group-interface.js.map +1 -0
- package/dist/collection/components/pds-radio-group/stories/pds-radio-group.stories.js +134 -0
- package/dist/collection/components/pds-row/pds-row.js +1 -1
- package/dist/collection/components/pds-row/pds-row.js.map +1 -1
- package/dist/collection/components/pds-row/stories/pds-row.stories.js +0 -2
- package/dist/collection/components/pds-select/pds-select.css +8 -0
- package/dist/collection/components/pds-select/pds-select.js +1 -1
- package/dist/collection/components/pds-select/pds-select.js.map +1 -1
- package/dist/collection/components/pds-select/stories/pds-select.stories.js +3 -9
- package/dist/collection/components/pds-sortable/pds-sortable-item/pds-sortable-item.js +1 -1
- package/dist/collection/components/pds-sortable/pds-sortable-item/pds-sortable-item.js.map +1 -1
- package/dist/collection/components/pds-sortable/pds-sortable-item/stories/pds-sortable-item.stories.js +0 -2
- package/dist/collection/components/pds-sortable/pds-sortable.js +10 -4
- package/dist/collection/components/pds-sortable/pds-sortable.js.map +1 -1
- package/dist/collection/components/pds-sortable/sortable-interface.js.map +1 -1
- package/dist/collection/components/pds-sortable/stories/pds-sortable.stories.js +3 -9
- package/dist/collection/components/pds-switch/pds-switch.css +1 -1
- package/dist/collection/components/pds-switch/pds-switch.js +3 -3
- package/dist/collection/components/pds-switch/pds-switch.js.map +1 -1
- package/dist/collection/components/pds-switch/stories/pds-switch.stories.js +3 -9
- package/dist/collection/components/pds-table/pds-table-body/pds-table-body.js +1 -1
- package/dist/collection/components/pds-table/pds-table-body/pds-table-body.js.map +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-cell/pds-table-cell.js.map +1 -1
- package/dist/collection/components/pds-table/pds-table-cell/stories/pds-table-cell.stories.js +0 -4
- 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/pds-table-head.js.map +1 -1
- package/dist/collection/components/pds-table/pds-table-head-cell/pds-table-head-cell.css +2 -2
- 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-head-cell/pds-table-head-cell.js.map +1 -1
- package/dist/collection/components/pds-table/pds-table-head-cell/stories/pds-table-head-cell.stories.js +0 -4
- 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-row/pds-table-row.js.map +1 -1
- package/dist/collection/components/pds-table/pds-table-row/stories/pds-table-row.stories.js +3 -9
- package/dist/collection/components/pds-table/pds-table.css +1 -1
- package/dist/collection/components/pds-table/pds-table.js.map +1 -1
- package/dist/collection/components/pds-table/stories/pds-table.stories.js +3 -9
- package/dist/collection/components/pds-tabs/pds-tab/pds-tab.css +6 -3
- package/dist/collection/components/pds-tabs/pds-tab/pds-tab.js +3 -3
- package/dist/collection/components/pds-tabs/pds-tab/pds-tab.js.map +1 -1
- package/dist/collection/components/pds-tabs/pds-tab/stories/pds-tab.stories.js +0 -4
- package/dist/collection/components/pds-tabs/pds-tabpanel/pds-tabpanel.js +1 -1
- package/dist/collection/components/pds-tabs/pds-tabpanel/pds-tabpanel.js.map +1 -1
- package/dist/collection/components/pds-tabs/pds-tabpanel/stories/pds-tabpanel.stories.js +0 -4
- package/dist/collection/components/pds-tabs/pds-tabs.css +2 -2
- package/dist/collection/components/pds-tabs/pds-tabs.js +1 -1
- package/dist/collection/components/pds-tabs/pds-tabs.js.map +1 -1
- package/dist/collection/components/pds-tabs/stories/pds-tabs.stories.js +3 -9
- package/dist/collection/components/pds-text/pds-text.css +1 -1
- package/dist/collection/components/pds-text/pds-text.js +1 -1
- package/dist/collection/components/pds-text/pds-text.js.map +1 -1
- package/dist/collection/components/pds-text/stories/pds-text.stories.js +17 -30
- package/dist/collection/components/pds-textarea/pds-textarea.css +8 -1
- package/dist/collection/components/pds-textarea/pds-textarea.js +4 -4
- package/dist/collection/components/pds-textarea/pds-textarea.js.map +1 -1
- package/dist/collection/components/pds-textarea/stories/pds-textarea.stories.js +3 -14
- package/dist/collection/components/pds-textarea/textarea-interface.js.map +1 -1
- package/dist/collection/components/pds-toast/pds-toast.js +3 -3
- package/dist/collection/components/pds-toast/pds-toast.js.map +1 -1
- package/dist/collection/components/pds-toast/stories/pds-toast.stories.js +3 -11
- package/dist/collection/components/pds-tooltip/pds-tooltip.js +2 -2
- package/dist/collection/components/pds-tooltip/pds-tooltip.js.map +1 -1
- package/dist/collection/components/pds-tooltip/stories/pds-tooltip.stories.js +3 -9
- package/dist/collection/global/pine-ui-global.js.map +1 -1
- package/dist/collection/index.js +1 -0
- package/dist/collection/index.js.map +1 -1
- package/dist/collection/utils/attributes.js.map +1 -1
- package/dist/collection/utils/closest.js.map +1 -1
- package/dist/collection/utils/form.js.map +1 -1
- package/dist/collection/utils/interfaces.js.map +1 -1
- package/dist/collection/utils/overlay.js.map +1 -1
- package/dist/collection/utils/types.js.map +1 -1
- package/dist/collection/utils/utils.js.map +1 -1
- package/dist/docs.json +391 -26
- package/dist/esm/{index-CvGEHHLR.js → index-CShvJnsl.js} +3 -3
- package/dist/{esm-es5/index-CvGEHHLR.js.map → esm/index-CShvJnsl.js.map} +1 -1
- package/dist/esm/{index-Bh07GI-d.js → index-DHPhrb5T.js} +3 -3
- package/dist/esm/index-DHPhrb5T.js.map +1 -0
- package/dist/esm/loader.js +3 -3
- package/dist/esm/mock-pds-modal.entry.js +2 -2
- package/dist/esm/mock-pds-modal.entry.js.map +1 -1
- package/dist/esm/pds-accordion.entry.js +3 -3
- package/dist/esm/pds-accordion.entry.js.map +1 -1
- package/dist/esm/pds-alert.entry.js +3 -3
- package/dist/esm/pds-alert.entry.js.map +1 -1
- package/dist/esm/pds-avatar.entry.js +3 -3
- package/dist/esm/pds-avatar.entry.js.map +1 -1
- package/dist/esm/pds-box.entry.js +2 -2
- package/dist/esm/pds-box.entry.js.map +1 -1
- package/dist/esm/pds-button.entry.js +3 -3
- package/dist/esm/pds-button.entry.js.map +1 -1
- package/dist/esm/pds-checkbox.entry.js +3 -3
- 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 +2 -2
- package/dist/esm/pds-combobox.entry.js.map +1 -1
- package/dist/esm/pds-copytext.entry.js +4 -4
- 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 +2 -2
- package/dist/esm/pds-dropdown-menu-item.entry.js.map +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 +31 -12
- package/dist/esm/pds-dropdown-menu.entry.js.map +1 -1
- package/dist/esm/pds-filter.entry.js +3 -3
- package/dist/esm/pds-filter.entry.js.map +1 -1
- package/dist/esm/pds-filters.entry.js +1 -1
- package/dist/esm/pds-icon.entry.js +1 -1
- package/dist/esm/pds-image.entry.js +1 -1
- package/dist/esm/pds-input.entry.js +3 -3
- package/dist/esm/pds-input.entry.js.map +1 -1
- package/dist/esm/pds-link.entry.js +3 -3
- package/dist/esm/pds-link.entry.js.map +1 -1
- package/dist/esm/pds-loader.entry.js +2 -2
- package/dist/esm/pds-loader.entry.js.map +1 -1
- package/dist/esm/pds-modal-content.entry.js +2 -2
- package/dist/esm/pds-modal-content.entry.js.map +1 -1
- package/dist/esm/pds-modal-footer.entry.js +1 -1
- package/dist/esm/pds-modal-header.entry.js +1 -1
- package/dist/esm/pds-modal.entry.js +1 -1
- package/dist/esm/pds-popover.entry.js +7 -4
- package/dist/esm/pds-popover.entry.js.map +1 -1
- package/dist/esm/pds-progress.entry.js +2 -2
- package/dist/esm/pds-progress.entry.js.map +1 -1
- package/dist/esm/pds-property.entry.js +1 -1
- package/dist/esm/pds-radio-group.entry.js +168 -0
- package/dist/esm/pds-radio-group.entry.js.map +1 -0
- package/dist/esm/pds-radio.entry.js +11 -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 +4 -4
- 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-sortable.entry.js.map +1 -1
- package/dist/esm/pds-switch.entry.js +6 -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 +3 -3
- 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 +3 -3
- package/dist/esm/pds-tabs.entry.js.map +1 -1
- package/dist/esm/pds-text.entry.js +3 -3
- package/dist/esm/pds-text.entry.js.map +1 -1
- package/dist/esm/pds-textarea.entry.js +7 -7
- 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 +3 -3
- package/dist/esm/pine-core.js +3 -3
- package/dist/esm-es5/{index-CvGEHHLR.js → index-CShvJnsl.js} +2 -2
- package/dist/{esm/index-CvGEHHLR.js.map → esm-es5/index-CShvJnsl.js.map} +1 -1
- package/dist/esm-es5/index-DHPhrb5T.js +3 -0
- package/dist/esm-es5/index-DHPhrb5T.js.map +1 -0
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/mock-pds-modal.entry.js +1 -1
- package/dist/esm-es5/mock-pds-modal.entry.js.map +1 -1
- package/dist/esm-es5/pds-accordion.entry.js +1 -1
- package/dist/esm-es5/pds-accordion.entry.js.map +1 -1
- package/dist/esm-es5/pds-alert.entry.js +1 -1
- package/dist/esm-es5/pds-alert.entry.js.map +1 -1
- package/dist/esm-es5/pds-avatar.entry.js +1 -1
- package/dist/esm-es5/pds-avatar.entry.js.map +1 -1
- package/dist/esm-es5/pds-box.entry.js +1 -1
- package/dist/esm-es5/pds-box.entry.js.map +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-item.entry.js.map +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 +1 -1
- package/dist/esm-es5/pds-filter.entry.js.map +1 -1
- package/dist/esm-es5/pds-filters.entry.js +1 -1
- package/dist/esm-es5/pds-icon.entry.js +1 -1
- package/dist/esm-es5/pds-image.entry.js +1 -1
- package/dist/esm-es5/pds-input.entry.js +1 -1
- package/dist/esm-es5/pds-input.entry.js.map +1 -1
- package/dist/esm-es5/pds-link.entry.js +1 -1
- package/dist/esm-es5/pds-link.entry.js.map +1 -1
- package/dist/esm-es5/pds-loader.entry.js +1 -1
- package/dist/esm-es5/pds-loader.entry.js.map +1 -1
- package/dist/esm-es5/pds-modal-content.entry.js +1 -1
- package/dist/esm-es5/pds-modal-content.entry.js.map +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-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-progress.entry.js.map +1 -1
- package/dist/esm-es5/pds-property.entry.js +1 -1
- package/dist/esm-es5/pds-radio-group.entry.js +2 -0
- package/dist/esm-es5/pds-radio-group.entry.js.map +1 -0
- 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-sortable.entry.js.map +1 -1
- 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-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-text.entry.js.map +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/pine-core.js +1 -1
- package/dist/pine-core/mock-pds-modal.entry.esm.js.map +1 -1
- package/dist/pine-core/{p-37795a28.system.entry.js → p-00568c20.system.entry.js} +2 -2
- package/dist/pine-core/{p-53645ec6.system.entry.js → p-03209958.system.entry.js} +2 -2
- package/dist/pine-core/p-0398f6e3.entry.js +2 -0
- package/dist/pine-core/{p-d0efe5e1.entry.js.map → p-0398f6e3.entry.js.map} +1 -1
- package/dist/pine-core/p-04294b28.system.entry.js +2 -0
- package/dist/pine-core/{p-052eedc2.system.entry.js.map → p-04294b28.system.entry.js.map} +1 -1
- package/dist/pine-core/p-04a7b66c.system.entry.js +2 -0
- package/dist/pine-core/{p-a2c309fa.system.entry.js.map → p-04a7b66c.system.entry.js.map} +1 -1
- package/dist/pine-core/p-04f92b5a.system.entry.js +2 -0
- package/dist/pine-core/{p-1ac7cb0f.system.entry.js.map → p-04f92b5a.system.entry.js.map} +1 -1
- package/dist/pine-core/p-0869fe00.entry.js +2 -0
- package/dist/pine-core/p-0869fe00.entry.js.map +1 -0
- package/dist/pine-core/{p-1fbe221a.entry.js → p-0ace9c16.entry.js} +2 -2
- package/dist/pine-core/p-0b05708b.entry.js +2 -0
- package/dist/pine-core/{p-43b758af.entry.js.map → p-0b05708b.entry.js.map} +1 -1
- package/dist/pine-core/{p-e47fbd71.entry.js → p-10e0be55.entry.js} +2 -2
- package/dist/pine-core/{p-b0948892.system.entry.js → p-1df25b57.system.entry.js} +2 -2
- package/dist/pine-core/p-1f5ed7bb.system.entry.js +2 -0
- package/dist/pine-core/{p-e22c4870.system.entry.js.map → p-1f5ed7bb.system.entry.js.map} +1 -1
- package/dist/pine-core/{p-d6cff25a.entry.js → p-1fa303af.entry.js} +2 -2
- package/dist/pine-core/{p-996072ce.entry.js → p-2058a93a.entry.js} +2 -2
- package/dist/pine-core/p-227d5375.entry.js +2 -0
- package/dist/pine-core/{p-de4ebf0b.entry.js.map → p-227d5375.entry.js.map} +1 -1
- package/dist/pine-core/p-2319298c.system.entry.js +2 -0
- package/dist/pine-core/{p-5e1804a3.system.entry.js.map → p-2319298c.system.entry.js.map} +1 -1
- package/dist/pine-core/p-232e4282.system.entry.js +2 -0
- package/dist/pine-core/{p-49c5234f.system.entry.js.map → p-232e4282.system.entry.js.map} +1 -1
- package/dist/pine-core/{p-7bbe537d.system.entry.js → p-2d3da08b.system.entry.js} +2 -2
- package/dist/pine-core/{p-7a63e1ec.entry.js → p-2f6f60d9.entry.js} +2 -2
- package/dist/pine-core/p-372a6081.entry.js +2 -0
- package/dist/pine-core/{p-e25d2c53.entry.js.map → p-372a6081.entry.js.map} +1 -1
- package/dist/pine-core/p-3a231ae4.system.entry.js +2 -0
- package/dist/pine-core/{p-1c03ac40.system.entry.js.map → p-3a231ae4.system.entry.js.map} +1 -1
- package/dist/pine-core/{p-841a6445.entry.js → p-3f6b9520.entry.js} +2 -2
- package/dist/pine-core/{p-06f164fe.system.entry.js → p-3f8a5f3d.system.entry.js} +2 -2
- package/dist/pine-core/{p-ba1a4643.system.entry.js → p-3f8b0885.system.entry.js} +2 -2
- package/dist/pine-core/p-428a96f9.entry.js +2 -0
- package/dist/pine-core/{p-ac5eb57e.entry.js.map → p-428a96f9.entry.js.map} +1 -1
- package/dist/pine-core/{p-ba609b1e.entry.js → p-43990889.entry.js} +2 -2
- package/dist/pine-core/{p-6046e0b1.entry.js → p-43f1eead.entry.js} +2 -2
- package/dist/pine-core/p-4778ae70.entry.js +2 -0
- package/dist/pine-core/{p-a1ddcc69.entry.js.map → p-4778ae70.entry.js.map} +1 -1
- package/dist/pine-core/p-4c0797f2.entry.js +2 -0
- package/dist/pine-core/{p-3900b6f6.entry.js.map → p-4c0797f2.entry.js.map} +1 -1
- package/dist/pine-core/{p-D5MCs-6L.system.js.map → p-4fD2iHS9.system.js.map} +1 -1
- package/dist/pine-core/p-553e4543.entry.js +2 -0
- package/dist/pine-core/p-553e4543.entry.js.map +1 -0
- package/dist/pine-core/p-58fa5c8f.entry.js +2 -0
- package/dist/pine-core/{p-0837abe8.entry.js.map → p-58fa5c8f.entry.js.map} +1 -1
- package/dist/pine-core/{p-b151a37d.entry.js → p-596acf65.entry.js} +3 -3
- package/dist/pine-core/p-5D9wXQuJ.system.js +3 -0
- package/dist/pine-core/p-5D9wXQuJ.system.js.map +1 -0
- package/dist/pine-core/p-5b2b3e8a.entry.js +2 -0
- package/dist/pine-core/{p-7c2381c5.entry.js.map → p-5b2b3e8a.entry.js.map} +1 -1
- package/dist/pine-core/p-5d7c4fbb.entry.js +2 -0
- package/dist/pine-core/{p-730ea265.entry.js.map → p-5d7c4fbb.entry.js.map} +1 -1
- package/dist/pine-core/p-5f6cd30d.system.entry.js +2 -0
- package/dist/pine-core/p-5f6cd30d.system.entry.js.map +1 -0
- package/dist/pine-core/p-61588eac.entry.js +2 -0
- package/dist/pine-core/{p-55d120d1.entry.js.map → p-61588eac.entry.js.map} +1 -1
- package/dist/pine-core/p-65c566a2.system.entry.js +2 -0
- package/dist/pine-core/{p-1f28575b.system.entry.js.map → p-65c566a2.system.entry.js.map} +1 -1
- package/dist/pine-core/p-65db991d.entry.js +2 -0
- package/dist/pine-core/{p-1b299f58.entry.js.map → p-65db991d.entry.js.map} +1 -1
- package/dist/pine-core/p-66160018.entry.js +3 -0
- package/dist/pine-core/{p-bd11961c.entry.js.map → p-66160018.entry.js.map} +1 -1
- package/dist/pine-core/{p-f2344cb2.system.entry.js → p-670b1551.system.entry.js} +2 -2
- package/dist/pine-core/p-670b1551.system.entry.js.map +1 -0
- package/dist/pine-core/p-676f1f32.system.entry.js +2 -0
- package/dist/pine-core/p-676f1f32.system.entry.js.map +1 -0
- package/dist/pine-core/p-6ace63a3.system.entry.js +2 -0
- package/dist/pine-core/{p-4fe28624.system.entry.js.map → p-6ace63a3.system.entry.js.map} +1 -1
- package/dist/pine-core/p-6be19a23.system.entry.js +2 -0
- package/dist/pine-core/{p-c28c54c2.system.entry.js.map → p-6be19a23.system.entry.js.map} +1 -1
- package/dist/pine-core/{p-168b5a5b.system.entry.js → p-6dcd7876.system.entry.js} +2 -2
- package/dist/pine-core/p-6de73f62.entry.js +2 -0
- package/dist/pine-core/{p-1d3c4f2d.entry.js.map → p-6de73f62.entry.js.map} +1 -1
- package/dist/pine-core/p-711989de.entry.js +2 -0
- package/dist/pine-core/{p-2551ed1a.entry.js.map → p-711989de.entry.js.map} +1 -1
- package/dist/pine-core/p-7ccd2fd6.system.entry.js +2 -0
- package/dist/pine-core/{p-e715d22e.system.entry.js.map → p-7ccd2fd6.system.entry.js.map} +1 -1
- package/dist/pine-core/{p-ed214033.entry.js → p-7de73ac5.entry.js} +2 -2
- package/dist/pine-core/p-80017aa5.entry.js +2 -0
- package/dist/pine-core/{p-9f7318d7.entry.js.map → p-80017aa5.entry.js.map} +1 -1
- package/dist/pine-core/p-8007f4de.entry.js +2 -0
- package/dist/pine-core/p-8007f4de.entry.js.map +1 -0
- package/dist/pine-core/p-8323fe69.system.entry.js +2 -0
- package/dist/pine-core/{p-1ab0a7b1.system.entry.js.map → p-8323fe69.system.entry.js.map} +1 -1
- package/dist/pine-core/p-847fc77b.system.entry.js +2 -0
- package/dist/pine-core/{p-ab34c977.system.entry.js.map → p-847fc77b.system.entry.js.map} +1 -1
- package/dist/pine-core/{p-51e0ea73.entry.js → p-8c000d7c.entry.js} +2 -2
- package/dist/pine-core/p-8c7fdaf5.system.entry.js +2 -0
- package/dist/pine-core/{p-f38e87ad.system.entry.js.map → p-8c7fdaf5.system.entry.js.map} +1 -1
- package/dist/pine-core/p-91954848.entry.js +2 -0
- package/dist/pine-core/{p-6f5dfd01.entry.js.map → p-91954848.entry.js.map} +1 -1
- package/dist/pine-core/p-934229d8.entry.js +2 -0
- package/dist/pine-core/{p-4ea1a4fb.entry.js.map → p-934229d8.entry.js.map} +1 -1
- package/dist/pine-core/p-94788439.system.entry.js +2 -0
- package/dist/pine-core/{p-5565ee41.system.entry.js.map → p-94788439.system.entry.js.map} +1 -1
- package/dist/pine-core/{p-5a94e426.system.entry.js → p-94b1997d.system.entry.js} +2 -2
- package/dist/pine-core/{p-f74bcc1d.entry.js → p-9998c2a0.entry.js} +2 -2
- package/dist/pine-core/p-9f0f1389.entry.js +2 -0
- package/dist/pine-core/{p-a494b7d1.entry.js.map → p-9f0f1389.entry.js.map} +1 -1
- package/dist/pine-core/{p-CNOoGfj8.system.js.map → p-B0Y1Zs9b.system.js.map} +1 -1
- package/dist/pine-core/p-B1wJrRWz.system.js.map +1 -0
- package/dist/pine-core/p-BK-Kji1Y.system.js.map +1 -0
- package/dist/pine-core/p-BQImnLWy.system.js.map +1 -0
- package/dist/pine-core/p-BUwuPP5j.system.js.map +1 -0
- package/dist/pine-core/p-BVjyFx0r.system.js.map +1 -0
- package/dist/pine-core/p-BZj284A2.system.js.map +1 -0
- package/dist/pine-core/{p-BynWb21G.system.js.map → p-BjRES1T-.system.js.map} +1 -1
- package/dist/pine-core/p-Bp1qn6CS.system.js.map +1 -0
- package/dist/pine-core/{p-Btz7Q5Hx.system.js.map → p-Brpt0zl5.system.js.map} +1 -1
- package/dist/pine-core/p-C56crVDC.system.js.map +1 -0
- package/dist/pine-core/p-CAnnMfDw.system.js.map +1 -0
- package/dist/pine-core/{p-BMv60T1z.system.js.map → p-CI7DD4Gj.system.js.map} +1 -1
- package/dist/pine-core/p-CJJ3xfku.system.js.map +1 -0
- package/dist/pine-core/{p-CvGEHHLR.js → p-CShvJnsl.js} +2 -2
- package/dist/pine-core/{p-CvGEHHLR.js.map → p-CShvJnsl.js.map} +1 -1
- package/dist/pine-core/{p-CqtdHqyo.system.js.map → p-CUmDvil2.system.js.map} +1 -1
- package/dist/pine-core/p-CgF-S6vZ.system.js.map +1 -0
- package/dist/pine-core/{p-CoBzoZzZ.system.js.map → p-CijIWK3K.system.js.map} +1 -1
- package/dist/pine-core/{p-oqHEiE2W.system.js.map → p-ClPf_JF1.system.js.map} +1 -1
- package/dist/pine-core/p-CrjhL65U.system.js.map +1 -0
- package/dist/pine-core/p-CrzS8Mmy.system.js.map +1 -0
- package/dist/pine-core/p-CsVpJw_i.system.js.map +1 -0
- package/dist/pine-core/{p-DCLLstWD.system.js.map → p-Cwz8YTwo.system.js.map} +1 -1
- package/dist/pine-core/p-D2aexWnE.system.js.map +1 -0
- package/dist/pine-core/p-D8Jc24Qq.system.js.map +1 -0
- package/dist/pine-core/p-D8bibuWO.system.js.map +1 -0
- package/dist/pine-core/p-DBdgdjLr.system.js.map +1 -0
- package/dist/pine-core/p-DHPhrb5T.js +3 -0
- package/dist/pine-core/p-DHPhrb5T.js.map +1 -0
- package/dist/pine-core/p-DM7CGpRH.system.js.map +1 -0
- package/dist/pine-core/p-DYq1Mef8.system.js.map +1 -0
- package/dist/pine-core/p-D_LvnDUT.system.js.map +1 -0
- package/dist/pine-core/p-DaQV83Gx.system.js.map +1 -0
- package/dist/pine-core/{p-CbrMVAcu.system.js.map → p-DkNlmqjM.system.js.map} +1 -1
- package/dist/pine-core/{p-dWrReyPk.system.js.map → p-DmUcUg32.system.js.map} +1 -1
- package/dist/pine-core/p-DmVKABQy.system.js.map +1 -0
- package/dist/pine-core/{p-B9oQYxlC.system.js.map → p-DoP8Sl1O.system.js.map} +1 -1
- package/dist/pine-core/{p-BeaxER_z.system.js.map → p-DpOZDNuz.system.js.map} +1 -1
- package/dist/pine-core/{p-B8ftT2uA.system.js.map → p-DpeOrUYB.system.js.map} +1 -1
- package/dist/pine-core/p-Drfvoxcd.system.js.map +1 -0
- package/dist/pine-core/p-GKNvlYGa.system.js.map +1 -0
- package/dist/pine-core/{p-pStt9pIi.system.js.map → p-IH8oGXiE.system.js.map} +1 -1
- package/dist/pine-core/p-JAVnELnm.system.js +2 -0
- package/dist/pine-core/{p-Cua7cmvq.system.js.map → p-JAVnELnm.system.js.map} +1 -1
- package/dist/pine-core/p-PAmjcE4m.system.js.map +1 -0
- package/dist/pine-core/p-RO-Y2DRT.system.js.map +1 -0
- package/dist/pine-core/p-X0_TH-op.system.js.map +1 -0
- package/dist/pine-core/{p-e948a514.system.entry.js → p-a11c3642.system.entry.js} +2 -2
- package/dist/pine-core/p-a226ecdb.system.entry.js +2 -0
- package/dist/pine-core/{p-619a6667.system.entry.js.map → p-a226ecdb.system.entry.js.map} +1 -1
- package/dist/pine-core/p-a4b16b32.system.entry.js +2 -0
- package/dist/pine-core/{p-f70327de.system.entry.js.map → p-a4b16b32.system.entry.js.map} +1 -1
- package/dist/pine-core/p-a54f4dfd.system.entry.js +2 -0
- package/dist/pine-core/{p-6d9ca1ff.system.entry.js.map → p-a54f4dfd.system.entry.js.map} +1 -1
- package/dist/pine-core/{p-6448829b.system.entry.js → p-ac14c8e3.system.entry.js} +3 -3
- package/dist/pine-core/{p-1bf75b30.system.entry.js → p-ac186cd4.system.entry.js} +2 -2
- package/dist/pine-core/{p-fe23aa6f.system.entry.js → p-b59a0c6b.system.entry.js} +2 -2
- package/dist/pine-core/p-b59ac781.entry.js +2 -0
- package/dist/pine-core/{p-fb877b9d.entry.js.map → p-b59ac781.entry.js.map} +1 -1
- package/dist/pine-core/p-b64407a4.entry.js +2 -0
- package/dist/pine-core/{p-da23f4cf.entry.js.map → p-b64407a4.entry.js.map} +1 -1
- package/dist/pine-core/p-b6a503cc.system.entry.js +2 -0
- package/dist/pine-core/{p-7a12238d.system.entry.js.map → p-b6a503cc.system.entry.js.map} +1 -1
- package/dist/pine-core/p-b8047816.system.entry.js +2 -0
- package/dist/pine-core/{p-5a332f9e.system.entry.js.map → p-b8047816.system.entry.js.map} +1 -1
- package/dist/pine-core/p-b9a14564.system.entry.js +2 -0
- package/dist/pine-core/{p-eb3fe298.system.entry.js.map → p-b9a14564.system.entry.js.map} +1 -1
- package/dist/pine-core/p-bd53ca9a.system.entry.js +2 -0
- package/dist/pine-core/p-bd53ca9a.system.entry.js.map +1 -0
- package/dist/pine-core/{p-105951b7.system.entry.js → p-bdf8bff3.system.entry.js} +2 -2
- package/dist/pine-core/p-be647b2a.entry.js +2 -0
- package/dist/pine-core/{p-19e6bce5.entry.js.map → p-be647b2a.entry.js.map} +1 -1
- package/dist/pine-core/p-bee8d4b8.system.entry.js +4 -0
- package/dist/pine-core/{p-6e4be339.system.entry.js.map → p-bee8d4b8.system.entry.js.map} +1 -1
- package/dist/pine-core/{p-C2AG52JP.system.js.map → p-bkQbPz-z.system.js.map} +1 -1
- package/dist/pine-core/p-c08ab042.system.entry.js +2 -0
- package/dist/pine-core/p-c08ab042.system.entry.js.map +1 -0
- package/dist/pine-core/{p-1d83f560.entry.js → p-c5013d20.entry.js} +2 -2
- package/dist/pine-core/p-c9f97ccb.system.entry.js +2 -0
- package/dist/pine-core/p-c9f97ccb.system.entry.js.map +1 -0
- package/dist/pine-core/p-cd564179.entry.js +2 -0
- package/dist/pine-core/{p-a3503596.entry.js.map → p-cd564179.entry.js.map} +1 -1
- package/dist/pine-core/{p-01c4eac9.entry.js → p-cf4df489.entry.js} +2 -2
- package/dist/pine-core/p-cf910e8b.system.entry.js +2 -0
- package/dist/pine-core/p-cf910e8b.system.entry.js.map +1 -0
- package/dist/pine-core/p-d0e336b7.system.entry.js +2 -0
- package/dist/pine-core/{p-b07bb58f.system.entry.js → p-d1313dd6.system.entry.js} +2 -2
- package/dist/pine-core/p-dba5ca37.system.entry.js +2 -0
- package/dist/pine-core/p-dba5ca37.system.entry.js.map +1 -0
- package/dist/pine-core/p-dfcdd55d.system.entry.js +2 -0
- package/dist/pine-core/{p-ee6c07d6.system.entry.js.map → p-dfcdd55d.system.entry.js.map} +1 -1
- package/dist/pine-core/{p-2c3ede8e.entry.js → p-e08503a7.entry.js} +2 -2
- package/dist/pine-core/{p-2c3ede8e.entry.js.map → p-e08503a7.entry.js.map} +1 -1
- package/dist/pine-core/{p-fbf10641.entry.js → p-e0f21c22.entry.js} +2 -2
- package/dist/pine-core/{p-B7x-ddku.system.js → p-e50YjICS.system.js} +2 -2
- package/dist/pine-core/{p-B7x-ddku.system.js.map → p-e50YjICS.system.js.map} +1 -1
- package/dist/pine-core/p-e6b39ec1.entry.js +2 -0
- package/dist/pine-core/{p-73a6c002.entry.js.map → p-e6b39ec1.entry.js.map} +1 -1
- package/dist/pine-core/p-e7e25d42.entry.js +2 -0
- package/dist/pine-core/p-e837b577.entry.js +2 -0
- package/dist/pine-core/p-e837b577.entry.js.map +1 -0
- package/dist/pine-core/p-eUcBQ_fh.system.js.map +1 -0
- package/dist/pine-core/{p-5d379706.system.entry.js → p-ec32c44f.system.entry.js} +2 -2
- package/dist/pine-core/p-ejoWgOZK.system.js.map +1 -0
- package/dist/pine-core/p-f64ea4f7.entry.js +2 -0
- package/dist/pine-core/{p-239cbdb2.entry.js.map → p-f64ea4f7.entry.js.map} +1 -1
- package/dist/pine-core/p-f8fba315.entry.js +2 -0
- package/dist/pine-core/p-f8fba315.entry.js.map +1 -0
- package/dist/pine-core/{p-2f5d1411.entry.js → p-f92055f3.entry.js} +2 -2
- package/dist/pine-core/{p-4792d0c8.system.entry.js → p-fa21e054.system.entry.js} +2 -2
- package/dist/pine-core/p-qkIMFuAW.system.js.map +1 -0
- package/dist/pine-core/{p-CIoeutZO.system.js.map → p-tHMXRB8d.system.js.map} +1 -1
- package/dist/pine-core/p-zgS7Vsk7.system.js.map +1 -0
- package/dist/pine-core/pds-accordion.entry.esm.js.map +1 -1
- package/dist/pine-core/pds-alert.entry.esm.js.map +1 -1
- package/dist/pine-core/pds-avatar.entry.esm.js.map +1 -1
- package/dist/pine-core/pds-box.entry.esm.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-item.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 -1
- package/dist/pine-core/pds-input.entry.esm.js.map +1 -1
- package/dist/pine-core/pds-link.entry.esm.js.map +1 -1
- package/dist/pine-core/pds-loader.entry.esm.js.map +1 -1
- package/dist/pine-core/pds-modal-content.entry.esm.js.map +1 -1
- package/dist/pine-core/pds-popover.entry.esm.js.map +1 -1
- package/dist/pine-core/pds-progress.entry.esm.js.map +1 -1
- package/dist/pine-core/pds-radio-group.entry.esm.js.map +1 -0
- 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-sortable.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-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-text.entry.esm.js.map +1 -1
- package/dist/pine-core/pds-textarea.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/scripts/vscode-custom-data-generator.js +407 -0
- package/dist/scripts/vscode-custom-data-generator.js.map +1 -0
- package/dist/scripts/vscode-settings-patcher.cjs +89 -0
- package/dist/types/components/pds-button/pds-button.d.ts +1 -1
- package/dist/types/components/pds-chip/pds-chip.d.ts +1 -1
- package/dist/types/components/pds-copytext/pds-copytext.d.ts +1 -1
- package/dist/types/components/pds-dropdown-menu/pds-dropdown-menu.d.ts +5 -0
- package/dist/types/components/pds-input/input-interface.d.ts +1 -1
- package/dist/types/components/pds-modal/test/mock-pds-modal.d.ts +3 -3
- package/dist/types/components/pds-popover/pds-popover.d.ts +1 -1
- package/dist/types/components/pds-radio-group/pds-radio-group.d.ts +72 -0
- package/dist/types/components/pds-radio-group/radio-group-interface.d.ts +5 -0
- package/dist/types/components/pds-sortable/pds-sortable.d.ts +2 -1
- package/dist/types/components/pds-sortable/sortable-interface.d.ts +2 -1
- package/dist/types/components.d.ts +142 -14
- package/dist/types/home/runner/work/pine/pine/libs/core/.stencil/scripts/vscode-custom-data-generator.d.ts +6 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/vscode.html-data.json +9965 -0
- package/hydrate/index.js +292 -77
- package/hydrate/index.mjs +292 -77
- package/package.json +29 -15
- package/dist/cjs/index-2Lf0E1JO.js.map +0 -1
- package/dist/collection/stories/_helpers/index.js +0 -15
- package/dist/collection/stories/_helpers/index.js.map +0 -1
- package/dist/esm/index-Bh07GI-d.js.map +0 -1
- package/dist/esm-es5/index-Bh07GI-d.js +0 -3
- package/dist/esm-es5/index-Bh07GI-d.js.map +0 -1
- package/dist/pine-core/p-052eedc2.system.entry.js +0 -2
- package/dist/pine-core/p-0837abe8.entry.js +0 -2
- package/dist/pine-core/p-09cab3b5.system.entry.js +0 -2
- package/dist/pine-core/p-09cab3b5.system.entry.js.map +0 -1
- package/dist/pine-core/p-198fce07.system.entry.js +0 -2
- package/dist/pine-core/p-198fce07.system.entry.js.map +0 -1
- package/dist/pine-core/p-19e6bce5.entry.js +0 -2
- package/dist/pine-core/p-1W8OgEyK.system.js.map +0 -1
- package/dist/pine-core/p-1ab0a7b1.system.entry.js +0 -2
- package/dist/pine-core/p-1ac7cb0f.system.entry.js +0 -2
- package/dist/pine-core/p-1b299f58.entry.js +0 -2
- package/dist/pine-core/p-1c03ac40.system.entry.js +0 -2
- package/dist/pine-core/p-1d3c4f2d.entry.js +0 -2
- package/dist/pine-core/p-1f28575b.system.entry.js +0 -2
- package/dist/pine-core/p-239cbdb2.entry.js +0 -2
- package/dist/pine-core/p-2551ed1a.entry.js +0 -2
- package/dist/pine-core/p-285bc185.entry.js +0 -2
- package/dist/pine-core/p-2NVJY0Vc.system.js.map +0 -1
- package/dist/pine-core/p-3900b6f6.entry.js +0 -2
- package/dist/pine-core/p-43b758af.entry.js +0 -2
- package/dist/pine-core/p-49c5234f.system.entry.js +0 -2
- package/dist/pine-core/p-4HGk7WFM.system.js.map +0 -1
- package/dist/pine-core/p-4ea1a4fb.entry.js +0 -2
- package/dist/pine-core/p-4fe28624.system.entry.js +0 -2
- package/dist/pine-core/p-54e04c59.system.entry.js +0 -2
- package/dist/pine-core/p-54e04c59.system.entry.js.map +0 -1
- package/dist/pine-core/p-5565ee41.system.entry.js +0 -2
- package/dist/pine-core/p-55d120d1.entry.js +0 -2
- package/dist/pine-core/p-5a332f9e.system.entry.js +0 -2
- package/dist/pine-core/p-5e1804a3.system.entry.js +0 -2
- package/dist/pine-core/p-619a6667.system.entry.js +0 -2
- package/dist/pine-core/p-6d9ca1ff.system.entry.js +0 -2
- package/dist/pine-core/p-6e4be339.system.entry.js +0 -4
- package/dist/pine-core/p-6f5dfd01.entry.js +0 -2
- package/dist/pine-core/p-730ea265.entry.js +0 -2
- package/dist/pine-core/p-73a6c002.entry.js +0 -2
- package/dist/pine-core/p-7a12238d.system.entry.js +0 -2
- package/dist/pine-core/p-7c2381c5.entry.js +0 -2
- package/dist/pine-core/p-7c69ca77.entry.js +0 -2
- package/dist/pine-core/p-7c69ca77.entry.js.map +0 -1
- package/dist/pine-core/p-7ccd095b.entry.js +0 -2
- package/dist/pine-core/p-7ccd095b.entry.js.map +0 -1
- package/dist/pine-core/p-818dd3d8.system.entry.js +0 -2
- package/dist/pine-core/p-818dd3d8.system.entry.js.map +0 -1
- package/dist/pine-core/p-9f7318d7.entry.js +0 -2
- package/dist/pine-core/p-BCCWozKV.system.js.map +0 -1
- package/dist/pine-core/p-BCGaZxvq.system.js.map +0 -1
- package/dist/pine-core/p-BF6EelyL.system.js.map +0 -1
- package/dist/pine-core/p-BLpHPllL.system.js.map +0 -1
- package/dist/pine-core/p-Bh07GI-d.js +0 -3
- package/dist/pine-core/p-Bh07GI-d.js.map +0 -1
- package/dist/pine-core/p-Bhj5-yqf.system.js.map +0 -1
- package/dist/pine-core/p-BhoJR5O9.system.js.map +0 -1
- package/dist/pine-core/p-Bj1vPZM7.system.js.map +0 -1
- package/dist/pine-core/p-BnrgLbVq.system.js.map +0 -1
- package/dist/pine-core/p-BvtgWXBT.system.js.map +0 -1
- package/dist/pine-core/p-C4UrydrO.system.js.map +0 -1
- package/dist/pine-core/p-C6_QgODF.system.js.map +0 -1
- package/dist/pine-core/p-CSVIgMVz.system.js.map +0 -1
- package/dist/pine-core/p-CVjjaBaW.system.js.map +0 -1
- package/dist/pine-core/p-CVoRTJJv.system.js.map +0 -1
- package/dist/pine-core/p-CZsWy9_t.system.js +0 -3
- package/dist/pine-core/p-CZsWy9_t.system.js.map +0 -1
- package/dist/pine-core/p-ChQGk39M.system.js.map +0 -1
- package/dist/pine-core/p-CpcN1meO.system.js.map +0 -1
- package/dist/pine-core/p-CrpTd0PB.system.js.map +0 -1
- package/dist/pine-core/p-CtiVxXhr.system.js.map +0 -1
- package/dist/pine-core/p-CuF_eckL.system.js.map +0 -1
- package/dist/pine-core/p-Cua7cmvq.system.js +0 -2
- package/dist/pine-core/p-D-CArvsF.system.js.map +0 -1
- package/dist/pine-core/p-DCiTnlD3.system.js.map +0 -1
- package/dist/pine-core/p-DPmRw4fA.system.js.map +0 -1
- package/dist/pine-core/p-DTMMULoz.system.js.map +0 -1
- package/dist/pine-core/p-DvfECQRp.system.js.map +0 -1
- package/dist/pine-core/p-O9Boj8Mc.system.js.map +0 -1
- package/dist/pine-core/p-a1ddcc69.entry.js +0 -2
- package/dist/pine-core/p-a2c309fa.system.entry.js +0 -2
- package/dist/pine-core/p-a3503596.entry.js +0 -2
- package/dist/pine-core/p-a494b7d1.entry.js +0 -2
- package/dist/pine-core/p-ab34c977.system.entry.js +0 -2
- package/dist/pine-core/p-ac5eb57e.entry.js +0 -2
- package/dist/pine-core/p-bd11961c.entry.js +0 -3
- package/dist/pine-core/p-c28c54c2.system.entry.js +0 -2
- package/dist/pine-core/p-c7175497.entry.js +0 -2
- package/dist/pine-core/p-c7175497.entry.js.map +0 -1
- package/dist/pine-core/p-d0efe5e1.entry.js +0 -2
- package/dist/pine-core/p-da23f4cf.entry.js +0 -2
- package/dist/pine-core/p-db3b827e.system.entry.js +0 -2
- package/dist/pine-core/p-db3b827e.system.entry.js.map +0 -1
- package/dist/pine-core/p-de4ebf0b.entry.js +0 -2
- package/dist/pine-core/p-e22c4870.system.entry.js +0 -2
- package/dist/pine-core/p-e25d2c53.entry.js +0 -2
- package/dist/pine-core/p-e715d22e.system.entry.js +0 -2
- package/dist/pine-core/p-eb3fe298.system.entry.js +0 -2
- package/dist/pine-core/p-ee6c07d6.system.entry.js +0 -2
- package/dist/pine-core/p-f2344cb2.system.entry.js.map +0 -1
- package/dist/pine-core/p-f38e87ad.system.entry.js +0 -2
- package/dist/pine-core/p-f70327de.system.entry.js +0 -2
- package/dist/pine-core/p-f72243c4.entry.js +0 -2
- package/dist/pine-core/p-f72243c4.entry.js.map +0 -1
- package/dist/pine-core/p-fb877b9d.entry.js +0 -2
- package/dist/pine-core/p-fcde1f61.system.entry.js +0 -2
- package/dist/pine-core/p-fcde1f61.system.entry.js.map +0 -1
- package/dist/pine-core/p-fdf7a1db.system.entry.js +0 -2
- package/dist/pine-core/p-pKEraGuG.system.js.map +0 -1
- package/dist/pine-core/p-y8wq27x0.system.js.map +0 -1
- package/dist/pine-core/p-zZn2-0Xb.system.js.map +0 -1
- package/dist/types/stories/_helpers/index.d.ts +0 -12
- /package/dist/pine-core/{p-37795a28.system.entry.js.map → p-00568c20.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-53645ec6.system.entry.js.map → p-03209958.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-1fbe221a.entry.js.map → p-0ace9c16.entry.js.map} +0 -0
- /package/dist/pine-core/{p-e47fbd71.entry.js.map → p-10e0be55.entry.js.map} +0 -0
- /package/dist/pine-core/{p-b0948892.system.entry.js.map → p-1df25b57.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-d6cff25a.entry.js.map → p-1fa303af.entry.js.map} +0 -0
- /package/dist/pine-core/{p-996072ce.entry.js.map → p-2058a93a.entry.js.map} +0 -0
- /package/dist/pine-core/{p-7bbe537d.system.entry.js.map → p-2d3da08b.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-7a63e1ec.entry.js.map → p-2f6f60d9.entry.js.map} +0 -0
- /package/dist/pine-core/{p-841a6445.entry.js.map → p-3f6b9520.entry.js.map} +0 -0
- /package/dist/pine-core/{p-06f164fe.system.entry.js.map → p-3f8a5f3d.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-ba1a4643.system.entry.js.map → p-3f8b0885.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-ba609b1e.entry.js.map → p-43990889.entry.js.map} +0 -0
- /package/dist/pine-core/{p-6046e0b1.entry.js.map → p-43f1eead.entry.js.map} +0 -0
- /package/dist/pine-core/{p-b151a37d.entry.js.map → p-596acf65.entry.js.map} +0 -0
- /package/dist/pine-core/{p-168b5a5b.system.entry.js.map → p-6dcd7876.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-ed214033.entry.js.map → p-7de73ac5.entry.js.map} +0 -0
- /package/dist/pine-core/{p-51e0ea73.entry.js.map → p-8c000d7c.entry.js.map} +0 -0
- /package/dist/pine-core/{p-5a94e426.system.entry.js.map → p-94b1997d.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-f74bcc1d.entry.js.map → p-9998c2a0.entry.js.map} +0 -0
- /package/dist/pine-core/{p-e948a514.system.entry.js.map → p-a11c3642.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-6448829b.system.entry.js.map → p-ac14c8e3.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-1bf75b30.system.entry.js.map → p-ac186cd4.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-fe23aa6f.system.entry.js.map → p-b59a0c6b.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-105951b7.system.entry.js.map → p-bdf8bff3.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-1d83f560.entry.js.map → p-c5013d20.entry.js.map} +0 -0
- /package/dist/pine-core/{p-01c4eac9.entry.js.map → p-cf4df489.entry.js.map} +0 -0
- /package/dist/pine-core/{p-fdf7a1db.system.entry.js.map → p-d0e336b7.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-b07bb58f.system.entry.js.map → p-d1313dd6.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-fbf10641.entry.js.map → p-e0f21c22.entry.js.map} +0 -0
- /package/dist/pine-core/{p-285bc185.entry.js.map → p-e7e25d42.entry.js.map} +0 -0
- /package/dist/pine-core/{p-5d379706.system.entry.js.map → p-ec32c44f.system.entry.js.map} +0 -0
- /package/dist/pine-core/{p-2f5d1411.entry.js.map → p-f92055f3.entry.js.map} +0 -0
- /package/dist/pine-core/{p-4792d0c8.system.entry.js.map → p-fa21e054.system.entry.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pds-modal-content.js","sourceRoot":"","sources":["../../../../src/components/pds-modal/pds-modal-content/pds-modal-content.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, h, Host, Prop, Element, State } from '@stencil/core';\n\n@Component({\n tag: 'pds-modal-content',\n styleUrl: 'pds-modal-content.scss',\n})\nexport class PdsModalContent {\n\n @Element() el: HTMLPdsModalContentElement;\n\n /**\n * The border style for the content area. When not explicitly set, automatically determined based on scroll state.\n * @default 'none'\n */\n @Prop({ reflect: true }) border: 'none' | 'both' | 'top' | 'bottom' = 'none';\n\n @State() contentMaxHeight: string = 'none';\n\n /**\n * Tracks whether the border prop was explicitly set by the user\n */\n private userSetBorder = false;\n\n componentWillLoad() {\n // Check if border was explicitly set via attribute or property\n const borderAttr = this.el.getAttribute('border');\n const hasBorderAttribute = borderAttr !== null;\n\n // If border attribute exists or border prop is not the default, user set it\n this.userSetBorder = hasBorderAttribute || this.border !== 'none';\n }\n\n componentDidLoad() {\n this.calculateMaxHeight();\n\n // Set up resize listener\n window.addEventListener('resize', this.handleResize.bind(this));\n\n // Only set up scroll listener for border updates if borders are managed automatically\n if (!this.userSetBorder) {\n setTimeout(() => {\n // The scroll happens on the component element itself (this.el), not the inner div\n console.log('Setting up scroll listener on component element:', this.el);\n this.el.addEventListener('scroll', this.handleScroll.bind(this));\n // Initial border update after everything is set up\n setTimeout(() => this.updateBorders(), 100);\n }, 100);\n }\n }\n\n disconnectedCallback() {\n window.removeEventListener('resize', this.handleResize.bind(this));\n\n // Clean up scroll listener only if it was set up\n if (!this.userSetBorder) {\n this.el.removeEventListener('scroll', this.handleScroll.bind(this));\n }\n\n if (this.mutationObserver) {\n this.mutationObserver.disconnect();\n }\n }\n\n /**\n * Handle scroll events\n */\n private handleScroll() {\n console.log('Scroll event fired!');\n this.updateBorders();\n }\n\n /**\n * Handle resize events\n */\n private handleResize() {\n this.calculateMaxHeight();\n // Update borders after resize as content scrollability might change\n setTimeout(() => this.updateBorders(), 50);\n }\n\n /**\n * Calculates the max-height based on header and footer heights\n */\n private mutationObserver: MutationObserver;\n\n /**\n * Updates border visibility based on scroll state (only if not user-defined)\n */\n private updateBorders() {\n // If user explicitly set a border value, don't override it\n if (this.userSetBorder) {\n return;\n }\n\n // Find the modal element (parent of this component)\n const modalElement = this.el.closest('pds-modal');\n if (!modalElement) return;\n\n // Only apply border logic if modal is scrollable\n const isModalScrollable = modalElement.scrollable !== false;\n if (!isModalScrollable) {\n this.border = 'none';\n return;\n }\n\n // The scrollable element is the component itself (this.el), not the inner div\n const scrollableElement = this.el;\n\n // Check if content is actually scrollable\n const isContentScrollable = scrollableElement.scrollHeight > scrollableElement.clientHeight;\n\n if (!isContentScrollable) {\n this.border = 'none';\n return;\n }\n\n // Determine border position based on scroll position\n const { scrollTop, scrollHeight, clientHeight } = scrollableElement;\n const scrollBottom = scrollTop + clientHeight;\n\n // More generous tolerance for scroll detection (3px instead of 1px)\n const tolerance = 3;\n const isAtTop = scrollTop <= tolerance;\n const isAtBottom = scrollBottom >= scrollHeight - tolerance;\n\n // Debug logging (can be removed later)\n console.log('Border Debug:', {\n scrollTop,\n scrollHeight,\n clientHeight,\n scrollBottom,\n isAtTop,\n isAtBottom,\n currentBorder: this.border\n });\n\n if (isAtTop && isAtBottom) {\n // Content fits exactly, no borders needed\n this.border = 'none';\n console.log('Content fits exactly, no borders needed');\n } else if (isAtTop && !isAtBottom) {\n // At top, show bottom border only\n this.border = 'bottom';\n console.log('At top, show bottom border only');\n } else if (!isAtTop && isAtBottom) {\n // At bottom, show top border only\n this.border = 'top';\n console.log('At bottom, show top border only');\n } else {\n // In middle, show both borders\n this.border = 'both';\n console.log('In middle, show both borders');\n }\n }\n\n /**\n * Calculates the max-height based on header and footer heights\n */\n private calculateMaxHeight() {\n // Find the modal element (parent of this component)\n const modalElement = this.el.closest('pds-modal');\n if (!modalElement) return;\n\n // Check if the parent modal is scrollable\n const isScrollable = modalElement.scrollable !== false;\n\n setTimeout(() => {\n // If modal is not scrollable, don't apply max-height constraints\n if (!isScrollable) {\n this.contentMaxHeight = 'none';\n const contentElement = this.el.querySelector('.pds-modal-content') as HTMLElement;\n if (contentElement) {\n contentElement.style.maxHeight = 'none';\n }\n return;\n }\n\n // Find header and footer elements\n const headerElement = modalElement.querySelector('pds-modal-header');\n const footerElement = modalElement.querySelector('pds-modal-footer');\n\n // Get header and footer heights\n const headerHeight = headerElement ? headerElement.offsetHeight : 0;\n const footerHeight = footerElement ? footerElement.offsetHeight : 0;\n\n // Set the max-height as a calculation\n if (headerHeight > 0 || footerHeight > 0) {\n // Calculate the available height by subtracting:\n // 1. Header and footer heights\n // 2. Modal padding (48px)\n // 3. Additional space for modal positioning (6vh)\n // 4. Extra adjustment for perfect fit (50px)\n const viewportAdjustment = Math.round(window.innerHeight * 0.06); // 6vh approximation\n const totalReduction = headerHeight + footerHeight + 48 + viewportAdjustment + 50;\n\n // Set the content max height\n this.contentMaxHeight = `calc(100vh - ${totalReduction}px)`;\n\n // Apply the style directly to ensure it takes effect\n const contentElement = this.el.querySelector('.pds-modal-content') as HTMLElement;\n if (contentElement) {\n contentElement.style.maxHeight = this.contentMaxHeight;\n }\n } else {\n this.contentMaxHeight = 'none'; // Default fallback\n }\n\n // Update borders after height calculations with longer delay\n setTimeout(() => this.updateBorders(), 150);\n }, 100); // Delay to ensure DOM is fully rendered\n\n // Set up mutation observer if not already done\n if (!this.mutationObserver && modalElement) {\n this.mutationObserver = new MutationObserver(() => {\n this.calculateMaxHeight();\n });\n\n // Observe changes to the modal's children\n this.mutationObserver.observe(modalElement, {\n childList: true,\n subtree: true,\n attributes: true,\n attributeFilter: ['style', 'class']\n });\n }\n }\n render() {\n // Only apply max-height style if it's not 'none'\n const styleObj = this.contentMaxHeight !== 'none' ? { maxHeight: this.contentMaxHeight } : {};\n\n return (\n <Host>\n <div\n class={{\n 'pds-modal-content': true,\n [`pds-modal-content--border-${this.border}`]: true\n }}\n style={styleObj}\n tabindex=\"-1\"\n >\n <slot></slot>\n </div>\n </Host>\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"pds-modal-content.js","sourceRoot":"","sources":["../../../../../src/components/pds-modal/pds-modal-content/pds-modal-content.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, h, Host, Prop, Element, State } from '@stencil/core';\n\n@Component({\n tag: 'pds-modal-content',\n styleUrl: 'pds-modal-content.scss',\n})\nexport class PdsModalContent {\n\n @Element() el: HTMLPdsModalContentElement;\n\n /**\n * The border style for the content area. When not explicitly set, automatically determined based on scroll state.\n * @default 'none'\n */\n @Prop({ reflect: true }) border: 'none' | 'both' | 'top' | 'bottom' = 'none';\n\n @State() contentMaxHeight: string = 'none';\n\n /**\n * Tracks whether the border prop was explicitly set by the user\n */\n private userSetBorder = false;\n\n componentWillLoad() {\n // Check if border was explicitly set via attribute or property\n const borderAttr = this.el.getAttribute('border');\n const hasBorderAttribute = borderAttr !== null;\n\n // If border attribute exists or border prop is not the default, user set it\n this.userSetBorder = hasBorderAttribute || this.border !== 'none';\n }\n\n componentDidLoad() {\n this.calculateMaxHeight();\n\n // Set up resize listener\n window.addEventListener('resize', this.handleResize.bind(this));\n\n // Only set up scroll listener for border updates if borders are managed automatically\n if (!this.userSetBorder) {\n setTimeout(() => {\n // The scroll happens on the component element itself (this.el), not the inner div\n console.log('Setting up scroll listener on component element:', this.el);\n this.el.addEventListener('scroll', this.handleScroll.bind(this));\n // Initial border update after everything is set up\n setTimeout(() => this.updateBorders(), 100);\n }, 100);\n }\n }\n\n disconnectedCallback() {\n window.removeEventListener('resize', this.handleResize.bind(this));\n\n // Clean up scroll listener only if it was set up\n if (!this.userSetBorder) {\n this.el.removeEventListener('scroll', this.handleScroll.bind(this));\n }\n\n if (this.mutationObserver) {\n this.mutationObserver.disconnect();\n }\n }\n\n /**\n * Handle scroll events\n */\n private handleScroll() {\n console.log('Scroll event fired!');\n this.updateBorders();\n }\n\n /**\n * Handle resize events\n */\n private handleResize() {\n this.calculateMaxHeight();\n // Update borders after resize as content scrollability might change\n setTimeout(() => this.updateBorders(), 50);\n }\n\n /**\n * Calculates the max-height based on header and footer heights\n */\n private mutationObserver: MutationObserver;\n\n /**\n * Updates border visibility based on scroll state (only if not user-defined)\n */\n private updateBorders() {\n // If user explicitly set a border value, don't override it\n if (this.userSetBorder) {\n return;\n }\n\n // Find the modal element (parent of this component)\n const modalElement = this.el.closest('pds-modal');\n if (!modalElement) return;\n\n // Only apply border logic if modal is scrollable\n const isModalScrollable = modalElement.scrollable !== false;\n if (!isModalScrollable) {\n this.border = 'none';\n return;\n }\n\n // The scrollable element is the component itself (this.el), not the inner div\n const scrollableElement = this.el;\n\n // Check if content is actually scrollable\n const isContentScrollable = scrollableElement.scrollHeight > scrollableElement.clientHeight;\n\n if (!isContentScrollable) {\n this.border = 'none';\n return;\n }\n\n // Determine border position based on scroll position\n const { scrollTop, scrollHeight, clientHeight } = scrollableElement;\n const scrollBottom = scrollTop + clientHeight;\n\n // More generous tolerance for scroll detection (3px instead of 1px)\n const tolerance = 3;\n const isAtTop = scrollTop <= tolerance;\n const isAtBottom = scrollBottom >= scrollHeight - tolerance;\n\n // Debug logging (can be removed later)\n console.log('Border Debug:', {\n scrollTop,\n scrollHeight,\n clientHeight,\n scrollBottom,\n isAtTop,\n isAtBottom,\n currentBorder: this.border\n });\n\n if (isAtTop && isAtBottom) {\n // Content fits exactly, no borders needed\n this.border = 'none';\n console.log('Content fits exactly, no borders needed');\n } else if (isAtTop && !isAtBottom) {\n // At top, show bottom border only\n this.border = 'bottom';\n console.log('At top, show bottom border only');\n } else if (!isAtTop && isAtBottom) {\n // At bottom, show top border only\n this.border = 'top';\n console.log('At bottom, show top border only');\n } else {\n // In middle, show both borders\n this.border = 'both';\n console.log('In middle, show both borders');\n }\n }\n\n /**\n * Calculates the max-height based on header and footer heights\n */\n private calculateMaxHeight() {\n // Find the modal element (parent of this component)\n const modalElement = this.el.closest('pds-modal');\n if (!modalElement) return;\n\n // Check if the parent modal is scrollable\n const isScrollable = modalElement.scrollable !== false;\n\n setTimeout(() => {\n // If modal is not scrollable, don't apply max-height constraints\n if (!isScrollable) {\n this.contentMaxHeight = 'none';\n const contentElement = this.el.querySelector('.pds-modal-content') as HTMLElement;\n if (contentElement) {\n contentElement.style.maxHeight = 'none';\n }\n return;\n }\n\n // Find header and footer elements\n const headerElement = modalElement.querySelector('pds-modal-header');\n const footerElement = modalElement.querySelector('pds-modal-footer');\n\n // Get header and footer heights\n const headerHeight = headerElement ? headerElement.offsetHeight : 0;\n const footerHeight = footerElement ? footerElement.offsetHeight : 0;\n\n // Set the max-height as a calculation\n if (headerHeight > 0 || footerHeight > 0) {\n // Calculate the available height by subtracting:\n // 1. Header and footer heights\n // 2. Modal padding (48px)\n // 3. Additional space for modal positioning (6vh)\n // 4. Extra adjustment for perfect fit (50px)\n const viewportAdjustment = Math.round(window.innerHeight * 0.06); // 6vh approximation\n const totalReduction = headerHeight + footerHeight + 48 + viewportAdjustment + 50;\n\n // Set the content max height\n this.contentMaxHeight = `calc(100vh - ${totalReduction}px)`;\n\n // Apply the style directly to ensure it takes effect\n const contentElement = this.el.querySelector('.pds-modal-content') as HTMLElement;\n if (contentElement) {\n contentElement.style.maxHeight = this.contentMaxHeight;\n }\n } else {\n this.contentMaxHeight = 'none'; // Default fallback\n }\n\n // Update borders after height calculations with longer delay\n setTimeout(() => this.updateBorders(), 150);\n }, 100); // Delay to ensure DOM is fully rendered\n\n // Set up mutation observer if not already done\n if (!this.mutationObserver && modalElement) {\n this.mutationObserver = new MutationObserver(() => {\n this.calculateMaxHeight();\n });\n\n // Observe changes to the modal's children\n this.mutationObserver.observe(modalElement, {\n childList: true,\n subtree: true,\n attributes: true,\n attributeFilter: ['style', 'class']\n });\n }\n }\n render() {\n // Only apply max-height style if it's not 'none'\n const styleObj = this.contentMaxHeight !== 'none' ? { maxHeight: this.contentMaxHeight } : {};\n\n return (\n <Host>\n <div\n class={{\n 'pds-modal-content': true,\n [`pds-modal-content--border-${this.border}`]: true\n }}\n style={styleObj}\n tabindex=\"-1\"\n >\n <slot></slot>\n </div>\n </Host>\n );\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pds-modal-footer.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"pds-modal-footer.js","sourceRoot":"","sources":["../../../../../src/components/pds-modal/pds-modal-footer/pds-modal-footer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAO7C,MAAM,OAAO,cAAc;IACzB,MAAM;QACJ,OAAO,CACL,+DAAQ,KAAK,EAAC,mBAAmB;YAC/B,8DAAa,CACN,CACV,CAAC;IACJ,CAAC;;;;;;;;CACF","sourcesContent":["import { Component, h } from '@stencil/core';\n\n@Component({\n tag: 'pds-modal-footer',\n styleUrl: 'pds-modal-footer.scss',\n shadow: false,\n})\nexport class PdsModalFooter {\n render() {\n return (\n <footer class=\"pds-modal__footer\">\n <slot></slot>\n </footer>\n );\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pds-modal-header.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"pds-modal-header.js","sourceRoot":"","sources":["../../../../../src/components/pds-modal/pds-modal-header/pds-modal-header.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAO7C,MAAM,OAAO,cAAc;IACzB,MAAM;QACJ,OAAO,CACL,+DAAQ,KAAK,EAAC,mBAAmB;YAC/B,8DAAa,CACN,CACV,CAAC;IACJ,CAAC;;;;;;;;CACF","sourcesContent":["import { Component, h } from '@stencil/core';\n\n@Component({\n tag: 'pds-modal-header',\n styleUrl: 'pds-modal-header.scss',\n shadow: false,\n})\nexport class PdsModalHeader {\n render() {\n return (\n <header class=\"pds-modal__header\">\n <slot></slot>\n </header>\n );\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pds-modal.js","sourceRoot":"","sources":["../../../src/components/pds-modal/pds-modal.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, Event, EventEmitter, h, Method, Prop, State, Watch } from '@stencil/core';\n\n@Component({\n tag: 'pds-modal',\n styleUrl: 'pds-modal.scss',\n shadow: false\n})\nexport class PdsModal {\n private modalRef: HTMLDialogElement;\n private previousActiveElement: HTMLElement;\n private focusableElements: HTMLElement[] = [];\n\n @Element() el: HTMLPdsModalElement;\n\n /**\n * Whether the modal can be dismissed by clicking the backdrop\n * @default true\n */\n @Prop() backdropDismiss = true;\n\n /**\n * A unique identifier used for the underlying component `id` attribute.\n */\n @Prop() componentId: string;\n\n /**\n * Whether the modal is open\n * @default false\n */\n @Prop({ mutable: true }) open = false;\n\n /**\n * The size of the modal\n * @default 'md'\n */\n @Prop() size: 'sm' | 'md' | 'lg' | 'fullscreen' = 'md';\n\n /**\n * Whether the modal content should be scrollable\n * @default true\n */\n @Prop() scrollable = true;\n\n /**\n * Emitted when the modal is opened\n */\n @Event() pdsModalOpen: EventEmitter<void>;\n\n /**\n * Emitted when the modal is closed\n */\n @Event() pdsModalClose: EventEmitter<void>;\n\n /**\n * Stores the list of focusable elements in the modal\n */\n @State() focusableElementsArray: HTMLElement[] = [];\n\n componentDidLoad() {\n this.modalRef = this.el.querySelector('.pds-modal__backdrop') as HTMLDialogElement;\n // Add keyboard event listener\n document.addEventListener('keydown', this.handleKeyDown);\n }\n\n disconnectedCallback() {\n // Clean up event listener\n document.removeEventListener('keydown', this.handleKeyDown);\n }\n\n @Watch('open')\n handleOpenChange(newValue: boolean) {\n if (newValue) {\n this.showModal();\n } else {\n this.hideModal();\n }\n }\n\n /**\n * Updates the list of focusable elements in the modal\n */\n private updateFocusableElements() {\n if (!this.modalRef) return;\n\n // Get all focusable elements within the modal\n const selector = [\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n 'pds-button:not([disabled])',\n 'pds-link:not([disabled])',\n 'pds-input:not([disabled])',\n 'pds-checkbox:not([disabled])',\n 'pds-radio:not([disabled])',\n 'pds-switch:not([disabled])',\n 'pds-select:not([disabled])',\n ].join(',');\n\n this.focusableElements = Array.from(\n this.modalRef.querySelectorAll(selector)\n ) as HTMLElement[];\n\n // Filter out elements with display: none or visibility: hidden\n this.focusableElements = this.focusableElements.filter(el => {\n const style = window.getComputedStyle(el);\n return style.display !== 'none' && style.visibility !== 'hidden';\n });\n }\n\n /**\n * Sets focus to the first focusable element in the modal\n */\n private setInitialFocus() {\n if (this.focusableElements.length === 0) return;\n\n // Focus the first focusable element\n const firstElement = this.focusableElements[0];\n\n // For web components, we need to ensure they're properly focused\n this.focusElement(firstElement);\n }\n\n /**\n * Helper method to focus an element, with special handling for web components\n */\n private focusElement(element: HTMLElement) {\n if (!element) return;\n\n try {\n // Try standard focus first\n element.focus();\n\n // Check if focus worked\n setTimeout(() => {\n if (document.activeElement !== element) {\n // For web components, try to find a focusable element inside\n if (element.shadowRoot) {\n const focusableInShadow = element.shadowRoot.querySelector(\n 'button, [tabindex], input, a[href]'\n ) as HTMLElement;\n\n if (focusableInShadow) {\n focusableInShadow.focus();\n }\n }\n }\n }, 0);\n } catch (error) {\n console.error('Error focusing element:', error);\n }\n }\n\n /**\n * Opens the modal\n */\n @Method()\n async showModal() {\n if (this.modalRef) {\n try {\n // Store the currently focused element to restore focus when modal closes\n this.previousActiveElement = document.activeElement as HTMLElement;\n\n // Use native dialog showModal method which makes the rest of the page inert\n this.modalRef.showModal();\n this.open = true;\n\n // Update focusable elements and set initial focus\n // Using a longer timeout to ensure all components are fully rendered\n setTimeout(() => {\n this.updateFocusableElements();\n this.setInitialFocus();\n this.pdsModalOpen.emit();\n }, 100);\n } catch (error) {\n console.error('Failed to show modal:', error);\n }\n }\n }\n\n /**\n * Closes the modal\n */\n @Method()\n async hideModal() {\n if (this.modalRef) {\n try {\n this.modalRef.close();\n this.open = false;\n\n // Restore focus to the element that was focused before the modal was opened\n if (this.previousActiveElement && typeof this.previousActiveElement.focus === 'function') {\n this.previousActiveElement.focus();\n }\n\n this.pdsModalClose.emit();\n } catch (error) {\n console.error('Failed to hide modal:', error);\n }\n }\n }\n\n private handleBackdropClick = (e: MouseEvent) => {\n if (!this.backdropDismiss || !this.open) return;\n\n if ((e.target as HTMLElement).classList.contains('pds-modal__backdrop')) {\n e.stopPropagation();\n\n // Only close if this is the innermost modal\n if (this.isInnermostModal()) {\n this.hideModal();\n }\n }\n };\n\n /**\n * Gets the z-index of a modal's backdrop element\n */\n private getBackdropZIndex(modal: Element): number {\n const backdrop = modal.querySelector('.pds-modal__backdrop');\n return backdrop ? parseInt(getComputedStyle(backdrop).zIndex, 10) : -1;\n }\n\n /**\n * Checks if this modal is the innermost (highest z-index) modal\n */\n private isInnermostModal(): boolean {\n // Find all open modals\n const openModals = Array.from(document.querySelectorAll('pds-modal')).filter(\n modal => modal.open\n );\n\n if (openModals.length === 0) return false;\n\n // Get this modal's backdrop element\n const thisBackdrop = this.el.querySelector('.pds-modal__backdrop');\n if (!thisBackdrop) return false;\n\n // Get computed z-index of all open modal backdrops\n const modalZIndexes = openModals.map(modal => this.getBackdropZIndex(modal));\n\n // Get the highest z-index\n const maxZIndex = Math.max(...modalZIndexes);\n\n // Check if this modal's backdrop has the highest z-index\n const thisZIndex = this.getBackdropZIndex(this.el);\n return thisZIndex === maxZIndex;\n }\n\n private handleKeyDown = (e: KeyboardEvent) => {\n // If the modal is not open, don't handle any keyboard events\n if (!this.open) return;\n\n // Handle Escape key to close the modal\n if (e.key === 'Escape') {\n // Only close if this is the innermost modal\n if (this.isInnermostModal()) {\n e.preventDefault();\n this.hideModal();\n }\n return;\n }\n\n // Handle Tab key for focus trapping\n if (e.key === 'Tab') {\n // If there are no focusable elements, do nothing\n if (this.focusableElements.length === 0) return;\n\n // Get the first and last focusable elements\n const firstFocusableElement = this.focusableElements[0];\n const lastFocusableElement = this.focusableElements[this.focusableElements.length - 1];\n\n // Get the current active element\n const activeElement = document.activeElement;\n\n // Check if we need to wrap focus\n const isFirstElement = activeElement === firstFocusableElement ||\n firstFocusableElement.contains(activeElement as Node);\n\n const isLastElement = activeElement === lastFocusableElement ||\n lastFocusableElement.contains(activeElement as Node);\n\n // If shift + tab is pressed and focus is on the first element, move to the last element\n if (e.shiftKey && isFirstElement) {\n e.preventDefault();\n this.focusElement(lastFocusableElement);\n }\n // If tab is pressed and focus is on the last element, move to the first element\n else if (!e.shiftKey && isLastElement) {\n e.preventDefault();\n this.focusElement(firstFocusableElement);\n }\n }\n };\n\n render() {\n return (\n <dialog\n class={{\n 'pds-modal__backdrop': true,\n 'open': this.open\n }}\n aria-modal=\"true\"\n aria-labelledby={`${this.componentId}-heading`}\n onClick={this.handleBackdropClick}\n >\n <div\n class={{\n 'pds-modal': true,\n [`pds-modal--${this.size}`]: true,\n 'pds-modal--scrollable': this.scrollable\n }}\n >\n <slot></slot>\n </div>\n </dialog>\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"pds-modal.js","sourceRoot":"","sources":["../../../../src/components/pds-modal/pds-modal.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, Event, EventEmitter, h, Method, Prop, State, Watch } from '@stencil/core';\n\n@Component({\n tag: 'pds-modal',\n styleUrl: 'pds-modal.scss',\n shadow: false\n})\nexport class PdsModal {\n private modalRef: HTMLDialogElement;\n private previousActiveElement: HTMLElement;\n private focusableElements: HTMLElement[] = [];\n\n @Element() el: HTMLPdsModalElement;\n\n /**\n * Whether the modal can be dismissed by clicking the backdrop\n * @default true\n */\n @Prop() backdropDismiss = true;\n\n /**\n * A unique identifier used for the underlying component `id` attribute.\n */\n @Prop() componentId: string;\n\n /**\n * Whether the modal is open\n * @default false\n */\n @Prop({ mutable: true }) open = false;\n\n /**\n * The size of the modal\n * @default 'md'\n */\n @Prop() size: 'sm' | 'md' | 'lg' | 'fullscreen' = 'md';\n\n /**\n * Whether the modal content should be scrollable\n * @default true\n */\n @Prop() scrollable = true;\n\n /**\n * Emitted when the modal is opened\n */\n @Event() pdsModalOpen: EventEmitter<void>;\n\n /**\n * Emitted when the modal is closed\n */\n @Event() pdsModalClose: EventEmitter<void>;\n\n /**\n * Stores the list of focusable elements in the modal\n */\n @State() focusableElementsArray: HTMLElement[] = [];\n\n componentDidLoad() {\n this.modalRef = this.el.querySelector('.pds-modal__backdrop') as HTMLDialogElement;\n // Add keyboard event listener\n document.addEventListener('keydown', this.handleKeyDown);\n }\n\n disconnectedCallback() {\n // Clean up event listener\n document.removeEventListener('keydown', this.handleKeyDown);\n }\n\n @Watch('open')\n handleOpenChange(newValue: boolean) {\n if (newValue) {\n this.showModal();\n } else {\n this.hideModal();\n }\n }\n\n /**\n * Updates the list of focusable elements in the modal\n */\n private updateFocusableElements() {\n if (!this.modalRef) return;\n\n // Get all focusable elements within the modal\n const selector = [\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n 'pds-button:not([disabled])',\n 'pds-link:not([disabled])',\n 'pds-input:not([disabled])',\n 'pds-checkbox:not([disabled])',\n 'pds-radio:not([disabled])',\n 'pds-switch:not([disabled])',\n 'pds-select:not([disabled])',\n ].join(',');\n\n this.focusableElements = Array.from(\n this.modalRef.querySelectorAll(selector)\n ) as HTMLElement[];\n\n // Filter out elements with display: none or visibility: hidden\n this.focusableElements = this.focusableElements.filter(el => {\n const style = window.getComputedStyle(el);\n return style.display !== 'none' && style.visibility !== 'hidden';\n });\n }\n\n /**\n * Sets focus to the first focusable element in the modal\n */\n private setInitialFocus() {\n if (this.focusableElements.length === 0) return;\n\n // Focus the first focusable element\n const firstElement = this.focusableElements[0];\n\n // For web components, we need to ensure they're properly focused\n this.focusElement(firstElement);\n }\n\n /**\n * Helper method to focus an element, with special handling for web components\n */\n private focusElement(element: HTMLElement) {\n if (!element) return;\n\n try {\n // Try standard focus first\n element.focus();\n\n // Check if focus worked\n setTimeout(() => {\n if (document.activeElement !== element) {\n // For web components, try to find a focusable element inside\n if (element.shadowRoot) {\n const focusableInShadow = element.shadowRoot.querySelector(\n 'button, [tabindex], input, a[href]'\n ) as HTMLElement;\n\n if (focusableInShadow) {\n focusableInShadow.focus();\n }\n }\n }\n }, 0);\n } catch (error) {\n console.error('Error focusing element:', error);\n }\n }\n\n /**\n * Opens the modal\n */\n @Method()\n async showModal() {\n if (this.modalRef) {\n try {\n // Store the currently focused element to restore focus when modal closes\n this.previousActiveElement = document.activeElement as HTMLElement;\n\n // Use native dialog showModal method which makes the rest of the page inert\n this.modalRef.showModal();\n this.open = true;\n\n // Update focusable elements and set initial focus\n // Using a longer timeout to ensure all components are fully rendered\n setTimeout(() => {\n this.updateFocusableElements();\n this.setInitialFocus();\n this.pdsModalOpen.emit();\n }, 100);\n } catch (error) {\n console.error('Failed to show modal:', error);\n }\n }\n }\n\n /**\n * Closes the modal\n */\n @Method()\n async hideModal() {\n if (this.modalRef) {\n try {\n this.modalRef.close();\n this.open = false;\n\n // Restore focus to the element that was focused before the modal was opened\n if (this.previousActiveElement && typeof this.previousActiveElement.focus === 'function') {\n this.previousActiveElement.focus();\n }\n\n this.pdsModalClose.emit();\n } catch (error) {\n console.error('Failed to hide modal:', error);\n }\n }\n }\n\n private handleBackdropClick = (e: MouseEvent) => {\n if (!this.backdropDismiss || !this.open) return;\n\n if ((e.target as HTMLElement).classList.contains('pds-modal__backdrop')) {\n e.stopPropagation();\n\n // Only close if this is the innermost modal\n if (this.isInnermostModal()) {\n this.hideModal();\n }\n }\n };\n\n /**\n * Gets the z-index of a modal's backdrop element\n */\n private getBackdropZIndex(modal: Element): number {\n const backdrop = modal.querySelector('.pds-modal__backdrop');\n return backdrop ? parseInt(getComputedStyle(backdrop).zIndex, 10) : -1;\n }\n\n /**\n * Checks if this modal is the innermost (highest z-index) modal\n */\n private isInnermostModal(): boolean {\n // Find all open modals\n const openModals = Array.from(document.querySelectorAll('pds-modal')).filter(\n modal => modal.open\n );\n\n if (openModals.length === 0) return false;\n\n // Get this modal's backdrop element\n const thisBackdrop = this.el.querySelector('.pds-modal__backdrop');\n if (!thisBackdrop) return false;\n\n // Get computed z-index of all open modal backdrops\n const modalZIndexes = openModals.map(modal => this.getBackdropZIndex(modal));\n\n // Get the highest z-index\n const maxZIndex = Math.max(...modalZIndexes);\n\n // Check if this modal's backdrop has the highest z-index\n const thisZIndex = this.getBackdropZIndex(this.el);\n return thisZIndex === maxZIndex;\n }\n\n private handleKeyDown = (e: KeyboardEvent) => {\n // If the modal is not open, don't handle any keyboard events\n if (!this.open) return;\n\n // Handle Escape key to close the modal\n if (e.key === 'Escape') {\n // Only close if this is the innermost modal\n if (this.isInnermostModal()) {\n e.preventDefault();\n this.hideModal();\n }\n return;\n }\n\n // Handle Tab key for focus trapping\n if (e.key === 'Tab') {\n // If there are no focusable elements, do nothing\n if (this.focusableElements.length === 0) return;\n\n // Get the first and last focusable elements\n const firstFocusableElement = this.focusableElements[0];\n const lastFocusableElement = this.focusableElements[this.focusableElements.length - 1];\n\n // Get the current active element\n const activeElement = document.activeElement;\n\n // Check if we need to wrap focus\n const isFirstElement = activeElement === firstFocusableElement ||\n firstFocusableElement.contains(activeElement as Node);\n\n const isLastElement = activeElement === lastFocusableElement ||\n lastFocusableElement.contains(activeElement as Node);\n\n // If shift + tab is pressed and focus is on the first element, move to the last element\n if (e.shiftKey && isFirstElement) {\n e.preventDefault();\n this.focusElement(lastFocusableElement);\n }\n // If tab is pressed and focus is on the last element, move to the first element\n else if (!e.shiftKey && isLastElement) {\n e.preventDefault();\n this.focusElement(firstFocusableElement);\n }\n }\n };\n\n render() {\n return (\n <dialog\n class={{\n 'pds-modal__backdrop': true,\n 'open': this.open\n }}\n aria-modal=\"true\"\n aria-labelledby={`${this.componentId}-heading`}\n onClick={this.handleBackdropClick}\n >\n <div\n class={{\n 'pds-modal': true,\n [`pds-modal--${this.size}`]: true,\n 'pds-modal--scrollable': this.scrollable\n }}\n >\n <slot></slot>\n </div>\n </dialog>\n );\n }\n}\n"]}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import { html } from 'lit';
|
|
2
|
-
|
|
3
|
-
import { withActions } from '@storybook/addon-actions/decorator';
|
|
2
|
+
|
|
4
3
|
|
|
5
4
|
export default {
|
|
6
|
-
|
|
5
|
+
|
|
7
6
|
component: 'pds-modal',
|
|
8
|
-
decorators: [withActions],
|
|
9
7
|
title: 'components/Modal',
|
|
10
8
|
args: {
|
|
11
9
|
backdropDismiss: true,
|
|
@@ -14,11 +12,7 @@ export default {
|
|
|
14
12
|
scrollable: true,
|
|
15
13
|
size: 'md',
|
|
16
14
|
},
|
|
17
|
-
parameters: {
|
|
18
|
-
actions: {
|
|
19
|
-
handles: ['pdsModalOpen', 'pdsModalClose'],
|
|
20
|
-
}
|
|
21
|
-
}
|
|
15
|
+
parameters: {}
|
|
22
16
|
}
|
|
23
17
|
|
|
24
18
|
const BaseTemplate = (args) => html`
|
|
@@ -73,7 +73,7 @@ export class MockPdsModal {
|
|
|
73
73
|
'pds-modal__backdrop': true,
|
|
74
74
|
'open': this.open,
|
|
75
75
|
};
|
|
76
|
-
return (h("div", { key: '
|
|
76
|
+
return (h("div", { key: '34a959eac9e704469dc057f345667304ca5f2fad', class: backdropClasses }, h("div", { key: '55b6a7c61f98f1eef8d6d5b5f7d753b167698752', class: modalClasses, role: "dialog", "aria-modal": "true", "aria-labelledby": this.componentId ? `${this.componentId}-heading` : null }, h("div", { key: 'fa80c43aef0187e19d96bae37c9e838979b245ac', class: "pds-modal__header" }, h("slot", { key: '6c3b88be94e0207dd51d6c4054b296b35c34ea98', name: "header" })), h("div", { key: '651b31aa50bceb33eb44a44ae41b5e6e24095eb1', class: "pds-modal-content" }, h("slot", { key: 'c361d972f07cad50ed897d9c2c5dd89ae6db3acc' })), h("div", { key: 'f105b2e78163930d88addf6e5b84765fcb004587', class: "pds-modal__footer" }, h("slot", { key: '5f8c91790651eabffd2c40a620c70300abbc3b3a', name: "footer" })))));
|
|
77
77
|
}
|
|
78
78
|
static get is() { return "mock-pds-modal"; }
|
|
79
79
|
static get originalStyleUrls() {
|
|
@@ -204,8 +204,8 @@ export class MockPdsModal {
|
|
|
204
204
|
"text": "Event emitted when the modal is opened"
|
|
205
205
|
},
|
|
206
206
|
"complexType": {
|
|
207
|
-
"original": "
|
|
208
|
-
"resolved": "
|
|
207
|
+
"original": "void",
|
|
208
|
+
"resolved": "void",
|
|
209
209
|
"references": {}
|
|
210
210
|
}
|
|
211
211
|
}, {
|
|
@@ -219,8 +219,8 @@ export class MockPdsModal {
|
|
|
219
219
|
"text": "Event emitted when the modal is closed"
|
|
220
220
|
},
|
|
221
221
|
"complexType": {
|
|
222
|
-
"original": "
|
|
223
|
-
"resolved": "
|
|
222
|
+
"original": "void",
|
|
223
|
+
"resolved": "void",
|
|
224
224
|
"references": {}
|
|
225
225
|
}
|
|
226
226
|
}, {
|
|
@@ -234,8 +234,8 @@ export class MockPdsModal {
|
|
|
234
234
|
"text": "Event emitted when the backdrop is clicked"
|
|
235
235
|
},
|
|
236
236
|
"complexType": {
|
|
237
|
-
"original": "
|
|
238
|
-
"resolved": "
|
|
237
|
+
"original": "void",
|
|
238
|
+
"resolved": "void",
|
|
239
239
|
"references": {}
|
|
240
240
|
}
|
|
241
241
|
}];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-pds-modal.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"mock-pds-modal.js","sourceRoot":"","sources":["../../../../../src/components/pds-modal/test/mock-pds-modal.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAgB,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAWzF;;;GAGG;AAMH,MAAM,OAAO,YAAY;IALzB;QAaE;;WAEG;QACK,SAAI,GAAsC,IAAI,CAAC;QAEvD;;;WAGG;QACK,eAAU,GAAG,IAAI,CAAC;QAE1B;;WAEG;QACK,oBAAe,GAAG,IAAI,CAAC;QAE/B,+FAA+F;QAE/F;;WAEG;QACsB,SAAI,GAAG,KAAK,CAAC;KAkGvC;IA/EC;;OAEG;IAEH,KAAK,CAAC,SAAS;QACb,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IAEH,KAAK,CAAC,SAAS;QACb,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;QAClB,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,iEAAiE;IACjE,mBAAmB,CAAC,KAAiB;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC;QAC/D,2EAA2E;QAC3E,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,EAAE,CAAC;YAC/D,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC;YAClC,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,iEAAiE;IACjE,aAAa,CAAC,KAAoB;QAChC,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACjD,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IAED,gBAAgB;QACd,0DAA0D;IAC5D,CAAC;IAED,MAAM;QACJ,MAAM,YAAY,GAAG;YACnB,WAAW,EAAE,IAAI;YACjB,CAAC,cAAc,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI;YACjC,uBAAuB,EAAE,IAAI,CAAC,UAAU;SACzC,CAAC;QAEF,MAAM,eAAe,GAAG;YACtB,qBAAqB,EAAE,IAAI;YAC3B,MAAM,EAAE,IAAI,CAAC,IAAI;SAClB,CAAC;QAEF,OAAO,CACL,4DAAK,KAAK,EAAE,eAAe;YACzB,4DACE,KAAK,EAAE,YAAY,EACnB,IAAI,EAAC,QAAQ,gBACF,MAAM,qBACA,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,UAAU,CAAC,CAAC,CAAC,IAAI;gBAExE,4DAAK,KAAK,EAAC,mBAAmB;oBAC5B,6DAAM,IAAI,EAAC,QAAQ,GAAQ,CACvB;gBACN,4DAAK,KAAK,EAAC,mBAAmB;oBAC5B,8DAAa,CACT;gBACN,4DAAK,KAAK,EAAC,mBAAmB;oBAC5B,6DAAM,IAAI,EAAC,QAAQ,GAAQ,CACvB,CACF,CACF,CACP,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Prop, Event, EventEmitter, Method, Element, h } from '@stencil/core';\n\n// Define the element interface for the mock component\ninterface HTMLMockPdsModalElement extends HTMLElement {\n open: boolean;\n showModal: () => Promise<void>;\n hideModal: () => Promise<void>;\n handleBackdropClick: (event: MouseEvent) => void;\n handleKeyDown: (event: KeyboardEvent) => void;\n}\n\n/**\n * Mock PdsModal component for testing purposes\n * This component mimics the real PdsModal but without using the Popover API\n */\n@Component({\n tag: 'mock-pds-modal',\n styleUrl: '../pds-modal.scss',\n shadow: false,\n})\nexport class MockPdsModal {\n @Element() el!: HTMLMockPdsModalElement;\n\n /**\n * The ID of the modal component\n */\n @Prop() componentId?: string;\n\n /**\n * The size of the modal\n */\n @Prop() size: 'sm' | 'md' | 'lg' | 'fullscreen' = 'md';\n\n /**\n * Whether the modal content should be scrollable\n * @default true\n */\n @Prop() scrollable = true;\n\n /**\n * Whether the modal can be dismissed by clicking the backdrop\n */\n @Prop() backdropDismiss = true;\n\n // Native dialog element always closes on Escape key press, so no closeOnEsc property is needed\n\n /**\n * Whether the modal is open\n */\n @Prop({ mutable: true }) open = false;\n\n // No need for modalRef in the mock implementation\n\n /**\n * Event emitted when the modal is opened\n */\n @Event() pdsModalOpen: EventEmitter<void>;\n\n /**\n * Event emitted when the modal is closed\n */\n @Event() pdsModalClose: EventEmitter<void>;\n\n /**\n * Event emitted when the backdrop is clicked\n */\n @Event() pdsModalBackdropClick: EventEmitter<void>;\n\n /**\n * Shows the modal\n */\n @Method()\n async showModal() {\n this.open = true;\n this.pdsModalOpen.emit();\n }\n\n /**\n * Hides the modal\n */\n @Method()\n async hideModal() {\n this.open = false;\n this.pdsModalClose.emit();\n }\n\n /**\n * Listen for click events on the backdrop\n */\n // Using direct method instead of @Listen to avoid ESLint warning\n handleBackdropClick(event: MouseEvent) {\n const backdrop = this.el.querySelector('.pds-modal__backdrop');\n // Check if the click was directly on the backdrop (not on a child element)\n if (event.target === backdrop && this.backdropDismiss === true) {\n this.pdsModalBackdropClick.emit();\n this.hideModal();\n }\n }\n\n /**\n * Listen for keydown events to handle Escape key\n * Native dialog element always closes on Escape key press\n */\n // Using direct method instead of @Listen to avoid ESLint warning\n handleKeyDown(event: KeyboardEvent) {\n if (event.key === 'Escape' && this.open === true) {\n this.hideModal();\n }\n }\n\n componentDidLoad() {\n // No need to do anything in componentDidLoad for the mock\n }\n\n render() {\n const modalClasses = {\n 'pds-modal': true,\n [`pds-modal--${this.size}`]: true,\n 'pds-modal--scrollable': this.scrollable\n };\n\n const backdropClasses = {\n 'pds-modal__backdrop': true,\n 'open': this.open,\n };\n\n return (\n <div class={backdropClasses}>\n <div\n class={modalClasses}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={this.componentId ? `${this.componentId}-heading` : null}\n >\n <div class=\"pds-modal__header\">\n <slot name=\"header\"></slot>\n </div>\n <div class=\"pds-modal-content\">\n <slot></slot>\n </div>\n <div class=\"pds-modal__footer\">\n <slot name=\"footer\"></slot>\n </div>\n </div>\n </div>\n );\n }\n}\n"]}
|
|
@@ -201,7 +201,7 @@ export class PdsPopover {
|
|
|
201
201
|
this.addPortalFocusStyles();
|
|
202
202
|
}
|
|
203
203
|
/**
|
|
204
|
-
* Adds Pine design system focus styles to the portal element
|
|
204
|
+
* Adds Pine design system focus styles and dark mode border to the portal element
|
|
205
205
|
* Uses CSS variables from Pine's design tokens
|
|
206
206
|
*/
|
|
207
207
|
addPortalFocusStyles() {
|
|
@@ -212,7 +212,7 @@ export class PdsPopover {
|
|
|
212
212
|
const existingStyle = document.querySelector(`style[data-pds-popover-focus="${portalId}"]`);
|
|
213
213
|
if (existingStyle)
|
|
214
214
|
return;
|
|
215
|
-
// Create style element with Pine's focus ring styles
|
|
215
|
+
// Create style element with Pine's focus ring styles and dark mode border
|
|
216
216
|
const styleEl = document.createElement('style');
|
|
217
217
|
styleEl.setAttribute('data-pds-popover-focus', portalId);
|
|
218
218
|
styleEl.textContent = `
|
|
@@ -223,6 +223,9 @@ export class PdsPopover {
|
|
|
223
223
|
#${portalId}:focus:not(:focus-visible) {
|
|
224
224
|
outline: none;
|
|
225
225
|
}
|
|
226
|
+
[data-theme="dark"] #${portalId} {
|
|
227
|
+
border: var(--pine-border);
|
|
228
|
+
}
|
|
226
229
|
`;
|
|
227
230
|
document.head.appendChild(styleEl);
|
|
228
231
|
}
|
|
@@ -551,7 +554,7 @@ export class PdsPopover {
|
|
|
551
554
|
}, 16); // ~1 frame at 60fps
|
|
552
555
|
}
|
|
553
556
|
render() {
|
|
554
|
-
return (h(Host, { key: '
|
|
557
|
+
return (h(Host, { key: 'b1484c81cc8e6101f58fa03cf79828662416e984', id: this.componentId }, h("span", { key: '19b65573bbe0ad094ef20462c78c0ab92d3721b3', class: "pds-popover__trigger-wrapper" }, h("slot", { key: '11ee8ad1af28541067aad875ddbe82f8af362154', name: "trigger", onSlotchange: this.handleTriggerSlotChange })), h("div", { key: 'e909a772c03c28930f273e46be01b1f765e5a160', class: "pds-popover__content-slot-wrapper" }, h("slot", { key: '53684906fb81c13ebfbeacae66c2d34ffb009205', onSlotchange: this.handleContentSlotChange }))));
|
|
555
558
|
}
|
|
556
559
|
static get is() { return "pds-popover"; }
|
|
557
560
|
static get encapsulation() { return "shadow"; }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pds-popover.js","sourceRoot":"","sources":["../../../src/components/pds-popover/pds-popover.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, Event, EventEmitter, Host, h, Method, Prop, State } from '@stencil/core';\nimport { PlacementType } from '@utils/types';\nimport { PdsPopoverEventDetail } from './popover-interface';\n\n/**\n * @slot trigger - The trigger element for the popover\n * @slot (default) - The content to display inside the popover\n */\n@Component({\n tag: 'pds-popover',\n styleUrl: 'pds-popover.scss',\n shadow: true,\n})\nexport class PdsPopover {\n /**\n * Reference to the Host element\n */\n @Element() el: HTMLPdsPopoverElement;\n\n /**\n * Determines when the popover is active\n * @defaultValue false\n */\n @State() active = false;\n\n /**\n * Tracks if the component is still mounted to prevent memory leaks\n */\n private isComponentMounted = true;\n\n /**\n * Reference to the trigger element\n */\n private triggerEl: HTMLElement | null = null;\n\n /**\n * Portal element rendered in document.body\n */\n private portalEl: HTMLElement | null = null;\n\n /**\n * Guard to prevent repositioning loops\n */\n private isRepositioning = false;\n\n /**\n * Debounce timers for performance optimization\n */\n private scrollDebounceTimer: ReturnType<typeof setTimeout> | null = null;\n private resizeDebounceTimer: ReturnType<typeof setTimeout> | null = null;\n\n /**\n * Track moved nodes and their placeholders for restoration\n */\n private movedNodes: Array<{ node: Node; placeholder: Comment }> = [];\n\n /**\n * Timestamp when popover was opened (for preventing immediate close)\n */\n private openTimestamp = 0;\n\n /**\n * Instance counter for unique IDs\n */\n private static instanceCounter = 0;\n\n /**\n * Bound handlers for cleanup\n */\n private boundClickOutsideHandler: (event: MouseEvent) => void;\n private boundEscapeKeyHandler: (event: KeyboardEvent) => void;\n private boundScrollHandler: () => void;\n private boundResizeHandler: () => void;\n\n /**\n * Emitted when the popover is opened\n */\n @Event() pdsPopoverOpen: EventEmitter<PdsPopoverEventDetail>;\n\n /**\n * Emitted when the popover is closed\n */\n @Event() pdsPopoverClose: EventEmitter<PdsPopoverEventDetail>;\n\n /**\n * Determines the action that triggers the popover. For manual popovers, the consumer is responsible for toggling this value.\n * @defaultValue \"show\"\n */\n @Prop() popoverTargetAction: 'show' | 'toggle' | 'hide' = 'show';\n\n /**\n * Determines the type of popover. Auto popovers can be \"light dismissed\" by clicking outside of the popover.\n * Manual popovers require the consumer to handle the visibility of the popover.\n */\n @Prop() popoverType: 'auto' | 'manual' = 'auto';\n\n /**\n * A unique identifier used for the underlying component `id` attribute.\n */\n @Prop() componentId: string;\n\n /**\n * Sets the maximum width of the popover content\n * @defaultValue 352\n */\n @Prop() maxWidth?: number = 352;\n\n /**\n * Determines the preferred position of the popover\n * @defaultValue \"right\"\n */\n @Prop({ reflect: true }) placement: PlacementType = 'right';\n\n componentDidLoad() {\n // Bind event handlers for cleanup\n this.boundClickOutsideHandler = this.handleClickOutside.bind(this);\n this.boundEscapeKeyHandler = this.handleEscapeKey.bind(this);\n this.boundScrollHandler = this.handleScroll.bind(this);\n this.boundResizeHandler = this.handleResize.bind(this);\n\n // Create portal element\n this.createPortal();\n\n // Initialize trigger element by calling slot change handler\n // This is a fallback for environments where slot change might not fire reliably\n const triggerSlot = this.el.shadowRoot?.querySelector('slot[name=\"trigger\"]') as HTMLSlotElement;\n if (triggerSlot && this.triggerEl == null) {\n const CustomEvent = (typeof window !== 'undefined' ? window.Event : global.Event) as any;\n const slotChangeEvent = new CustomEvent('slotchange');\n Object.defineProperty(slotChangeEvent, 'target', { value: triggerSlot, enumerable: true });\n this.handleTriggerSlotChange(slotChangeEvent);\n }\n }\n\n /**\n * Handles changes to the trigger slot\n */\n private handleTriggerSlotChange = (event: Event) => {\n const slot = event.target as HTMLSlotElement;\n const assignedElements = slot.assignedElements();\n\n // Clean up previous trigger's event listener if it exists\n if (this.triggerEl != null) {\n this.triggerEl.removeEventListener('click', this.handleTriggerClick);\n }\n\n if (assignedElements.length > 0) {\n // Use the first assigned element as the trigger\n this.triggerEl = assignedElements[0] as HTMLElement;\n\n // Set ARIA attributes to establish relationship between trigger and popover\n // This mirrors the native Popover API's accessibility behavior\n if (this.portalEl) {\n this.triggerEl.setAttribute('aria-expanded', String(this.active));\n this.triggerEl.setAttribute('aria-controls', this.portalEl.id);\n }\n\n // Attach click listener to handle popover visibility\n this.triggerEl.addEventListener('click', this.handleTriggerClick);\n } else {\n this.triggerEl = null;\n }\n };\n\n /**\n * Handles changes to the default slot (popover content)\n * When the popover is active, re-sync content with portal to handle dynamic updates\n */\n private handleContentSlotChange = () => {\n if (!this.active) return;\n this.updatePortalContent();\n };\n\n /**\n * Handles clicks on the trigger element\n */\n private handleTriggerClick = (event: Event) => {\n // Only prevent default if the trigger is not an anchor with href\n // This allows link navigation while still controlling popover visibility\n const composedPath = event.composedPath();\n const anchorWithHref = composedPath.find(\n (el) => el instanceof HTMLAnchorElement && (el as HTMLAnchorElement).href\n );\n\n if (!anchorWithHref) {\n event.preventDefault();\n }\n\n // Execute the appropriate action based on popoverTargetAction prop\n switch (this.popoverTargetAction) {\n case 'show':\n this.show();\n break;\n case 'hide':\n this.hide();\n break;\n case 'toggle':\n default:\n this.toggle();\n break;\n }\n };\n\n disconnectedCallback() {\n this.isComponentMounted = false;\n\n // Clean up trigger click event listener\n if (this.triggerEl != null) {\n this.triggerEl.removeEventListener('click', this.handleTriggerClick);\n }\n\n // Clean up all event listeners\n this.removeLightDismissListeners();\n this.removeScrollAndResizeListeners();\n\n // Clear any pending debounce timers\n this.clearDebounceTimers();\n\n // Remove portal from DOM\n this.removePortal();\n }\n\n /**\n * Clears any pending debounce timers\n */\n private clearDebounceTimers() {\n if (this.scrollDebounceTimer !== null) {\n clearTimeout(this.scrollDebounceTimer);\n this.scrollDebounceTimer = null;\n }\n if (this.resizeDebounceTimer !== null) {\n clearTimeout(this.resizeDebounceTimer);\n this.resizeDebounceTimer = null;\n }\n }\n\n private createPortal() {\n if (this.portalEl !== null) return;\n\n this.portalEl = document.createElement('div');\n this.portalEl.className = 'pds-popover';\n\n // Apply all styles inline since portal is outside shadow DOM\n this.portalEl.style.position = 'fixed';\n this.portalEl.style.zIndex = 'var(--pine-z-index-raised)';\n this.portalEl.style.maxWidth = `${this.maxWidth}px`;\n this.portalEl.style.display = 'none';\n this.portalEl.style.opacity = '0';\n this.portalEl.style.visibility = 'hidden';\n this.portalEl.style.backgroundColor = 'var(--pine-color-background-container)';\n this.portalEl.style.borderRadius = 'var(--pine-dimension-125)';\n this.portalEl.style.boxShadow = 'var(--pine-box-shadow-200)';\n this.portalEl.style.margin = 'var(--pine-dimension-none)';\n this.portalEl.style.padding = 'var(--pine-dimension-md)';\n\n // Generate unique ID\n if (!this.componentId) {\n const suffix = PdsPopover.instanceCounter++;\n this.portalEl.id = `pds-popover-portal-${suffix}`;\n } else {\n this.portalEl.id = `${this.componentId}-portal`;\n }\n\n // Add accessibility attributes for screen readers\n // Note: Native Popover API doesn't add a specific role, keeping semantic HTML\n this.portalEl.setAttribute('aria-modal', 'false'); // Not a modal, can interact with rest of page\n\n // Append to body\n document.body.appendChild(this.portalEl);\n\n // Add global focus styles to match Pine design system\n // This is done after appending to ensure it's part of the document and can access CSS variables\n this.addPortalFocusStyles();\n }\n\n /**\n * Adds Pine design system focus styles to the portal element\n * Uses CSS variables from Pine's design tokens\n */\n private addPortalFocusStyles() {\n if (!this.portalEl) return;\n\n const portalId = this.portalEl.id;\n\n // Check if style element already exists\n const existingStyle = document.querySelector(`style[data-pds-popover-focus=\"${portalId}\"]`);\n if (existingStyle) return;\n\n // Create style element with Pine's focus ring styles\n const styleEl = document.createElement('style');\n styleEl.setAttribute('data-pds-popover-focus', portalId);\n styleEl.textContent = `\n #${portalId}:focus {\n outline: var(--pine-outline-focus, 2px solid var(--pine-color-focus-ring, #6366f1)) !important;\n outline-offset: var(--pine-border-width, 1px);\n }\n #${portalId}:focus:not(:focus-visible) {\n outline: none;\n }\n `;\n\n document.head.appendChild(styleEl);\n }\n\n /**\n * Moves slot content into portal (preserves event handlers and component instances)\n */\n private updatePortalContent() {\n if (!this.portalEl) return;\n\n const contentSlotWrapper = this.el.shadowRoot?.querySelector('.pds-popover__content-slot-wrapper');\n const defaultSlot = contentSlotWrapper?.querySelector('slot');\n\n if (defaultSlot) {\n const assignedNodes = defaultSlot.assignedNodes();\n\n // Move each node into portal and track with placeholder for restoration\n assignedNodes.forEach(node => {\n // Skip if node is already in the portal or already tracked\n const isAlreadyInPortal = node.parentNode === this.portalEl;\n const isAlreadyTracked = this.movedNodes.some(moved => moved.node === node);\n\n if (isAlreadyInPortal || isAlreadyTracked) {\n return;\n }\n\n // Create a placeholder comment to mark original position\n const placeholder = document.createComment('pds-popover-placeholder');\n\n // Insert placeholder before moving the node\n node.parentNode?.insertBefore(placeholder, node);\n\n // Move the actual node to portal (preserves all handlers and state)\n this.portalEl!.appendChild(node);\n\n // Track for restoration\n this.movedNodes.push({ node, placeholder });\n });\n }\n }\n\n /**\n * Restores moved nodes back to their original positions\n */\n private restorePortalContent() {\n // Restore each moved node to its original position\n this.movedNodes.forEach(({ node, placeholder }) => {\n if (placeholder.parentNode) {\n placeholder.parentNode.insertBefore(node, placeholder);\n placeholder.parentNode.removeChild(placeholder);\n }\n });\n\n // Clear tracking array\n this.movedNodes = [];\n }\n\n private removePortal() {\n if (this.portalEl) {\n // Remove the portal element from DOM\n if (this.portalEl.parentNode) {\n this.portalEl.parentNode.removeChild(this.portalEl);\n }\n\n // Remove the associated focus style element\n const portalId = this.portalEl.id;\n const styleEl = document.querySelector(`style[data-pds-popover-focus=\"${portalId}\"]`);\n if (styleEl && styleEl.parentNode) {\n styleEl.parentNode.removeChild(styleEl);\n }\n }\n this.portalEl = null;\n }\n\n /**\n * Opens the popover programmatically\n */\n @Method()\n async show() {\n if (this.active || !this.portalEl) return;\n\n this.active = true;\n\n // Record open timestamp to prevent immediate close from opening click\n this.openTimestamp = Date.now();\n\n // Update ARIA expanded state on trigger\n if (this.triggerEl) {\n this.triggerEl.setAttribute('aria-expanded', 'true');\n }\n\n // Update portal content with latest slot content\n this.updatePortalContent();\n\n // Show portal\n this.portalEl.style.display = 'block';\n this.portalEl.style.opacity = '1';\n this.portalEl.style.visibility = 'visible';\n\n // Position the popover\n requestAnimationFrame(() => {\n if (!this.isComponentMounted) return;\n this.handlePopoverPositioning();\n });\n\n // Add scroll and resize listeners for repositioning (always)\n this.addScrollAndResizeListeners();\n\n // Add document listeners for light dismiss and escape key (auto type only)\n if (this.popoverType === 'auto') {\n this.addLightDismissListeners();\n }\n\n // Emit open event\n this.pdsPopoverOpen.emit({\n componentId: this.componentId,\n popoverType: this.popoverType,\n });\n }\n\n /**\n * Closes the popover programmatically\n */\n @Method()\n async hide() {\n if (!this.active || !this.portalEl) return;\n\n this.active = false;\n\n // Update ARIA expanded state on trigger\n if (this.triggerEl) {\n this.triggerEl.setAttribute('aria-expanded', 'false');\n }\n\n // Restore content back to original slot positions\n this.restorePortalContent();\n\n // Hide portal\n this.portalEl.style.display = 'none';\n this.portalEl.style.opacity = '0';\n this.portalEl.style.visibility = 'hidden';\n\n // Return focus to trigger for keyboard accessibility\n // This mirrors native Popover API behavior on close\n this.returnFocusToTrigger();\n\n // Remove all listeners\n this.removeLightDismissListeners();\n this.removeScrollAndResizeListeners();\n\n // Clear any pending timers\n this.clearDebounceTimers();\n\n // Emit close event\n this.pdsPopoverClose.emit({\n componentId: this.componentId,\n popoverType: this.popoverType,\n });\n }\n\n /**\n * Toggles the popover open/closed state programmatically\n */\n @Method()\n async toggle() {\n if (this.active) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n /**\n * Adds light dismiss listeners (click outside and escape key)\n */\n private addLightDismissListeners() {\n // Add listeners immediately - handleClickOutside will check timestamp\n document.addEventListener('click', this.boundClickOutsideHandler, true);\n document.addEventListener('keydown', this.boundEscapeKeyHandler);\n }\n\n /**\n * Removes light dismiss listeners\n */\n private removeLightDismissListeners() {\n document.removeEventListener('click', this.boundClickOutsideHandler, true);\n document.removeEventListener('keydown', this.boundEscapeKeyHandler);\n }\n\n /**\n * Adds scroll and resize listeners for repositioning\n */\n private addScrollAndResizeListeners() {\n window.addEventListener('scroll', this.boundScrollHandler, true);\n window.addEventListener('resize', this.boundResizeHandler);\n }\n\n /**\n * Removes scroll and resize listeners\n */\n private removeScrollAndResizeListeners() {\n window.removeEventListener('scroll', this.boundScrollHandler, true);\n window.removeEventListener('resize', this.boundResizeHandler);\n }\n\n /**\n * Handles clicks outside the popover for light dismiss (auto type only)\n */\n private handleClickOutside(event: MouseEvent) {\n // Ignore events that occurred at or before the popover opened\n // This prevents the opening click from immediately closing the popover\n // Convert event.timeStamp (DOMHighResTimeStamp from performance.now()) to epoch time\n // by calculating: currentEpochTime - (currentPerfTime - eventPerfTime)\n const eventTime = event.timeStamp\n ? Date.now() - (performance.now() - event.timeStamp)\n : Date.now();\n\n if (eventTime <= this.openTimestamp) {\n return;\n }\n\n const target = event.target as Node;\n\n // Check if click is outside both the popover portal and the trigger\n const clickedInsidePopover = this.portalEl?.contains(target);\n const clickedInsideTrigger = this.triggerEl?.contains(target);\n\n if (!clickedInsidePopover && !clickedInsideTrigger) {\n this.hide();\n }\n }\n\n /**\n * Returns focus to the trigger element with visible focus indicator\n * This ensures focus rings/outlines are shown as they would be with keyboard navigation\n */\n private returnFocusToTrigger() {\n if (!this.triggerEl) return;\n\n // Focus immediately while still in keyboard event context\n // This ensures the browser treats it as keyboard-initiated and shows focus ring\n this.triggerEl.focus({ preventScroll: true });\n }\n\n /**\n * Handles escape key press to close the popover\n * Mirrors native Popover API: Escape closes and returns focus to trigger\n */\n private handleEscapeKey(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n // Prevent default Escape behavior and stop propagation\n // This mirrors native Popover API which handles Escape exclusively\n event.preventDefault();\n event.stopPropagation();\n\n // Close popover and return focus to trigger\n this.hide();\n }\n }\n\n /**\n * Handles scroll events to reposition the popover (debounced for performance)\n */\n private handleScroll() {\n if (!this.active) return;\n\n if (this.scrollDebounceTimer !== null) {\n clearTimeout(this.scrollDebounceTimer);\n }\n\n this.scrollDebounceTimer = setTimeout(() => {\n this.handlePopoverPositioning();\n this.scrollDebounceTimer = null;\n }, 10); // 10ms debounce for smooth repositioning\n }\n\n /**\n * Handles resize events to reposition the popover (debounced for performance)\n */\n private handleResize() {\n if (!this.active) return;\n\n if (this.resizeDebounceTimer !== null) {\n clearTimeout(this.resizeDebounceTimer);\n }\n\n this.resizeDebounceTimer = setTimeout(() => {\n this.handlePopoverPositioning();\n this.resizeDebounceTimer = null;\n }, 100); // 100ms debounce for resize\n }\n\n /**\n * Positions the popover relative to its trigger element\n */\n private handlePopoverPositioning() {\n // Prevent repositioning loops\n if (this.isRepositioning) {\n return;\n }\n\n this.isRepositioning = true;\n\n if (this.triggerEl == null || this.portalEl == null) {\n this.isRepositioning = false;\n return;\n }\n\n const triggerRect = this.triggerEl.getBoundingClientRect();\n const popoverRect = this.portalEl.getBoundingClientRect();\n\n // Safety check: ensure trigger has valid dimensions (is rendered and visible)\n if (triggerRect.width === 0 || triggerRect.height === 0) {\n this.isRepositioning = false;\n return;\n }\n\n let top = 0;\n let left = 0;\n const offset = 8;\n\n switch (this.placement) {\n case 'top':\n top = triggerRect.top - popoverRect.height - offset;\n left = triggerRect.left + (triggerRect.width - popoverRect.width) / 2;\n break;\n case 'top-start':\n top = triggerRect.top - popoverRect.height - offset;\n left = triggerRect.left;\n break;\n case 'top-end':\n top = triggerRect.top - popoverRect.height - offset;\n left = triggerRect.right - popoverRect.width;\n break;\n case 'right':\n top = triggerRect.top + (triggerRect.height - popoverRect.height) / 2;\n left = triggerRect.right + offset;\n break;\n case 'right-start':\n top = triggerRect.top;\n left = triggerRect.right + offset;\n break;\n case 'right-end':\n top = triggerRect.bottom - popoverRect.height;\n left = triggerRect.right + offset;\n break;\n case 'bottom':\n top = triggerRect.bottom + offset;\n left = triggerRect.left + (triggerRect.width - popoverRect.width) / 2;\n break;\n case 'bottom-start':\n top = triggerRect.bottom + offset;\n left = triggerRect.left;\n break;\n case 'bottom-end':\n top = triggerRect.bottom + offset;\n left = triggerRect.right - popoverRect.width;\n break;\n case 'left':\n top = triggerRect.top + (triggerRect.height - popoverRect.height) / 2;\n left = triggerRect.left - popoverRect.width - offset;\n break;\n case 'left-start':\n top = triggerRect.top;\n left = triggerRect.left - popoverRect.width - offset;\n break;\n case 'left-end':\n top = triggerRect.bottom - popoverRect.height;\n left = triggerRect.left - popoverRect.width - offset;\n break;\n }\n\n this.portalEl.style.top = `${top}px`;\n this.portalEl.style.left = `${left}px`;\n\n // Reset the repositioning guard after a short delay\n setTimeout(() => {\n this.isRepositioning = false;\n }, 16); // ~1 frame at 60fps\n }\n\n render() {\n return (\n <Host id={this.componentId}>\n <span class=\"pds-popover__trigger-wrapper\">\n <slot name=\"trigger\" onSlotchange={this.handleTriggerSlotChange}></slot>\n </span>\n\n <div class=\"pds-popover__content-slot-wrapper\">\n <slot onSlotchange={this.handleContentSlotChange}></slot>\n </div>\n </Host>\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"pds-popover.js","sourceRoot":"","sources":["../../../../src/components/pds-popover/pds-popover.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAgB,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAItG;;;GAGG;AAMH,MAAM,OAAO,UAAU;IALvB;QAWE;;;WAGG;QACM,WAAM,GAAG,KAAK,CAAC;QAExB;;WAEG;QACK,uBAAkB,GAAG,IAAI,CAAC;QAElC;;WAEG;QACK,cAAS,GAAuB,IAAI,CAAC;QAE7C;;WAEG;QACK,aAAQ,GAAuB,IAAI,CAAC;QAE5C;;WAEG;QACK,oBAAe,GAAG,KAAK,CAAC;QAEhC;;WAEG;QACK,wBAAmB,GAAyC,IAAI,CAAC;QACjE,wBAAmB,GAAyC,IAAI,CAAC;QAEzE;;WAEG;QACK,eAAU,GAAgD,EAAE,CAAC;QAErE;;WAEG;QACK,kBAAa,GAAG,CAAC,CAAC;QAyB1B;;;WAGG;QACK,wBAAmB,GAA+B,MAAM,CAAC;QAEjE;;;WAGG;QACK,gBAAW,GAAsB,MAAM,CAAC;QAOhD;;;WAGG;QACK,aAAQ,GAAY,GAAG,CAAC;QAEhC;;;WAGG;QACsB,cAAS,GAAkB,OAAO,CAAC;QAuB5D;;WAEG;QACK,4BAAuB,GAAG,CAAC,KAAY,EAAE,EAAE;YACjD,MAAM,IAAI,GAAG,KAAK,CAAC,MAAyB,CAAC;YAC7C,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAEjD,0DAA0D;YAC1D,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC;gBAC3B,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACvE,CAAC;YAED,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChC,gDAAgD;gBAChD,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAC,CAAC,CAAgB,CAAC;gBAEpD,4EAA4E;gBAC5E,+DAA+D;gBAC/D,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClB,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;oBAClE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gBACjE,CAAC;gBAED,qDAAqD;gBACrD,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACpE,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACxB,CAAC;QACH,CAAC,CAAC;QAEF;;;WAGG;QACK,4BAAuB,GAAG,GAAG,EAAE;YACrC,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,OAAO;YACzB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC7B,CAAC,CAAC;QAEF;;WAEG;QACK,uBAAkB,GAAG,CAAC,KAAY,EAAE,EAAE;YAC5C,iEAAiE;YACjE,yEAAyE;YACzE,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;YAC1C,MAAM,cAAc,GAAG,YAAY,CAAC,IAAI,CACtC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,YAAY,iBAAiB,IAAK,EAAwB,CAAC,IAAI,CAC1E,CAAC;YAEF,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,KAAK,CAAC,cAAc,EAAE,CAAC;YACzB,CAAC;YAED,mEAAmE;YACnE,QAAQ,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBACjC,KAAK,MAAM;oBACT,IAAI,CAAC,IAAI,EAAE,CAAC;oBACZ,MAAM;gBACR,KAAK,MAAM;oBACT,IAAI,CAAC,IAAI,EAAE,CAAC;oBACZ,MAAM;gBACR,KAAK,QAAQ,CAAC;gBACd;oBACE,IAAI,CAAC,MAAM,EAAE,CAAC;oBACd,MAAM;YACV,CAAC;QACH,CAAC,CAAC;KAgfH;IAxkBC,gBAAgB;;QACd,kCAAkC;QAClC,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnE,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7D,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEvD,wBAAwB;QACxB,IAAI,CAAC,YAAY,EAAE,CAAC;QAEpB,4DAA4D;QAC5D,gFAAgF;QAChF,MAAM,WAAW,GAAG,MAAA,IAAI,CAAC,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,sBAAsB,CAAoB,CAAC;QACjG,IAAI,WAAW,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC;YAC1C,MAAM,WAAW,GAAG,CAAC,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAQ,CAAC;YACzF,MAAM,eAAe,GAAG,IAAI,WAAW,CAAC,YAAY,CAAC,CAAC;YACtD,MAAM,CAAC,cAAc,CAAC,eAAe,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3F,IAAI,CAAC,uBAAuB,CAAC,eAAe,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAuED,oBAAoB;QAClB,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;QAEhC,wCAAwC;QACxC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC;YAC3B,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACvE,CAAC;QAED,+BAA+B;QAC/B,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,8BAA8B,EAAE,CAAC;QAEtC,oCAAoC;QACpC,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE3B,yBAAyB;QACzB,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED;;OAEG;IACK,mBAAmB;QACzB,IAAI,IAAI,CAAC,mBAAmB,KAAK,IAAI,EAAE,CAAC;YACtC,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACvC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAClC,CAAC;QACD,IAAI,IAAI,CAAC,mBAAmB,KAAK,IAAI,EAAE,CAAC;YACtC,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACvC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAClC,CAAC;IACH,CAAC;IAEO,YAAY;QAClB,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI;YAAE,OAAO;QAEnC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,aAAa,CAAC;QAExC,6DAA6D;QAC7D,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;QACvC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,4BAA4B,CAAC;QAC1D,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC;QACpD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACrC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;QAC1C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,GAAG,wCAAwC,CAAC;QAC/E,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,GAAG,2BAA2B,CAAC;QAC/D,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,GAAG,4BAA4B,CAAC;QAC7D,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,4BAA4B,CAAC;QAC1D,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,0BAA0B,CAAC;QAEzD,qBAAqB;QACrB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,MAAM,GAAG,UAAU,CAAC,eAAe,EAAE,CAAC;YAC5C,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,sBAAsB,MAAM,EAAE,CAAC;QACpD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,WAAW,SAAS,CAAC;QAClD,CAAC;QAED,kDAAkD;QAClD,8EAA8E;QAC9E,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC,8CAA8C;QAEjG,iBAAiB;QACjB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEzC,sDAAsD;QACtD,gGAAgG;QAChG,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACK,oBAAoB;QAC1B,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO;QAE3B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAElC,wCAAwC;QACxC,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,iCAAiC,QAAQ,IAAI,CAAC,CAAC;QAC5F,IAAI,aAAa;YAAE,OAAO;QAE1B,0EAA0E;QAC1E,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAChD,OAAO,CAAC,YAAY,CAAC,wBAAwB,EAAE,QAAQ,CAAC,CAAC;QACzD,OAAO,CAAC,WAAW,GAAG;SACjB,QAAQ;;;;SAIR,QAAQ;;;6BAGY,QAAQ;;;KAGhC,CAAC;QAEF,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACK,mBAAmB;;QACzB,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO;QAE3B,MAAM,kBAAkB,GAAG,MAAA,IAAI,CAAC,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,oCAAoC,CAAC,CAAC;QACnG,MAAM,WAAW,GAAG,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,aAAa,CAAC,MAAM,CAAC,CAAC;QAE9D,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,aAAa,GAAG,WAAW,CAAC,aAAa,EAAE,CAAC;YAElD,wEAAwE;YACxE,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;;gBAC3B,2DAA2D;gBAC3D,MAAM,iBAAiB,GAAG,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,QAAQ,CAAC;gBAC5D,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;gBAE5E,IAAI,iBAAiB,IAAI,gBAAgB,EAAE,CAAC;oBAC1C,OAAO;gBACT,CAAC;gBAED,yDAAyD;gBACzD,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,yBAAyB,CAAC,CAAC;gBAEtE,4CAA4C;gBAC5C,MAAA,IAAI,CAAC,UAAU,0CAAE,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;gBAEjD,oEAAoE;gBACpE,IAAI,CAAC,QAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBAEjC,wBAAwB;gBACxB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;YAC9C,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;OAEG;IACK,oBAAoB;QAC1B,mDAAmD;QACnD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE;YAChD,IAAI,WAAW,CAAC,UAAU,EAAE,CAAC;gBAC3B,WAAW,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;gBACvD,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;YAClD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,uBAAuB;QACvB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;IACvB,CAAC;IAEO,YAAY;QAClB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,qCAAqC;YACrC,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;gBAC7B,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtD,CAAC;YAED,4CAA4C;YAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,iCAAiC,QAAQ,IAAI,CAAC,CAAC;YACtF,IAAI,OAAO,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;gBAClC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvB,CAAC;IAED;;OAEG;IAEH,KAAK,CAAC,IAAI;QACR,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO;QAE1C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QAEnB,sEAAsE;QACtE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEhC,wCAAwC;QACxC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QACvD,CAAC;QAED,iDAAiD;QACjD,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE3B,cAAc;QACd,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QACtC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;QAE3C,uBAAuB;QACvB,qBAAqB,CAAC,GAAG,EAAE;YACzB,IAAI,CAAC,IAAI,CAAC,kBAAkB;gBAAE,OAAO;YACrC,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,6DAA6D;QAC7D,IAAI,CAAC,2BAA2B,EAAE,CAAC;QAEnC,2EAA2E;QAC3E,IAAI,IAAI,CAAC,WAAW,KAAK,MAAM,EAAE,CAAC;YAChC,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAClC,CAAC;QAED,kBAAkB;QAClB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;YACvB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IAEH,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO;QAE3C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QAEpB,wCAAwC;QACxC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QACxD,CAAC;QAED,kDAAkD;QAClD,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAE5B,cAAc;QACd,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACrC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;QAE1C,qDAAqD;QACrD,oDAAoD;QACpD,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAE5B,uBAAuB;QACvB,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,8BAA8B,EAAE,CAAC;QAEtC,2BAA2B;QAC3B,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE3B,mBAAmB;QACnB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;YACxB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IAEH,KAAK,CAAC,MAAM;QACV,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACK,wBAAwB;QAC9B,sEAAsE;QACtE,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC;QACxE,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACnE,CAAC;IAED;;OAEG;IACK,2BAA2B;QACjC,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC;QAC3E,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACtE,CAAC;IAED;;OAEG;IACK,2BAA2B;QACjC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;QACjE,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACK,8BAA8B;QACpC,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;QACpE,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAChE,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,KAAiB;;QAC1C,8DAA8D;QAC9D,uEAAuE;QACvE,qFAAqF;QACrF,uEAAuE;QACvE,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS;YAC/B,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC;YACpD,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QAEf,IAAI,SAAS,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACpC,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,KAAK,CAAC,MAAc,CAAC;QAEpC,oEAAoE;QACpE,MAAM,oBAAoB,GAAG,MAAA,IAAI,CAAC,QAAQ,0CAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC7D,MAAM,oBAAoB,GAAG,MAAA,IAAI,CAAC,SAAS,0CAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QAE9D,IAAI,CAAC,oBAAoB,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACnD,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,oBAAoB;QAC1B,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO;QAE5B,0DAA0D;QAC1D,gFAAgF;QAChF,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;IAED;;;OAGG;IACK,eAAe,CAAC,KAAoB;QAC1C,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC3B,uDAAuD;YACvD,mEAAmE;YACnE,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,eAAe,EAAE,CAAC;YAExB,4CAA4C;YAC5C,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACK,YAAY;QAClB,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO;QAEzB,IAAI,IAAI,CAAC,mBAAmB,KAAK,IAAI,EAAE,CAAC;YACtC,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACzC,CAAC;QAED,IAAI,CAAC,mBAAmB,GAAG,UAAU,CAAC,GAAG,EAAE;YACzC,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAChC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAClC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,yCAAyC;IACnD,CAAC;IAED;;OAEG;IACK,YAAY;QAClB,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO;QAEzB,IAAI,IAAI,CAAC,mBAAmB,KAAK,IAAI,EAAE,CAAC;YACtC,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACzC,CAAC;QAED,IAAI,CAAC,mBAAmB,GAAG,UAAU,CAAC,GAAG,EAAE;YACzC,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAChC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAClC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,4BAA4B;IACvC,CAAC;IAED;;OAEG;IACK,wBAAwB;QAC9B,8BAA8B;QAC9B,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAE5B,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC;YACpD,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;YAC7B,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,qBAAqB,EAAE,CAAC;QAC3D,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC;QAE1D,8EAA8E;QAC9E,IAAI,WAAW,CAAC,KAAK,KAAK,CAAC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxD,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;YAC7B,OAAO;QACT,CAAC;QAED,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,MAAM,MAAM,GAAG,CAAC,CAAC;QAEjB,QAAQ,IAAI,CAAC,SAAS,EAAE,CAAC;YACvB,KAAK,KAAK;gBACR,GAAG,GAAG,WAAW,CAAC,GAAG,GAAG,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC;gBACpD,IAAI,GAAG,WAAW,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACtE,MAAM;YACR,KAAK,WAAW;gBACd,GAAG,GAAG,WAAW,CAAC,GAAG,GAAG,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC;gBACpD,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;gBACxB,MAAM;YACR,KAAK,SAAS;gBACZ,GAAG,GAAG,WAAW,CAAC,GAAG,GAAG,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC;gBACpD,IAAI,GAAG,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;gBAC7C,MAAM;YACR,KAAK,OAAO;gBACV,GAAG,GAAG,WAAW,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACtE,IAAI,GAAG,WAAW,CAAC,KAAK,GAAG,MAAM,CAAC;gBAClC,MAAM;YACR,KAAK,aAAa;gBAChB,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC;gBACtB,IAAI,GAAG,WAAW,CAAC,KAAK,GAAG,MAAM,CAAC;gBAClC,MAAM;YACR,KAAK,WAAW;gBACd,GAAG,GAAG,WAAW,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;gBAC9C,IAAI,GAAG,WAAW,CAAC,KAAK,GAAG,MAAM,CAAC;gBAClC,MAAM;YACR,KAAK,QAAQ;gBACX,GAAG,GAAG,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC;gBAClC,IAAI,GAAG,WAAW,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACtE,MAAM;YACR,KAAK,cAAc;gBACjB,GAAG,GAAG,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC;gBAClC,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;gBACxB,MAAM;YACR,KAAK,YAAY;gBACf,GAAG,GAAG,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC;gBAClC,IAAI,GAAG,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;gBAC7C,MAAM;YACR,KAAK,MAAM;gBACT,GAAG,GAAG,WAAW,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACtE,IAAI,GAAG,WAAW,CAAC,IAAI,GAAG,WAAW,CAAC,KAAK,GAAG,MAAM,CAAC;gBACrD,MAAM;YACR,KAAK,YAAY;gBACf,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC;gBACtB,IAAI,GAAG,WAAW,CAAC,IAAI,GAAG,WAAW,CAAC,KAAK,GAAG,MAAM,CAAC;gBACrD,MAAM;YACR,KAAK,UAAU;gBACb,GAAG,GAAG,WAAW,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;gBAC9C,IAAI,GAAG,WAAW,CAAC,IAAI,GAAG,WAAW,CAAC,KAAK,GAAG,MAAM,CAAC;gBACrD,MAAM;QACV,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC;QACrC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,IAAI,IAAI,CAAC;QAEvC,oDAAoD;QACpD,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC/B,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,oBAAoB;IAC9B,CAAC;IAED,MAAM;QACJ,OAAO,CACL,EAAC,IAAI,qDAAC,EAAE,EAAE,IAAI,CAAC,WAAW;YACxB,6DAAM,KAAK,EAAC,8BAA8B;gBACxC,6DAAM,IAAI,EAAC,SAAS,EAAC,YAAY,EAAE,IAAI,CAAC,uBAAuB,GAAS,CACnE;YAEP,4DAAK,KAAK,EAAC,mCAAmC;gBAC5C,6DAAM,YAAY,EAAE,IAAI,CAAC,uBAAuB,GAAS,CACrD,CACD,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA3nBD;;GAEG;AACY,0BAAe,GAAG,CAAC,AAAJ,CAAK","sourcesContent":["import { Component, Element, Event, EventEmitter, Host, h, Method, Prop, State } from '@stencil/core';\nimport { PlacementType } from '@utils/types';\nimport { PdsPopoverEventDetail } from './popover-interface';\n\n/**\n * @slot trigger - The trigger element for the popover\n * @slot (default) - The content to display inside the popover\n */\n@Component({\n tag: 'pds-popover',\n styleUrl: 'pds-popover.scss',\n shadow: true,\n})\nexport class PdsPopover {\n /**\n * Reference to the Host element\n */\n @Element() el: HTMLPdsPopoverElement;\n\n /**\n * Determines when the popover is active\n * @defaultValue false\n */\n @State() active = false;\n\n /**\n * Tracks if the component is still mounted to prevent memory leaks\n */\n private isComponentMounted = true;\n\n /**\n * Reference to the trigger element\n */\n private triggerEl: HTMLElement | null = null;\n\n /**\n * Portal element rendered in document.body\n */\n private portalEl: HTMLElement | null = null;\n\n /**\n * Guard to prevent repositioning loops\n */\n private isRepositioning = false;\n\n /**\n * Debounce timers for performance optimization\n */\n private scrollDebounceTimer: ReturnType<typeof setTimeout> | null = null;\n private resizeDebounceTimer: ReturnType<typeof setTimeout> | null = null;\n\n /**\n * Track moved nodes and their placeholders for restoration\n */\n private movedNodes: Array<{ node: Node; placeholder: Comment }> = [];\n\n /**\n * Timestamp when popover was opened (for preventing immediate close)\n */\n private openTimestamp = 0;\n\n /**\n * Instance counter for unique IDs\n */\n private static instanceCounter = 0;\n\n /**\n * Bound handlers for cleanup\n */\n private boundClickOutsideHandler: (event: MouseEvent) => void;\n private boundEscapeKeyHandler: (event: KeyboardEvent) => void;\n private boundScrollHandler: () => void;\n private boundResizeHandler: () => void;\n\n /**\n * Emitted when the popover is opened\n */\n @Event() pdsPopoverOpen: EventEmitter<PdsPopoverEventDetail>;\n\n /**\n * Emitted when the popover is closed\n */\n @Event() pdsPopoverClose: EventEmitter<PdsPopoverEventDetail>;\n\n /**\n * Determines the action that triggers the popover. For manual popovers, the consumer is responsible for toggling this value.\n * @defaultValue \"show\"\n */\n @Prop() popoverTargetAction: 'show' | 'toggle' | 'hide' = 'show';\n\n /**\n * Determines the type of popover. Auto popovers can be \"light dismissed\" by clicking outside of the popover.\n * Manual popovers require the consumer to handle the visibility of the popover.\n */\n @Prop() popoverType: 'auto' | 'manual' = 'auto';\n\n /**\n * A unique identifier used for the underlying component `id` attribute.\n */\n @Prop() componentId: string;\n\n /**\n * Sets the maximum width of the popover content\n * @defaultValue 352\n */\n @Prop() maxWidth?: number = 352;\n\n /**\n * Determines the preferred position of the popover\n * @defaultValue \"right\"\n */\n @Prop({ reflect: true }) placement: PlacementType = 'right';\n\n componentDidLoad() {\n // Bind event handlers for cleanup\n this.boundClickOutsideHandler = this.handleClickOutside.bind(this);\n this.boundEscapeKeyHandler = this.handleEscapeKey.bind(this);\n this.boundScrollHandler = this.handleScroll.bind(this);\n this.boundResizeHandler = this.handleResize.bind(this);\n\n // Create portal element\n this.createPortal();\n\n // Initialize trigger element by calling slot change handler\n // This is a fallback for environments where slot change might not fire reliably\n const triggerSlot = this.el.shadowRoot?.querySelector('slot[name=\"trigger\"]') as HTMLSlotElement;\n if (triggerSlot && this.triggerEl == null) {\n const CustomEvent = (typeof window !== 'undefined' ? window.Event : global.Event) as any;\n const slotChangeEvent = new CustomEvent('slotchange');\n Object.defineProperty(slotChangeEvent, 'target', { value: triggerSlot, enumerable: true });\n this.handleTriggerSlotChange(slotChangeEvent);\n }\n }\n\n /**\n * Handles changes to the trigger slot\n */\n private handleTriggerSlotChange = (event: Event) => {\n const slot = event.target as HTMLSlotElement;\n const assignedElements = slot.assignedElements();\n\n // Clean up previous trigger's event listener if it exists\n if (this.triggerEl != null) {\n this.triggerEl.removeEventListener('click', this.handleTriggerClick);\n }\n\n if (assignedElements.length > 0) {\n // Use the first assigned element as the trigger\n this.triggerEl = assignedElements[0] as HTMLElement;\n\n // Set ARIA attributes to establish relationship between trigger and popover\n // This mirrors the native Popover API's accessibility behavior\n if (this.portalEl) {\n this.triggerEl.setAttribute('aria-expanded', String(this.active));\n this.triggerEl.setAttribute('aria-controls', this.portalEl.id);\n }\n\n // Attach click listener to handle popover visibility\n this.triggerEl.addEventListener('click', this.handleTriggerClick);\n } else {\n this.triggerEl = null;\n }\n };\n\n /**\n * Handles changes to the default slot (popover content)\n * When the popover is active, re-sync content with portal to handle dynamic updates\n */\n private handleContentSlotChange = () => {\n if (!this.active) return;\n this.updatePortalContent();\n };\n\n /**\n * Handles clicks on the trigger element\n */\n private handleTriggerClick = (event: Event) => {\n // Only prevent default if the trigger is not an anchor with href\n // This allows link navigation while still controlling popover visibility\n const composedPath = event.composedPath();\n const anchorWithHref = composedPath.find(\n (el) => el instanceof HTMLAnchorElement && (el as HTMLAnchorElement).href\n );\n\n if (!anchorWithHref) {\n event.preventDefault();\n }\n\n // Execute the appropriate action based on popoverTargetAction prop\n switch (this.popoverTargetAction) {\n case 'show':\n this.show();\n break;\n case 'hide':\n this.hide();\n break;\n case 'toggle':\n default:\n this.toggle();\n break;\n }\n };\n\n disconnectedCallback() {\n this.isComponentMounted = false;\n\n // Clean up trigger click event listener\n if (this.triggerEl != null) {\n this.triggerEl.removeEventListener('click', this.handleTriggerClick);\n }\n\n // Clean up all event listeners\n this.removeLightDismissListeners();\n this.removeScrollAndResizeListeners();\n\n // Clear any pending debounce timers\n this.clearDebounceTimers();\n\n // Remove portal from DOM\n this.removePortal();\n }\n\n /**\n * Clears any pending debounce timers\n */\n private clearDebounceTimers() {\n if (this.scrollDebounceTimer !== null) {\n clearTimeout(this.scrollDebounceTimer);\n this.scrollDebounceTimer = null;\n }\n if (this.resizeDebounceTimer !== null) {\n clearTimeout(this.resizeDebounceTimer);\n this.resizeDebounceTimer = null;\n }\n }\n\n private createPortal() {\n if (this.portalEl !== null) return;\n\n this.portalEl = document.createElement('div');\n this.portalEl.className = 'pds-popover';\n\n // Apply all styles inline since portal is outside shadow DOM\n this.portalEl.style.position = 'fixed';\n this.portalEl.style.zIndex = 'var(--pine-z-index-raised)';\n this.portalEl.style.maxWidth = `${this.maxWidth}px`;\n this.portalEl.style.display = 'none';\n this.portalEl.style.opacity = '0';\n this.portalEl.style.visibility = 'hidden';\n this.portalEl.style.backgroundColor = 'var(--pine-color-background-container)';\n this.portalEl.style.borderRadius = 'var(--pine-dimension-125)';\n this.portalEl.style.boxShadow = 'var(--pine-box-shadow-200)';\n this.portalEl.style.margin = 'var(--pine-dimension-none)';\n this.portalEl.style.padding = 'var(--pine-dimension-md)';\n\n // Generate unique ID\n if (!this.componentId) {\n const suffix = PdsPopover.instanceCounter++;\n this.portalEl.id = `pds-popover-portal-${suffix}`;\n } else {\n this.portalEl.id = `${this.componentId}-portal`;\n }\n\n // Add accessibility attributes for screen readers\n // Note: Native Popover API doesn't add a specific role, keeping semantic HTML\n this.portalEl.setAttribute('aria-modal', 'false'); // Not a modal, can interact with rest of page\n\n // Append to body\n document.body.appendChild(this.portalEl);\n\n // Add global focus styles to match Pine design system\n // This is done after appending to ensure it's part of the document and can access CSS variables\n this.addPortalFocusStyles();\n }\n\n /**\n * Adds Pine design system focus styles and dark mode border to the portal element\n * Uses CSS variables from Pine's design tokens\n */\n private addPortalFocusStyles() {\n if (!this.portalEl) return;\n\n const portalId = this.portalEl.id;\n\n // Check if style element already exists\n const existingStyle = document.querySelector(`style[data-pds-popover-focus=\"${portalId}\"]`);\n if (existingStyle) return;\n\n // Create style element with Pine's focus ring styles and dark mode border\n const styleEl = document.createElement('style');\n styleEl.setAttribute('data-pds-popover-focus', portalId);\n styleEl.textContent = `\n #${portalId}:focus {\n outline: var(--pine-outline-focus, 2px solid var(--pine-color-focus-ring, #6366f1)) !important;\n outline-offset: var(--pine-border-width, 1px);\n }\n #${portalId}:focus:not(:focus-visible) {\n outline: none;\n }\n [data-theme=\"dark\"] #${portalId} {\n border: var(--pine-border);\n }\n `;\n\n document.head.appendChild(styleEl);\n }\n\n /**\n * Moves slot content into portal (preserves event handlers and component instances)\n */\n private updatePortalContent() {\n if (!this.portalEl) return;\n\n const contentSlotWrapper = this.el.shadowRoot?.querySelector('.pds-popover__content-slot-wrapper');\n const defaultSlot = contentSlotWrapper?.querySelector('slot');\n\n if (defaultSlot) {\n const assignedNodes = defaultSlot.assignedNodes();\n\n // Move each node into portal and track with placeholder for restoration\n assignedNodes.forEach(node => {\n // Skip if node is already in the portal or already tracked\n const isAlreadyInPortal = node.parentNode === this.portalEl;\n const isAlreadyTracked = this.movedNodes.some(moved => moved.node === node);\n\n if (isAlreadyInPortal || isAlreadyTracked) {\n return;\n }\n\n // Create a placeholder comment to mark original position\n const placeholder = document.createComment('pds-popover-placeholder');\n\n // Insert placeholder before moving the node\n node.parentNode?.insertBefore(placeholder, node);\n\n // Move the actual node to portal (preserves all handlers and state)\n this.portalEl!.appendChild(node);\n\n // Track for restoration\n this.movedNodes.push({ node, placeholder });\n });\n }\n }\n\n /**\n * Restores moved nodes back to their original positions\n */\n private restorePortalContent() {\n // Restore each moved node to its original position\n this.movedNodes.forEach(({ node, placeholder }) => {\n if (placeholder.parentNode) {\n placeholder.parentNode.insertBefore(node, placeholder);\n placeholder.parentNode.removeChild(placeholder);\n }\n });\n\n // Clear tracking array\n this.movedNodes = [];\n }\n\n private removePortal() {\n if (this.portalEl) {\n // Remove the portal element from DOM\n if (this.portalEl.parentNode) {\n this.portalEl.parentNode.removeChild(this.portalEl);\n }\n\n // Remove the associated focus style element\n const portalId = this.portalEl.id;\n const styleEl = document.querySelector(`style[data-pds-popover-focus=\"${portalId}\"]`);\n if (styleEl && styleEl.parentNode) {\n styleEl.parentNode.removeChild(styleEl);\n }\n }\n this.portalEl = null;\n }\n\n /**\n * Opens the popover programmatically\n */\n @Method()\n async show() {\n if (this.active || !this.portalEl) return;\n\n this.active = true;\n\n // Record open timestamp to prevent immediate close from opening click\n this.openTimestamp = Date.now();\n\n // Update ARIA expanded state on trigger\n if (this.triggerEl) {\n this.triggerEl.setAttribute('aria-expanded', 'true');\n }\n\n // Update portal content with latest slot content\n this.updatePortalContent();\n\n // Show portal\n this.portalEl.style.display = 'block';\n this.portalEl.style.opacity = '1';\n this.portalEl.style.visibility = 'visible';\n\n // Position the popover\n requestAnimationFrame(() => {\n if (!this.isComponentMounted) return;\n this.handlePopoverPositioning();\n });\n\n // Add scroll and resize listeners for repositioning (always)\n this.addScrollAndResizeListeners();\n\n // Add document listeners for light dismiss and escape key (auto type only)\n if (this.popoverType === 'auto') {\n this.addLightDismissListeners();\n }\n\n // Emit open event\n this.pdsPopoverOpen.emit({\n componentId: this.componentId,\n popoverType: this.popoverType,\n });\n }\n\n /**\n * Closes the popover programmatically\n */\n @Method()\n async hide() {\n if (!this.active || !this.portalEl) return;\n\n this.active = false;\n\n // Update ARIA expanded state on trigger\n if (this.triggerEl) {\n this.triggerEl.setAttribute('aria-expanded', 'false');\n }\n\n // Restore content back to original slot positions\n this.restorePortalContent();\n\n // Hide portal\n this.portalEl.style.display = 'none';\n this.portalEl.style.opacity = '0';\n this.portalEl.style.visibility = 'hidden';\n\n // Return focus to trigger for keyboard accessibility\n // This mirrors native Popover API behavior on close\n this.returnFocusToTrigger();\n\n // Remove all listeners\n this.removeLightDismissListeners();\n this.removeScrollAndResizeListeners();\n\n // Clear any pending timers\n this.clearDebounceTimers();\n\n // Emit close event\n this.pdsPopoverClose.emit({\n componentId: this.componentId,\n popoverType: this.popoverType,\n });\n }\n\n /**\n * Toggles the popover open/closed state programmatically\n */\n @Method()\n async toggle() {\n if (this.active) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n /**\n * Adds light dismiss listeners (click outside and escape key)\n */\n private addLightDismissListeners() {\n // Add listeners immediately - handleClickOutside will check timestamp\n document.addEventListener('click', this.boundClickOutsideHandler, true);\n document.addEventListener('keydown', this.boundEscapeKeyHandler);\n }\n\n /**\n * Removes light dismiss listeners\n */\n private removeLightDismissListeners() {\n document.removeEventListener('click', this.boundClickOutsideHandler, true);\n document.removeEventListener('keydown', this.boundEscapeKeyHandler);\n }\n\n /**\n * Adds scroll and resize listeners for repositioning\n */\n private addScrollAndResizeListeners() {\n window.addEventListener('scroll', this.boundScrollHandler, true);\n window.addEventListener('resize', this.boundResizeHandler);\n }\n\n /**\n * Removes scroll and resize listeners\n */\n private removeScrollAndResizeListeners() {\n window.removeEventListener('scroll', this.boundScrollHandler, true);\n window.removeEventListener('resize', this.boundResizeHandler);\n }\n\n /**\n * Handles clicks outside the popover for light dismiss (auto type only)\n */\n private handleClickOutside(event: MouseEvent) {\n // Ignore events that occurred at or before the popover opened\n // This prevents the opening click from immediately closing the popover\n // Convert event.timeStamp (DOMHighResTimeStamp from performance.now()) to epoch time\n // by calculating: currentEpochTime - (currentPerfTime - eventPerfTime)\n const eventTime = event.timeStamp\n ? Date.now() - (performance.now() - event.timeStamp)\n : Date.now();\n\n if (eventTime <= this.openTimestamp) {\n return;\n }\n\n const target = event.target as Node;\n\n // Check if click is outside both the popover portal and the trigger\n const clickedInsidePopover = this.portalEl?.contains(target);\n const clickedInsideTrigger = this.triggerEl?.contains(target);\n\n if (!clickedInsidePopover && !clickedInsideTrigger) {\n this.hide();\n }\n }\n\n /**\n * Returns focus to the trigger element with visible focus indicator\n * This ensures focus rings/outlines are shown as they would be with keyboard navigation\n */\n private returnFocusToTrigger() {\n if (!this.triggerEl) return;\n\n // Focus immediately while still in keyboard event context\n // This ensures the browser treats it as keyboard-initiated and shows focus ring\n this.triggerEl.focus({ preventScroll: true });\n }\n\n /**\n * Handles escape key press to close the popover\n * Mirrors native Popover API: Escape closes and returns focus to trigger\n */\n private handleEscapeKey(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n // Prevent default Escape behavior and stop propagation\n // This mirrors native Popover API which handles Escape exclusively\n event.preventDefault();\n event.stopPropagation();\n\n // Close popover and return focus to trigger\n this.hide();\n }\n }\n\n /**\n * Handles scroll events to reposition the popover (debounced for performance)\n */\n private handleScroll() {\n if (!this.active) return;\n\n if (this.scrollDebounceTimer !== null) {\n clearTimeout(this.scrollDebounceTimer);\n }\n\n this.scrollDebounceTimer = setTimeout(() => {\n this.handlePopoverPositioning();\n this.scrollDebounceTimer = null;\n }, 10); // 10ms debounce for smooth repositioning\n }\n\n /**\n * Handles resize events to reposition the popover (debounced for performance)\n */\n private handleResize() {\n if (!this.active) return;\n\n if (this.resizeDebounceTimer !== null) {\n clearTimeout(this.resizeDebounceTimer);\n }\n\n this.resizeDebounceTimer = setTimeout(() => {\n this.handlePopoverPositioning();\n this.resizeDebounceTimer = null;\n }, 100); // 100ms debounce for resize\n }\n\n /**\n * Positions the popover relative to its trigger element\n */\n private handlePopoverPositioning() {\n // Prevent repositioning loops\n if (this.isRepositioning) {\n return;\n }\n\n this.isRepositioning = true;\n\n if (this.triggerEl == null || this.portalEl == null) {\n this.isRepositioning = false;\n return;\n }\n\n const triggerRect = this.triggerEl.getBoundingClientRect();\n const popoverRect = this.portalEl.getBoundingClientRect();\n\n // Safety check: ensure trigger has valid dimensions (is rendered and visible)\n if (triggerRect.width === 0 || triggerRect.height === 0) {\n this.isRepositioning = false;\n return;\n }\n\n let top = 0;\n let left = 0;\n const offset = 8;\n\n switch (this.placement) {\n case 'top':\n top = triggerRect.top - popoverRect.height - offset;\n left = triggerRect.left + (triggerRect.width - popoverRect.width) / 2;\n break;\n case 'top-start':\n top = triggerRect.top - popoverRect.height - offset;\n left = triggerRect.left;\n break;\n case 'top-end':\n top = triggerRect.top - popoverRect.height - offset;\n left = triggerRect.right - popoverRect.width;\n break;\n case 'right':\n top = triggerRect.top + (triggerRect.height - popoverRect.height) / 2;\n left = triggerRect.right + offset;\n break;\n case 'right-start':\n top = triggerRect.top;\n left = triggerRect.right + offset;\n break;\n case 'right-end':\n top = triggerRect.bottom - popoverRect.height;\n left = triggerRect.right + offset;\n break;\n case 'bottom':\n top = triggerRect.bottom + offset;\n left = triggerRect.left + (triggerRect.width - popoverRect.width) / 2;\n break;\n case 'bottom-start':\n top = triggerRect.bottom + offset;\n left = triggerRect.left;\n break;\n case 'bottom-end':\n top = triggerRect.bottom + offset;\n left = triggerRect.right - popoverRect.width;\n break;\n case 'left':\n top = triggerRect.top + (triggerRect.height - popoverRect.height) / 2;\n left = triggerRect.left - popoverRect.width - offset;\n break;\n case 'left-start':\n top = triggerRect.top;\n left = triggerRect.left - popoverRect.width - offset;\n break;\n case 'left-end':\n top = triggerRect.bottom - popoverRect.height;\n left = triggerRect.left - popoverRect.width - offset;\n break;\n }\n\n this.portalEl.style.top = `${top}px`;\n this.portalEl.style.left = `${left}px`;\n\n // Reset the repositioning guard after a short delay\n setTimeout(() => {\n this.isRepositioning = false;\n }, 16); // ~1 frame at 60fps\n }\n\n render() {\n return (\n <Host id={this.componentId}>\n <span class=\"pds-popover__trigger-wrapper\">\n <slot name=\"trigger\" onSlotchange={this.handleTriggerSlotChange}></slot>\n </span>\n\n <div class=\"pds-popover__content-slot-wrapper\">\n <slot onSlotchange={this.handleContentSlotChange}></slot>\n </div>\n </Host>\n );\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"popover-interface.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"popover-interface.js","sourceRoot":"","sources":["../../../../src/components/pds-popover/popover-interface.ts"],"names":[],"mappings":"","sourcesContent":["export interface PdsPopoverEventDetail {\n componentId: string;\n popoverType: 'auto' | 'manual';\n}\n\n"]}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { html } from 'lit';
|
|
2
|
-
|
|
3
|
-
import { withActions } from '@storybook/addon-actions/decorator';
|
|
2
|
+
|
|
4
3
|
|
|
5
4
|
export default {
|
|
6
|
-
|
|
5
|
+
|
|
7
6
|
args: {
|
|
8
7
|
popoverTargetAction: 'toggle',
|
|
9
8
|
popoverType: 'auto',
|
|
@@ -11,12 +10,7 @@ export default {
|
|
|
11
10
|
componentId: 'popover-playground',
|
|
12
11
|
},
|
|
13
12
|
component: 'pds-popover',
|
|
14
|
-
|
|
15
|
-
parameters: {
|
|
16
|
-
actions: {
|
|
17
|
-
handles: ['pdsPopoverOpen', 'pdsPopoverClose'],
|
|
18
|
-
},
|
|
19
|
-
},
|
|
13
|
+
parameters: {},
|
|
20
14
|
title: 'components/Popover'
|
|
21
15
|
}
|
|
22
16
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
:host {
|
|
2
|
-
--color-progress-fill: var(--pine-color-
|
|
2
|
+
--color-progress-fill: var(--pine-color-primary);
|
|
3
3
|
--sizing-progress-bar-width: 100%;
|
|
4
4
|
align-items: center;
|
|
5
5
|
display: flex;
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
}
|
|
17
17
|
.pds-progress {
|
|
18
18
|
align-items: center;
|
|
19
|
-
background-color: var(--pine-color-background-
|
|
19
|
+
background-color: var(--pine-color-background-muted);
|
|
20
20
|
border-radius: var(--pine-dimension-2xs);
|
|
21
21
|
display: flex;
|
|
22
22
|
flex-direction: row;
|
|
@@ -40,12 +40,12 @@ progress::-webkit-progress-bar {
|
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
progress::-webkit-progress-value {
|
|
43
|
-
background: var(--color-progress-fill, var(--pine-color-
|
|
43
|
+
background: var(--color-progress-fill, var(--pine-color-primary));
|
|
44
44
|
border-radius: var(--pine-dimension-2xs);
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
progress::-moz-progress-bar {
|
|
48
|
-
background: var(--color-progress-fill, var(--pine-color-
|
|
48
|
+
background: var(--color-progress-fill, var(--pine-color-primary));
|
|
49
49
|
border-radius: var(--pine-dimension-2xs);
|
|
50
50
|
}
|
|
51
51
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pds-progress.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"pds-progress.js","sourceRoot":"","sources":["../../../../src/components/pds-progress/pds-progress.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAOzD,MAAM,OAAO,WAAW;IALxB;QAME;;;UAGE;QACM,aAAQ,GAAG,KAAK,CAAC;QAkBzB;;;UAGE;QACM,YAAO,GAAG,CAAC,CAAC;QAEpB;;;UAGE;QACM,gBAAW,GAAG,KAAK,CAAC;KAqB7B;IAnBC,MAAM;QACJ,OAAO,CACL,EAAC,IAAI,qDAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE;YAChE,4DAAK,KAAK,EAAC,cAAc;gBACvB,8DAAO,KAAK,EAAC,qBAAqB,EAAC,OAAO,EAAE,IAAI,CAAC,WAAW,IACzD,IAAI,CAAC,KAAK,CACL;gBACR,iEACE,EAAE,EAAE,IAAI,CAAC,WAAW,EACpB,GAAG,EAAC,KAAK,EACT,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,uBAAuB,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,EACxE,KAAK,EAAE,IAAI,CAAC,OAAO,GAEV,CACP;YACL,IAAI,CAAC,WAAW,IAAI,4DAAK,KAAK,EAAC,0BAA0B;gBAAE,IAAI,CAAC,OAAO;oBAAQ,CAC3E,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Host, h, Prop } from '@stencil/core';\n\n@Component({\n tag: 'pds-progress',\n styleUrls: ['pds-progress.scss'],\n shadow: true,\n})\nexport class PdsProgress {\n /**\n * Determines whether or not progress is animated.\n * @defaultValue false\n */\n @Prop() animated = false;\n\n /**\n * A unique identifier used for the underlying component `id` attribute and the label `for` attribute.\n */\n @Prop() componentId!: string;\n\n /**\n * Sets the progress fill color. Accepts a color token or a [valid color value](https://developer.mozilla.org/en-US/docs/Web/CSS/color_value).\n * @defaultValue 'var(--pine-color-blue-300)'\n */\n @Prop() fillColor: string;\n\n /**\n * String used for label text. Label is visually hidden but required for better accessibility.\n */\n @Prop() label!: string;\n\n /**\n * Sets the progress fill pecentage and visually displayed when `show-percentage=true`.\n * @defaultValue 0\n */\n @Prop() percent = 0;\n\n /**\n * Determines whether or not the percent value should be displayed as text.\n * @defaultValue false\n */\n @Prop() showPercent = false;\n\n render() {\n return (\n <Host class={this.animated ? { 'is-animated': this.animated } : ''}>\n <div class=\"pds-progress\">\n <label class=\"pds-progress__label\" htmlFor={this.componentId}>\n {this.label}\n </label>\n <progress\n id={this.componentId}\n max=\"100\"\n style={this.fillColor ? { '--color-progress-fill': this.fillColor } : {}}\n value={this.percent}\n >\n </progress>\n </div>\n {this.showPercent && <div class=\"pds-progress__percentage\">{this.percent}%</div>}\n </Host>\n );\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pds-property.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"pds-property.js","sourceRoot":"","sources":["../../../../src/components/pds-property/pds-property.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAEzD;;GAEG;AAOH,MAAM,OAAO,WAAW;IALxB;QAWE;;WAEG;QACK,SAAI,GAAW,MAAM,CAAC;KAY/B;IAVC,MAAM;QACJ,OAAO,CACL,EAAC,IAAI,qDAAC,EAAE,EAAE,IAAI,CAAC,WAAW;YACxB,+EAAqB,QAAQ,EAAC,GAAG,EAAC,IAAI;gBACpC,iEAAU,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAC,0BAA0B,iBAAa,MAAM,GAAY;gBACzF,8DAAQ,CACA,CACL,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Host, h, Prop } from '@stencil/core';\n\n/**\n * @slot (default) - The property text content.\n */\n\n@Component({\n tag: 'pds-property',\n styleUrls: ['pds-property.scss'],\n shadow: true,\n})\nexport class PdsProperty {\n /**\n * A unique identifier used for the underlying component `id` attribute.\n */\n @Prop() componentId: string;\n\n /**\n * The name of the icon to display before the property text.\n */\n @Prop() icon: string = 'star';\n\n render() {\n return (\n <Host id={this.componentId}>\n <pds-box align-items=\"center\" gap=\"xs\">\n <pds-icon icon={this.icon} size=\"var(--pine-dimension-sm)\" aria-hidden=\"true\"></pds-icon>\n <slot />\n </pds-box>\n </Host>\n );\n }\n}\n"]}
|