@pine-ds/core 4.7.2 → 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/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-jl_Q819j.js → index-BsWY_xEJ.js} +1 -1
- package/dist/cjs/{index-5Azb8EQG.js → index-Do70atou.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 +3 -3
- package/dist/cjs/pds-alert.cjs.entry.js +17 -4
- package/dist/cjs/pds-avatar.cjs.entry.js +23 -13
- package/dist/cjs/pds-box.cjs.entry.js +4 -4
- package/dist/cjs/pds-button.cjs.entry.js +80 -45
- package/dist/cjs/pds-checkbox.cjs.entry.js +16 -8
- package/dist/cjs/pds-chip.cjs.entry.js +8 -8
- package/dist/cjs/pds-combobox.cjs.entry.js +43 -13
- package/dist/cjs/pds-container.cjs.entry.js +3 -3
- package/dist/cjs/pds-copytext.cjs.entry.js +7 -7
- package/dist/cjs/pds-datepicker.cjs.entry.js +6 -6
- 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 +34 -5
- package/dist/cjs/pds-dropdown-menu-separator.cjs.entry.js +3 -3
- package/dist/cjs/pds-dropdown-menu.cjs.entry.js +8 -8
- 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 +2 -2
- 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 +15 -6
- package/dist/cjs/pds-loader.cjs.entry.js +4 -4
- package/dist/cjs/pds-modal-content.cjs.entry.js +34 -32
- 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 +9 -9
- package/dist/cjs/pds-popover.cjs.entry.js +416 -163
- 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 +6 -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 +6 -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 +5 -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 +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-DO9xli2e.js → truncation-tooltip-O5nQmXPw.js} +32 -7
- 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 +42 -10
- 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 +36 -44
- package/dist/collection/components/pds-button/stories/pds-button.stories.js +3 -3
- 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 -2
- package/dist/collection/components/pds-combobox/pds-combobox.css +33 -0
- package/dist/collection/components/pds-combobox/pds-combobox.js +62 -9
- 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-datepicker/stories/pds-datepicker.stories.js +1 -1
- 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.css +8 -0
- package/dist/collection/components/pds-dropdown-menu/pds-dropdown-menu-item/pds-dropdown-menu-item.js +81 -7
- 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 +4 -4
- package/dist/collection/components/pds-dropdown-menu/stories/pds-dropdown-menu.stories.js +39 -0
- 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 +32 -30
- 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 +5 -85
- package/dist/collection/components/pds-modal/test/mock-pds-modal.js +1 -1
- package/dist/collection/components/pds-multiselect/pds-multiselect.js +5 -5
- package/dist/collection/components/pds-popover/pds-popover.css +6 -0
- package/dist/collection/components/pds-popover/pds-popover.js +465 -159
- package/dist/collection/components/pds-popover/stories/pds-popover.stories.js +31 -0
- 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 +4 -4
- 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-text/stories/pds-text.stories.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/collection/utils/truncation-tooltip.js +31 -6
- package/dist/docs.json +367 -13
- 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-BJXk71tO.js → index-m3pqpeWg.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 +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 +23 -13
- package/dist/esm/pds-box.entry.js +4 -4
- package/dist/esm/pds-button.entry.js +80 -45
- package/dist/esm/pds-checkbox.entry.js +16 -8
- package/dist/esm/pds-chip.entry.js +8 -8
- package/dist/esm/pds-combobox.entry.js +43 -13
- 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 +34 -5
- package/dist/esm/pds-dropdown-menu-separator.entry.js +3 -3
- package/dist/esm/pds-dropdown-menu.entry.js +8 -8
- 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 +34 -32
- 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 +9 -9
- package/dist/esm/pds-popover.entry.js +416 -163
- 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-DRXsdKk1.js → truncation-tooltip-D_gvhB9r.js} +32 -7
- 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-BJXk71tO.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-D_gvhB9r.js +1 -0
- 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-07b4524e.entry.js +1 -0
- package/dist/pine-core/{p-b60ac7eb.system.entry.js → p-08bbd3e6.system.entry.js} +1 -1
- package/dist/pine-core/{p-c5c9ed36.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-6d603d16.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-e803f629.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-e7a95a49.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-e8cb76e8.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-080cb087.system.entry.js → p-38b87aa2.system.entry.js} +1 -1
- package/dist/pine-core/{p-355e4cf9.entry.js → p-3afb1208.entry.js} +1 -1
- package/dist/pine-core/p-3b5b8f73.entry.js +1 -0
- package/dist/pine-core/{p-8c8cc079.system.entry.js → p-3cc19ea8.system.entry.js} +1 -1
- package/dist/pine-core/{p-bd67156b.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-5967d9fa.system.entry.js +1 -0
- package/dist/pine-core/{p-5870b092.system.entry.js → p-5c46553f.system.entry.js} +1 -1
- package/dist/pine-core/{p-f0d24298.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-bd26a5e8.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-1ee86d87.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-3a959459.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-88ff1604.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-89fefe36.entry.js +1 -0
- package/dist/pine-core/p-8b97dd57.system.entry.js +1 -0
- package/dist/pine-core/{p-0092444c.system.entry.js → p-9201b497.system.entry.js} +1 -1
- package/dist/pine-core/{p-ebd0bff2.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-cfc52b95.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-JtdHT_W5.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-D52aRqFx.system.js +1 -0
- package/dist/pine-core/p-DCKBKRUy.js +1 -0
- package/dist/pine-core/p-DXO1yd32.system.js +1 -0
- package/dist/pine-core/{p-n3_ytl_p.system.js → p-DaCT2ssj.system.js} +1 -1
- package/dist/pine-core/p-a2078add.entry.js +1 -0
- package/dist/pine-core/{p-97d0b89e.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-341c38f1.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-bdde1e53.entry.js +1 -0
- 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-c02a32ec.entry.js +1 -0
- package/dist/pine-core/p-c1da80e5.entry.js +1 -0
- package/dist/pine-core/{p-d8570b4b.system.entry.js → p-c233866c.system.entry.js} +1 -1
- package/dist/pine-core/{p-fc25b956.system.entry.js → p-cb560aab.system.entry.js} +1 -1
- package/dist/pine-core/{p-02088776.entry.js → p-ce554098.entry.js} +1 -1
- package/dist/pine-core/p-ced6a814.system.entry.js +1 -0
- package/dist/pine-core/{p-0a84d220.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-1437585e.system.entry.js → p-e1fdd53a.system.entry.js} +1 -1
- package/dist/pine-core/{p-4435fff6.system.entry.js → p-e70cb112.system.entry.js} +1 -1
- package/dist/pine-core/{p-01aa382c.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-cde8eb81.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-ff3de72e.entry.js → p-f2c487e6.entry.js} +1 -1
- package/dist/pine-core/p-f549f2bc.entry.js +1 -0
- package/dist/pine-core/p-fc743f6e.entry.js +1 -0
- package/dist/pine-core/{p-BJXk71tO.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 +5 -6
- 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 +20 -3
- package/dist/types/components/pds-link/pds-link.d.ts +8 -0
- package/dist/types/components/pds-modal/pds-modal-content/pds-modal-content.d.ts +2 -0
- package/dist/types/components/pds-popover/pds-popover.d.ts +87 -21
- 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 +139 -18
- package/dist/types/utils/aria-references.d.ts +24 -0
- package/dist/types/utils/tabbable.d.ts +2 -0
- package/dist/types/utils/truncation-tooltip.d.ts +4 -4
- package/dist/types/utils/types.d.ts +1 -0
- package/dist/vscode.html-data.json +129 -14
- package/hydrate/index.js +1040 -416
- package/hydrate/index.mjs +1040 -416
- package/package.json +2 -2
- package/dist/esm-es5/truncation-tooltip-DRXsdKk1.js +0 -1
- package/dist/pine-core/p-049f126a.entry.js +0 -1
- package/dist/pine-core/p-153ba77b.entry.js +0 -1
- package/dist/pine-core/p-208c7dbf.entry.js +0 -1
- package/dist/pine-core/p-258770cf.system.entry.js +0 -1
- package/dist/pine-core/p-2cb5483a.system.entry.js +0 -1
- package/dist/pine-core/p-432d5ec7.entry.js +0 -1
- package/dist/pine-core/p-5442d983.system.entry.js +0 -1
- package/dist/pine-core/p-576cf904.system.entry.js +0 -1
- package/dist/pine-core/p-5c90091e.system.entry.js +0 -1
- package/dist/pine-core/p-602c197f.entry.js +0 -1
- package/dist/pine-core/p-645a482b.system.entry.js +0 -1
- package/dist/pine-core/p-72865997.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-7bf6563a.system.entry.js +0 -1
- package/dist/pine-core/p-7fa66cad.entry.js +0 -1
- package/dist/pine-core/p-80a698ae.entry.js +0 -1
- package/dist/pine-core/p-82cf4ec6.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-8cc302aa.system.entry.js +0 -1
- package/dist/pine-core/p-8d292b48.entry.js +0 -1
- package/dist/pine-core/p-92ae6082.entry.js +0 -1
- package/dist/pine-core/p-94593f20.system.entry.js +0 -1
- package/dist/pine-core/p-993d1043.entry.js +0 -1
- package/dist/pine-core/p-99459e27.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-a19cd59c.entry.js +0 -1
- package/dist/pine-core/p-a787b34a.system.entry.js +0 -1
- package/dist/pine-core/p-a826f290.entry.js +0 -1
- package/dist/pine-core/p-aa032a5e.system.entry.js +0 -1
- package/dist/pine-core/p-acce8eb2.entry.js +0 -1
- package/dist/pine-core/p-b69f04b7.entry.js +0 -1
- package/dist/pine-core/p-bb68431a.entry.js +0 -1
- package/dist/pine-core/p-bb73ad66.entry.js +0 -2
- package/dist/pine-core/p-beb23781.entry.js +0 -1
- package/dist/pine-core/p-bf30dec0.entry.js +0 -1
- package/dist/pine-core/p-c36b490e.entry.js +0 -1
- package/dist/pine-core/p-c81d8ac8.entry.js +0 -1
- package/dist/pine-core/p-ca0d48e8.entry.js +0 -1
- package/dist/pine-core/p-cfd012d4.entry.js +0 -1
- package/dist/pine-core/p-e0917a26.entry.js +0 -1
- package/dist/pine-core/p-e836f3ec.system.entry.js +0 -3
- package/dist/pine-core/p-ea4d4741.system.entry.js +0 -1
- package/dist/pine-core/p-f2c253d8.entry.js +0 -1
- package/dist/pine-core/p-f474d7de.entry.js +0 -1
- package/dist/pine-core/p-f77905aa.system.entry.js +0 -1
- package/dist/pine-core/p-qhdoK1Jp.system.js +0 -1
|
@@ -6,9 +6,18 @@ export default {
|
|
|
6
6
|
args: {
|
|
7
7
|
popoverTargetAction: 'toggle',
|
|
8
8
|
popoverType: 'auto',
|
|
9
|
+
openOn: 'click',
|
|
9
10
|
placement: 'bottom-start',
|
|
11
|
+
padding: 'md',
|
|
10
12
|
componentId: 'popover-playground',
|
|
11
13
|
},
|
|
14
|
+
argTypes: {
|
|
15
|
+
padding: {
|
|
16
|
+
control: { type: 'select' },
|
|
17
|
+
options: ['none', 'xs', 'sm', 'md'],
|
|
18
|
+
},
|
|
19
|
+
openOn: { control: 'inline-radio', options: ['click', 'hover'] },
|
|
20
|
+
},
|
|
12
21
|
component: 'pds-popover',
|
|
13
22
|
parameters: {},
|
|
14
23
|
title: 'components/Popover'
|
|
@@ -19,8 +28,10 @@ const BaseTemplate = (args) => html`
|
|
|
19
28
|
component-id=${args.componentId}
|
|
20
29
|
popover-target-action=${args.popoverTargetAction}
|
|
21
30
|
popover-type=${args.popoverType}
|
|
31
|
+
open-on=${args.openOn}
|
|
22
32
|
placement=${args.placement}
|
|
23
33
|
.maxWidth=${args.maxWidth}
|
|
34
|
+
padding=${args.padding}
|
|
24
35
|
>
|
|
25
36
|
<pds-button slot="trigger">Show popover</pds-button>
|
|
26
37
|
<p>This is popover content that can be configured using the controls below.</p>
|
|
@@ -84,3 +95,23 @@ export const WithContent = (args) => html`
|
|
|
84
95
|
WithContent.args = {
|
|
85
96
|
componentId: 'popover-rich'
|
|
86
97
|
};
|
|
98
|
+
|
|
99
|
+
export const OpenOnHover = (args) => html`
|
|
100
|
+
<pds-popover
|
|
101
|
+
component-id=${args.componentId || 'popover-hover'}
|
|
102
|
+
open-on="hover"
|
|
103
|
+
popover-target-action=${args.popoverTargetAction}
|
|
104
|
+
popover-type=${args.popoverType}
|
|
105
|
+
placement=${args.placement}
|
|
106
|
+
.maxWidth=${args.maxWidth}
|
|
107
|
+
>
|
|
108
|
+
<pds-button slot="trigger" variant="secondary">Hover for details</pds-button>
|
|
109
|
+
<pds-box direction="column" gap="xs" fit="true">
|
|
110
|
+
<pds-text tag="h3" size="md" weight="semibold">Project summary</pds-text>
|
|
111
|
+
<pds-text tag="p" size="sm" color="secondary">Rest the pointer on the trigger to preview supporting details. Click the trigger to keep this open while you read.</pds-text>
|
|
112
|
+
</pds-box>
|
|
113
|
+
</pds-popover>
|
|
114
|
+
`;
|
|
115
|
+
OpenOnHover.args = {
|
|
116
|
+
componentId: 'popover-hover'
|
|
117
|
+
};
|
|
@@ -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
|
}
|
|
@@ -3,7 +3,7 @@ import { HostStylingKeeper } from "../../utils/attributes";
|
|
|
3
3
|
import { assignDescription, messageId, exposeTypeProperty } from "../../utils/form";
|
|
4
4
|
import { danger } from "@pine-ds/icons/icons";
|
|
5
5
|
/**
|
|
6
|
-
* @slot image - Custom image content to display instead of the default radio input
|
|
6
|
+
* @slot image - Custom image content to display instead of the default radio input. Ignored when `variant` is `pill`.
|
|
7
7
|
* @part image-container - The container for the image
|
|
8
8
|
* @lightDom renders-markup
|
|
9
9
|
*/
|
|
@@ -23,7 +23,7 @@ export class PdsRadio {
|
|
|
23
23
|
*/
|
|
24
24
|
this.disabled = false;
|
|
25
25
|
/**
|
|
26
|
-
* Adds a border around the radio component for better visual separation.
|
|
26
|
+
* Adds a border around the radio component for better visual separation. Ignored when `variant` is `pill`.
|
|
27
27
|
* @defaultValue false
|
|
28
28
|
*/
|
|
29
29
|
this.hasBorder = false;
|
|
@@ -37,6 +37,11 @@ export class PdsRadio {
|
|
|
37
37
|
* @defaultValue false
|
|
38
38
|
*/
|
|
39
39
|
this.required = false;
|
|
40
|
+
/**
|
|
41
|
+
* Sets the style variant of the radio. `pill` renders the label as a pill-shaped choice; the native input still handles keyboard, form, and screen reader behavior.
|
|
42
|
+
* @defaultValue default
|
|
43
|
+
*/
|
|
44
|
+
this.variant = 'default';
|
|
40
45
|
this.handleRadioChange = (e) => {
|
|
41
46
|
if (this.disabled) {
|
|
42
47
|
return;
|
|
@@ -58,6 +63,9 @@ export class PdsRadio {
|
|
|
58
63
|
hasImage() {
|
|
59
64
|
return this._hasImage;
|
|
60
65
|
}
|
|
66
|
+
isPill() {
|
|
67
|
+
return this.variant === 'pill';
|
|
68
|
+
}
|
|
61
69
|
classNames() {
|
|
62
70
|
const classNames = [];
|
|
63
71
|
if (this.invalid) {
|
|
@@ -66,10 +74,14 @@ export class PdsRadio {
|
|
|
66
74
|
if (this.disabled) {
|
|
67
75
|
classNames.push('is-disabled');
|
|
68
76
|
}
|
|
69
|
-
|
|
77
|
+
// A pill is its own bordered shape, so has-border doesn't stack a card around it.
|
|
78
|
+
if (this.hasBorder && !this.isPill()) {
|
|
70
79
|
classNames.push('has-border');
|
|
71
80
|
}
|
|
72
|
-
if (this.
|
|
81
|
+
if (this.isPill()) {
|
|
82
|
+
classNames.push('pds-radio--pill');
|
|
83
|
+
}
|
|
84
|
+
if (this.hasImage() && !this.isPill()) {
|
|
73
85
|
classNames.push('has-image');
|
|
74
86
|
}
|
|
75
87
|
return classNames.join(' ');
|
|
@@ -99,13 +111,14 @@ export class PdsRadio {
|
|
|
99
111
|
}
|
|
100
112
|
render() {
|
|
101
113
|
const renderLabelAndMessages = () => [
|
|
102
|
-
h("label", { htmlFor: this.componentId, key: `${this.componentId}-label` }, h("input", { key: '
|
|
114
|
+
h("label", { htmlFor: this.componentId, key: `${this.componentId}-label` }, h("input", { key: 'fdd83248666907fa25c5406cdedcd0e6f8d45f50', "aria-describedby": assignDescription(this.componentId, this.invalid, this.helperMessage, this.errorMessage), "aria-invalid": this.invalid ? "true" : undefined, type: "radio", id: this.componentId, name: this.name, value: this.value, checked: this.checked, required: this.required, disabled: this.disabled, onChange: this.handleRadioChange, class: this.hasImage() || this.isPill() ? 'visually-hidden' : '' }), h("span", { key: '73166ffd57cdb1f3b9e2b61fe880216b23a6510b', class: this.hideLabel && !this.isPill() ? 'visually-hidden' : '' }, this.label)),
|
|
103
115
|
this.helperMessage && (h("div", { key: `${this.componentId}-helper`, class: 'pds-radio__message', id: messageId(this.componentId, 'helper') }, this.helperMessage)),
|
|
104
|
-
this.errorMessage && (h("div", { key: `${this.componentId}-error`, class: `pds-radio__message pds-radio__message--error`, id: messageId(this.componentId, 'error'), "aria-live": "assertive" }, h("pds-icon", { key: '
|
|
116
|
+
this.errorMessage && (h("div", { key: `${this.componentId}-error`, class: `pds-radio__message pds-radio__message--error`, id: messageId(this.componentId, 'error'), "aria-live": "assertive" }, h("pds-icon", { key: 'e5bca81578382181b6fce61fa6830fd60e54234a', "aria-hidden": "true", icon: danger, size: "small" }), this.errorMessage))
|
|
105
117
|
];
|
|
106
118
|
const hostClass = this.classNames();
|
|
107
119
|
this.hostKeeper.record(hostClass);
|
|
108
|
-
|
|
120
|
+
const showImage = this.hasImage() && !this.isPill();
|
|
121
|
+
return (h(Host, { key: '4cf39a988cc7642234ff62e7fa2f0d08b09e7d25', class: hostClass }, showImage && (h("div", { key: '7a88d32f896ad4696ea46b13f9ef01e7df0a1c3e', class: "pds-radio__image-container", part: "image-container" }, h("slot", { key: 'eb8399263443d36ab91c0875602d0dc31f036058', name: "image", onSlotchange: () => (this._hasImage = this.hasImageSlot()) }))), showImage ? (h("div", { class: "pds-radio__content-wrapper" }, renderLabelAndMessages())) : (renderLabelAndMessages())));
|
|
109
122
|
}
|
|
110
123
|
static get is() { return "pds-radio"; }
|
|
111
124
|
static get encapsulation() { return "scoped"; }
|
|
@@ -239,7 +252,7 @@ export class PdsRadio {
|
|
|
239
252
|
"name": "defaultValue",
|
|
240
253
|
"text": "false"
|
|
241
254
|
}],
|
|
242
|
-
"text": "Adds a border around the radio component for better visual separation."
|
|
255
|
+
"text": "Adds a border around the radio component for better visual separation. Ignored when `variant` is `pill`."
|
|
243
256
|
},
|
|
244
257
|
"getter": false,
|
|
245
258
|
"setter": false,
|
|
@@ -301,7 +314,7 @@ export class PdsRadio {
|
|
|
301
314
|
"optional": false,
|
|
302
315
|
"docs": {
|
|
303
316
|
"tags": [],
|
|
304
|
-
"text": "Visually hides the label text for instances where only the radio should be displayed. Label remains accessible to assistive technology such as screen readers."
|
|
317
|
+
"text": "Visually hides the label text for instances where only the radio should be displayed. Label remains accessible to assistive technology such as screen readers. Ignored when `variant` is `pill`."
|
|
305
318
|
},
|
|
306
319
|
"getter": false,
|
|
307
320
|
"setter": false,
|
|
@@ -368,6 +381,29 @@ export class PdsRadio {
|
|
|
368
381
|
"setter": false,
|
|
369
382
|
"reflect": false,
|
|
370
383
|
"attribute": "value"
|
|
384
|
+
},
|
|
385
|
+
"variant": {
|
|
386
|
+
"type": "string",
|
|
387
|
+
"mutable": false,
|
|
388
|
+
"complexType": {
|
|
389
|
+
"original": "'default' | 'pill'",
|
|
390
|
+
"resolved": "\"default\" | \"pill\"",
|
|
391
|
+
"references": {}
|
|
392
|
+
},
|
|
393
|
+
"required": false,
|
|
394
|
+
"optional": false,
|
|
395
|
+
"docs": {
|
|
396
|
+
"tags": [{
|
|
397
|
+
"name": "defaultValue",
|
|
398
|
+
"text": "default"
|
|
399
|
+
}],
|
|
400
|
+
"text": "Sets the style variant of the radio. `pill` renders the label as a pill-shaped choice; the native input still handles keyboard, form, and screen reader behavior."
|
|
401
|
+
},
|
|
402
|
+
"getter": false,
|
|
403
|
+
"setter": false,
|
|
404
|
+
"reflect": false,
|
|
405
|
+
"attribute": "variant",
|
|
406
|
+
"defaultValue": "'default'"
|
|
371
407
|
}
|
|
372
408
|
};
|
|
373
409
|
}
|
|
@@ -10,6 +10,13 @@ export default {
|
|
|
10
10
|
invalid: false,
|
|
11
11
|
hideLabel: false,
|
|
12
12
|
required: false,
|
|
13
|
+
variant: 'default',
|
|
14
|
+
},
|
|
15
|
+
argTypes: {
|
|
16
|
+
variant: {
|
|
17
|
+
control: { type: 'select' },
|
|
18
|
+
options: ['default', 'pill'],
|
|
19
|
+
},
|
|
13
20
|
},
|
|
14
21
|
component: 'pds-radio',
|
|
15
22
|
parameters: {},
|
|
@@ -30,6 +37,7 @@ const BaseTemplate = (args) =>
|
|
|
30
37
|
?required=${args.required}
|
|
31
38
|
value=${args.value}
|
|
32
39
|
?invalid=${args.invalid}
|
|
40
|
+
variant=${args.variant}
|
|
33
41
|
/>`;
|
|
34
42
|
|
|
35
43
|
export const Default = BaseTemplate.bind();
|
|
@@ -101,3 +109,10 @@ WithImage.args = {
|
|
|
101
109
|
label: 'Option with image',
|
|
102
110
|
helperMessage: 'This radio includes an image using the image slot',
|
|
103
111
|
};
|
|
112
|
+
|
|
113
|
+
export const Pill = BaseTemplate.bind();
|
|
114
|
+
Pill.args = {
|
|
115
|
+
componentId: 'pill',
|
|
116
|
+
label: 'Label text',
|
|
117
|
+
variant: 'pill',
|
|
118
|
+
};
|
|
@@ -161,13 +161,13 @@ export class PdsRadioGroup {
|
|
|
161
161
|
render() {
|
|
162
162
|
const gapValue = this.getGapValue();
|
|
163
163
|
const ariaDescribedBy = this.getAriaDescribedBy();
|
|
164
|
-
return (h(Host, { key: '
|
|
164
|
+
return (h(Host, { key: 'aaf53113f06a0f49706e53735701fba64e79cb4d', class: this.classNames(), id: this._groupId, role: "group", "aria-describedby": ariaDescribedBy, style: {
|
|
165
165
|
'--pds-radio-group-gap': gapValue,
|
|
166
|
-
} }, this.groupLabel && (h("div", { key: '
|
|
166
|
+
} }, this.groupLabel && (h("div", { key: '4be5e43146bf348929e45498107862aaca161644', class: "pds-radio-group__label" }, this.groupLabel)), h("div", { key: 'b4a1b870c1a7167b8dcbcf0a11808bbd9a8cec4e', class: {
|
|
167
167
|
'pds-radio-group__radios': true,
|
|
168
168
|
'pds-radio-group__radios--row': this.direction === 'row',
|
|
169
169
|
'pds-radio-group__radios--column': this.direction === 'column',
|
|
170
|
-
} }, h("slot", { key: '
|
|
170
|
+
} }, h("slot", { key: '2d841cc69c35a4f9da933bbb33c1384ca343e077', onSlotchange: () => this.updateChildRadios() })), this.helperMessage && (h("div", { key: 'a09bb9e739570c06dc1907cb4e2dceecca36f7d3', class: "pds-radio-group__message", id: messageId(this._groupId, 'helper') }, this.helperMessage)), this.errorMessage && (h("div", { key: 'b8fe891cc4b8683d18c19b3b4ddb70212185b954', class: "pds-radio-group__message pds-radio-group__message--error", id: messageId(this._groupId, 'error'), "aria-live": "assertive" }, h("pds-icon", { key: '9a15d81d8303eeb5a928b96c760f6b15e536e0dc', "aria-hidden": "true", icon: danger, size: "small" }), this.errorMessage))));
|
|
171
171
|
}
|
|
172
172
|
static get is() { return "pds-radio-group"; }
|
|
173
173
|
static get encapsulation() { return "scoped"; }
|
|
@@ -132,3 +132,48 @@ Horizontal.args = {
|
|
|
132
132
|
name: 'horizontal-group',
|
|
133
133
|
};
|
|
134
134
|
|
|
135
|
+
|
|
136
|
+
const PillTemplate = (args) =>
|
|
137
|
+
html` <pds-radio-group
|
|
138
|
+
component-id=${args.componentId}
|
|
139
|
+
direction=${args.direction}
|
|
140
|
+
?disabled=${args.disabled}
|
|
141
|
+
error-message=${args.errorMessage}
|
|
142
|
+
helper-message=${args.helperMessage}
|
|
143
|
+
?invalid=${args.invalid}
|
|
144
|
+
group-label=${args.groupLabel}
|
|
145
|
+
name=${args.name}
|
|
146
|
+
?required=${args.required}
|
|
147
|
+
>
|
|
148
|
+
<pds-radio component-id="pill-solo" label="Just me" value="solo" variant="pill" checked></pds-radio>
|
|
149
|
+
<pds-radio component-id="pill-small" label="2-10 people" value="small" variant="pill"></pds-radio>
|
|
150
|
+
<pds-radio component-id="pill-medium" label="11-50 people" value="medium" variant="pill"></pds-radio>
|
|
151
|
+
<pds-radio component-id="pill-large" label="More than 50" value="large" variant="pill"></pds-radio>
|
|
152
|
+
</pds-radio-group>`;
|
|
153
|
+
|
|
154
|
+
export const Pill = PillTemplate.bind();
|
|
155
|
+
Pill.args = {
|
|
156
|
+
componentId: 'pill-group',
|
|
157
|
+
direction: 'row',
|
|
158
|
+
groupLabel: 'How big is your team?',
|
|
159
|
+
name: 'pill-group',
|
|
160
|
+
};
|
|
161
|
+
|
|
162
|
+
export const PillDisabled = PillTemplate.bind();
|
|
163
|
+
PillDisabled.args = {
|
|
164
|
+
componentId: 'pill-group-disabled',
|
|
165
|
+
direction: 'row',
|
|
166
|
+
disabled: true,
|
|
167
|
+
groupLabel: 'How big is your team?',
|
|
168
|
+
name: 'pill-group-disabled',
|
|
169
|
+
};
|
|
170
|
+
|
|
171
|
+
export const PillInvalid = PillTemplate.bind();
|
|
172
|
+
PillInvalid.args = {
|
|
173
|
+
componentId: 'pill-group-invalid',
|
|
174
|
+
direction: 'row',
|
|
175
|
+
errorMessage: 'Choose a team size to continue',
|
|
176
|
+
groupLabel: 'How big is your team?',
|
|
177
|
+
invalid: true,
|
|
178
|
+
name: 'pill-group-invalid',
|
|
179
|
+
};
|
|
@@ -67,7 +67,7 @@ export class PdsRow {
|
|
|
67
67
|
'min-height': this.minHeight,
|
|
68
68
|
}));
|
|
69
69
|
this.hostKeeper.record(`pds-row ${rowClasses}`, rowInlineStyles);
|
|
70
|
-
return h(Host, { key: '
|
|
70
|
+
return h(Host, { key: '589ee3251a4ee1d7824c8e2fa3e214de5466c3db', class: `pds-row ${rowClasses}`, style: rowInlineStyles });
|
|
71
71
|
}
|
|
72
72
|
static get is() { return "pds-row"; }
|
|
73
73
|
static get originalStyleUrls() {
|
|
@@ -2,12 +2,34 @@ import { Host, h } from "@stencil/core";
|
|
|
2
2
|
import { HostStylingKeeper } from "../../utils/attributes";
|
|
3
3
|
import { assignDescription, isSpecTest, messageId, exposeTypeProperty } from "../../utils/form";
|
|
4
4
|
import { danger, enlarge } from "@pine-ds/icons/icons";
|
|
5
|
+
/** The tags of an option list in order, optgroup contents included: equal shapes can be patched in place. */
|
|
6
|
+
const shapeOf = (items) => items.map((item) => item.tagName + (item.tagName === 'OPTGROUP' ? `(${shapeOf(Array.from(item.children))})` : '')).join();
|
|
7
|
+
/** Brings an existing option or optgroup up to date with its copy, keeping the element itself. */
|
|
8
|
+
const patchInPlace = (target, copy) => {
|
|
9
|
+
Array.from(target.attributes).forEach(({ name }) => {
|
|
10
|
+
if (!copy.hasAttribute(name))
|
|
11
|
+
target.removeAttribute(name);
|
|
12
|
+
});
|
|
13
|
+
Array.from(copy.attributes).forEach(({ name, value }) => {
|
|
14
|
+
if (target.getAttribute(name) !== value)
|
|
15
|
+
target.setAttribute(name, value);
|
|
16
|
+
});
|
|
17
|
+
if (copy.tagName === 'OPTGROUP') {
|
|
18
|
+
Array.from(copy.children).forEach((child, index) => patchInPlace(target.children[index], child));
|
|
19
|
+
}
|
|
20
|
+
else if (target.textContent !== copy.textContent) {
|
|
21
|
+
target.textContent = copy.textContent;
|
|
22
|
+
}
|
|
23
|
+
};
|
|
5
24
|
/**
|
|
6
25
|
* @slot action - Content to be displayed in the label area, typically for help icons or links
|
|
7
26
|
*/
|
|
8
27
|
export class PdsSelect {
|
|
9
28
|
constructor() {
|
|
10
29
|
this._type = 'select-one';
|
|
30
|
+
this.optionObserver = null;
|
|
31
|
+
this.optionSyncFrame = null;
|
|
32
|
+
this.hasHadOptions = false;
|
|
11
33
|
this.hostKeeper = new HostStylingKeeper();
|
|
12
34
|
/**
|
|
13
35
|
* Indicates whether or not the select field is disabled.
|
|
@@ -24,6 +46,16 @@ export class PdsSelect {
|
|
|
24
46
|
* @defaultValue false
|
|
25
47
|
*/
|
|
26
48
|
this.required = false;
|
|
49
|
+
/**
|
|
50
|
+
* Whether a mutation is inside an option or optgroup. The host's own attributes and children
|
|
51
|
+
* (top-level adds and removes reach `slotchange`) and the action slot's content are not.
|
|
52
|
+
*/
|
|
53
|
+
this.touchesOption = ({ target }) => {
|
|
54
|
+
// Not just TEXT_NODE: characterData also reports comment nodes, and a Comment has no
|
|
55
|
+
// .closest() — treating anything non-Element as a Text node crashed on one.
|
|
56
|
+
const element = target.nodeType === Node.ELEMENT_NODE ? target : target.parentElement;
|
|
57
|
+
return target !== this.el && (element === null || element === void 0 ? void 0 : element.closest('option, optgroup')) != null;
|
|
58
|
+
};
|
|
27
59
|
/**
|
|
28
60
|
* Emits an event on input change.
|
|
29
61
|
*/
|
|
@@ -50,25 +82,47 @@ export class PdsSelect {
|
|
|
50
82
|
this.pdsKeyDown.emit(ev);
|
|
51
83
|
};
|
|
52
84
|
/**
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
*
|
|
85
|
+
* Copies the slotted <option> and <optgroup> elements into the inner select, then
|
|
86
|
+
* reselects the current value. Runs on `slotchange` and when a slotted option changes
|
|
87
|
+
* (see startOptionSync).
|
|
88
|
+
*
|
|
89
|
+
* Nothing happens when the copies match what the select already holds. When only text or
|
|
90
|
+
* attributes changed, the select's own options are updated in place rather than replaced,
|
|
91
|
+
* so an open picker keeps its highlight, a multiple select keeps its range anchor, and a
|
|
92
|
+
* screen reader keeps its place. Selecting programmatically fires no change event, so a
|
|
93
|
+
* copy never emits `pdsSelectChange`.
|
|
57
94
|
*/
|
|
58
95
|
this.handleSlotChange = () => {
|
|
59
|
-
|
|
60
|
-
this.
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
96
|
+
var _a;
|
|
97
|
+
const slot = (_a = this.slotContainer) === null || _a === void 0 ? void 0 : _a.querySelector('slot');
|
|
98
|
+
if (slot === null || slot === undefined || this.selectEl === undefined)
|
|
99
|
+
return;
|
|
100
|
+
const copies = slot.assignedElements({ flatten: true })
|
|
101
|
+
.filter((item) => ['OPTION', 'OPTGROUP'].includes(item.tagName))
|
|
102
|
+
.map((item) => item.cloneNode(true));
|
|
103
|
+
const current = Array.from(this.selectEl.children);
|
|
104
|
+
// The very first copy populates an empty select, where falling back to the first option (like
|
|
105
|
+
// a native select) is correct; the no-match blank state is for options changing under a value
|
|
106
|
+
// that was already showing selected. Tracked separately from the select's current emptiness:
|
|
107
|
+
// an async reload that clears options before the next set lands would otherwise look like a
|
|
108
|
+
// first render again, and the no-match state must still apply once that next set arrives.
|
|
109
|
+
const hadOptions = this.hasHadOptions;
|
|
110
|
+
if (copies.length > 0)
|
|
111
|
+
this.hasHadOptions = true;
|
|
112
|
+
const markup = (items) => items.map((item) => item.outerHTML).join('');
|
|
113
|
+
if (markup(copies) === markup(current))
|
|
114
|
+
return;
|
|
115
|
+
if (shapeOf(copies) === shapeOf(current)) {
|
|
116
|
+
copies.forEach((copy, index) => patchInPlace(current[index], copy));
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
this.selectEl.innerHTML = '';
|
|
120
|
+
copies.forEach((copy) => this.selectEl.appendChild(copy));
|
|
121
|
+
}
|
|
71
122
|
this.updateSelectedOption();
|
|
123
|
+
if (hadOptions)
|
|
124
|
+
this.showNoSelectionWithoutMatch();
|
|
125
|
+
this.updateFormValue();
|
|
72
126
|
};
|
|
73
127
|
}
|
|
74
128
|
/**
|
|
@@ -97,9 +151,16 @@ export class PdsSelect {
|
|
|
97
151
|
}
|
|
98
152
|
// Expose type property on the element instance to match native form element behavior
|
|
99
153
|
exposeTypeProperty(this.el, () => this._type);
|
|
154
|
+
// Reconnected after a move: componentDidLoad won't run again, and options may have changed
|
|
155
|
+
// while it was out of the document.
|
|
156
|
+
if (this.selectEl !== undefined) {
|
|
157
|
+
this.startOptionSync();
|
|
158
|
+
this.scheduleOptionSync();
|
|
159
|
+
}
|
|
100
160
|
}
|
|
101
161
|
disconnectedCallback() {
|
|
102
162
|
this.hostKeeper.disconnect();
|
|
163
|
+
this.stopOptionSync();
|
|
103
164
|
}
|
|
104
165
|
componentWillLoad() {
|
|
105
166
|
// Set initial type based on multiple prop
|
|
@@ -109,6 +170,43 @@ export class PdsSelect {
|
|
|
109
170
|
componentDidLoad() {
|
|
110
171
|
// Set initial form value
|
|
111
172
|
this.updateFormValue();
|
|
173
|
+
// Stencil holds componentDidLoad until the shadow root's pds-icon has loaded, so options can
|
|
174
|
+
// change between the first slotchange copy and here with nothing observing yet — the same gap
|
|
175
|
+
// the reconnect path closes with a catch-up sync.
|
|
176
|
+
this.startOptionSync();
|
|
177
|
+
this.scheduleOptionSync();
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Keeps the inner select in step with the slotted options. `slotchange` only fires when
|
|
181
|
+
* top-level options are added or removed, so an option's text, value or disabled state
|
|
182
|
+
* changing, or an option added inside an optgroup, would otherwise never reach the select.
|
|
183
|
+
* Changes are batched into one copy per animation frame.
|
|
184
|
+
*/
|
|
185
|
+
startOptionSync() {
|
|
186
|
+
if (this.optionObserver !== null || typeof MutationObserver === 'undefined' || !this.el.isConnected)
|
|
187
|
+
return;
|
|
188
|
+
this.optionObserver = new MutationObserver((mutations) => {
|
|
189
|
+
if (mutations.some(this.touchesOption))
|
|
190
|
+
this.scheduleOptionSync();
|
|
191
|
+
});
|
|
192
|
+
this.optionObserver.observe(this.el, { childList: true, subtree: true, attributes: true, characterData: true });
|
|
193
|
+
}
|
|
194
|
+
scheduleOptionSync() {
|
|
195
|
+
if (this.optionSyncFrame !== null)
|
|
196
|
+
return;
|
|
197
|
+
this.optionSyncFrame = requestAnimationFrame(() => {
|
|
198
|
+
this.optionSyncFrame = null;
|
|
199
|
+
this.handleSlotChange();
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
stopOptionSync() {
|
|
203
|
+
var _a;
|
|
204
|
+
(_a = this.optionObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
|
|
205
|
+
this.optionObserver = null;
|
|
206
|
+
if (this.optionSyncFrame !== null) {
|
|
207
|
+
cancelAnimationFrame(this.optionSyncFrame);
|
|
208
|
+
this.optionSyncFrame = null;
|
|
209
|
+
}
|
|
112
210
|
}
|
|
113
211
|
/**
|
|
114
212
|
* Updates the selected option in the select element based on the current value.
|
|
@@ -135,6 +233,19 @@ export class PdsSelect {
|
|
|
135
233
|
}
|
|
136
234
|
;
|
|
137
235
|
}
|
|
236
|
+
/**
|
|
237
|
+
* After a copy that changes an existing option set, a value whose option was renamed or removed
|
|
238
|
+
* has nothing to select. Like a native select, show nothing selected rather than the first
|
|
239
|
+
* option; the value itself is kept, with no change event.
|
|
240
|
+
*/
|
|
241
|
+
showNoSelectionWithoutMatch() {
|
|
242
|
+
var _a;
|
|
243
|
+
const wanted = [].concat((_a = this.value) !== null && _a !== void 0 ? _a : []).filter((value) => value !== '');
|
|
244
|
+
const options = Array.from(this.selectEl.options);
|
|
245
|
+
if (wanted.length > 0 && !options.some((option) => wanted.includes(option.value))) {
|
|
246
|
+
this.selectEl.selectedIndex = -1;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
138
249
|
getHelperMessage() {
|
|
139
250
|
return this.helperMessage && (h("p", { class: "pds-select__helper-message", id: messageId(this.componentId, 'helper') }, this.helperMessage));
|
|
140
251
|
}
|
|
@@ -240,7 +351,7 @@ export class PdsSelect {
|
|
|
240
351
|
'has-action': hasAction && !this.hideLabel ? 'true' : null,
|
|
241
352
|
};
|
|
242
353
|
this.hostKeeper.record(hostClass, {}, hostAttributes);
|
|
243
|
-
return (h(Host, Object.assign({ key: '
|
|
354
|
+
return (h(Host, Object.assign({ key: '37c2c3b72c13c3c4e3d81da29ddddc86a7300d70', class: hostClass }, hostAttributes), h("div", { key: 'ff1c311dca6fc25813e5473d0e8daff4dc12e807', class: "pds-select" }, !this.hideLabel && (h("div", { key: '77db17b0beb1fefabb26ffe1df0e5f03a0515996', class: "pds-select__label-wrapper" }, h("label", { key: 'c4dcba3bc148aada4a3afcca0a30c64a630e441f', htmlFor: this.componentId }, h("span", { key: '0fc3424ec1961d3b216c0fabb80cb8acee37f1a2', class: this.hideLabel ? 'visually-hidden' : '' }, this.label)), hasAction && this.renderAction())), h("select", { key: 'ff343a6653ccd081021cb669a428c780d0162e8b', "aria-describedby": assignDescription(this.componentId, this.isInvalid(), this.helperMessage, this.errorMessage), "aria-invalid": this.isInvalid() ? 'true' : undefined, "aria-label": this.hideLabel ? this.label : undefined, autocomplete: this.autocomplete || undefined, class: "pds-select__field", disabled: this.disabled, id: this.componentId, multiple: this.multiple, name: this.name, onBlur: this.onBlur, onChange: this.onSelectUpdate, onFocus: this.onFocus, onKeyDown: this.onKeyDown, part: "select", required: this.required, ref: (el) => (this.selectEl = el) }), h("div", { key: '86fed1916c3b13d079492581a7c6bb621012a4a5', "aria-hidden": "true", class: "hidden", ref: (el) => (this.slotContainer = el) }, h("slot", { key: 'abe06eeef5be13b716573c8a806d6b7795edc65f', onSlotchange: this.handleSlotChange })), this.renderMessages(), !this.multiple && h("pds-icon", { key: '68c958666828f77114f2edeedb667070106046fa', "aria-hidden": "true", class: "pds-select__select-icon", icon: enlarge }))));
|
|
244
355
|
}
|
|
245
356
|
static get is() { return "pds-select"; }
|
|
246
357
|
static get encapsulation() { return "shadow"; }
|
|
@@ -198,8 +198,8 @@ export const withActionButton = (args) => html`<pds-select
|
|
|
198
198
|
?required=${args.required}
|
|
199
199
|
type="${args.type}"
|
|
200
200
|
value="${args.value}">
|
|
201
|
-
<pds-button slot="action" variant="unstyled">
|
|
202
|
-
<pds-icon name="question-circle"></pds-icon>
|
|
201
|
+
<pds-button slot="action" variant="unstyled" aria-label="Help with country">
|
|
202
|
+
<pds-icon name="question-circle" aria-hidden="true"></pds-icon>
|
|
203
203
|
</pds-button>
|
|
204
204
|
${options.map((option) => html`<option value="${option.value}">${option.label}</option>`)}
|
|
205
205
|
</pds-select>`;
|
|
@@ -48,7 +48,7 @@ export class PdsSortableItem {
|
|
|
48
48
|
}
|
|
49
49
|
render() {
|
|
50
50
|
this.hostKeeper.record('pds-sortable-item');
|
|
51
|
-
return (h(Host, { key: '
|
|
51
|
+
return (h(Host, { key: 'c6b5402a54179d4e7caed3cc81874977d2d6c677', class: "pds-sortable-item", id: this.componentId }, this.showHandle && (h("div", { key: 'cd2d85286bcb3e47f76e4571d609d91f932b717b', class: "pds-sortable-item__handle" }, h("pds-icon", { key: '97e2e155283d86921f40198637abf596d6cc86e0', "aria-hidden": "true", icon: handleIcon }))), h("slot", { key: '99743c8e5be45ca76f276b47688843a621c8ded5' }), this.enableActions && (h("div", { key: '7cb1a8b99658d72067ccae036b2bc0276b8cf02e', class: "pds-sortable-item__actions" }, h("slot", { key: 'f9b3b7d1cc10ac077f65ec2cafac7a372deae511', name: "sortable-item-actions" })))));
|
|
52
52
|
}
|
|
53
53
|
static get is() { return "pds-sortable-item"; }
|
|
54
54
|
static get encapsulation() { return "scoped"; }
|
|
@@ -70,7 +70,7 @@ export class PdsSortable {
|
|
|
70
70
|
render() {
|
|
71
71
|
const classNames = this.classNames();
|
|
72
72
|
this.hostKeeper.record(classNames);
|
|
73
|
-
return (h(Host, { key: '
|
|
73
|
+
return (h(Host, { key: '6e9e7b769f57ebfd81541fbecbe17b3fb4ad3e47', class: classNames, id: this.componentId }, h("slot", { key: 'c9466a216862c0a3e578f3fcfc1ac1e26146722b' })));
|
|
74
74
|
}
|
|
75
75
|
static get is() { return "pds-sortable"; }
|
|
76
76
|
static get encapsulation() { return "scoped"; }
|
|
@@ -113,9 +113,9 @@ export class PdsSwitch {
|
|
|
113
113
|
const hostClass = this.switchClassNames();
|
|
114
114
|
const ariaDisabled = this.disabled ? 'true' : null;
|
|
115
115
|
this.hostKeeper.record(hostClass, {}, { 'aria-disabled': ariaDisabled });
|
|
116
|
-
return (h(Host, { key: '
|
|
117
|
-
h("div", { key: '
|
|
118
|
-
h("div", { key: '
|
|
116
|
+
return (h(Host, { key: '0fa5beb83232b381ea5cdfa82d143afcb69eb4e1', class: hostClass, "aria-disabled": ariaDisabled }, h("label", { key: 'df5d08344d11cb334ef69a432d1c02557caacc96', htmlFor: this.componentId }, h("input", Object.assign({ key: '6908b328f0e2da2085ffbffe0d1e4d09f2c6fd86', "aria-describedby": assignDescription(this.componentId, this.invalid, this.helperMessage, this.errorMessage), "aria-invalid": this.invalid ? "true" : undefined, checked: this.checked, class: "pds-switch__input", disabled: this.disabled, id: this.componentId, name: this.name ? this.name : this.componentId, onChange: this.onSwitchUpdate, required: this.required, type: "checkbox", value: this.value }, this.inheritedAttributes)), h("span", { key: '1108ab3eae63a371f9e9b80f011211cba8287b67', class: this.hideLabel ? 'visually-hidden' : '' }, h("slot", { key: '8aac1d9b81deab92e1e27c06debf2b87bc697874', name: "label", onSlotchange: this.updateHasLabelSlot }), !this.hasLabelSlot && this.label)), this.helperMessage &&
|
|
117
|
+
h("div", { key: 'ef829fb6bc66060805a144995f60e2bebb915615', class: `pds-switch__message`, id: messageId(this.componentId, 'helper') }, this.helperMessage), this.errorMessage &&
|
|
118
|
+
h("div", { key: '42ad678cc2179b4a26ed09151de41c2293b98011', class: `pds-switch__message pds-switch__message--error`, id: messageId(this.componentId, 'error'), "aria-live": "assertive" }, h("pds-icon", { key: '8dc0b29b522247762010edb3b1e8e5fc8c8788fa', "aria-hidden": "true", icon: danger, size: "small" }), this.errorMessage)));
|
|
119
119
|
}
|
|
120
120
|
static get is() { return "pds-switch"; }
|
|
121
121
|
static get encapsulation() { return "shadow"; }
|