@pine-ds/core 4.8.0 → 4.9.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/attributes.js +1 -1
- package/components/floating-ui.dom.js +1 -1
- package/components/index.js +1 -1
- package/components/index2.js +1 -1
- package/components/keep-hydrated.js +1 -0
- package/components/mock-pds-modal.js +1 -1
- package/components/pds-alert.js +1 -1
- package/components/pds-avatar.js +1 -1
- package/components/pds-box2.js +1 -1
- package/components/pds-button2.js +1 -1
- package/components/pds-checkbox2.js +1 -1
- package/components/pds-chip2.js +1 -1
- package/components/pds-combobox.js +1 -1
- package/components/pds-container.js +1 -1
- package/components/pds-copytext.js +1 -1
- package/components/pds-datepicker.js +1 -1
- package/components/pds-divider.js +1 -1
- package/components/pds-drawer-content.js +1 -1
- package/components/pds-drawer-footer.js +1 -1
- package/components/pds-drawer-header.js +1 -1
- package/components/pds-drawer.js +1 -1
- package/components/pds-dropdown-menu-item.js +1 -1
- package/components/pds-dropdown-menu-separator.js +1 -1
- package/components/pds-dropdown-menu.js +1 -1
- package/components/pds-filter.js +1 -1
- package/components/pds-filters.js +1 -1
- package/components/pds-image.js +1 -1
- package/components/pds-input2.js +1 -1
- package/components/pds-link2.js +1 -1
- package/components/pds-loader2.js +1 -1
- package/components/pds-modal-content.js +1 -1
- package/components/pds-modal-footer.js +1 -1
- package/components/pds-modal-header.js +1 -1
- package/components/pds-modal2.js +1 -1
- package/components/pds-multiselect.js +1 -1
- package/components/pds-popover.js +1 -1
- package/components/pds-progress.js +1 -1
- package/components/pds-property.js +1 -1
- package/components/pds-radio-group.js +1 -1
- package/components/pds-radio.js +1 -1
- package/components/pds-row.js +1 -1
- package/components/pds-select.js +1 -1
- package/components/pds-sortable-item.js +1 -1
- package/components/pds-sortable.js +2 -2
- package/components/pds-switch.js +1 -1
- package/components/pds-table-body.js +1 -1
- package/components/pds-table-cell2.js +1 -1
- package/components/pds-table-head-cell2.js +1 -1
- package/components/pds-table-head.js +1 -1
- package/components/pds-table-row.js +1 -1
- package/components/pds-tabpanel.js +1 -1
- package/components/pds-tabs.js +1 -1
- package/components/pds-text2.js +1 -1
- package/components/pds-textarea.js +1 -1
- package/components/pds-toast.js +1 -1
- package/components/pds-tooltip.js +1 -1
- package/components/tabbable.js +1 -0
- package/dist/cjs/{attributes-BJ7KBHql.js → attributes-CW49XqaL.js} +1 -1
- package/dist/cjs/{floating-ui.dom-Dc8Anyel.js → floating-ui.dom-Dw41zbyY.js} +1 -0
- package/dist/cjs/{index-jl_Q819j.js → index-BsWY_xEJ.js} +1 -1
- package/dist/cjs/index.cjs.js +1 -1
- package/dist/cjs/{keep-hydrated-CiXgkEYd.js → keep-hydrated-AKoh0DG4.js} +1 -0
- package/dist/cjs/loader.cjs.js +3 -3
- package/dist/cjs/mock-pds-modal.cjs.entry.js +3 -3
- package/dist/cjs/pds-accordion.cjs.entry.js +2 -2
- package/dist/cjs/pds-alert.cjs.entry.js +17 -4
- package/dist/cjs/pds-avatar.cjs.entry.js +21 -11
- package/dist/cjs/pds-box.cjs.entry.js +4 -4
- package/dist/cjs/pds-button.cjs.entry.js +57 -25
- package/dist/cjs/pds-checkbox.cjs.entry.js +15 -7
- package/dist/cjs/pds-chip.cjs.entry.js +6 -6
- package/dist/cjs/pds-combobox.cjs.entry.js +41 -11
- package/dist/cjs/pds-container.cjs.entry.js +3 -3
- package/dist/cjs/pds-copytext.cjs.entry.js +6 -6
- package/dist/cjs/pds-datepicker.cjs.entry.js +5 -5
- package/dist/cjs/pds-divider.cjs.entry.js +3 -3
- package/dist/cjs/pds-drawer-content.cjs.entry.js +3 -3
- package/dist/cjs/pds-drawer-footer.cjs.entry.js +3 -3
- package/dist/cjs/pds-drawer-header.cjs.entry.js +3 -3
- package/dist/cjs/pds-drawer.cjs.entry.js +4 -4
- package/dist/cjs/pds-dropdown-menu-item.cjs.entry.js +4 -4
- package/dist/cjs/pds-dropdown-menu-separator.cjs.entry.js +3 -3
- package/dist/cjs/pds-dropdown-menu.cjs.entry.js +5 -5
- package/dist/cjs/pds-filter.cjs.entry.js +3 -3
- package/dist/cjs/pds-filters.cjs.entry.js +3 -3
- package/dist/cjs/pds-icon.cjs.entry.js +2 -2
- package/dist/cjs/pds-image.cjs.entry.js +4 -4
- package/dist/cjs/pds-input.cjs.entry.js +5 -5
- package/dist/cjs/pds-link.cjs.entry.js +14 -5
- package/dist/cjs/pds-loader.cjs.entry.js +4 -4
- package/dist/cjs/pds-modal-content.cjs.entry.js +4 -4
- package/dist/cjs/pds-modal-footer.cjs.entry.js +3 -3
- package/dist/cjs/pds-modal-header.cjs.entry.js +3 -3
- package/dist/cjs/pds-modal.cjs.entry.js +8 -88
- package/dist/cjs/pds-multiselect.cjs.entry.js +6 -6
- package/dist/cjs/pds-popover.cjs.entry.js +230 -153
- package/dist/cjs/pds-progress.cjs.entry.js +4 -4
- package/dist/cjs/pds-property.cjs.entry.js +3 -3
- package/dist/cjs/pds-radio-group.cjs.entry.js +5 -5
- package/dist/cjs/pds-radio.cjs.entry.js +23 -10
- package/dist/cjs/pds-row.cjs.entry.js +4 -4
- package/dist/cjs/pds-select.cjs.entry.js +131 -20
- package/dist/cjs/pds-sortable-item.cjs.entry.js +4 -4
- package/dist/cjs/pds-sortable.cjs.entry.js +4 -4
- package/dist/cjs/pds-switch.cjs.entry.js +6 -6
- package/dist/cjs/pds-tab.cjs.entry.js +3 -3
- package/dist/cjs/pds-table-body.cjs.entry.js +3 -3
- package/dist/cjs/pds-table-cell.cjs.entry.js +6 -6
- package/dist/cjs/pds-table-head-cell.cjs.entry.js +4 -4
- package/dist/cjs/pds-table-head.cjs.entry.js +3 -3
- package/dist/cjs/pds-table-row.cjs.entry.js +3 -3
- package/dist/cjs/pds-table.cjs.entry.js +2 -2
- package/dist/cjs/pds-tabpanel.cjs.entry.js +4 -4
- package/dist/cjs/pds-tabs.cjs.entry.js +4 -4
- package/dist/cjs/pds-text.cjs.entry.js +5 -5
- package/dist/cjs/pds-textarea.cjs.entry.js +7 -7
- package/dist/cjs/pds-toast.cjs.entry.js +14 -8
- package/dist/cjs/pds-tooltip.cjs.entry.js +115 -44
- package/dist/cjs/pine-core.cjs.js +3 -3
- package/dist/cjs/tabbable-CddSt_Hi.js +85 -0
- package/dist/cjs/{truncation-tooltip-BtuiXLV0.js → truncation-tooltip-O5nQmXPw.js} +1 -1
- package/dist/collection/components/pds-alert/pds-alert.css +13 -0
- package/dist/collection/components/pds-alert/pds-alert.js +36 -1
- package/dist/collection/components/pds-alert/stories/pds-alert.stories.js +4 -0
- package/dist/collection/components/pds-avatar/pds-avatar.js +41 -9
- package/dist/collection/components/pds-avatar/stories/pds-avatar.stories.js +2 -0
- package/dist/collection/components/pds-box/pds-box.js +1 -1
- package/dist/collection/components/pds-button/pds-button.js +13 -23
- package/dist/collection/components/pds-checkbox/pds-checkbox.css +79 -0
- package/dist/collection/components/pds-checkbox/pds-checkbox.js +36 -5
- package/dist/collection/components/pds-checkbox/stories/pds-checkbox.stories.js +38 -0
- package/dist/collection/components/pds-chip/pds-chip.js +1 -1
- package/dist/collection/components/pds-combobox/pds-combobox.css +33 -0
- package/dist/collection/components/pds-combobox/pds-combobox.js +60 -7
- package/dist/collection/components/pds-combobox/stories/pds-combobox.stories.js +44 -0
- package/dist/collection/components/pds-container/pds-container.js +1 -1
- package/dist/collection/components/pds-copytext/pds-copytext.js +1 -1
- package/dist/collection/components/pds-datepicker/pds-datepicker.js +2 -2
- package/dist/collection/components/pds-divider/pds-divider.js +1 -1
- package/dist/collection/components/pds-drawer/pds-drawer-content/pds-drawer-content.js +1 -1
- package/dist/collection/components/pds-drawer/pds-drawer-footer/pds-drawer-footer.js +1 -1
- package/dist/collection/components/pds-drawer/pds-drawer-header/pds-drawer-header.js +1 -1
- package/dist/collection/components/pds-drawer/pds-drawer.js +2 -2
- package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-item/pds-dropdown-menu-item.js +24 -2
- package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-separator/pds-dropdown-menu-separator.js +1 -1
- package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu.js +1 -1
- package/dist/collection/components/pds-filters/pds-filter/pds-filter.js +1 -1
- package/dist/collection/components/pds-filters/pds-filters.js +1 -1
- package/dist/collection/components/pds-image/pds-image.js +2 -2
- package/dist/collection/components/pds-input/pds-input.js +2 -2
- package/dist/collection/components/pds-input/stories/pds-input.stories.js +6 -6
- package/dist/collection/components/pds-link/pds-link.js +34 -3
- package/dist/collection/components/pds-link/stories/pds-link.stories.js +3 -2
- package/dist/collection/components/pds-loader/pds-loader.js +1 -1
- package/dist/collection/components/pds-modal/pds-modal-content/pds-modal-content.js +2 -2
- package/dist/collection/components/pds-modal/pds-modal-footer/pds-modal-footer.js +1 -1
- package/dist/collection/components/pds-modal/pds-modal-header/pds-modal-header.js +1 -1
- package/dist/collection/components/pds-modal/pds-modal.js +4 -84
- package/dist/collection/components/pds-modal/test/mock-pds-modal.js +1 -1
- package/dist/collection/components/pds-multiselect/pds-multiselect.js +3 -3
- package/dist/collection/components/pds-popover/pds-popover.css +6 -0
- package/dist/collection/components/pds-popover/pds-popover.js +226 -149
- package/dist/collection/components/pds-progress/pds-progress.js +1 -1
- package/dist/collection/components/pds-property/pds-property.js +1 -1
- package/dist/collection/components/pds-radio/pds-radio.css +57 -0
- package/dist/collection/components/pds-radio/pds-radio.js +45 -9
- package/dist/collection/components/pds-radio/stories/pds-radio.stories.js +15 -0
- package/dist/collection/components/pds-radio-group/pds-radio-group.js +3 -3
- package/dist/collection/components/pds-radio-group/stories/pds-radio-group.stories.js +45 -0
- package/dist/collection/components/pds-row/pds-row.js +1 -1
- package/dist/collection/components/pds-select/pds-select.js +128 -17
- package/dist/collection/components/pds-select/stories/pds-select.stories.js +2 -2
- package/dist/collection/components/pds-sortable/pds-sortable-item/pds-sortable-item.js +1 -1
- package/dist/collection/components/pds-sortable/pds-sortable.js +1 -1
- package/dist/collection/components/pds-switch/pds-switch.js +3 -3
- package/dist/collection/components/pds-table/pds-table-body/pds-table-body.js +1 -1
- package/dist/collection/components/pds-table/pds-table-cell/pds-table-cell.js +2 -2
- package/dist/collection/components/pds-table/pds-table-head/pds-table-head.js +1 -1
- package/dist/collection/components/pds-table/pds-table-head-cell/pds-table-head-cell.js +2 -2
- package/dist/collection/components/pds-table/pds-table-row/pds-table-row.js +1 -1
- package/dist/collection/components/pds-table/stories/pds-table.stories.js +3 -3
- package/dist/collection/components/pds-tabs/pds-tabpanel/pds-tabpanel.js +1 -1
- package/dist/collection/components/pds-tabs/pds-tabs.js +1 -1
- package/dist/collection/components/pds-text/pds-text.js +1 -1
- package/dist/collection/components/pds-textarea/pds-textarea.js +4 -4
- package/dist/collection/components/pds-textarea/stories/pds-textarea.stories.js +2 -2
- package/dist/collection/components/pds-toast/pds-toast.css +13 -0
- package/dist/collection/components/pds-toast/pds-toast.js +33 -5
- package/dist/collection/components/pds-toast/stories/pds-toast.stories.js +4 -1
- package/dist/collection/components/pds-tooltip/pds-tooltip.js +113 -41
- package/dist/collection/utils/aria-references.js +42 -0
- package/dist/collection/utils/tabbable.js +81 -0
- package/dist/docs.json +244 -7
- package/dist/esm/{attributes-WXw_I_uJ.js → attributes-DkeVeN0g.js} +1 -1
- package/dist/esm/{floating-ui.dom-BPqJgIq6.js → floating-ui.dom-Cuc0DYlm.js} +1 -1
- package/dist/esm/{index-Cw9J31qd.js → index-BFSwd-GQ.js} +1 -1
- package/dist/esm/{index-BWDu62Mo.js → index-m3pqpeWg.js} +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/{keep-hydrated-BLG6RDBt.js → keep-hydrated-BgNaWLoS.js} +1 -1
- package/dist/esm/loader.js +4 -4
- package/dist/esm/mock-pds-modal.entry.js +3 -3
- package/dist/esm/pds-accordion.entry.js +3 -3
- package/dist/esm/pds-alert.entry.js +17 -4
- package/dist/esm/pds-avatar.entry.js +22 -12
- package/dist/esm/pds-box.entry.js +4 -4
- package/dist/esm/pds-button.entry.js +58 -26
- package/dist/esm/pds-checkbox.entry.js +16 -8
- package/dist/esm/pds-chip.entry.js +7 -7
- package/dist/esm/pds-combobox.entry.js +41 -11
- package/dist/esm/pds-container.entry.js +3 -3
- package/dist/esm/pds-copytext.entry.js +7 -7
- package/dist/esm/pds-datepicker.entry.js +6 -6
- package/dist/esm/pds-divider.entry.js +3 -3
- package/dist/esm/pds-drawer-content.entry.js +3 -3
- package/dist/esm/pds-drawer-footer.entry.js +3 -3
- package/dist/esm/pds-drawer-header.entry.js +3 -3
- package/dist/esm/pds-drawer.entry.js +4 -4
- package/dist/esm/pds-dropdown-menu-item.entry.js +4 -4
- package/dist/esm/pds-dropdown-menu-separator.entry.js +3 -3
- package/dist/esm/pds-dropdown-menu.entry.js +5 -5
- package/dist/esm/pds-filter.entry.js +4 -4
- package/dist/esm/pds-filters.entry.js +3 -3
- package/dist/esm/pds-icon.entry.js +2 -2
- package/dist/esm/pds-image.entry.js +4 -4
- package/dist/esm/pds-input.entry.js +6 -6
- package/dist/esm/pds-link.entry.js +15 -6
- package/dist/esm/pds-loader.entry.js +4 -4
- package/dist/esm/pds-modal-content.entry.js +4 -4
- package/dist/esm/pds-modal-footer.entry.js +3 -3
- package/dist/esm/pds-modal-header.entry.js +3 -3
- package/dist/esm/pds-modal.entry.js +6 -86
- package/dist/esm/pds-multiselect.entry.js +7 -7
- package/dist/esm/pds-popover.entry.js +230 -153
- package/dist/esm/pds-progress.entry.js +4 -4
- package/dist/esm/pds-property.entry.js +3 -3
- package/dist/esm/pds-radio-group.entry.js +6 -6
- package/dist/esm/pds-radio.entry.js +24 -11
- package/dist/esm/pds-row.entry.js +4 -4
- package/dist/esm/pds-select.entry.js +132 -21
- package/dist/esm/pds-sortable-item.entry.js +5 -5
- package/dist/esm/pds-sortable.entry.js +4 -4
- package/dist/esm/pds-switch.entry.js +7 -7
- package/dist/esm/pds-tab.entry.js +3 -3
- package/dist/esm/pds-table-body.entry.js +3 -3
- package/dist/esm/pds-table-cell.entry.js +6 -6
- package/dist/esm/pds-table-head-cell.entry.js +5 -5
- package/dist/esm/pds-table-head.entry.js +3 -3
- package/dist/esm/pds-table-row.entry.js +3 -3
- package/dist/esm/pds-table.entry.js +2 -2
- package/dist/esm/pds-tabpanel.entry.js +4 -4
- package/dist/esm/pds-tabs.entry.js +4 -4
- package/dist/esm/pds-text.entry.js +5 -5
- package/dist/esm/pds-textarea.entry.js +8 -8
- package/dist/esm/pds-toast.entry.js +14 -8
- package/dist/esm/pds-tooltip.entry.js +115 -44
- package/dist/esm/pine-core.js +4 -4
- package/dist/esm/tabbable-DCKBKRUy.js +83 -0
- package/dist/esm/{truncation-tooltip-FaW67DiY.js → truncation-tooltip-D_gvhB9r.js} +1 -1
- package/dist/esm-es5/{attributes-WXw_I_uJ.js → attributes-DkeVeN0g.js} +1 -1
- package/dist/esm-es5/{floating-ui.dom-BPqJgIq6.js → floating-ui.dom-Cuc0DYlm.js} +1 -1
- package/dist/esm-es5/{index-Cw9J31qd.js → index-BFSwd-GQ.js} +2 -2
- package/dist/esm-es5/{index-BWDu62Mo.js → index-m3pqpeWg.js} +1 -1
- package/dist/esm-es5/index.js +1 -1
- package/dist/esm-es5/{keep-hydrated-BLG6RDBt.js → keep-hydrated-BgNaWLoS.js} +1 -1
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/mock-pds-modal.entry.js +1 -1
- package/dist/esm-es5/pds-accordion.entry.js +1 -1
- package/dist/esm-es5/pds-alert.entry.js +1 -1
- package/dist/esm-es5/pds-avatar.entry.js +1 -1
- package/dist/esm-es5/pds-box.entry.js +1 -1
- package/dist/esm-es5/pds-button.entry.js +1 -1
- package/dist/esm-es5/pds-checkbox.entry.js +1 -1
- package/dist/esm-es5/pds-chip.entry.js +1 -1
- package/dist/esm-es5/pds-combobox.entry.js +2 -2
- package/dist/esm-es5/pds-container.entry.js +1 -1
- package/dist/esm-es5/pds-copytext.entry.js +1 -1
- package/dist/esm-es5/pds-datepicker.entry.js +1 -1
- package/dist/esm-es5/pds-divider.entry.js +1 -1
- package/dist/esm-es5/pds-drawer-content.entry.js +1 -1
- package/dist/esm-es5/pds-drawer-footer.entry.js +1 -1
- package/dist/esm-es5/pds-drawer-header.entry.js +1 -1
- package/dist/esm-es5/pds-drawer.entry.js +1 -1
- package/dist/esm-es5/pds-dropdown-menu-item.entry.js +1 -1
- package/dist/esm-es5/pds-dropdown-menu-separator.entry.js +1 -1
- package/dist/esm-es5/pds-dropdown-menu.entry.js +1 -1
- package/dist/esm-es5/pds-filter.entry.js +1 -1
- package/dist/esm-es5/pds-filters.entry.js +1 -1
- package/dist/esm-es5/pds-icon.entry.js +1 -1
- package/dist/esm-es5/pds-image.entry.js +1 -1
- package/dist/esm-es5/pds-input.entry.js +1 -1
- package/dist/esm-es5/pds-link.entry.js +1 -1
- package/dist/esm-es5/pds-loader.entry.js +1 -1
- package/dist/esm-es5/pds-modal-content.entry.js +1 -1
- package/dist/esm-es5/pds-modal-footer.entry.js +1 -1
- package/dist/esm-es5/pds-modal-header.entry.js +1 -1
- package/dist/esm-es5/pds-modal.entry.js +1 -1
- package/dist/esm-es5/pds-multiselect.entry.js +1 -1
- package/dist/esm-es5/pds-popover.entry.js +1 -1
- package/dist/esm-es5/pds-progress.entry.js +1 -1
- package/dist/esm-es5/pds-property.entry.js +1 -1
- package/dist/esm-es5/pds-radio-group.entry.js +1 -1
- package/dist/esm-es5/pds-radio.entry.js +1 -1
- package/dist/esm-es5/pds-row.entry.js +1 -1
- package/dist/esm-es5/pds-select.entry.js +1 -1
- package/dist/esm-es5/pds-sortable-item.entry.js +1 -1
- package/dist/esm-es5/pds-sortable.entry.js +2 -2
- package/dist/esm-es5/pds-switch.entry.js +1 -1
- package/dist/esm-es5/pds-tab.entry.js +1 -1
- package/dist/esm-es5/pds-table-body.entry.js +1 -1
- package/dist/esm-es5/pds-table-cell.entry.js +1 -1
- package/dist/esm-es5/pds-table-head-cell.entry.js +1 -1
- package/dist/esm-es5/pds-table-head.entry.js +1 -1
- package/dist/esm-es5/pds-table-row.entry.js +1 -1
- package/dist/esm-es5/pds-table.entry.js +1 -1
- package/dist/esm-es5/pds-tabpanel.entry.js +1 -1
- package/dist/esm-es5/pds-tabs.entry.js +1 -1
- package/dist/esm-es5/pds-text.entry.js +1 -1
- package/dist/esm-es5/pds-textarea.entry.js +1 -1
- package/dist/esm-es5/pds-toast.entry.js +1 -1
- package/dist/esm-es5/pds-tooltip.entry.js +1 -1
- package/dist/esm-es5/pine-core.js +1 -1
- package/dist/esm-es5/tabbable-DCKBKRUy.js +1 -0
- package/dist/esm-es5/{truncation-tooltip-FaW67DiY.js → truncation-tooltip-D_gvhB9r.js} +1 -1
- package/dist/pine-core/index.esm.js +1 -1
- package/dist/pine-core/p-001d4b86.entry.js +1 -0
- package/dist/pine-core/p-06279b93.system.entry.js +1 -0
- package/dist/pine-core/{p-b75b0d09.system.entry.js → p-0790dd0d.system.entry.js} +1 -1
- package/dist/pine-core/p-079c39d1.entry.js +1 -0
- package/dist/pine-core/{p-158b2f51.entry.js → p-07b4524e.entry.js} +1 -1
- package/dist/pine-core/{p-4bfc8b3e.system.entry.js → p-08bbd3e6.system.entry.js} +1 -1
- package/dist/pine-core/{p-d3d69ca4.system.entry.js → p-0bd61097.system.entry.js} +1 -1
- package/dist/pine-core/p-0c60f577.system.entry.js +1 -0
- package/dist/pine-core/{p-acca5f7b.system.entry.js → p-110b4051.system.entry.js} +1 -1
- package/dist/pine-core/p-11e7d660.entry.js +1 -0
- package/dist/pine-core/p-14d872d3.entry.js +1 -0
- package/dist/pine-core/p-17fc76e7.system.entry.js +1 -0
- package/dist/pine-core/{p-0913f696.system.entry.js → p-1e5648bf.system.entry.js} +1 -1
- package/dist/pine-core/{p-ef13f665.system.entry.js → p-22ae92f7.system.entry.js} +1 -1
- package/dist/pine-core/p-239774c9.entry.js +1 -0
- package/dist/pine-core/{p-0b71ecb6.system.entry.js → p-25bf2f26.system.entry.js} +2 -2
- package/dist/pine-core/{p-719542e1.system.entry.js → p-272b24ad.system.entry.js} +1 -1
- package/dist/pine-core/{p-d2c91e7a.entry.js → p-2c0047cd.entry.js} +1 -1
- package/dist/pine-core/p-2d5b1deb.entry.js +1 -0
- package/dist/pine-core/{p-c97bfac9.entry.js → p-3556f6ad.entry.js} +1 -1
- package/dist/pine-core/{p-BGLP3keB.js → p-35s7h-dk.js} +1 -1
- package/dist/pine-core/{p-3c977d8d.system.entry.js → p-38b87aa2.system.entry.js} +1 -1
- package/dist/pine-core/{p-25ea48d1.entry.js → p-3afb1208.entry.js} +1 -1
- package/dist/pine-core/{p-9df5e204.entry.js → p-3b5b8f73.entry.js} +1 -1
- package/dist/pine-core/{p-8c8cc079.system.entry.js → p-3cc19ea8.system.entry.js} +1 -1
- package/dist/pine-core/{p-ca4ee736.system.entry.js → p-3ce7e72e.system.entry.js} +1 -1
- package/dist/pine-core/p-3f62581a.system.entry.js +1 -0
- package/dist/pine-core/p-414faecf.entry.js +1 -0
- package/dist/pine-core/p-463a29fa.entry.js +1 -0
- package/dist/pine-core/{p-f029b7da.system.entry.js → p-4ee44585.system.entry.js} +1 -1
- package/dist/pine-core/p-50af67ea.system.entry.js +1 -0
- package/dist/pine-core/p-5133e8be.system.entry.js +1 -0
- package/dist/pine-core/p-55fce29e.entry.js +1 -0
- package/dist/pine-core/{p-77395d62.system.entry.js → p-568a9a79.system.entry.js} +1 -1
- package/dist/pine-core/{p-5cfd4d41.system.entry.js → p-5967d9fa.system.entry.js} +1 -1
- package/dist/pine-core/{p-5870b092.system.entry.js → p-5c46553f.system.entry.js} +1 -1
- package/dist/pine-core/{p-ea340c55.system.entry.js → p-5ce5836e.system.entry.js} +1 -1
- package/dist/pine-core/p-5f3242c8.system.entry.js +1 -0
- package/dist/pine-core/{p-80e6f3a0.system.entry.js → p-60d27247.system.entry.js} +1 -1
- package/dist/pine-core/{p-90d5edc6.entry.js → p-60e3b1af.entry.js} +1 -1
- package/dist/pine-core/{p-ca0a8f5c.entry.js → p-64283f7b.entry.js} +1 -1
- package/dist/pine-core/p-6602b4d0.entry.js +1 -0
- package/dist/pine-core/p-6845867f.system.entry.js +1 -0
- package/dist/pine-core/{p-332590c7.system.entry.js → p-68fdfb8f.system.entry.js} +1 -1
- package/dist/pine-core/p-6b6ae1be.entry.js +1 -0
- package/dist/pine-core/{p-e5420660.entry.js → p-6d64e6c7.entry.js} +1 -1
- package/dist/pine-core/{p-121612a7.system.entry.js → p-6dad76cb.system.entry.js} +1 -1
- package/dist/pine-core/p-6f34ad9c.entry.js +1 -0
- package/dist/pine-core/{p-55224683.entry.js → p-7073146f.entry.js} +1 -1
- package/dist/pine-core/{p-f1702281.entry.js → p-735b3631.entry.js} +1 -1
- package/dist/pine-core/p-7a14473e.entry.js +1 -0
- package/dist/pine-core/{p-9880d251.system.entry.js → p-7a19477e.system.entry.js} +1 -1
- package/dist/pine-core/{p-ea8f5d29.entry.js → p-7d3a20ba.entry.js} +1 -1
- package/dist/pine-core/{p-a939b471.entry.js → p-7fcf3d37.entry.js} +1 -1
- package/dist/pine-core/{p-26642718.entry.js → p-87642228.entry.js} +1 -1
- package/dist/pine-core/{p-62433f32.entry.js → p-89fefe36.entry.js} +1 -1
- package/dist/pine-core/{p-cccfe60f.system.entry.js → p-8b97dd57.system.entry.js} +1 -1
- package/dist/pine-core/{p-0092444c.system.entry.js → p-9201b497.system.entry.js} +1 -1
- package/dist/pine-core/{p-631f5bcc.entry.js → p-92a8cf7d.entry.js} +1 -1
- package/dist/pine-core/{p-e836a041.entry.js → p-94597b73.entry.js} +1 -1
- package/dist/pine-core/p-9713d6a5.system.entry.js +1 -0
- package/dist/pine-core/p-97be00f4.system.entry.js +1 -0
- package/dist/pine-core/{p-2ac2457b.system.entry.js → p-98843402.system.entry.js} +1 -1
- package/dist/pine-core/{p-b914dde8.entry.js → p-98cc327b.entry.js} +2 -2
- package/dist/pine-core/p-9a8971e2.system.entry.js +1 -0
- package/dist/pine-core/p-9a8d2985.system.entry.js +3 -0
- package/dist/pine-core/{p-ee0e30bf.system.entry.js → p-9dbc017f.system.entry.js} +1 -1
- package/dist/pine-core/p-9fbcba0d.entry.js +1 -0
- package/dist/pine-core/p-9fe4a64a.entry.js +1 -0
- package/dist/pine-core/{p-COtCa1Md.system.js → p-BNTlHhoO.system.js} +1 -1
- package/dist/pine-core/p-BZ1l3LGl.system.js +1 -0
- package/dist/pine-core/p-BgNaWLoS.js +1 -0
- package/dist/pine-core/{p-CmSJytt1.js → p-BplEmwUQ.js} +2 -2
- package/dist/pine-core/{p-Cy8cvR7I.system.js → p-CANeE7Ss.system.js} +1 -1
- package/dist/pine-core/{p-XW4H0W6i.system.js → p-CNXspDYs.system.js} +1 -1
- package/dist/pine-core/{p-jrkGLEPe.js → p-CirzxZ33.js} +1 -1
- package/dist/pine-core/{p-CGRdQc49.system.js → p-CjRCtzPD.system.js} +2 -2
- package/dist/pine-core/{p-BPqJgIq6.js → p-Cuc0DYlm.js} +1 -1
- package/dist/pine-core/{p-D04W0cAO.system.js → p-D52aRqFx.system.js} +1 -1
- package/dist/pine-core/p-DCKBKRUy.js +1 -0
- package/dist/pine-core/p-DXO1yd32.system.js +1 -0
- package/dist/pine-core/{p-ClDiSG97.system.js → p-DaCT2ssj.system.js} +1 -1
- package/dist/pine-core/{p-295f64ea.entry.js → p-a2078add.entry.js} +1 -1
- package/dist/pine-core/{p-f3067d90.system.entry.js → p-a48b025a.system.entry.js} +1 -1
- package/dist/pine-core/{p-9713fb36.entry.js → p-a7d25143.entry.js} +1 -1
- package/dist/pine-core/{p-9dcd2cdb.entry.js → p-ad3b1ec3.entry.js} +1 -1
- package/dist/pine-core/p-b017eb99.system.entry.js +1 -0
- package/dist/pine-core/p-b037dcbd.system.entry.js +1 -0
- package/dist/pine-core/{p-db17c626.system.entry.js → p-b243767b.system.entry.js} +1 -1
- package/dist/pine-core/{p-0af0d752.system.entry.js → p-b33ad96e.system.entry.js} +1 -1
- package/dist/pine-core/p-b6edfdfe.entry.js +2 -0
- package/dist/pine-core/{p-8191498f.system.entry.js → p-b7cbd913.system.entry.js} +1 -1
- package/dist/pine-core/{p-8f531063.entry.js → p-b9d71b76.entry.js} +1 -1
- package/dist/pine-core/p-bcf57566.entry.js +1 -0
- package/dist/pine-core/{p-4fd454f6.entry.js → p-bda7e3be.entry.js} +1 -1
- package/dist/pine-core/{p-bdac8f2b.entry.js → p-bdde1e53.entry.js} +1 -1
- package/dist/pine-core/{p-cb6a3e4c.system.entry.js → p-be3b4f12.system.entry.js} +1 -1
- package/dist/pine-core/{p-b1548a20.entry.js → p-bfdfbe9f.entry.js} +1 -1
- package/dist/pine-core/{p-8e3ff75d.entry.js → p-c02a32ec.entry.js} +1 -1
- package/dist/pine-core/p-c1da80e5.entry.js +1 -0
- package/dist/pine-core/{p-eaf85be6.system.entry.js → p-c233866c.system.entry.js} +1 -1
- package/dist/pine-core/{p-ecc7a531.system.entry.js → p-cb560aab.system.entry.js} +1 -1
- package/dist/pine-core/{p-8c588ca0.entry.js → p-ce554098.entry.js} +1 -1
- package/dist/pine-core/p-ced6a814.system.entry.js +1 -0
- package/dist/pine-core/{p-9aaedded.entry.js → p-d7930540.entry.js} +1 -1
- package/dist/pine-core/{p-11d98408.system.entry.js → p-d7db749a.system.entry.js} +1 -1
- package/dist/pine-core/{p-7a5b21d2.system.entry.js → p-d8bedb58.system.entry.js} +1 -1
- package/dist/pine-core/{p-1dc5a7e0.system.entry.js → p-d9243653.system.entry.js} +1 -1
- package/dist/pine-core/{p-9ab95438.entry.js → p-d94ebe84.entry.js} +1 -1
- package/dist/pine-core/{p-9109b90a.entry.js → p-de176bd9.entry.js} +1 -1
- package/dist/pine-core/{p-57a2f927.entry.js → p-dea2a254.entry.js} +1 -1
- package/dist/pine-core/p-dfadfcd1.entry.js +1 -0
- package/dist/pine-core/{p-047433a4.system.entry.js → p-e1fdd53a.system.entry.js} +1 -1
- package/dist/pine-core/{p-8987fd45.system.entry.js → p-e70cb112.system.entry.js} +1 -1
- package/dist/pine-core/{p-b9d145f8.system.entry.js → p-e9a53a88.system.entry.js} +1 -1
- package/dist/pine-core/p-eb93cc6e.entry.js +1 -0
- package/dist/pine-core/{p-4d03d1e2.system.entry.js → p-ebf0c51b.system.entry.js} +1 -1
- package/dist/pine-core/p-ebf74c43.system.entry.js +1 -0
- package/dist/pine-core/{p-138b278b.entry.js → p-ee449a4b.entry.js} +1 -1
- package/dist/pine-core/p-ef4d8fea.entry.js +1 -0
- package/dist/pine-core/p-f09f27ab.system.entry.js +1 -0
- package/dist/pine-core/{p-c483997a.entry.js → p-f2c487e6.entry.js} +1 -1
- package/dist/pine-core/p-f549f2bc.entry.js +1 -0
- package/dist/pine-core/{p-717323e4.entry.js → p-fc743f6e.entry.js} +1 -1
- package/dist/pine-core/{p-BWDu62Mo.js → p-m3pqpeWg.js} +1 -1
- package/dist/pine-core/p-wXfuz0Bd.system.js +1 -0
- package/dist/pine-core/pine-core.esm.js +1 -1
- package/dist/pine-core/pine-core.js +1 -1
- package/dist/types/components/pds-alert/pds-alert.d.ts +10 -0
- package/dist/types/components/pds-avatar/pds-avatar.d.ts +8 -0
- package/dist/types/components/pds-button/pds-button.d.ts +2 -2
- package/dist/types/components/pds-checkbox/pds-checkbox.d.ts +7 -1
- package/dist/types/components/pds-combobox/pds-combobox.d.ts +9 -0
- package/dist/types/components/pds-dropdown-menu/pds-dropdown-menu-item/pds-dropdown-menu-item.d.ts +7 -0
- package/dist/types/components/pds-link/pds-link.d.ts +8 -0
- package/dist/types/components/pds-popover/pds-popover.d.ts +44 -20
- package/dist/types/components/pds-radio/pds-radio.d.ts +9 -3
- package/dist/types/components/pds-select/pds-select.d.ts +32 -4
- package/dist/types/components/pds-toast/pds-toast.d.ts +9 -0
- package/dist/types/components/pds-tooltip/pds-tooltip.d.ts +31 -0
- package/dist/types/components.d.ts +96 -8
- package/dist/types/utils/aria-references.d.ts +24 -0
- package/dist/types/utils/tabbable.d.ts +2 -0
- package/dist/vscode.html-data.json +79 -7
- package/hydrate/index.js +724 -337
- package/hydrate/index.mjs +724 -337
- package/package.json +2 -2
- package/dist/pine-core/p-00a50de5.system.entry.js +0 -3
- package/dist/pine-core/p-049f126a.entry.js +0 -1
- package/dist/pine-core/p-089c3e60.entry.js +0 -1
- package/dist/pine-core/p-17f97f1a.entry.js +0 -1
- package/dist/pine-core/p-19ba2788.system.entry.js +0 -1
- package/dist/pine-core/p-208c7dbf.entry.js +0 -1
- package/dist/pine-core/p-29cd4113.system.entry.js +0 -1
- package/dist/pine-core/p-2cb5483a.system.entry.js +0 -1
- package/dist/pine-core/p-36cb4bf6.entry.js +0 -1
- package/dist/pine-core/p-3d51891a.entry.js +0 -1
- package/dist/pine-core/p-432d5ec7.entry.js +0 -1
- package/dist/pine-core/p-44f546ae.entry.js +0 -1
- package/dist/pine-core/p-5442d983.system.entry.js +0 -1
- package/dist/pine-core/p-5833a072.system.entry.js +0 -1
- package/dist/pine-core/p-602c197f.entry.js +0 -1
- package/dist/pine-core/p-73f931a1.entry.js +0 -1
- package/dist/pine-core/p-75ee0403.entry.js +0 -1
- package/dist/pine-core/p-7a287635.system.entry.js +0 -1
- package/dist/pine-core/p-86040cac.system.entry.js +0 -1
- package/dist/pine-core/p-875b0436.system.entry.js +0 -1
- package/dist/pine-core/p-884cb31d.system.entry.js +0 -1
- package/dist/pine-core/p-8cc302aa.system.entry.js +0 -1
- package/dist/pine-core/p-91f60173.entry.js +0 -1
- package/dist/pine-core/p-9265497e.system.entry.js +0 -1
- package/dist/pine-core/p-94593f20.system.entry.js +0 -1
- package/dist/pine-core/p-99459e27.entry.js +0 -1
- package/dist/pine-core/p-99fdf70f.entry.js +0 -1
- package/dist/pine-core/p-BLG6RDBt.js +0 -1
- package/dist/pine-core/p-BR5nujVX.system.js +0 -1
- package/dist/pine-core/p-CuSNnuFu.system.js +0 -1
- package/dist/pine-core/p-a0960b3d.system.entry.js +0 -1
- package/dist/pine-core/p-a1230a74.system.entry.js +0 -1
- package/dist/pine-core/p-a826f290.entry.js +0 -1
- package/dist/pine-core/p-acce8eb2.entry.js +0 -1
- package/dist/pine-core/p-aff411d0.entry.js +0 -1
- package/dist/pine-core/p-b182f806.entry.js +0 -2
- package/dist/pine-core/p-bb68431a.entry.js +0 -1
- package/dist/pine-core/p-be9b6e63.system.entry.js +0 -1
- package/dist/pine-core/p-bf30dec0.entry.js +0 -1
- package/dist/pine-core/p-c4e12f0a.entry.js +0 -1
- package/dist/pine-core/p-e0917a26.entry.js +0 -1
- package/dist/pine-core/p-ea4d4741.system.entry.js +0 -1
|
@@ -1,15 +1,35 @@
|
|
|
1
1
|
import { Host, h } from "@stencil/core";
|
|
2
|
+
import { autoUpdate, computePosition, flip, offset, platform, shift } from "@floating-ui/dom";
|
|
2
3
|
import { closest, containsComposed } from "../../utils/closest";
|
|
3
4
|
import { restoreReflectedDefault } from "../../utils/reflected-attribute-default";
|
|
4
5
|
import { setAttributesIfChanged } from "../../utils/attributes";
|
|
5
6
|
import { cssEscape } from "../../utils/css";
|
|
6
7
|
import { limitRestores } from "../../utils/keep-hydrated";
|
|
8
|
+
import { tabbableIn } from "../../utils/tabbable";
|
|
7
9
|
/** Open popovers that close on Escape, in the order they opened: Escape goes to the last one it applies to. */
|
|
8
10
|
const popoversTakingEscape = [];
|
|
9
11
|
/** Hovering the trigger waits this long before opening, so a pointer passing over it doesn't open it. */
|
|
10
12
|
const HOVER_OPEN_DELAY_MS = 120;
|
|
11
13
|
/** Leaving the trigger and panel waits this long before closing, which covers the gap between them. */
|
|
12
14
|
const HOVER_CLOSE_DELAY_MS = 200;
|
|
15
|
+
/**
|
|
16
|
+
* floating-ui reporting viewport coordinates, as `position: fixed` uses without a containing block. Its own
|
|
17
|
+
* containing-block check misses a backdrop filter in WebKit, so handlePopoverPositioning corrects for one itself.
|
|
18
|
+
*/
|
|
19
|
+
const viewportPlatform = Object.assign(Object.assign({}, platform), { getOffsetParent: () => window });
|
|
20
|
+
/**
|
|
21
|
+
* Where `top: 0; left: 0` puts a fixed element beside the given one. An empty probe is measured instead of the
|
|
22
|
+
* element, whose own transforms, such as an entrance animation, would otherwise read as part of the offset.
|
|
23
|
+
*/
|
|
24
|
+
const containingBlockOrigin = (element) => {
|
|
25
|
+
var _a;
|
|
26
|
+
const probe = document.createElement('div');
|
|
27
|
+
probe.style.cssText = 'all: initial; position: fixed; top: 0; left: 0;';
|
|
28
|
+
(_a = element.parentNode) === null || _a === void 0 ? void 0 : _a.insertBefore(probe, element);
|
|
29
|
+
const { top, left } = probe.getBoundingClientRect();
|
|
30
|
+
probe.remove();
|
|
31
|
+
return { top, left };
|
|
32
|
+
};
|
|
13
33
|
/** The focused element, followed down through shadow roots to the control that has focus. */
|
|
14
34
|
function deepActiveElement() {
|
|
15
35
|
var _a;
|
|
@@ -18,6 +38,27 @@ function deepActiveElement() {
|
|
|
18
38
|
active = active.shadowRoot.activeElement;
|
|
19
39
|
return active;
|
|
20
40
|
}
|
|
41
|
+
/** `node`, or the shadow host it sits in, lifted until it shares a tree with `other` or reaches the document. */
|
|
42
|
+
function liftToTreeOf(node, other) {
|
|
43
|
+
let current = node;
|
|
44
|
+
while (current.getRootNode() !== other.getRootNode() && current.getRootNode() instanceof ShadowRoot) {
|
|
45
|
+
current = current.getRootNode().host;
|
|
46
|
+
}
|
|
47
|
+
return current;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Where `node` sits relative to `ref`, as `compareDocumentPosition` reports it. Whichever of the two
|
|
51
|
+
* is inside a shadow root is lifted to its host first, so a control inside a component compares too.
|
|
52
|
+
*/
|
|
53
|
+
function positionAcrossTrees(ref, node) {
|
|
54
|
+
const lifted = liftToTreeOf(node, ref);
|
|
55
|
+
return liftToTreeOf(ref, lifted).compareDocumentPosition(lifted);
|
|
56
|
+
}
|
|
57
|
+
const isPosition = (position, flag) => (position & Node.DOCUMENT_POSITION_DISCONNECTED) === 0 && (position & flag) !== 0;
|
|
58
|
+
/** The popover each panel belongs to, so a popover inside another one's panel can find it. */
|
|
59
|
+
const panelOwners = new WeakMap();
|
|
60
|
+
/** Floating layers Pine components put at the end of the page or of a dialog, as a popover does its panel. */
|
|
61
|
+
const FLOATING_LAYERS = '.pds-popover, .pds-datepicker-calendar-portal, .pds-combobox-dropdown-portal';
|
|
21
62
|
/**
|
|
22
63
|
* @slot trigger - The trigger element for the popover
|
|
23
64
|
* @slot (default) - The content to display inside the popover
|
|
@@ -54,14 +95,21 @@ export class PdsPopover {
|
|
|
54
95
|
*/
|
|
55
96
|
this.portalEl = null;
|
|
56
97
|
/**
|
|
57
|
-
*
|
|
98
|
+
* Stops floating-ui's autoUpdate, which repositions the open panel as its trigger or the page moves or resizes
|
|
58
99
|
*/
|
|
59
|
-
this.
|
|
100
|
+
this.stopAutoUpdate = null;
|
|
60
101
|
/**
|
|
61
|
-
*
|
|
102
|
+
* Counts positioning runs, so a run that resolves after a newer one started is dropped
|
|
62
103
|
*/
|
|
63
|
-
this.
|
|
64
|
-
|
|
104
|
+
this.positioningRun = 0;
|
|
105
|
+
/**
|
|
106
|
+
* The latest positioning run, which pdsPopoverOpen waits for so the panel's side is set when it fires
|
|
107
|
+
*/
|
|
108
|
+
this.positioning = Promise.resolve();
|
|
109
|
+
/**
|
|
110
|
+
* Set while show() waits to emit pdsPopoverOpen, so a hide() in the meantime emits it first
|
|
111
|
+
*/
|
|
112
|
+
this.openEventPending = false;
|
|
65
113
|
/**
|
|
66
114
|
* Track moved nodes and their placeholders for restoration
|
|
67
115
|
*/
|
|
@@ -82,6 +130,18 @@ export class PdsPopover {
|
|
|
82
130
|
* How far the pointer was from the panel at its last move after leaving the trigger
|
|
83
131
|
*/
|
|
84
132
|
this.panelDistance = Infinity;
|
|
133
|
+
/**
|
|
134
|
+
* Stands in for the panel in the Tab order, right after the trigger, while the popover is open
|
|
135
|
+
*/
|
|
136
|
+
this.tabGuardEl = null;
|
|
137
|
+
/**
|
|
138
|
+
* Set while focus passes through the guard on its way out of the panel
|
|
139
|
+
*/
|
|
140
|
+
this.leavingPanel = false;
|
|
141
|
+
/**
|
|
142
|
+
* The direction of the Tab key being handled, until its default action has run
|
|
143
|
+
*/
|
|
144
|
+
this.tabDirection = null;
|
|
85
145
|
/**
|
|
86
146
|
* Determines the action that triggers the popover. For manual popovers, the consumer is responsible for toggling this value.
|
|
87
147
|
* @defaultValue "show"
|
|
@@ -135,6 +195,9 @@ export class PdsPopover {
|
|
|
135
195
|
else {
|
|
136
196
|
this.triggerEl = null;
|
|
137
197
|
}
|
|
198
|
+
// autoUpdate watches the trigger it started with, so an open popover starts it again on the new one.
|
|
199
|
+
if (this.active)
|
|
200
|
+
this.addScrollAndResizeListeners();
|
|
138
201
|
this.observeTrigger();
|
|
139
202
|
};
|
|
140
203
|
/**
|
|
@@ -252,6 +315,59 @@ export class PdsPopover {
|
|
|
252
315
|
event.stopPropagation();
|
|
253
316
|
}
|
|
254
317
|
};
|
|
318
|
+
// At the end of the body or of a dialog, the panel would come last in the Tab order. The guard
|
|
319
|
+
// after the trigger takes its place there, while the panel has a control for it to lead to.
|
|
320
|
+
this.syncTabGuard = (event) => {
|
|
321
|
+
if (event.key !== 'Tab')
|
|
322
|
+
return;
|
|
323
|
+
this.releasePanel();
|
|
324
|
+
this.tabDirection = event.shiftKey ? 'backward' : 'forward';
|
|
325
|
+
setTimeout(this.endTabKey);
|
|
326
|
+
// Read on each Tab, as the panel's content can arrive after it opens.
|
|
327
|
+
const guarding = this.guardedTabbables().length > 0;
|
|
328
|
+
if (this.tabGuardEl != null)
|
|
329
|
+
this.tabGuardEl.tabIndex = guarding ? 0 : -1;
|
|
330
|
+
// Inert for this key press, the panel is reached only through the guard, either way round. A
|
|
331
|
+
// control in another floating layer, such as a nested popover's panel, may move focus back into it.
|
|
332
|
+
const focused = deepActiveElement();
|
|
333
|
+
if (guarding && !containsComposed(this.portalEl, focused) && !closest(FLOATING_LAYERS, focused !== null && focused !== void 0 ? focused : document)) {
|
|
334
|
+
this.portalEl.inert = true;
|
|
335
|
+
}
|
|
336
|
+
};
|
|
337
|
+
this.endTabKey = () => {
|
|
338
|
+
this.tabDirection = null;
|
|
339
|
+
this.releasePanel();
|
|
340
|
+
};
|
|
341
|
+
this.handleTabGuardFocus = (event) => {
|
|
342
|
+
if (this.leavingPanel)
|
|
343
|
+
return;
|
|
344
|
+
// An inert panel's controls aren't tabbable, so the guard would find none to send focus to.
|
|
345
|
+
this.releasePanel();
|
|
346
|
+
const tabbables = this.guardedTabbables();
|
|
347
|
+
// A Tab press says which end of the panel focus comes in at; without one, where it came from does.
|
|
348
|
+
const from = event.relatedTarget;
|
|
349
|
+
const backward = this.tabDirection != null ? this.tabDirection === 'backward' : from != null && this.isAfterPopover(from);
|
|
350
|
+
const target = backward ? tabbables[tabbables.length - 1] : tabbables[0];
|
|
351
|
+
// Focus can reach the guard without a Tab keydown here (from a frame, or assistive tech) after
|
|
352
|
+
// the panel's controls are gone. The trigger is the nearest visible place for it.
|
|
353
|
+
if (target == null)
|
|
354
|
+
this.returnFocusToTrigger();
|
|
355
|
+
else
|
|
356
|
+
target.focus();
|
|
357
|
+
};
|
|
358
|
+
this.handleTabFromPanel = (event) => {
|
|
359
|
+
if (event.key !== 'Tab' || event.defaultPrevented || this.tabGuardEl == null)
|
|
360
|
+
return;
|
|
361
|
+
const tabbables = this.guardedTabbables();
|
|
362
|
+
const edge = event.shiftKey ? tabbables[0] : tabbables[tabbables.length - 1];
|
|
363
|
+
if (edge == null || deepActiveElement() !== edge)
|
|
364
|
+
return;
|
|
365
|
+
this.leavePanel(edge, event.shiftKey);
|
|
366
|
+
};
|
|
367
|
+
this.releasePanel = () => {
|
|
368
|
+
if (this.portalEl != null)
|
|
369
|
+
this.portalEl.inert = false;
|
|
370
|
+
};
|
|
255
371
|
}
|
|
256
372
|
openOnChanged() {
|
|
257
373
|
this.pin();
|
|
@@ -287,8 +403,6 @@ export class PdsPopover {
|
|
|
287
403
|
// Bind event handlers for cleanup
|
|
288
404
|
this.boundClickOutsideHandler = this.handleClickOutside.bind(this);
|
|
289
405
|
this.boundEscapeKeyHandler = this.handleEscapeKey.bind(this);
|
|
290
|
-
this.boundScrollHandler = this.handleScroll.bind(this);
|
|
291
|
-
this.boundResizeHandler = this.handleResize.bind(this);
|
|
292
406
|
// Create portal element
|
|
293
407
|
this.createPortal();
|
|
294
408
|
this.hasLoaded = true;
|
|
@@ -387,11 +501,12 @@ export class PdsPopover {
|
|
|
387
501
|
// is in now, if any.
|
|
388
502
|
if (this.active) {
|
|
389
503
|
this.placePortal();
|
|
390
|
-
|
|
504
|
+
// autoUpdate listens to the scroll containers around where the trigger was, so it starts again.
|
|
505
|
+
this.addScrollAndResizeListeners();
|
|
391
506
|
}
|
|
392
507
|
}
|
|
393
508
|
disconnectedCallback() {
|
|
394
|
-
var _a;
|
|
509
|
+
var _a, _b;
|
|
395
510
|
// Moved in one operation (a DOM morph, or a framework reparenting it), the popover is
|
|
396
511
|
// already back in the page. Its portal is outside the popover, so it stays open, with focus
|
|
397
512
|
// where it was; connectedCallback moves it to follow the popover.
|
|
@@ -406,6 +521,7 @@ export class PdsPopover {
|
|
|
406
521
|
this.restorePortalContent();
|
|
407
522
|
this.active = false;
|
|
408
523
|
this.linkTriggerToPortal();
|
|
524
|
+
this.emitOpenEvent();
|
|
409
525
|
this.pdsPopoverClose.emit({
|
|
410
526
|
componentId: this.componentId,
|
|
411
527
|
popoverType: this.popoverType,
|
|
@@ -422,32 +538,20 @@ export class PdsPopover {
|
|
|
422
538
|
this.removeLightDismissListeners();
|
|
423
539
|
this.removeScrollAndResizeListeners();
|
|
424
540
|
document.removeEventListener('submit', this.handleSubmitFromPanel, true);
|
|
425
|
-
|
|
426
|
-
this.
|
|
541
|
+
document.removeEventListener('keydown', this.syncTabGuard, true);
|
|
542
|
+
(_b = this.tabGuardEl) === null || _b === void 0 ? void 0 : _b.removeAttribute('tabindex');
|
|
427
543
|
this.clearHoverTimers();
|
|
428
544
|
this.hoverOpened = false;
|
|
429
545
|
// Remove portal from DOM
|
|
430
546
|
this.removePortal();
|
|
431
547
|
}
|
|
432
|
-
/**
|
|
433
|
-
* Clears any pending debounce timers
|
|
434
|
-
*/
|
|
435
|
-
clearDebounceTimers() {
|
|
436
|
-
if (this.scrollDebounceTimer !== null) {
|
|
437
|
-
clearTimeout(this.scrollDebounceTimer);
|
|
438
|
-
this.scrollDebounceTimer = null;
|
|
439
|
-
}
|
|
440
|
-
if (this.resizeDebounceTimer !== null) {
|
|
441
|
-
clearTimeout(this.resizeDebounceTimer);
|
|
442
|
-
this.resizeDebounceTimer = null;
|
|
443
|
-
}
|
|
444
|
-
}
|
|
445
548
|
createPortal() {
|
|
446
549
|
var _a;
|
|
447
550
|
if (this.portalEl !== null)
|
|
448
551
|
return;
|
|
449
552
|
this.portalEl = document.createElement('div');
|
|
450
553
|
this.portalEl.className = 'pds-popover';
|
|
554
|
+
panelOwners.set(this.portalEl, this);
|
|
451
555
|
// Apply all styles inline since portal is outside shadow DOM
|
|
452
556
|
this.portalEl.style.position = 'fixed';
|
|
453
557
|
this.portalEl.style.zIndex = 'var(--pine-z-index-raised)';
|
|
@@ -474,6 +578,7 @@ export class PdsPopover {
|
|
|
474
578
|
// This is done after appending to ensure it's part of the document and can access CSS variables
|
|
475
579
|
this.addPortalFocusStyles();
|
|
476
580
|
this.listenForHover(this.portalEl);
|
|
581
|
+
this.portalEl.addEventListener('keydown', this.handleTabFromPanel);
|
|
477
582
|
}
|
|
478
583
|
/**
|
|
479
584
|
* Adds Pine design system focus styles and dark mode border to the portal element
|
|
@@ -607,15 +712,10 @@ export class PdsPopover {
|
|
|
607
712
|
this.portalEl.style.display = 'block';
|
|
608
713
|
this.portalEl.style.opacity = '1';
|
|
609
714
|
this.portalEl.style.visibility = 'visible';
|
|
610
|
-
// Position the popover
|
|
611
|
-
requestAnimationFrame(() => {
|
|
612
|
-
if (!this.isComponentMounted)
|
|
613
|
-
return;
|
|
614
|
-
this.handlePopoverPositioning();
|
|
615
|
-
});
|
|
616
|
-
// Add scroll and resize listeners for repositioning (always)
|
|
715
|
+
// Position the popover now, and again whenever its trigger or the page moves or resizes
|
|
617
716
|
this.addScrollAndResizeListeners();
|
|
618
717
|
document.addEventListener('submit', this.handleSubmitFromPanel, true);
|
|
718
|
+
document.addEventListener('keydown', this.syncTabGuard, true);
|
|
619
719
|
// Add document listeners for light dismiss and escape key (auto type only), or for the escape
|
|
620
720
|
// key alone while hover holds a manual popover open
|
|
621
721
|
if (this.popoverType === 'auto') {
|
|
@@ -626,7 +726,20 @@ export class PdsPopover {
|
|
|
626
726
|
popoversTakingEscape.push(this);
|
|
627
727
|
document.addEventListener('keydown', this.boundEscapeKeyHandler);
|
|
628
728
|
}
|
|
629
|
-
// Emit open event
|
|
729
|
+
// Emit open event once the panel is positioned, with the side it took already on it. A reconnect, a
|
|
730
|
+
// trigger swap or another show() can start a newer run meanwhile, which drops this one, so wait for the latest.
|
|
731
|
+
this.openEventPending = true;
|
|
732
|
+
let positioning;
|
|
733
|
+
do {
|
|
734
|
+
positioning = this.positioning;
|
|
735
|
+
await positioning;
|
|
736
|
+
} while (positioning !== this.positioning);
|
|
737
|
+
this.emitOpenEvent();
|
|
738
|
+
}
|
|
739
|
+
emitOpenEvent() {
|
|
740
|
+
if (!this.openEventPending)
|
|
741
|
+
return;
|
|
742
|
+
this.openEventPending = false;
|
|
630
743
|
this.pdsPopoverOpen.emit({
|
|
631
744
|
componentId: this.componentId,
|
|
632
745
|
popoverType: this.popoverType,
|
|
@@ -636,6 +749,7 @@ export class PdsPopover {
|
|
|
636
749
|
* Closes the popover programmatically
|
|
637
750
|
*/
|
|
638
751
|
async hide() {
|
|
752
|
+
var _a;
|
|
639
753
|
this.clearHoverTimers();
|
|
640
754
|
if (!this.active || !this.portalEl)
|
|
641
755
|
return;
|
|
@@ -651,6 +765,7 @@ export class PdsPopover {
|
|
|
651
765
|
// Hide portal. The dark-mode border set in a shadow root is worked out again on the next open.
|
|
652
766
|
this.portalEl.style.border = '';
|
|
653
767
|
this.portalEl.removeAttribute('data-pds-popover-open');
|
|
768
|
+
this.portalEl.removeAttribute('data-pds-popover-placement');
|
|
654
769
|
this.portalEl.style.display = 'none';
|
|
655
770
|
this.portalEl.style.opacity = '0';
|
|
656
771
|
this.portalEl.style.visibility = 'hidden';
|
|
@@ -664,8 +779,11 @@ export class PdsPopover {
|
|
|
664
779
|
this.removeLightDismissListeners();
|
|
665
780
|
this.removeScrollAndResizeListeners();
|
|
666
781
|
document.removeEventListener('submit', this.handleSubmitFromPanel, true);
|
|
667
|
-
|
|
668
|
-
this.
|
|
782
|
+
document.removeEventListener('keydown', this.syncTabGuard, true);
|
|
783
|
+
(_a = this.tabGuardEl) === null || _a === void 0 ? void 0 : _a.removeAttribute('tabindex');
|
|
784
|
+
this.releasePanel();
|
|
785
|
+
// Closed before its first position resolved, it still announces the open before the close.
|
|
786
|
+
this.emitOpenEvent();
|
|
669
787
|
// Emit close event
|
|
670
788
|
this.pdsPopoverClose.emit({
|
|
671
789
|
componentId: this.componentId,
|
|
@@ -677,10 +795,10 @@ export class PdsPopover {
|
|
|
677
795
|
*/
|
|
678
796
|
async toggle() {
|
|
679
797
|
if (this.active) {
|
|
680
|
-
this.hide();
|
|
798
|
+
await this.hide();
|
|
681
799
|
}
|
|
682
800
|
else {
|
|
683
|
-
this.show();
|
|
801
|
+
await this.show();
|
|
684
802
|
}
|
|
685
803
|
}
|
|
686
804
|
/**
|
|
@@ -764,19 +882,62 @@ export class PdsPopover {
|
|
|
764
882
|
document.removeEventListener('click', this.boundClickOutsideHandler, true);
|
|
765
883
|
document.removeEventListener('keydown', this.boundEscapeKeyHandler);
|
|
766
884
|
}
|
|
885
|
+
/**
|
|
886
|
+
* The panel's controls that Tab reaches through the guard. None when the panel sits right after
|
|
887
|
+
* the popover, in a dialog, where it's already next in the Tab order.
|
|
888
|
+
*/
|
|
889
|
+
guardedTabbables() {
|
|
890
|
+
if (this.portalEl == null || this.el.nextElementSibling === this.portalEl)
|
|
891
|
+
return [];
|
|
892
|
+
return tabbableIn(this.portalEl);
|
|
893
|
+
}
|
|
894
|
+
isAfterPopover(node) {
|
|
895
|
+
if (containsComposed(this.el, node))
|
|
896
|
+
return false;
|
|
897
|
+
return isPosition(positionAcrossTrees(this.el, node), Node.DOCUMENT_POSITION_FOLLOWING);
|
|
898
|
+
}
|
|
899
|
+
/**
|
|
900
|
+
* Moves focus to the guard without preventing the Tab, so the browser's Tab carries on from there.
|
|
901
|
+
* Inert until then, the panel can't be where it lands.
|
|
902
|
+
*/
|
|
903
|
+
leavePanel(edge, backward) {
|
|
904
|
+
var _a, _b;
|
|
905
|
+
this.leavingPanel = true;
|
|
906
|
+
(_a = this.tabGuardEl) === null || _a === void 0 ? void 0 : _a.focus();
|
|
907
|
+
this.leavingPanel = false;
|
|
908
|
+
this.portalEl.inert = true;
|
|
909
|
+
setTimeout(() => this.finishLeavingPanel(edge));
|
|
910
|
+
// Last in another popover's panel, the guard hands the Tab on to that popover's own guard.
|
|
911
|
+
const outer = panelOwners.get(closest('.pds-popover', this.el));
|
|
912
|
+
const outerTabbables = (_b = outer === null || outer === void 0 ? void 0 : outer.guardedTabbables()) !== null && _b !== void 0 ? _b : [];
|
|
913
|
+
if (!backward && outerTabbables[outerTabbables.length - 1] === this.tabGuardEl)
|
|
914
|
+
outer.leavePanel(edge, false);
|
|
915
|
+
}
|
|
916
|
+
// With nowhere for the browser's Tab to go, focus would stay on the invisible guard.
|
|
917
|
+
finishLeavingPanel(edge) {
|
|
918
|
+
var _a;
|
|
919
|
+
this.releasePanel();
|
|
920
|
+
if (this.active && ((_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.activeElement) === this.tabGuardEl)
|
|
921
|
+
edge.focus();
|
|
922
|
+
}
|
|
767
923
|
/**
|
|
768
924
|
* Adds scroll and resize listeners for repositioning
|
|
769
925
|
*/
|
|
770
926
|
addScrollAndResizeListeners() {
|
|
771
|
-
|
|
772
|
-
|
|
927
|
+
this.removeScrollAndResizeListeners();
|
|
928
|
+
if (this.triggerEl == null || this.portalEl == null)
|
|
929
|
+
return;
|
|
930
|
+
this.stopAutoUpdate = autoUpdate(this.triggerEl, this.portalEl, () => {
|
|
931
|
+
this.positioning = this.handlePopoverPositioning().catch(error => console.warn('pds-popover: failed to position the panel', error));
|
|
932
|
+
});
|
|
773
933
|
}
|
|
774
934
|
/**
|
|
775
935
|
* Removes scroll and resize listeners
|
|
776
936
|
*/
|
|
777
937
|
removeScrollAndResizeListeners() {
|
|
778
|
-
|
|
779
|
-
|
|
938
|
+
var _a;
|
|
939
|
+
(_a = this.stopAutoUpdate) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
940
|
+
this.stopAutoUpdate = null;
|
|
780
941
|
}
|
|
781
942
|
/**
|
|
782
943
|
* Handles clicks outside the popover for light dismiss (auto type only)
|
|
@@ -840,122 +1001,38 @@ export class PdsPopover {
|
|
|
840
1001
|
this.hide();
|
|
841
1002
|
}
|
|
842
1003
|
/**
|
|
843
|
-
*
|
|
844
|
-
|
|
845
|
-
handleScroll() {
|
|
846
|
-
if (!this.active)
|
|
847
|
-
return;
|
|
848
|
-
if (this.scrollDebounceTimer !== null) {
|
|
849
|
-
clearTimeout(this.scrollDebounceTimer);
|
|
850
|
-
}
|
|
851
|
-
this.scrollDebounceTimer = setTimeout(() => {
|
|
852
|
-
this.handlePopoverPositioning();
|
|
853
|
-
this.scrollDebounceTimer = null;
|
|
854
|
-
}, 10); // 10ms debounce for smooth repositioning
|
|
855
|
-
}
|
|
856
|
-
/**
|
|
857
|
-
* Handles resize events to reposition the popover (debounced for performance)
|
|
858
|
-
*/
|
|
859
|
-
handleResize() {
|
|
860
|
-
if (!this.active)
|
|
861
|
-
return;
|
|
862
|
-
if (this.resizeDebounceTimer !== null) {
|
|
863
|
-
clearTimeout(this.resizeDebounceTimer);
|
|
864
|
-
}
|
|
865
|
-
this.resizeDebounceTimer = setTimeout(() => {
|
|
866
|
-
this.handlePopoverPositioning();
|
|
867
|
-
this.resizeDebounceTimer = null;
|
|
868
|
-
}, 100); // 100ms debounce for resize
|
|
869
|
-
}
|
|
870
|
-
/**
|
|
871
|
-
* Positions the popover relative to its trigger element
|
|
1004
|
+
* Positions the popover relative to its trigger element, flipping to the opposite side when only that side has
|
|
1005
|
+
* room and shifting to stay 8px inside the viewport. The side it takes goes on the panel's `data-pds-popover-placement`.
|
|
872
1006
|
*/
|
|
873
|
-
handlePopoverPositioning() {
|
|
874
|
-
//
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
}
|
|
878
|
-
this.isRepositioning = true;
|
|
879
|
-
if (this.triggerEl == null || this.portalEl == null) {
|
|
880
|
-
this.isRepositioning = false;
|
|
1007
|
+
async handlePopoverPositioning() {
|
|
1008
|
+
// Counted before the guards, so a run still in flight is dropped even when this one can't position.
|
|
1009
|
+
const run = ++this.positioningRun;
|
|
1010
|
+
if (this.triggerEl == null || this.portalEl == null)
|
|
881
1011
|
return;
|
|
882
|
-
}
|
|
883
|
-
const triggerRect = this.triggerEl.getBoundingClientRect();
|
|
884
|
-
const popoverRect = this.portalEl.getBoundingClientRect();
|
|
885
1012
|
// Safety check: ensure trigger has valid dimensions (is rendered and visible)
|
|
886
|
-
|
|
887
|
-
|
|
1013
|
+
const triggerRect = this.triggerEl.getBoundingClientRect();
|
|
1014
|
+
if (triggerRect.width === 0 || triggerRect.height === 0)
|
|
888
1015
|
return;
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
break;
|
|
902
|
-
case 'top-end':
|
|
903
|
-
top = triggerRect.top - popoverRect.height - offset;
|
|
904
|
-
left = triggerRect.right - popoverRect.width;
|
|
905
|
-
break;
|
|
906
|
-
case 'right':
|
|
907
|
-
top = triggerRect.top + (triggerRect.height - popoverRect.height) / 2;
|
|
908
|
-
left = triggerRect.right + offset;
|
|
909
|
-
break;
|
|
910
|
-
case 'right-start':
|
|
911
|
-
top = triggerRect.top;
|
|
912
|
-
left = triggerRect.right + offset;
|
|
913
|
-
break;
|
|
914
|
-
case 'right-end':
|
|
915
|
-
top = triggerRect.bottom - popoverRect.height;
|
|
916
|
-
left = triggerRect.right + offset;
|
|
917
|
-
break;
|
|
918
|
-
case 'bottom':
|
|
919
|
-
top = triggerRect.bottom + offset;
|
|
920
|
-
left = triggerRect.left + (triggerRect.width - popoverRect.width) / 2;
|
|
921
|
-
break;
|
|
922
|
-
case 'bottom-start':
|
|
923
|
-
top = triggerRect.bottom + offset;
|
|
924
|
-
left = triggerRect.left;
|
|
925
|
-
break;
|
|
926
|
-
case 'bottom-end':
|
|
927
|
-
top = triggerRect.bottom + offset;
|
|
928
|
-
left = triggerRect.right - popoverRect.width;
|
|
929
|
-
break;
|
|
930
|
-
case 'left':
|
|
931
|
-
top = triggerRect.top + (triggerRect.height - popoverRect.height) / 2;
|
|
932
|
-
left = triggerRect.left - popoverRect.width - offset;
|
|
933
|
-
break;
|
|
934
|
-
case 'left-start':
|
|
935
|
-
top = triggerRect.top;
|
|
936
|
-
left = triggerRect.left - popoverRect.width - offset;
|
|
937
|
-
break;
|
|
938
|
-
case 'left-end':
|
|
939
|
-
top = triggerRect.bottom - popoverRect.height;
|
|
940
|
-
left = triggerRect.left - popoverRect.width - offset;
|
|
941
|
-
break;
|
|
942
|
-
}
|
|
943
|
-
this.portalEl.style.top = `${top}px`;
|
|
944
|
-
this.portalEl.style.left = `${left}px`;
|
|
1016
|
+
const portal = this.portalEl;
|
|
1017
|
+
const { x: left, y: top, placement } = await computePosition(this.triggerEl, portal, {
|
|
1018
|
+
placement: this.placement,
|
|
1019
|
+
strategy: 'fixed',
|
|
1020
|
+
// With no room on either side, stay on the preferred side: the side that overflows less can still push
|
|
1021
|
+
// a tall panel's start above the viewport.
|
|
1022
|
+
middleware: [offset(8), flip({ fallbackStrategy: 'initialPlacement' }), shift({ padding: 8 })],
|
|
1023
|
+
platform: viewportPlatform,
|
|
1024
|
+
});
|
|
1025
|
+
if (!this.active || run !== this.positioningRun || portal !== this.portalEl)
|
|
1026
|
+
return;
|
|
1027
|
+
portal.setAttribute('data-pds-popover-placement', placement);
|
|
945
1028
|
// `position: fixed` measures from the viewport unless an ancestor becomes its containing block,
|
|
946
|
-
// as a modal dialog does with its backdrop filter.
|
|
947
|
-
const
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
this.portalEl.style.left = `${2 * left - placed.left}px`;
|
|
951
|
-
}
|
|
952
|
-
// Reset the repositioning guard after a short delay
|
|
953
|
-
setTimeout(() => {
|
|
954
|
-
this.isRepositioning = false;
|
|
955
|
-
}, 16); // ~1 frame at 60fps
|
|
1029
|
+
// as a modal dialog does with its backdrop filter. Offset by however far that block's corner is from the viewport's.
|
|
1030
|
+
const origin = containingBlockOrigin(portal);
|
|
1031
|
+
portal.style.top = `${top - origin.top}px`;
|
|
1032
|
+
portal.style.left = `${left - origin.left}px`;
|
|
956
1033
|
}
|
|
957
1034
|
render() {
|
|
958
|
-
return (h(Host, { key: '
|
|
1035
|
+
return (h(Host, { key: '85422eb7544a4795ce78b51684b7224a5d856a4e', id: this.componentId }, h("span", { key: '6fe9c827ed4d46ca723d6013f296faf80ba31366', class: "pds-popover__trigger-wrapper" }, h("slot", { key: '970d1974d2be1451e670a36e7d2ccdc5979595bb', name: "trigger", onSlotchange: this.handleTriggerSlotChange })), h("span", { key: '0c76f76286a30d8e6e948bd0abab3317b3673aa6', class: "pds-popover__tab-guard", ref: (el) => (this.tabGuardEl = el !== null && el !== void 0 ? el : null), onFocus: this.handleTabGuardFocus }), h("div", { key: '692c45e93899e74a3d5970f3a3625f6115ab63b0', class: "pds-popover__content-slot-wrapper" }, h("slot", { key: 'f1566e0eb1eb08626f2a8285447702ce96b09f4d', onSlotchange: this.handleContentSlotChange }))));
|
|
959
1036
|
}
|
|
960
1037
|
static get is() { return "pds-popover"; }
|
|
961
1038
|
static get encapsulation() { return "shadow"; }
|
|
@@ -30,7 +30,7 @@ export class PdsProgress {
|
|
|
30
30
|
const normalizedFillColor = normalizeColorValue(this.fillColor);
|
|
31
31
|
const hostClass = this.animated ? { 'is-animated': this.animated } : '';
|
|
32
32
|
this.hostKeeper.record(hostClass);
|
|
33
|
-
return (h(Host, { key: '
|
|
33
|
+
return (h(Host, { key: '6d2151cdd1f65b33a7478e5ac12df711d8252d1f', class: hostClass }, h("div", { key: '4a902c6c7d51fe8e8a778e1fa24bdbf95d625b1f', class: "pds-progress" }, h("label", { key: 'c50955234a7eee05cdf47531e25b4413f206e416', class: "pds-progress__label", htmlFor: this.componentId }, this.label), h("progress", { key: 'c54ad90f7b3fcf3368afca4c5618949f1a370114', id: this.componentId, max: "100", style: normalizedFillColor ? { '--color-progress-fill': normalizedFillColor } : {}, value: this.percent })), this.showPercent && h("div", { key: '6b3e3f42f04a516ef7992d1f8bc967be432f55bb', class: "pds-progress__percentage" }, this.percent, "%")));
|
|
34
34
|
}
|
|
35
35
|
static get is() { return "pds-progress"; }
|
|
36
36
|
static get encapsulation() { return "shadow"; }
|
|
@@ -10,7 +10,7 @@ export class PdsProperty {
|
|
|
10
10
|
this.icon = 'star';
|
|
11
11
|
}
|
|
12
12
|
render() {
|
|
13
|
-
return (h(Host, { key: '
|
|
13
|
+
return (h(Host, { key: '198ffd747b7a84a6f58a1b072890fc8bd3ed93aa', id: this.componentId }, h("pds-box", { key: 'be71f3d96efea0a45f357d888f71dbe5ad8b68d6', "align-items": "center", gap: "xs" }, h("pds-icon", { key: '1a52407e00b158d5e6a515ad4b07ed3407d31f75', icon: this.icon, size: "var(--pine-dimension-sm)", "aria-hidden": "true" }), h("slot", { key: '46ac5019b27bdd079c7853abeef8f7c240d19c2c' }))));
|
|
14
14
|
}
|
|
15
15
|
static get is() { return "pds-property"; }
|
|
16
16
|
static get encapsulation() { return "shadow"; }
|
|
@@ -271,4 +271,61 @@ label:has(input:disabled) {
|
|
|
271
271
|
}
|
|
272
272
|
:host(.has-image).is-invalid .pds-radio__message--error {
|
|
273
273
|
color: var(--pine-color-text-message-danger);
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
:host(.pds-radio--pill) label {
|
|
277
|
+
align-items: center;
|
|
278
|
+
background: var(--pine-color-background-container);
|
|
279
|
+
border: var(--pine-border);
|
|
280
|
+
border-radius: var(--pine-border-radius-full);
|
|
281
|
+
box-sizing: border-box;
|
|
282
|
+
color: var(--pine-color-text-active);
|
|
283
|
+
cursor: pointer;
|
|
284
|
+
font: var(--pine-typography-body);
|
|
285
|
+
min-block-size: var(--pine-dimension-xl);
|
|
286
|
+
padding: 0 var(--pine-dimension-sm);
|
|
287
|
+
transition: border-color var(--pine-motion-duration-fast) ease;
|
|
288
|
+
}
|
|
289
|
+
:host(.pds-radio--pill) label span {
|
|
290
|
+
min-width: 0;
|
|
291
|
+
overflow-wrap: anywhere;
|
|
292
|
+
}
|
|
293
|
+
:host(.pds-radio--pill) label:hover {
|
|
294
|
+
border-color: var(--pine-color-text);
|
|
295
|
+
}
|
|
296
|
+
:host(.pds-radio--pill) label:has(input:checked) {
|
|
297
|
+
border-color: var(--pine-color-text-active);
|
|
298
|
+
box-shadow: inset 0 0 0 var(--pine-border-width) var(--pine-color-text-active);
|
|
299
|
+
}
|
|
300
|
+
:host(.pds-radio--pill) label:has(input:focus-visible) {
|
|
301
|
+
outline: var(--pine-outline-focus);
|
|
302
|
+
outline-offset: var(--pine-border-width-thick);
|
|
303
|
+
}
|
|
304
|
+
:host(.pds-radio--pill) label:has(input:disabled) {
|
|
305
|
+
background: var(--pine-color-background-container-disabled);
|
|
306
|
+
border-color: var(--pine-color-border-disabled);
|
|
307
|
+
color: var(--pine-color-text-label-disabled);
|
|
308
|
+
cursor: not-allowed;
|
|
309
|
+
}
|
|
310
|
+
:host(.pds-radio--pill) label:has(input:disabled:checked) {
|
|
311
|
+
border-color: var(--pine-color-text-label-disabled);
|
|
312
|
+
box-shadow: inset 0 0 0 var(--pine-border-width) var(--pine-color-text-label-disabled);
|
|
313
|
+
}
|
|
314
|
+
@media (forced-colors: active) {
|
|
315
|
+
:host(.pds-radio--pill) label:has(input:disabled) {
|
|
316
|
+
border-color: GrayText;
|
|
317
|
+
}
|
|
318
|
+
:host(.pds-radio--pill) label:has(input:checked) {
|
|
319
|
+
border-color: Highlight;
|
|
320
|
+
border-width: var(--pine-border-width-thick);
|
|
321
|
+
padding-inline: calc(var(--pine-dimension-sm) - (var(--pine-border-width-thick) - var(--pine-border-width)));
|
|
322
|
+
}
|
|
323
|
+
:host(.pds-radio--pill) label:has(input:disabled:checked) {
|
|
324
|
+
border-color: GrayText;
|
|
325
|
+
border-width: var(--pine-border-width-thick);
|
|
326
|
+
padding-inline: calc(var(--pine-dimension-sm) - (var(--pine-border-width-thick) - var(--pine-border-width)));
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
:host(.pds-radio--pill) .pds-radio__message {
|
|
330
|
+
margin-inline-start: 0;
|
|
274
331
|
}
|