@pine-ds/core 4.8.0 → 4.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/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-icon2.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/portal-target.js +1 -0
- package/components/tabbable.js +1 -0
- package/components/truncation-tooltip.js +1 -1
- 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-Do70atou.js → index-BDnbr0DK.js} +1 -1
- package/dist/cjs/{index-jl_Q819j.js → index-D9iJuJCP.js} +13 -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 +4 -4
- package/dist/cjs/pds-accordion.cjs.entry.js +3 -3
- package/dist/cjs/pds-alert.cjs.entry.js +17 -4
- package/dist/cjs/pds-avatar.cjs.entry.js +22 -12
- package/dist/cjs/pds-box.cjs.entry.js +4 -4
- package/dist/cjs/pds-button.cjs.entry.js +58 -26
- package/dist/cjs/pds-checkbox.cjs.entry.js +16 -8
- package/dist/cjs/pds-chip.cjs.entry.js +9 -11
- 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 +8 -7
- package/dist/cjs/pds-datepicker.cjs.entry.js +8 -45
- 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 +4 -4
- package/dist/cjs/pds-filters.cjs.entry.js +3 -3
- package/dist/cjs/pds-icon.cjs.entry.js +55 -22
- package/dist/cjs/pds-image.cjs.entry.js +4 -4
- package/dist/cjs/pds-input.cjs.entry.js +6 -6
- package/dist/cjs/pds-link.cjs.entry.js +16 -7
- 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 +9 -89
- package/dist/cjs/pds-multiselect.cjs.entry.js +13 -7
- 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 +67 -6
- package/dist/cjs/pds-radio.cjs.entry.js +24 -11
- package/dist/cjs/pds-row.cjs.entry.js +4 -4
- package/dist/cjs/pds-select.cjs.entry.js +132 -21
- package/dist/cjs/pds-sortable-item.cjs.entry.js +5 -5
- package/dist/cjs/pds-sortable.cjs.entry.js +4 -4
- package/dist/cjs/pds-switch.cjs.entry.js +7 -7
- 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 +7 -6
- package/dist/cjs/pds-table-head-cell.cjs.entry.js +5 -5
- 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 +31 -5
- package/dist/cjs/pds-textarea.cjs.entry.js +8 -8
- package/dist/cjs/pds-toast.cjs.entry.js +14 -8
- package/dist/cjs/pds-tooltip.cjs.entry.js +128 -46
- package/dist/cjs/pine-core.cjs.js +3 -3
- package/dist/cjs/portal-target-e8WQ6dLx.js +70 -0
- package/dist/cjs/tabbable-BrrrGvdG.js +86 -0
- package/dist/cjs/{truncation-tooltip-BtuiXLV0.js → truncation-tooltip-DdB78RIe.js} +44 -4
- 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 +2 -5
- 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/calendar-portal.js +1 -38
- 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.css +1 -1
- package/dist/collection/components/pds-link/pds-link.js +34 -3
- package/dist/collection/components/pds-link/stories/pds-link.stories.js +51 -2
- package/dist/collection/components/pds-loader/pds-loader.js +1 -1
- package/dist/collection/components/pds-modal/pds-modal-content/pds-modal-content.js +2 -2
- package/dist/collection/components/pds-modal/pds-modal-footer/pds-modal-footer.js +1 -1
- package/dist/collection/components/pds-modal/pds-modal-header/pds-modal-header.js +1 -1
- package/dist/collection/components/pds-modal/pds-modal.css +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 +9 -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 +65 -4
- 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 +28 -3
- package/dist/collection/components/pds-text/stories/pds-text.stories.js +16 -0
- 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.css +11 -0
- package/dist/collection/components/pds-tooltip/pds-tooltip.js +125 -42
- package/dist/collection/components/pds-tooltip/stories/pds-tooltip.stories.js +30 -0
- package/dist/collection/utils/aria-references.js +42 -0
- package/dist/collection/utils/portal-target.js +64 -0
- package/dist/collection/utils/tabbable.js +82 -0
- package/dist/collection/utils/truncation-tooltip.js +42 -3
- package/dist/docs.json +245 -8
- 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-4_RRPJTO.js} +13 -2
- package/dist/esm/{index-BWDu62Mo.js → index-DvN3tyZp.js} +2 -2
- 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 +4 -4
- 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 +8 -10
- 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 +8 -7
- package/dist/esm/pds-datepicker.entry.js +7 -44
- 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 +55 -22
- 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 +16 -7
- 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 +7 -87
- package/dist/esm/pds-multiselect.entry.js +13 -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 +67 -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 +7 -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 +31 -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 +128 -46
- package/dist/esm/pine-core.js +4 -4
- package/dist/esm/portal-target-CKRzRKdO.js +66 -0
- package/dist/esm/tabbable-C6ZWpp3v.js +84 -0
- package/dist/esm/{truncation-tooltip-FaW67DiY.js → truncation-tooltip-CRSdYzpA.js} +44 -5
- 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-4_RRPJTO.js} +2 -2
- package/dist/esm-es5/{index-BWDu62Mo.js → index-DvN3tyZp.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/portal-target-CKRzRKdO.js +1 -0
- package/dist/esm-es5/tabbable-C6ZWpp3v.js +1 -0
- package/dist/esm-es5/truncation-tooltip-CRSdYzpA.js +1 -0
- package/dist/pine-core/index.esm.js +1 -1
- package/dist/pine-core/{p-9880d251.system.entry.js → p-01f1cdaf.system.entry.js} +1 -1
- package/dist/pine-core/{p-138b278b.entry.js → p-07323107.entry.js} +1 -1
- package/dist/pine-core/p-08b8e941.entry.js +1 -0
- package/dist/pine-core/p-0d5f0ab5.system.entry.js +1 -0
- package/dist/pine-core/{p-8c8cc079.system.entry.js → p-1415c988.system.entry.js} +1 -1
- package/dist/pine-core/{p-9109b90a.entry.js → p-143b33a6.entry.js} +1 -1
- package/dist/pine-core/{p-b9d145f8.system.entry.js → p-14dedf01.system.entry.js} +1 -1
- package/dist/pine-core/{p-80e6f3a0.system.entry.js → p-19cf1d91.system.entry.js} +1 -1
- package/dist/pine-core/p-1ca8d183.entry.js +1 -0
- package/dist/pine-core/p-1cc39908.system.entry.js +1 -0
- package/dist/pine-core/p-1e3ef425.entry.js +1 -0
- package/dist/pine-core/{p-b914dde8.entry.js → p-1f62bb71.entry.js} +2 -2
- package/dist/pine-core/p-20079552.system.entry.js +1 -0
- package/dist/pine-core/p-2a18852f.entry.js +1 -0
- package/dist/pine-core/{p-ca4ee736.system.entry.js → p-2b9622c1.system.entry.js} +1 -1
- package/dist/pine-core/p-2dd30d12.entry.js +1 -0
- package/dist/pine-core/{p-cccfe60f.system.entry.js → p-3306dc5a.system.entry.js} +1 -1
- package/dist/pine-core/{p-BGLP3keB.js → p-35s7h-dk.js} +1 -1
- package/dist/pine-core/{p-8c588ca0.entry.js → p-3610cb3b.entry.js} +1 -1
- package/dist/pine-core/p-37718637.entry.js +1 -0
- package/dist/pine-core/p-383d84f4.entry.js +2 -0
- package/dist/pine-core/p-39276663.entry.js +1 -0
- package/dist/pine-core/{p-62433f32.entry.js → p-39e57657.entry.js} +1 -1
- package/dist/pine-core/p-3c229091.entry.js +1 -0
- package/dist/pine-core/p-3d34b967.system.entry.js +1 -0
- package/dist/pine-core/p-3e30a761.entry.js +1 -0
- package/dist/pine-core/{p-7a5b21d2.system.entry.js → p-3f8bd3fb.system.entry.js} +1 -1
- package/dist/pine-core/p-42d43c3f.system.entry.js +1 -0
- package/dist/pine-core/{p-f029b7da.system.entry.js → p-42f70f93.system.entry.js} +1 -1
- package/dist/pine-core/{p-d3d69ca4.system.entry.js → p-4a90b9c8.system.entry.js} +1 -1
- package/dist/pine-core/{p-ca0a8f5c.entry.js → p-4cfe922b.entry.js} +1 -1
- package/dist/pine-core/p-4d1a8803.entry.js +1 -0
- package/dist/pine-core/p-4d47023c.system.entry.js +1 -0
- package/dist/pine-core/p-4d98bc0c.system.entry.js +1 -0
- package/dist/pine-core/{p-c97bfac9.entry.js → p-50ddadbf.entry.js} +1 -1
- package/dist/pine-core/{p-0913f696.system.entry.js → p-548bce53.system.entry.js} +1 -1
- package/dist/pine-core/p-54f1e86f.system.entry.js +1 -0
- package/dist/pine-core/{p-631f5bcc.entry.js → p-590df41a.entry.js} +1 -1
- package/dist/pine-core/p-5946203c.entry.js +1 -0
- package/dist/pine-core/{p-11d98408.system.entry.js → p-5f181694.system.entry.js} +1 -1
- package/dist/pine-core/p-60a30975.system.entry.js +1 -0
- package/dist/pine-core/{p-9ab95438.entry.js → p-61cfdbb2.entry.js} +1 -1
- package/dist/pine-core/p-62aa6a78.system.entry.js +1 -0
- package/dist/pine-core/{p-ecc7a531.system.entry.js → p-63f85859.system.entry.js} +1 -1
- package/dist/pine-core/p-64bcb378.entry.js +1 -0
- package/dist/pine-core/{p-bdac8f2b.entry.js → p-67999353.entry.js} +1 -1
- package/dist/pine-core/{p-cb6a3e4c.system.entry.js → p-67f795d5.system.entry.js} +1 -1
- package/dist/pine-core/p-6a1aa8d3.entry.js +1 -0
- package/dist/pine-core/p-6f4ab1ea.system.entry.js +1 -0
- package/dist/pine-core/{p-acca5f7b.system.entry.js → p-724baba3.system.entry.js} +1 -1
- package/dist/pine-core/p-72659a0e.system.entry.js +1 -0
- package/dist/pine-core/{p-4bfc8b3e.system.entry.js → p-73efb1ed.system.entry.js} +1 -1
- package/dist/pine-core/p-7a51f15e.entry.js +1 -0
- package/dist/pine-core/p-7b978fff.system.entry.js +1 -0
- package/dist/pine-core/p-8436cbfb.entry.js +1 -0
- package/dist/pine-core/p-849ec281.system.entry.js +1 -0
- package/dist/pine-core/p-87a32ded.system.entry.js +1 -0
- package/dist/pine-core/p-89d38a82.system.entry.js +1 -0
- package/dist/pine-core/p-8ade17ce.entry.js +1 -0
- package/dist/pine-core/{p-4d03d1e2.system.entry.js → p-8afd5f5b.system.entry.js} +1 -1
- package/dist/pine-core/p-8e7f75e6.entry.js +1 -0
- package/dist/pine-core/{p-8f531063.entry.js → p-8fb520df.entry.js} +1 -1
- package/dist/pine-core/{p-9df5e204.entry.js → p-92115e88.entry.js} +1 -1
- package/dist/pine-core/p-93fd7dd8.system.entry.js +1 -0
- package/dist/pine-core/p-947582e1.entry.js +1 -0
- package/dist/pine-core/{p-2ac2457b.system.entry.js → p-94c9b7d1.system.entry.js} +1 -1
- package/dist/pine-core/p-973c3ac0.entry.js +1 -0
- package/dist/pine-core/p-97653e60.entry.js +1 -0
- package/dist/pine-core/{p-55224683.entry.js → p-97b73359.entry.js} +1 -1
- package/dist/pine-core/{p-b1548a20.entry.js → p-99530cb5.entry.js} +1 -1
- package/dist/pine-core/p-9a776443.entry.js +1 -0
- package/dist/pine-core/p-9b32727a.system.entry.js +1 -0
- package/dist/pine-core/{p-CGRdQc49.system.js → p-BK1sLRfg.system.js} +2 -2
- 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-C6ZWpp3v.js +1 -0
- package/dist/pine-core/{p-Cy8cvR7I.system.js → p-CANeE7Ss.system.js} +1 -1
- package/dist/pine-core/p-CKRzRKdO.js +1 -0
- package/dist/pine-core/{p-XW4H0W6i.system.js → p-CNXspDYs.system.js} +1 -1
- package/dist/pine-core/{p-BPqJgIq6.js → p-Cuc0DYlm.js} +1 -1
- package/dist/pine-core/p-DQyF6v9Q.system.js +1 -0
- package/dist/pine-core/{p-BWDu62Mo.js → p-DvN3tyZp.js} +1 -1
- package/dist/pine-core/p-DwQ5Tjis.js +1 -0
- package/dist/pine-core/{p-CmSJytt1.js → p-M31tvpDN.js} +2 -2
- package/dist/pine-core/p-XK45dzWR.system.js +1 -0
- package/dist/pine-core/{p-1dc5a7e0.system.entry.js → p-a09c9c5e.system.entry.js} +1 -1
- package/dist/pine-core/p-a4ce12ef.entry.js +1 -0
- package/dist/pine-core/{p-57a2f927.entry.js → p-a594c41f.entry.js} +1 -1
- package/dist/pine-core/p-a9d96e22.entry.js +1 -0
- package/dist/pine-core/{p-047433a4.system.entry.js → p-ad5208a4.system.entry.js} +1 -1
- package/dist/pine-core/p-b3d4f97a.system.entry.js +3 -0
- package/dist/pine-core/{p-0b71ecb6.system.entry.js → p-bcc378ba.system.entry.js} +2 -2
- package/dist/pine-core/p-bd7dc317.system.entry.js +1 -0
- package/dist/pine-core/p-beb7a430.entry.js +1 -0
- package/dist/pine-core/p-bfa34194.entry.js +1 -0
- package/dist/pine-core/{p-5870b092.system.entry.js → p-c2afe4f3.system.entry.js} +1 -1
- package/dist/pine-core/p-c5e1eb3c.system.entry.js +1 -0
- package/dist/pine-core/p-c7a53c4f.entry.js +1 -0
- package/dist/pine-core/{p-5cfd4d41.system.entry.js → p-c8a0b562.system.entry.js} +1 -1
- package/dist/pine-core/{p-f1702281.entry.js → p-c9ae7964.entry.js} +1 -1
- package/dist/pine-core/{p-db17c626.system.entry.js → p-cb9baf78.system.entry.js} +1 -1
- package/dist/pine-core/{p-e5420660.entry.js → p-ce9fa14b.entry.js} +1 -1
- package/dist/pine-core/{p-332590c7.system.entry.js → p-d018dc60.system.entry.js} +1 -1
- package/dist/pine-core/p-d47b2a6a.system.entry.js +1 -0
- package/dist/pine-core/{p-b75b0d09.system.entry.js → p-d48fe5a0.system.entry.js} +1 -1
- package/dist/pine-core/p-d6f338e0.entry.js +1 -0
- package/dist/pine-core/{p-8191498f.system.entry.js → p-d920d759.system.entry.js} +1 -1
- package/dist/pine-core/{p-26642718.entry.js → p-d9719e37.entry.js} +1 -1
- package/dist/pine-core/{p-c483997a.entry.js → p-db7fb5a3.entry.js} +1 -1
- package/dist/pine-core/{p-9713fb36.entry.js → p-e1d1b5d8.entry.js} +1 -1
- package/dist/pine-core/p-e3de6a1d.entry.js +1 -0
- package/dist/pine-core/{p-d2c91e7a.entry.js → p-e7002cee.entry.js} +1 -1
- package/dist/pine-core/{p-86040cac.system.entry.js → p-e82f758f.system.entry.js} +1 -1
- package/dist/pine-core/p-e84fa9ed.entry.js +1 -0
- package/dist/pine-core/{p-ee0e30bf.system.entry.js → p-eb4f0daa.system.entry.js} +1 -1
- package/dist/pine-core/p-eeYeEogd.system.js +1 -0
- package/dist/pine-core/{p-0af0d752.system.entry.js → p-eecd9ad8.system.entry.js} +1 -1
- package/dist/pine-core/p-ef0eba9b.system.entry.js +1 -0
- package/dist/pine-core/p-ef3a855f.system.entry.js +1 -0
- package/dist/pine-core/{p-717323e4.entry.js → p-f018af99.entry.js} +1 -1
- package/dist/pine-core/{p-121612a7.system.entry.js → p-f11cce27.system.entry.js} +1 -1
- package/dist/pine-core/{p-4fd454f6.entry.js → p-f6f4fd42.entry.js} +1 -1
- package/dist/pine-core/{p-a939b471.entry.js → p-f71d71ca.entry.js} +1 -1
- package/dist/pine-core/p-f9063262.system.entry.js +1 -0
- package/dist/pine-core/p-f99bd77f.entry.js +1 -0
- package/dist/pine-core/{p-ClDiSG97.system.js → p-vFsJv75D.system.js} +1 -1
- package/dist/pine-core/p-wB2y8gR7.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-datepicker/calendar-portal.d.ts +0 -7
- 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-radio-group/pds-radio-group.d.ts +8 -0
- package/dist/types/components/pds-select/pds-select.d.ts +32 -4
- package/dist/types/components/pds-text/pds-text.d.ts +4 -0
- package/dist/types/components/pds-toast/pds-toast.d.ts +9 -0
- package/dist/types/components/pds-tooltip/pds-tooltip.d.ts +32 -0
- package/dist/types/components.d.ts +98 -10
- package/dist/types/utils/aria-references.d.ts +24 -0
- package/dist/types/utils/portal-target.d.ts +17 -0
- package/dist/types/utils/tabbable.d.ts +2 -0
- package/dist/types/utils/truncation-tooltip.d.ts +5 -2
- package/dist/vscode.html-data.json +82 -10
- package/hydrate/index.js +971 -408
- package/hydrate/index.mjs +971 -408
- package/package.json +2 -2
- package/dist/esm-es5/truncation-tooltip-FaW67DiY.js +0 -1
- package/dist/pine-core/p-0092444c.system.entry.js +0 -1
- 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-158b2f51.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-25ea48d1.entry.js +0 -1
- package/dist/pine-core/p-295f64ea.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-3c977d8d.system.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-719542e1.system.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-77395d62.system.entry.js +0 -1
- package/dist/pine-core/p-7a287635.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-8987fd45.system.entry.js +0 -1
- package/dist/pine-core/p-8cc302aa.system.entry.js +0 -1
- package/dist/pine-core/p-8e3ff75d.entry.js +0 -1
- package/dist/pine-core/p-90d5edc6.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-9aaedded.entry.js +0 -1
- package/dist/pine-core/p-9dcd2cdb.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-D04W0cAO.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-e836a041.entry.js +0 -1
- package/dist/pine-core/p-ea340c55.system.entry.js +0 -1
- package/dist/pine-core/p-ea4d4741.system.entry.js +0 -1
- package/dist/pine-core/p-ea8f5d29.entry.js +0 -1
- package/dist/pine-core/p-eaf85be6.system.entry.js +0 -1
- package/dist/pine-core/p-ef13f665.system.entry.js +0 -1
- package/dist/pine-core/p-f3067d90.system.entry.js +0 -1
- package/dist/pine-core/p-jrkGLEPe.js +0 -1
|
@@ -199,11 +199,11 @@ export class PdsTableHeadCell {
|
|
|
199
199
|
return classNames.join(' ');
|
|
200
200
|
}
|
|
201
201
|
render() {
|
|
202
|
-
return (h(Host, { key: '
|
|
202
|
+
return (h(Host, { key: 'd609309180968913315c1428d0403c3974a4bfc0', class: this.classNames(), role: "columnheader", onClick: this.toggleSort, part: "head-cell", style: this.tableRef &&
|
|
203
203
|
this.tableRef.fixedColumn &&
|
|
204
204
|
this.tableRef.selectable
|
|
205
205
|
? { '--fixed-cell-position': '40px' }
|
|
206
|
-
: {} }, h("slot", { key: '
|
|
206
|
+
: {} }, h("slot", { key: '7aff5994fe4c5250ce83516960183dbd9ffa9c69' }), this.sortable && this.isActive && (h("pds-icon", { key: '0a7b99ab2c56ea0cfb3aa6f810bf802422a29bef', icon: this.sortingDirection === 'asc' ? upSmall : downSmall, part: "sort-icon", "aria-hidden": "true" }))));
|
|
207
207
|
}
|
|
208
208
|
static get is() { return "pds-table-head-cell"; }
|
|
209
209
|
static get encapsulation() { return "shadow"; }
|
|
@@ -137,7 +137,7 @@ export class PdsTableRow {
|
|
|
137
137
|
}
|
|
138
138
|
}
|
|
139
139
|
render() {
|
|
140
|
-
return (h(Host, { key: '
|
|
140
|
+
return (h(Host, { key: 'dc956e7253971bdadc003448822a83953ed4658f', class: this.classNames(), role: "row", part: "row" }, this.tableRef && this.tableRef.selectable && (h("pds-table-cell", { key: '1f119c5036ab1d27c5138106968a40492222b6f3', part: this.tableRef.fixedColumn ? 'checkbox-cell' : 'checkbox-cell', class: this.tableRef.selectable ? 'has-checkbox' : '' }, h("pds-checkbox", { key: 'f7a3534eceeabe478fb85e6e476f814e03988cfb', componentId: this.generateUniqueId(), onPdsCheckboxChange: this.handleCheckboxChange, indeterminate: this.indeterminate, label: "Select Row", hideLabel: true, checked: this.isSelected, part: "row-checkbox" }))), h("slot", { key: '287c0fe2c39bac5df7a977e31290aeddd0cd46b3' })));
|
|
141
141
|
}
|
|
142
142
|
static get is() { return "pds-table-row"; }
|
|
143
143
|
static get encapsulation() { return "shadow"; }
|
|
@@ -164,7 +164,7 @@ const ResponsiveTemplate = (args) => html`
|
|
|
164
164
|
<pds-table-cell>Row Item Lima</pds-table-cell>
|
|
165
165
|
<pds-table-cell>
|
|
166
166
|
<pds-dropdown-menu placement="bottom-end">
|
|
167
|
-
<pds-button slot="trigger" size="
|
|
167
|
+
<pds-button slot="trigger" size="small" variant="tertiary" icon-only aria-label="More actions"><pds-icon slot="start" name="dot-menu-horizontal" aria-hidden="true"></pds-icon></pds-button>
|
|
168
168
|
<pds-dropdown-menu-item>Edit</pds-dropdown-menu-item>
|
|
169
169
|
<pds-dropdown-menu-item>Duplicate</pds-dropdown-menu-item>
|
|
170
170
|
<pds-dropdown-menu-separator></pds-dropdown-menu-separator>
|
|
@@ -186,7 +186,7 @@ const ResponsiveTemplate = (args) => html`
|
|
|
186
186
|
<pds-table-cell>Row Item Lima</pds-table-cell>
|
|
187
187
|
<pds-table-cell>
|
|
188
188
|
<pds-dropdown-menu placement="bottom-end">
|
|
189
|
-
<pds-button slot="trigger" size="
|
|
189
|
+
<pds-button slot="trigger" size="small" variant="tertiary" icon-only aria-label="More actions"><pds-icon slot="start" name="dot-menu-horizontal" aria-hidden="true"></pds-icon></pds-button>
|
|
190
190
|
<pds-dropdown-menu-item>Edit</pds-dropdown-menu-item>
|
|
191
191
|
<pds-dropdown-menu-item>Duplicate</pds-dropdown-menu-item>
|
|
192
192
|
<pds-dropdown-menu-separator></pds-dropdown-menu-separator>
|
|
@@ -208,7 +208,7 @@ const ResponsiveTemplate = (args) => html`
|
|
|
208
208
|
<pds-table-cell>Row Item Lima</pds-table-cell>
|
|
209
209
|
<pds-table-cell>
|
|
210
210
|
<pds-dropdown-menu placement="bottom-end">
|
|
211
|
-
<pds-button slot="trigger" size="
|
|
211
|
+
<pds-button slot="trigger" size="small" variant="tertiary" icon-only aria-label="More actions"><pds-icon slot="start" name="dot-menu-horizontal" aria-hidden="true"></pds-icon></pds-button>
|
|
212
212
|
<pds-dropdown-menu-item>Edit</pds-dropdown-menu-item>
|
|
213
213
|
<pds-dropdown-menu-item>Duplicate</pds-dropdown-menu-item>
|
|
214
214
|
<pds-dropdown-menu-separator></pds-dropdown-menu-separator>
|
|
@@ -33,7 +33,7 @@ export class PdsTabpanel {
|
|
|
33
33
|
// The docs show consumers omitting `slot`, so server HTML doesn't carry it — a DOM morph
|
|
34
34
|
// that strips it (and the stretch-active class) leaves this panel unslotted. Put both back.
|
|
35
35
|
this.hostKeeper.record(hostClass, {}, { slot: 'tabpanels' });
|
|
36
|
-
return (h(Host, { key: '
|
|
36
|
+
return (h(Host, { key: 'b649c0f9e0c103a2d7dad43b7db0a092194b4ba0', slot: "tabpanels", class: hostClass || undefined }, h("div", { key: 'a578722d33f7d04726185e393771838870833984', role: "tabpanel", id: this.parentComponentId + "__" + this.name + '-panel', tabindex: "0", "aria-labelledby": this.parentComponentId + "__" + this.name, class: this.selected ? "pds-tabpanel is-active" : "pds-tabpanel" }, h("slot", { key: '2ebe5745c444563333ee175bb3a1f7401ba77ec1' }))));
|
|
37
37
|
}
|
|
38
38
|
static get is() { return "pds-tabpanel"; }
|
|
39
39
|
static get originalStyleUrls() {
|
|
@@ -276,7 +276,7 @@ export class PdsTabs {
|
|
|
276
276
|
// Only the classes: `active-tab-name` backs the mutable activeTabName prop, so a morph that drops
|
|
277
277
|
// it is a prop change, not a strip.
|
|
278
278
|
this.hostKeeper.record(hostClass);
|
|
279
|
-
return (h(Host, { key: '
|
|
279
|
+
return (h(Host, { key: '08ac02be358bebbd95dd5edca30cd99789445f50', "active-tab-name": this.activeTabName, class: hostClass, id: this.componentId }, tabList, h("slot", { key: '02395c056f80f46f1fa9117eafde68ef170b4188', name: "tabpanels" })));
|
|
280
280
|
}
|
|
281
281
|
static get is() { return "pds-tabs"; }
|
|
282
282
|
static get encapsulation() { return "shadow"; }
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { h } from "@stencil/core";
|
|
2
2
|
import { setColor } from "../../utils/utils";
|
|
3
|
-
import { setupTruncationTooltip } from "../../utils/truncation-tooltip";
|
|
3
|
+
import { FOCUSABLE_WRAPPER, setupTruncationTooltip } from "../../utils/truncation-tooltip";
|
|
4
4
|
import { TEXT_SIZES } from "../../utils/types";
|
|
5
|
+
// Re-runs setup for each text bound to its wrapping control, keyed by host, so a truncated
|
|
6
|
+
// text that joins the same control later can take that control's focus away from it.
|
|
7
|
+
const textsUsingWrapper = new WeakMap();
|
|
5
8
|
/**
|
|
6
9
|
* @part content - The text content container
|
|
7
10
|
*/
|
|
@@ -55,17 +58,39 @@ export class PdsText {
|
|
|
55
58
|
this.destroyTruncationTooltip();
|
|
56
59
|
}
|
|
57
60
|
initTruncationTooltip() {
|
|
61
|
+
var _a;
|
|
58
62
|
// Clean up any existing tooltip before setting up a new one
|
|
59
63
|
this.destroyTruncationTooltip();
|
|
60
64
|
if (this.contentEl) {
|
|
65
|
+
const wrapper = this.el.closest(FOCUSABLE_WRAPPER);
|
|
66
|
+
// A pds-chip with a max width binds its tooltip to the wrapper too.
|
|
67
|
+
const others = wrapper === null ? [] : wrapper.querySelectorAll('pds-text, pds-chip');
|
|
68
|
+
// One focus on a shared wrapper would open every clipped text's tooltip at once, so texts sharing one each keep
|
|
69
|
+
// their own stop, and a text bound before this one joined lets go: this one's focus bubbles to the wrapper too.
|
|
70
|
+
let sharesWrapper = false;
|
|
71
|
+
for (let i = 0; i < others.length; i++) {
|
|
72
|
+
const other = others[i];
|
|
73
|
+
// The property counts too: setting `truncate` runs setup before the next render reflects the attribute.
|
|
74
|
+
if (other !== this.el && (other.truncate || other.maxWidth || other.hasAttribute('truncate') || other.hasAttribute('max-width'))) {
|
|
75
|
+
sharesWrapper = true;
|
|
76
|
+
(_a = textsUsingWrapper.get(other)) === null || _a === void 0 ? void 0 : _a();
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
const usesWrapper = wrapper !== null && !sharesWrapper;
|
|
61
80
|
this.truncationCleanup = setupTruncationTooltip({
|
|
62
81
|
hostEl: this.el,
|
|
63
82
|
contentEl: this.contentEl,
|
|
64
83
|
getTooltipText: () => this.el.textContent || '',
|
|
84
|
+
// A wrapping link or button already takes focus, so its focus reveals the text instead of a nested tab stop.
|
|
85
|
+
manageTabIndex: !usesWrapper,
|
|
86
|
+
focusEl: usesWrapper ? wrapper : this.el,
|
|
65
87
|
});
|
|
88
|
+
if (usesWrapper)
|
|
89
|
+
textsUsingWrapper.set(this.el, () => this.initTruncationTooltip());
|
|
66
90
|
}
|
|
67
91
|
}
|
|
68
92
|
destroyTruncationTooltip() {
|
|
93
|
+
textsUsingWrapper.delete(this.el);
|
|
69
94
|
if (this.truncationCleanup) {
|
|
70
95
|
this.truncationCleanup();
|
|
71
96
|
this.truncationCleanup = null;
|
|
@@ -91,7 +116,7 @@ export class PdsText {
|
|
|
91
116
|
? `pds-text--decoration-${this.decoration}`
|
|
92
117
|
: ''}
|
|
93
118
|
`;
|
|
94
|
-
return (h(Tag, { key: '
|
|
119
|
+
return (h(Tag, { key: '30566c7810d3fd7f76ae281ae6d9a7e66803f0a3', ref: (el) => (this.contentEl = el), style: this.color && setColor(this.color), class: typeClasses, part: "content" }, h("slot", { key: 'f5113458aa9295803fc1c0bc552f9f92602cacba' })));
|
|
95
120
|
}
|
|
96
121
|
static get is() { return "pds-text"; }
|
|
97
122
|
static get encapsulation() { return "shadow"; }
|
|
@@ -279,7 +304,7 @@ export class PdsText {
|
|
|
279
304
|
"optional": true,
|
|
280
305
|
"docs": {
|
|
281
306
|
"tags": [],
|
|
282
|
-
"text": "If set or `true`, the text will be truncated. Must add a `width` to the element.\nWhen text overflows, a tooltip showing the full text will appear on hover/focus.\nNote: While the text is overflowing, the element receives tabindex=\"0\" so the\ntooltip can be reached by keyboard. Text that fits is left out of the tab order."
|
|
307
|
+
"text": "If set or `true`, the text will be truncated. Must add a `width` to the element.\nWhen text overflows, a tooltip showing the full text will appear on hover/focus.\nNote: While the text is overflowing, the element receives tabindex=\"0\" so the\ntooltip can be reached by keyboard. Text that fits is left out of the tab order.\nInside a link or button (including `pds-button`, `pds-link`, `pds-tab`, and\n`pds-dropdown-menu-item`) that holds no other truncated text or `pds-chip` with a\n`max-width`, no tab stop is added; the tooltip appears when that control receives\nkeyboard focus."
|
|
283
308
|
},
|
|
284
309
|
"getter": false,
|
|
285
310
|
"setter": false,
|
|
@@ -123,3 +123,19 @@ Truncate.args = {
|
|
|
123
123
|
truncate: true,
|
|
124
124
|
width: '250px',
|
|
125
125
|
};
|
|
126
|
+
|
|
127
|
+
const TruncateInLinkTemplate = (args) => html`
|
|
128
|
+
<div style="width: ${args.width || '250px'};">
|
|
129
|
+
<a href="#">
|
|
130
|
+
<pds-text tag="${args.tag}" ?truncate="${args.truncate}">${args.slot}</pds-text>
|
|
131
|
+
</a>
|
|
132
|
+
</div>
|
|
133
|
+
<pds-text tag="p" size="xs" color="secondary" gutter="sm">Tab to the link to see the full content in a tooltip. The truncated text adds no tab stop of its own.</pds-text>`;
|
|
134
|
+
|
|
135
|
+
export const TruncateInLink = TruncateInLinkTemplate.bind();
|
|
136
|
+
TruncateInLink.args = {
|
|
137
|
+
slot: 'Id irure id magna ipsum voluptate irure esse eu nulla. Ullamco officia adipisicing qui nulla non sint.',
|
|
138
|
+
tag: 'p',
|
|
139
|
+
truncate: true,
|
|
140
|
+
width: '250px',
|
|
141
|
+
};
|
|
@@ -306,10 +306,10 @@ export class PdsTextarea {
|
|
|
306
306
|
}
|
|
307
307
|
render() {
|
|
308
308
|
const value = this.getValue();
|
|
309
|
-
return (h(Host, { key: '
|
|
310
|
-
h("div", { key: '
|
|
311
|
-
h("p", { key: '
|
|
312
|
-
h("p", { key: '
|
|
309
|
+
return (h(Host, { key: '76e445d135191df3090620f2c2eaf6ed8d7eb9cb', "aria-disabled": this.disabled ? 'true' : null, "aria-readonly": this.readonly ? 'true' : null, "has-action": this.hasAction && !this.hideLabel ? 'true' : null }, h("div", { key: '836815333b0ca925bc205a4b8b25086fe82fcedc', class: "pds-textarea" }, this.label &&
|
|
310
|
+
h("div", { key: 'e8633457c994d3387ec277fd9945afb2c653d27a', class: "pds-textarea__label-wrapper" }, h("label", { key: '977bb1c171b68242ab06e01ef94ecc4e4cb26880', htmlFor: this.componentId }, h("span", { key: 'ef87433d6524296b3153e8d04e6406c9287e3f2e', class: this.hideLabel ? 'visually-hidden' : '' }, this.label)), !this.hideLabel && this.renderAction()), h("div", { key: '92952c76f5f4a87da4953f792a9a5589d7765451', class: "pds-textarea__field-wrapper" }, h("textarea", Object.assign({ key: 'a61f39d0e299cb6b3e6d1beed37805ad9a71b579', ref: (el) => this.nativeTextarea = el, "aria-describedby": assignDescription(this.componentId, this.invalid, this.helperMessage, this.errorMessage), "aria-invalid": this.invalid ? "true" : undefined, autocomplete: this.autocomplete, class: this.textareaClassNames(), disabled: this.disabled, id: this.componentId, maxlength: this.maxLength, name: this.name, placeholder: this.placeholder, readOnly: this.readonly, required: this.required, rows: this.rows, onBlur: this.onBlur, onChange: this.onTextareaChange, onFocus: this.onFocus, onInput: this.onInput, onKeyDown: this.onKeyDown }, this.inheritedAttributes), value), this.renderCharacterCounter()), this.helperMessage &&
|
|
311
|
+
h("p", { key: '811065b7ce7b45d902d821dbceb25fef4231db94', class: "pds-textarea__helper-message", id: messageId(this.componentId, 'helper') }, this.helperMessage), this.invalid &&
|
|
312
|
+
h("p", { key: 'f95f566b79215a4a128fe92c02be244219f843e5', "aria-live": "assertive", class: "pds-textarea__error-message", id: messageId(this.componentId, 'error') }, h("pds-icon", { key: '08f649e4b32551d59d60b978262cd7beaa99e08d', "aria-hidden": "true", icon: danger, size: "small" }), this.errorMessage))));
|
|
313
313
|
}
|
|
314
314
|
static get is() { return "pds-textarea"; }
|
|
315
315
|
static get encapsulation() { return "shadow"; }
|
|
@@ -181,8 +181,8 @@ export const withActionButton = (args) => html`<pds-textarea
|
|
|
181
181
|
value="${args.value}"
|
|
182
182
|
data-tooltip-id="foo"
|
|
183
183
|
title="bar">
|
|
184
|
-
<pds-button slot="action" variant="unstyled">
|
|
185
|
-
<pds-icon name="question-circle"></pds-icon>
|
|
184
|
+
<pds-button slot="action" variant="unstyled" aria-label="Help with description">
|
|
185
|
+
<pds-icon name="question-circle" aria-hidden="true"></pds-icon>
|
|
186
186
|
</pds-button>
|
|
187
187
|
</pds-textarea>`;
|
|
188
188
|
|
|
@@ -150,4 +150,17 @@
|
|
|
150
150
|
.pds-toast--animating-out {
|
|
151
151
|
animation: pds-toast-animate-out var(--animation-duration) var(--animation-timing) forwards;
|
|
152
152
|
pointer-events: none; /* Prevent interaction during animation */
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
.visually-hidden {
|
|
156
|
+
border: 0;
|
|
157
|
+
clip: rect(0 0 0 0);
|
|
158
|
+
clip-path: polygon(0 0, 0 0, 0 0);
|
|
159
|
+
height: 1px;
|
|
160
|
+
margin: -1px;
|
|
161
|
+
overflow: hidden;
|
|
162
|
+
padding: 0;
|
|
163
|
+
position: absolute;
|
|
164
|
+
white-space: nowrap;
|
|
165
|
+
width: 1px;
|
|
153
166
|
}
|
|
@@ -117,17 +117,23 @@ export class PdsToast {
|
|
|
117
117
|
if (this.type === 'loading') {
|
|
118
118
|
return (h("div", { class: "pds-toast__loader" }, h("svg", { class: "pds-toast__loader-spinner", viewBox: "25 25 50 50", "aria-hidden": "true" }, h("circle", { class: "pds-toast__loader-path", cx: "50", cy: "50", r: "20", fill: "none", stroke: "currentColor", "stroke-width": "4", "stroke-linecap": "round" }))));
|
|
119
119
|
}
|
|
120
|
-
//
|
|
121
|
-
|
|
120
|
+
// Decorative: inside role="alert" an icon name would be read out with the
|
|
121
|
+
// message. Severity is announced as text instead (see severityLabel).
|
|
122
|
+
return this.icon && h("pds-icon", { name: this.icon, class: "pds-toast__icon", "aria-hidden": "true" });
|
|
123
|
+
}
|
|
124
|
+
severityText() {
|
|
125
|
+
var _a;
|
|
126
|
+
return (_a = this.severityLabel) !== null && _a !== void 0 ? _a : (this.type === 'danger' ? 'Error' : undefined);
|
|
122
127
|
}
|
|
123
128
|
render() {
|
|
124
|
-
|
|
129
|
+
const severity = this.severityText();
|
|
130
|
+
return (h(Host, { key: '4c4077add1843ab84674dfa49fb963df55f1c432', hidden: !this.isVisible }, h("div", { key: '0d819ac123de625604d3b1aa0f9391366b4d0289', class: {
|
|
125
131
|
'pds-toast': true,
|
|
126
132
|
[`pds-toast--${this.type}`]: this.type !== 'default',
|
|
127
133
|
'pds-toast--animating-out': this.isAnimatingOut
|
|
128
|
-
}, role: "alert", "aria-live": "polite" }, this.renderIcon(), h("span", { key: '
|
|
134
|
+
}, role: "alert", "aria-live": "polite" }, this.renderIcon(), severity && h("span", { key: 'f75fb422797082e99acb85432c1b50cf702d7afc', class: "visually-hidden" }, severity), h("span", { key: '3d9f03d96dbda41c72d2c2cc492b1422928d573f', class: "pds-toast__message" }, h("slot", { key: 'affc7e4cb592735ec396fa90a9405f25b389e4bd' })), this.dismissible && (h("button", { key: '0c4ef459dda09b8a196eed7ee28383995d959b11', type: "button", part: "dismiss", class: "pds-toast__button", onClick: () => {
|
|
129
135
|
this.dismiss();
|
|
130
|
-
}, "aria-label": this.dismissLabel }, h("pds-icon", { key: '
|
|
136
|
+
}, "aria-label": this.dismissLabel }, h("pds-icon", { key: '1b26a6a842868a5b1e55b7110c755edc7f830ba5', name: "remove", "aria-hidden": "true" }))))));
|
|
131
137
|
}
|
|
132
138
|
static get is() { return "pds-toast"; }
|
|
133
139
|
static get encapsulation() { return "shadow"; }
|
|
@@ -272,6 +278,28 @@ export class PdsToast {
|
|
|
272
278
|
"reflect": false,
|
|
273
279
|
"attribute": "dismiss-label",
|
|
274
280
|
"defaultValue": "'Dismiss message'"
|
|
281
|
+
},
|
|
282
|
+
"severityLabel": {
|
|
283
|
+
"type": "string",
|
|
284
|
+
"mutable": false,
|
|
285
|
+
"complexType": {
|
|
286
|
+
"original": "string",
|
|
287
|
+
"resolved": "string",
|
|
288
|
+
"references": {}
|
|
289
|
+
},
|
|
290
|
+
"required": false,
|
|
291
|
+
"optional": true,
|
|
292
|
+
"docs": {
|
|
293
|
+
"tags": [{
|
|
294
|
+
"name": "defaultValue",
|
|
295
|
+
"text": "undefined"
|
|
296
|
+
}],
|
|
297
|
+
"text": "Accessible label announcing the toast's severity, read before the message.\nPass a translated string to localize it; defaults to English (`Error`) for\nthe `danger` type. Other types announce none unless this is set; pass an\nempty string to announce none."
|
|
298
|
+
},
|
|
299
|
+
"getter": false,
|
|
300
|
+
"setter": false,
|
|
301
|
+
"reflect": false,
|
|
302
|
+
"attribute": "severity-label"
|
|
275
303
|
}
|
|
276
304
|
};
|
|
277
305
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { html } from 'lit';
|
|
2
|
+
import { ifDefined } from 'lit/directives/if-defined.js';
|
|
2
3
|
|
|
3
4
|
|
|
4
5
|
export default {
|
|
@@ -15,6 +16,7 @@ const BaseTemplate = (args) => html`
|
|
|
15
16
|
duration="${args.duration}"
|
|
16
17
|
icon="${args.icon || ''}"
|
|
17
18
|
type="${args.type}"
|
|
19
|
+
severity-label=${ifDefined(args.severityLabel)}
|
|
18
20
|
>
|
|
19
21
|
${args.content || ''}
|
|
20
22
|
</pds-toast>`;
|
|
@@ -26,6 +28,7 @@ const WithLinkTemplate = (args) => html`
|
|
|
26
28
|
duration="${args.duration}"
|
|
27
29
|
icon="${args.icon || ''}"
|
|
28
30
|
type="${args.type}"
|
|
31
|
+
severity-label=${ifDefined(args.severityLabel)}
|
|
29
32
|
>
|
|
30
33
|
New update available. <a href="#">Learn more</a>
|
|
31
34
|
</pds-toast>`;
|
|
@@ -42,7 +45,7 @@ Default.args = {
|
|
|
42
45
|
export const Danger = BaseTemplate.bind();
|
|
43
46
|
Danger.args = {
|
|
44
47
|
componentId: 'toast-danger',
|
|
45
|
-
content: '
|
|
48
|
+
content: 'Payment failed. Please try again.',
|
|
46
49
|
dismissible: true,
|
|
47
50
|
duration: 0,
|
|
48
51
|
type: 'danger',
|
|
@@ -8,6 +8,17 @@
|
|
|
8
8
|
--tooltip-dimension-max-width: 320px;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
+
:is(dialog, [popover]) > .pds-tooltip {
|
|
12
|
+
font-style: normal;
|
|
13
|
+
font-weight: normal;
|
|
14
|
+
letter-spacing: normal;
|
|
15
|
+
text-align: start;
|
|
16
|
+
text-indent: 0;
|
|
17
|
+
text-transform: none;
|
|
18
|
+
white-space: normal;
|
|
19
|
+
word-spacing: normal;
|
|
20
|
+
}
|
|
21
|
+
|
|
11
22
|
.pds-tooltip__content {
|
|
12
23
|
background-color: var(--pine-color-primary);
|
|
13
24
|
border-radius: calc(var(--pine-dimension-xs) * 1.25);
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { Host, h } from "@stencil/core";
|
|
2
|
+
import { classNamesOf, isStencilClass } from "../../utils/keep-hydrated";
|
|
3
|
+
import { findPortalTarget, isTopLayerInDocument, onTopLayerClose } from "../../utils/portal-target";
|
|
2
4
|
import { autoUpdate, computePosition, flip, offset, shift, } from "@floating-ui/dom";
|
|
3
5
|
/**
|
|
4
6
|
* @slot (default) - The tooltip's target element
|
|
@@ -16,10 +18,13 @@ export class PdsTooltip {
|
|
|
16
18
|
this.resolvedPlacement = 'right';
|
|
17
19
|
this.triggerEl = null;
|
|
18
20
|
this.contentDiv = null;
|
|
21
|
+
this.lastCopiedHtml = null;
|
|
19
22
|
this.slotMutationObserver = null;
|
|
23
|
+
this.contentSyncFrame = null;
|
|
20
24
|
this.currentPathname = '';
|
|
21
25
|
this.pathnameCheckInterval = null;
|
|
22
26
|
this.stopAutoUpdate = null;
|
|
27
|
+
this.stopWatchingPortalHost = null;
|
|
23
28
|
/**
|
|
24
29
|
* Determines whether or not the tooltip has an arrow
|
|
25
30
|
* @defaultValue true
|
|
@@ -83,6 +88,25 @@ export class PdsTooltip {
|
|
|
83
88
|
this.handleSpaNavigation();
|
|
84
89
|
}
|
|
85
90
|
};
|
|
91
|
+
this.scheduleContentSync = () => {
|
|
92
|
+
if (this.contentSyncFrame !== null)
|
|
93
|
+
return;
|
|
94
|
+
this.contentSyncFrame = requestAnimationFrame(() => {
|
|
95
|
+
this.contentSyncFrame = null;
|
|
96
|
+
if (this.portalEl === null || this.contentDiv === null)
|
|
97
|
+
return;
|
|
98
|
+
const copy = this.copySlottedContent();
|
|
99
|
+
const strippedCopy = this.strippedHtml(copy);
|
|
100
|
+
if (strippedCopy === this.lastCopiedHtml)
|
|
101
|
+
return;
|
|
102
|
+
this.lastCopiedHtml = strippedCopy;
|
|
103
|
+
this.contentDiv.textContent = '';
|
|
104
|
+
this.contentDiv.append(...Array.from(copy.childNodes));
|
|
105
|
+
this.repositionPortal().catch(error => {
|
|
106
|
+
console.warn('Failed to reposition tooltip after a content change:', error);
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
};
|
|
86
110
|
}
|
|
87
111
|
handleOpenToggle(newValue, oldValue) {
|
|
88
112
|
if (newValue === false && oldValue === true) {
|
|
@@ -97,16 +121,6 @@ export class PdsTooltip {
|
|
|
97
121
|
window.addEventListener('pageshow', this.handlePageShow);
|
|
98
122
|
this.currentPathname = window.location.pathname;
|
|
99
123
|
this.triggerEl = this.el.querySelector('.pds-tooltip__trigger');
|
|
100
|
-
const contentSlotWrapper = this.el.querySelector('.pds-tooltip__content-slot-wrapper');
|
|
101
|
-
if (contentSlotWrapper !== null) {
|
|
102
|
-
this.slotMutationObserver = new MutationObserver(() => {
|
|
103
|
-
if (this.opened && this.portalEl !== null) {
|
|
104
|
-
this.removePortal();
|
|
105
|
-
this.createPortal();
|
|
106
|
-
}
|
|
107
|
-
});
|
|
108
|
-
this.slotMutationObserver.observe(contentSlotWrapper, { childList: true, subtree: false });
|
|
109
|
-
}
|
|
110
124
|
// no return; Stencil ignores teardown functions here
|
|
111
125
|
}
|
|
112
126
|
connectedCallback() {
|
|
@@ -114,10 +128,6 @@ export class PdsTooltip {
|
|
|
114
128
|
}
|
|
115
129
|
disconnectedCallback() {
|
|
116
130
|
window.removeEventListener('pageshow', this.handlePageShow);
|
|
117
|
-
if (this.slotMutationObserver !== null) {
|
|
118
|
-
this.slotMutationObserver.disconnect();
|
|
119
|
-
this.slotMutationObserver = null;
|
|
120
|
-
}
|
|
121
131
|
// Ensure global listeners/intervals are removed if still present
|
|
122
132
|
if (this.portalEl !== null) {
|
|
123
133
|
this.removePortal();
|
|
@@ -260,33 +270,16 @@ export class PdsTooltip {
|
|
|
260
270
|
this.contentDiv.className = 'pds-tooltip__content';
|
|
261
271
|
this.contentDiv.setAttribute('aria-hidden', this.opened ? 'false' : 'true');
|
|
262
272
|
this.contentDiv.setAttribute('aria-live', this.opened ? 'polite' : 'off');
|
|
263
|
-
const
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
if (slottedContentContainer !== null) {
|
|
267
|
-
const childrenToClone = Array.from(slottedContentContainer.childNodes);
|
|
268
|
-
if (childrenToClone.length > 0) {
|
|
269
|
-
const hasMeaningfulNode = childrenToClone.some(node => {
|
|
270
|
-
var _a;
|
|
271
|
-
return node.nodeType === Node.ELEMENT_NODE ||
|
|
272
|
-
(node.nodeType === Node.TEXT_NODE && ((_a = node.textContent) === null || _a === void 0 ? void 0 : _a.trim()) !== '');
|
|
273
|
-
});
|
|
274
|
-
if (hasMeaningfulNode) {
|
|
275
|
-
hasSlottedContent = true;
|
|
276
|
-
childrenToClone.forEach((node /*, index*/) => {
|
|
277
|
-
var _a;
|
|
278
|
-
if (node.nodeType === Node.ELEMENT_NODE || (node.nodeType === Node.TEXT_NODE && ((_a = node.textContent) === null || _a === void 0 ? void 0 : _a.trim()) !== '')) {
|
|
279
|
-
this.contentDiv.appendChild(node.cloneNode(true));
|
|
280
|
-
}
|
|
281
|
-
});
|
|
282
|
-
}
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
if (!hasSlottedContent && typeof this.content === 'string' && this.content.trim() !== '') {
|
|
286
|
-
this.contentDiv.textContent = this.content;
|
|
287
|
-
}
|
|
273
|
+
const initialCopy = this.copySlottedContent();
|
|
274
|
+
this.lastCopiedHtml = this.strippedHtml(initialCopy);
|
|
275
|
+
this.contentDiv.append(...Array.from(initialCopy.childNodes));
|
|
288
276
|
this.portalEl.appendChild(this.contentDiv);
|
|
289
|
-
|
|
277
|
+
// Nothing in the body paints above a modal dialog or open popover, so the portal goes inside one.
|
|
278
|
+
const portalHost = findPortalTarget(this.el, isTopLayerInDocument);
|
|
279
|
+
portalHost.appendChild(this.portalEl);
|
|
280
|
+
// Closing that host moves no pointer, so a tooltip opened by touch would outlive it unseen.
|
|
281
|
+
if (portalHost !== document.body)
|
|
282
|
+
this.stopWatchingPortalHost = onTopLayerClose(portalHost, this.handleHide);
|
|
290
283
|
this.repositionPortal().catch(error => {
|
|
291
284
|
console.warn('Failed to position tooltip on creation:', error);
|
|
292
285
|
});
|
|
@@ -307,13 +300,102 @@ export class PdsTooltip {
|
|
|
307
300
|
if (this.triggerEl !== null && this.portalEl.id !== '') {
|
|
308
301
|
this.triggerEl.setAttribute('aria-describedby', this.portalEl.id);
|
|
309
302
|
}
|
|
303
|
+
this.startContentSync();
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* The host's own content slot wrapper. Matched among direct children only, so a nested
|
|
307
|
+
* pds-tooltip inside the trigger slot isn't mistaken for this one's.
|
|
308
|
+
*/
|
|
309
|
+
get contentSlotWrapper() {
|
|
310
|
+
return Array.from(this.el.children).find((child) => child.matches('.pds-tooltip__content-slot-wrapper'));
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* Copies the slotted content (or the `content` prop's text) into a detached container. The
|
|
314
|
+
* portal holds copies so the framework that owns the slotted nodes keeps them.
|
|
315
|
+
*/
|
|
316
|
+
copySlottedContent() {
|
|
317
|
+
var _a, _b;
|
|
318
|
+
const copy = document.createElement('div');
|
|
319
|
+
const slottedContentContainer = (_a = this.contentSlotWrapper) === null || _a === void 0 ? void 0 : _a.querySelector('[slot="content"]');
|
|
320
|
+
const meaningfulNodes = Array.from((_b = slottedContentContainer === null || slottedContentContainer === void 0 ? void 0 : slottedContentContainer.childNodes) !== null && _b !== void 0 ? _b : []).filter(node => {
|
|
321
|
+
var _a;
|
|
322
|
+
return node.nodeType === Node.ELEMENT_NODE ||
|
|
323
|
+
(node.nodeType === Node.TEXT_NODE && ((_a = node.textContent) === null || _a === void 0 ? void 0 : _a.trim()) !== '');
|
|
324
|
+
});
|
|
325
|
+
meaningfulNodes.forEach(node => copy.appendChild(node.cloneNode(true)));
|
|
326
|
+
if (meaningfulNodes.length === 0 && typeof this.content === 'string' && this.content.trim() !== '') {
|
|
327
|
+
copy.textContent = this.content;
|
|
328
|
+
}
|
|
329
|
+
return copy;
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* While the tooltip is open, keeps the portal's copy in step with the slotted content at any
|
|
333
|
+
* depth: content that loads or re-renders after opening shows without reopening. Changes are
|
|
334
|
+
* batched to one re-copy per animation frame, and a re-copy that matches the last one shown is
|
|
335
|
+
* dropped, so screen readers aren't re-announced, iframes don't reload and the tooltip isn't
|
|
336
|
+
* repositioned for nothing. Only the hidden slot wrapper is observed, so copying into the portal
|
|
337
|
+
* can't trigger another sync.
|
|
338
|
+
*/
|
|
339
|
+
startContentSync() {
|
|
340
|
+
const contentSlotWrapper = this.contentSlotWrapper;
|
|
341
|
+
if (contentSlotWrapper === undefined || typeof MutationObserver === 'undefined')
|
|
342
|
+
return;
|
|
343
|
+
this.slotMutationObserver = new MutationObserver(this.scheduleContentSync);
|
|
344
|
+
this.slotMutationObserver.observe(contentSlotWrapper, {
|
|
345
|
+
childList: true,
|
|
346
|
+
subtree: true,
|
|
347
|
+
attributes: true,
|
|
348
|
+
characterData: true,
|
|
349
|
+
});
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* A copy's serialized HTML with Stencil's own hydration and scope classes removed from every
|
|
353
|
+
* `pds-*` descendant, so a nested component finishing hydration (or re-hydrating once reconnected
|
|
354
|
+
* inside the portal) isn't mistaken for a real content change. Without this, that class-only
|
|
355
|
+
* difference fails the equality check above and triggers a recopy that replaces still-loaded
|
|
356
|
+
* nodes — reloading any iframe or media the slotted content held.
|
|
357
|
+
*/
|
|
358
|
+
strippedHtml(root) {
|
|
359
|
+
const clone = root.cloneNode(true);
|
|
360
|
+
clone.querySelectorAll('*').forEach((el) => {
|
|
361
|
+
// isStencilClass is host-scoped (its own doc: "another sc- class may be a consumer's"), so it
|
|
362
|
+
// only applies to pds-* elements — the same check keepPineHydrated makes before using it.
|
|
363
|
+
if (!el.localName.startsWith('pds-'))
|
|
364
|
+
return;
|
|
365
|
+
// Not `el.className`: on an SVG element that's an SVGAnimatedString, not a string,
|
|
366
|
+
// so classNamesOf would silently drop its classes from the comparison. The `class`
|
|
367
|
+
// attribute is a plain string on every element, SVG included.
|
|
368
|
+
const kept = classNamesOf(el.getAttribute('class') || '').filter((name) => !isStencilClass(el, name));
|
|
369
|
+
if (kept.length === 0) {
|
|
370
|
+
el.removeAttribute('class');
|
|
371
|
+
}
|
|
372
|
+
else {
|
|
373
|
+
el.setAttribute('class', kept.join(' '));
|
|
374
|
+
}
|
|
375
|
+
});
|
|
376
|
+
return clone.innerHTML;
|
|
377
|
+
}
|
|
378
|
+
stopContentSync() {
|
|
379
|
+
if (this.slotMutationObserver !== null) {
|
|
380
|
+
this.slotMutationObserver.disconnect();
|
|
381
|
+
this.slotMutationObserver = null;
|
|
382
|
+
}
|
|
383
|
+
if (this.contentSyncFrame !== null) {
|
|
384
|
+
cancelAnimationFrame(this.contentSyncFrame);
|
|
385
|
+
this.contentSyncFrame = null;
|
|
386
|
+
}
|
|
310
387
|
}
|
|
311
388
|
removePortal() {
|
|
389
|
+
this.stopContentSync();
|
|
312
390
|
// Stop Floating UI's autoUpdate
|
|
313
391
|
if (this.stopAutoUpdate !== null) {
|
|
314
392
|
this.stopAutoUpdate();
|
|
315
393
|
this.stopAutoUpdate = null;
|
|
316
394
|
}
|
|
395
|
+
if (this.stopWatchingPortalHost !== null) {
|
|
396
|
+
this.stopWatchingPortalHost();
|
|
397
|
+
this.stopWatchingPortalHost = null;
|
|
398
|
+
}
|
|
317
399
|
// Stop pathname change detection
|
|
318
400
|
if (this.pathnameCheckInterval !== null) {
|
|
319
401
|
clearInterval(this.pathnameCheckInterval);
|
|
@@ -340,12 +422,13 @@ export class PdsTooltip {
|
|
|
340
422
|
this.triggerEl.removeAttribute('aria-describedby');
|
|
341
423
|
}
|
|
342
424
|
this.contentDiv = null;
|
|
425
|
+
this.lastCopiedHtml = null;
|
|
343
426
|
}
|
|
344
427
|
render() {
|
|
345
428
|
const hostId = this.componentId || undefined;
|
|
346
|
-
return (h(Host, { key: '
|
|
429
|
+
return (h(Host, { key: '475ff12d4be035e3effa894353e7948b42a23489', id: hostId, class: { 'pds-tooltip--is-open': this.opened } }, h("span", { key: '3375dfb5bb86ba373bc5d617f4a53171505631d1', class: "pds-tooltip__trigger", onMouseEnter: this.handleShow, onMouseLeave: this.handleHide,
|
|
347
430
|
/* focusin/out bubble; ensure keyboard users see tooltips */
|
|
348
|
-
onFocusin: this.handleShow, onFocusout: this.handleHide, ref: el => this.triggerEl = el }, h("slot", { key: '
|
|
431
|
+
onFocusin: this.handleShow, onFocusout: this.handleHide, ref: el => this.triggerEl = el }, h("slot", { key: 'a3392ad415f5ac7f3883100bf914484ffcc8e536' })), h("div", { key: '774ac2c4808e96649b1536569aaf8cf8a6e3abc2', class: "pds-tooltip__content-slot-wrapper", hidden: true }, h("slot", { key: '672c64b4acdb365623885ac2105a9b90b1dcfa6b', name: "content" }))));
|
|
349
432
|
}
|
|
350
433
|
static get is() { return "pds-tooltip"; }
|
|
351
434
|
static get originalStyleUrls() {
|
|
@@ -20,6 +20,29 @@ const HTMLContentTemplate = (args) => html`
|
|
|
20
20
|
<pds-button variant="secondary">Hover</pds-button>
|
|
21
21
|
</pds-tooltip>`;
|
|
22
22
|
|
|
23
|
+
const InModalTemplate = (args) => html`
|
|
24
|
+
<pds-button onclick="document.querySelector('#tooltip-modal').open = true">Open modal</pds-button>
|
|
25
|
+
<pds-modal id="tooltip-modal" component-id="tooltip-modal" size="sm">
|
|
26
|
+
<pds-modal-header>
|
|
27
|
+
<pds-box padding="md">
|
|
28
|
+
<pds-text tag="h2" size="h3">Publish changes</pds-text>
|
|
29
|
+
</pds-box>
|
|
30
|
+
</pds-modal-header>
|
|
31
|
+
<pds-modal-content>
|
|
32
|
+
<pds-box padding-inline-start="md" padding-inline-end="md">
|
|
33
|
+
<pds-text tag="p">Hover or focus Publish: its tooltip shows above the open modal.</pds-text>
|
|
34
|
+
</pds-box>
|
|
35
|
+
</pds-modal-content>
|
|
36
|
+
<pds-modal-footer>
|
|
37
|
+
<pds-box fit gap="sm" justify-content="end" padding="md">
|
|
38
|
+
<pds-button variant="secondary" onclick="document.querySelector('#tooltip-modal').open = false">Cancel</pds-button>
|
|
39
|
+
<pds-tooltip content=${args.content} ?has-arrow=${args.hasArrow} placement=${args.placement}>
|
|
40
|
+
<pds-button variant="primary">Publish</pds-button>
|
|
41
|
+
</pds-tooltip>
|
|
42
|
+
</pds-box>
|
|
43
|
+
</pds-modal-footer>
|
|
44
|
+
</pds-modal>`;
|
|
45
|
+
|
|
23
46
|
const PositionTemplate = (args) => html`
|
|
24
47
|
<div class="demo-container" style="min-height: 50vh; width: 100%; display: flex; align-items: center; justify-content: center;">
|
|
25
48
|
<div class="position-demo-grid">
|
|
@@ -99,3 +122,10 @@ NoArrow.args = {
|
|
|
99
122
|
placement: "bottom-start",
|
|
100
123
|
slot: "target text"
|
|
101
124
|
};
|
|
125
|
+
|
|
126
|
+
export const InModal = InModalTemplate.bind({});
|
|
127
|
+
InModal.args = {
|
|
128
|
+
content: "Fix the errors on the page to publish",
|
|
129
|
+
hasArrow: true,
|
|
130
|
+
placement: "top",
|
|
131
|
+
};
|