@postnord/pn-marketweb-components 3.5.2 → 3.5.3
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/cjs/alert_exclamation_circle-24f29a5b.js +8 -0
- package/cjs/alert_exclamation_circle-24f29a5b.js.map +1 -0
- package/cjs/loader.cjs.js +1 -1
- package/cjs/pn-address-autofill.cjs.entry.js +47 -72
- package/cjs/pn-address-autofill.cjs.entry.js.map +1 -1
- package/cjs/pn-dropdown-choice-adds-row.cjs.entry.js +18 -6
- package/cjs/pn-dropdown-choice-adds-row.cjs.entry.js.map +1 -1
- package/cjs/pn-market-web-components.cjs.js +1 -1
- package/cjs/pn-marketweb-input.cjs.entry.js +2 -4
- package/cjs/pn-marketweb-input.cjs.entry.js.map +1 -1
- package/collection/components/input/pn-address-autofill/pn-address-autofill.css +6 -1
- package/collection/components/input/pn-address-autofill/pn-address-autofill.js +58 -68
- package/collection/components/input/pn-address-autofill/pn-address-autofill.js.map +1 -1
- package/collection/components/input/pn-address-autofill/pn-address-autofill.stories.js +2 -1
- package/collection/components/input/pn-address-autofill/translations.js +6 -3
- package/collection/components/input/pn-address-autofill/translations.js.map +1 -1
- package/collection/components/input/pn-dropdown-choice-adds-row/pn-dropdown-choice-adds-row.js +18 -6
- package/collection/components/input/pn-dropdown-choice-adds-row/pn-dropdown-choice-adds-row.js.map +1 -1
- package/components/alert_exclamation_circle.js +6 -0
- package/components/alert_exclamation_circle.js.map +1 -0
- package/components/pn-address-autofill.js +48 -72
- package/components/pn-address-autofill.js.map +1 -1
- package/components/pn-dropdown-choice-adds-row.js +18 -6
- package/components/pn-dropdown-choice-adds-row.js.map +1 -1
- package/components/pn-marketweb-input2.js +1 -3
- package/components/pn-marketweb-input2.js.map +1 -1
- package/esm/alert_exclamation_circle-f0fe7c7b.js +6 -0
- package/esm/alert_exclamation_circle-f0fe7c7b.js.map +1 -0
- package/esm/loader.js +1 -1
- package/esm/pn-address-autofill.entry.js +47 -72
- package/esm/pn-address-autofill.entry.js.map +1 -1
- package/esm/pn-dropdown-choice-adds-row.entry.js +18 -6
- package/esm/pn-dropdown-choice-adds-row.entry.js.map +1 -1
- package/esm/pn-market-web-components.js +1 -1
- package/esm/pn-marketweb-input.entry.js +1 -3
- package/esm/pn-marketweb-input.entry.js.map +1 -1
- package/package.json +1 -1
- package/pn-market-web-components/p-0ac30ee9.entry.js +2 -0
- package/pn-market-web-components/p-0ac30ee9.entry.js.map +1 -0
- package/pn-market-web-components/p-15d70aaf.entry.js +2 -0
- package/pn-market-web-components/p-15d70aaf.entry.js.map +1 -0
- package/pn-market-web-components/p-76c2c01f.js +2 -0
- package/pn-market-web-components/p-76c2c01f.js.map +1 -0
- package/pn-market-web-components/p-a11fdf9f.entry.js +2 -0
- package/pn-market-web-components/p-a11fdf9f.entry.js.map +1 -0
- package/pn-market-web-components/pn-market-web-components.esm.js +1 -1
- package/pn-market-web-components/pn-market-web-components.esm.js.map +1 -1
- package/types/components/input/pn-address-autofill/pn-address-autofill.d.ts +2 -3
- package/types/components/input/pn-address-autofill/translations.d.ts +3 -0
- package/types/components.d.ts +2 -0
- package/umd/modules/@postnord/web-components/cjs/{angle_down-0b63ebde.js → chevron_down-83e72319.js} +3 -3
- package/umd/modules/@postnord/web-components/cjs/chevron_down-83e72319.js.map +1 -0
- package/umd/modules/@postnord/web-components/cjs/{angle_right-c8c55b43.js → chevron_right-aeb6aef3.js} +5 -5
- package/umd/modules/@postnord/web-components/cjs/chevron_right-aeb6aef3.js.map +1 -0
- package/umd/modules/@postnord/web-components/cjs/loader.cjs.js +1 -1
- package/umd/modules/@postnord/web-components/cjs/pn-accordion-row.cjs.entry.js +2 -2
- package/umd/modules/@postnord/web-components/cjs/pn-accordion-row.cjs.entry.js.map +1 -1
- package/umd/modules/@postnord/web-components/cjs/pn-action-menu.cjs.entry.js +42 -12
- package/umd/modules/@postnord/web-components/cjs/pn-action-menu.cjs.entry.js.map +1 -1
- package/umd/modules/@postnord/web-components/cjs/pn-button_2.cjs.entry.js +1 -1
- package/umd/modules/@postnord/web-components/cjs/pn-card.cjs.entry.js +1 -1
- package/umd/modules/@postnord/web-components/cjs/pn-checkbox.cjs.entry.js +1 -1
- package/umd/modules/@postnord/web-components/cjs/pn-choice-chip.cjs.entry.js +1 -1
- package/umd/modules/@postnord/web-components/cjs/pn-counter.cjs.entry.js +1 -1
- package/umd/modules/@postnord/web-components/cjs/pn-date-picker.cjs.entry.js +22 -6
- package/umd/modules/@postnord/web-components/cjs/pn-date-picker.cjs.entry.js.map +1 -1
- package/umd/modules/@postnord/web-components/cjs/pn-fieldset.cjs.entry.js +1 -1
- package/umd/modules/@postnord/web-components/cjs/pn-file-upload.cjs.entry.js +1 -1
- package/umd/modules/@postnord/web-components/cjs/pn-footer.cjs.entry.js +1 -1
- package/umd/modules/@postnord/web-components/cjs/pn-header.cjs.entry.js +1 -1
- package/umd/modules/@postnord/web-components/cjs/pn-input.cjs.entry.js +2 -2
- package/umd/modules/@postnord/web-components/cjs/pn-modal.cjs.entry.js +21 -7
- package/umd/modules/@postnord/web-components/cjs/pn-modal.cjs.entry.js.map +1 -1
- package/umd/modules/@postnord/web-components/cjs/pn-multiselect.cjs.entry.js +2 -2
- package/umd/modules/@postnord/web-components/cjs/pn-multiselect.cjs.entry.js.map +1 -1
- package/umd/modules/@postnord/web-components/cjs/pn-ocr-search.cjs.entry.js +1 -1
- package/umd/modules/@postnord/web-components/cjs/pn-page-nav-dropdown-item.cjs.entry.js +1 -1
- package/umd/modules/@postnord/web-components/cjs/pn-page-nav-item.cjs.entry.js +1 -1
- package/umd/modules/@postnord/web-components/cjs/pn-page-nav.cjs.entry.js +2 -2
- package/umd/modules/@postnord/web-components/cjs/pn-page-nav.cjs.entry.js.map +1 -1
- package/umd/modules/@postnord/web-components/cjs/pn-pagination.cjs.entry.js +1 -1
- package/umd/modules/@postnord/web-components/cjs/pn-progress-bar.cjs.entry.js +1 -1
- package/umd/modules/@postnord/web-components/cjs/pn-progress-indicator-step.cjs.entry.js +1 -1
- package/umd/modules/@postnord/web-components/cjs/pn-progress-indicator-step.cjs.entry.js.map +1 -1
- package/umd/modules/@postnord/web-components/cjs/pn-progress-indicator.cjs.entry.js +1 -1
- package/umd/modules/@postnord/web-components/cjs/pn-progress-indicator.cjs.entry.js.map +1 -1
- package/umd/modules/@postnord/web-components/cjs/pn-progress-stepper.cjs.entry.js +26 -41
- package/umd/modules/@postnord/web-components/cjs/pn-progress-stepper.cjs.entry.js.map +1 -1
- package/umd/modules/@postnord/web-components/cjs/pn-radio-button.cjs.entry.js +1 -1
- package/umd/modules/@postnord/web-components/cjs/pn-search-field.cjs.entry.js +1 -1
- package/umd/modules/@postnord/web-components/cjs/pn-segment.cjs.entry.js +1 -1
- package/umd/modules/@postnord/web-components/cjs/pn-segmented-control.cjs.entry.js +1 -1
- package/umd/modules/@postnord/web-components/cjs/pn-select.cjs.entry.js +2 -2
- package/umd/modules/@postnord/web-components/cjs/pn-select.cjs.entry.js.map +1 -1
- package/umd/modules/@postnord/web-components/cjs/pn-tab.cjs.entry.js +1 -1
- package/umd/modules/@postnord/web-components/cjs/pn-tablist.cjs.entry.js +2 -2
- package/umd/modules/@postnord/web-components/cjs/pn-tablist.cjs.entry.js.map +1 -1
- package/umd/modules/@postnord/web-components/cjs/pn-text-link.cjs.entry.js +1 -1
- package/umd/modules/@postnord/web-components/cjs/pn-textarea.cjs.entry.js +1 -1
- package/umd/modules/@postnord/web-components/cjs/pn-tile.cjs.entry.js +1 -1
- package/umd/modules/@postnord/web-components/cjs/pn-toast.cjs.entry.js +25 -16
- package/umd/modules/@postnord/web-components/cjs/pn-toast.cjs.entry.js.map +1 -1
- package/umd/modules/@postnord/web-components/cjs/pn-toggle-switch.cjs.entry.js +1 -1
- package/umd/modules/@postnord/web-components/cjs/pn-tooltip.cjs.entry.js +1 -1
- package/umd/modules/@postnord/web-components/cjs/pn-zipcode-search.cjs.entry.js +1 -1
- package/umd/modules/@postnord/web-components/cjs/postnord-web-components.cjs.js +1 -1
- package/umd/modules/@postnord/web-components/collection/components/buttons/pn-action-menu/pn-action-menu.js +41 -11
- package/umd/modules/@postnord/web-components/collection/components/buttons/pn-action-menu/pn-action-menu.js.map +1 -1
- package/umd/modules/@postnord/web-components/collection/components/content/pn-accordion/row/pn-accordion-row.js +2 -2
- package/umd/modules/@postnord/web-components/collection/components/content/pn-accordion/row/pn-accordion-row.js.map +1 -1
- package/umd/modules/@postnord/web-components/collection/components/feedback/pn-modal/pn-modal.css +92 -40
- package/umd/modules/@postnord/web-components/collection/components/feedback/pn-modal/pn-modal.js +35 -9
- package/umd/modules/@postnord/web-components/collection/components/feedback/pn-modal/pn-modal.js.map +1 -1
- package/umd/modules/@postnord/web-components/collection/components/feedback/pn-progress-bar/pn-progress-bar.js +1 -1
- package/umd/modules/@postnord/web-components/collection/components/feedback/pn-progress-indicator/pn-progress-indicator-step/pn-progress-indicator-step.js +5 -1
- package/umd/modules/@postnord/web-components/collection/components/feedback/pn-progress-indicator/pn-progress-indicator-step/pn-progress-indicator-step.js.map +1 -1
- package/umd/modules/@postnord/web-components/collection/components/feedback/pn-progress-indicator/pn-progress-indicator.js +5 -1
- package/umd/modules/@postnord/web-components/collection/components/feedback/pn-progress-indicator/pn-progress-indicator.js.map +1 -1
- package/umd/modules/@postnord/web-components/collection/components/feedback/pn-progress-stepper/pn-progress-stepper.css +85 -9
- package/umd/modules/@postnord/web-components/collection/components/feedback/pn-progress-stepper/pn-progress-stepper.js +100 -97
- package/umd/modules/@postnord/web-components/collection/components/feedback/pn-progress-stepper/pn-progress-stepper.js.map +1 -1
- package/umd/modules/@postnord/web-components/collection/components/feedback/pn-spinner/pn-spinner.js +1 -1
- package/umd/modules/@postnord/web-components/collection/components/feedback/pn-toast/pn-toast.css +0 -1
- package/umd/modules/@postnord/web-components/collection/components/feedback/pn-toast/pn-toast.js +24 -15
- package/umd/modules/@postnord/web-components/collection/components/feedback/pn-toast/pn-toast.js.map +1 -1
- package/umd/modules/@postnord/web-components/collection/components/feedback/pn-tooltip/pn-tooltip.js +1 -1
- package/umd/modules/@postnord/web-components/collection/components/input/pn-checkbox/pn-checkbox.js +1 -1
- package/umd/modules/@postnord/web-components/collection/components/input/pn-choice-chip/pn-choice-chip.js +1 -1
- package/umd/modules/@postnord/web-components/collection/components/input/pn-counter/pn-counter.js +1 -1
- package/umd/modules/@postnord/web-components/collection/components/input/pn-date-picker/pn-date-picker.css +2 -3
- package/umd/modules/@postnord/web-components/collection/components/input/pn-date-picker/pn-date-picker.js +22 -6
- package/umd/modules/@postnord/web-components/collection/components/input/pn-date-picker/pn-date-picker.js.map +1 -1
- package/umd/modules/@postnord/web-components/collection/components/input/pn-fieldset/pn-fieldset.js +1 -1
- package/umd/modules/@postnord/web-components/collection/components/input/pn-file-upload/pn-file-upload.js +1 -1
- package/umd/modules/@postnord/web-components/collection/components/input/pn-input/pn-input.js +2 -2
- package/umd/modules/@postnord/web-components/collection/components/input/pn-multiselect/pn-multiselect.js +2 -2
- package/umd/modules/@postnord/web-components/collection/components/input/pn-multiselect/pn-multiselect.js.map +1 -1
- package/umd/modules/@postnord/web-components/collection/components/input/pn-radio-button/pn-radio-button.js +1 -1
- package/umd/modules/@postnord/web-components/collection/components/input/pn-search-field/pn-search-field.js +1 -1
- package/umd/modules/@postnord/web-components/collection/components/input/pn-segmented-control/pn-segmented-control.js +1 -1
- package/umd/modules/@postnord/web-components/collection/components/input/pn-segmented-control/segment/pn-segment.js +1 -1
- package/umd/modules/@postnord/web-components/collection/components/input/pn-select/pn-select.js +2 -2
- package/umd/modules/@postnord/web-components/collection/components/input/pn-select/pn-select.js.map +1 -1
- package/umd/modules/@postnord/web-components/collection/components/input/pn-textarea/pn-textarea.js +1 -1
- package/umd/modules/@postnord/web-components/collection/components/input/pn-toggle-switch/pn-toggle-switch.js +1 -1
- package/umd/modules/@postnord/web-components/collection/components/layout/pn-header/pn-header.js +1 -1
- package/umd/modules/@postnord/web-components/collection/components/navigation/pn-card/pn-card.js +1 -1
- package/umd/modules/@postnord/web-components/collection/components/navigation/pn-footer/pn-footer.js +1 -1
- package/umd/modules/@postnord/web-components/collection/components/navigation/pn-page-nav/dropdown-item/pn-page-nav-dropdown-item.js +1 -1
- package/umd/modules/@postnord/web-components/collection/components/navigation/pn-page-nav/item/pn-page-nav-item.js +1 -1
- package/umd/modules/@postnord/web-components/collection/components/navigation/pn-page-nav/menu/pn-page-nav.js +2 -2
- package/umd/modules/@postnord/web-components/collection/components/navigation/pn-page-nav/menu/pn-page-nav.js.map +1 -1
- package/umd/modules/@postnord/web-components/collection/components/navigation/pn-pagination/pn-pagination.js +1 -1
- package/umd/modules/@postnord/web-components/collection/components/navigation/pn-tablist/pn-tablist.js +2 -2
- package/umd/modules/@postnord/web-components/collection/components/navigation/pn-tablist/pn-tablist.js.map +1 -1
- package/umd/modules/@postnord/web-components/collection/components/navigation/pn-tablist/tab/pn-tab.js +1 -1
- package/umd/modules/@postnord/web-components/collection/components/navigation/pn-text-link/pn-text-link.js +1 -1
- package/umd/modules/@postnord/web-components/collection/components/navigation/pn-tile/pn-tile.js +1 -1
- package/umd/modules/@postnord/web-components/collection/components/web-components/pn-ocr-search/pn-ocr-search.js +1 -1
- package/umd/modules/@postnord/web-components/collection/components/web-components/pn-zipcode-search/pn-zipcode-search.js +1 -1
- package/umd/modules/@postnord/web-components/collection/globals/types.js.map +1 -1
- package/umd/modules/@postnord/web-components/components/{angle_down.js → chevron_down.js} +3 -3
- package/umd/modules/@postnord/web-components/components/chevron_down.js.map +1 -0
- package/umd/modules/@postnord/web-components/{esm/angle_right-b52095c9.js → components/chevron_right.js} +4 -4
- package/umd/modules/@postnord/web-components/components/chevron_right.js.map +1 -0
- package/umd/modules/@postnord/web-components/components/pn-accordion-row.js +2 -2
- package/umd/modules/@postnord/web-components/components/pn-accordion-row.js.map +1 -1
- package/umd/modules/@postnord/web-components/components/pn-action-menu.js +42 -12
- package/umd/modules/@postnord/web-components/components/pn-action-menu.js.map +1 -1
- package/umd/modules/@postnord/web-components/components/pn-card.js +1 -1
- package/umd/modules/@postnord/web-components/components/pn-checkbox.js +1 -1
- package/umd/modules/@postnord/web-components/components/pn-choice-chip.js +1 -1
- package/umd/modules/@postnord/web-components/components/pn-counter.js +1 -1
- package/umd/modules/@postnord/web-components/components/pn-date-picker.js +23 -7
- package/umd/modules/@postnord/web-components/components/pn-date-picker.js.map +1 -1
- package/umd/modules/@postnord/web-components/components/pn-fieldset.js +1 -1
- package/umd/modules/@postnord/web-components/components/pn-file-upload.js +1 -1
- package/umd/modules/@postnord/web-components/components/pn-footer.js +1 -1
- package/umd/modules/@postnord/web-components/components/pn-header.js +1 -1
- package/umd/modules/@postnord/web-components/components/pn-input.js +2 -2
- package/umd/modules/@postnord/web-components/components/pn-modal.js +25 -10
- package/umd/modules/@postnord/web-components/components/pn-modal.js.map +1 -1
- package/umd/modules/@postnord/web-components/components/pn-multiselect.js +2 -2
- package/umd/modules/@postnord/web-components/components/pn-multiselect.js.map +1 -1
- package/umd/modules/@postnord/web-components/components/pn-ocr-search.js +1 -1
- package/umd/modules/@postnord/web-components/components/pn-page-nav-dropdown-item.js +1 -1
- package/umd/modules/@postnord/web-components/components/pn-page-nav-item.js +1 -1
- package/umd/modules/@postnord/web-components/components/pn-page-nav.js +2 -2
- package/umd/modules/@postnord/web-components/components/pn-page-nav.js.map +1 -1
- package/umd/modules/@postnord/web-components/components/pn-pagination.js +1 -1
- package/umd/modules/@postnord/web-components/components/pn-progress-bar2.js +1 -1
- package/umd/modules/@postnord/web-components/components/pn-progress-indicator-step.js +1 -1
- package/umd/modules/@postnord/web-components/components/pn-progress-indicator-step.js.map +1 -1
- package/umd/modules/@postnord/web-components/components/pn-progress-indicator.js +1 -1
- package/umd/modules/@postnord/web-components/components/pn-progress-indicator.js.map +1 -1
- package/umd/modules/@postnord/web-components/components/pn-progress-stepper.js +34 -48
- package/umd/modules/@postnord/web-components/components/pn-progress-stepper.js.map +1 -1
- package/umd/modules/@postnord/web-components/components/pn-radio-button.js +1 -1
- package/umd/modules/@postnord/web-components/components/pn-search-field2.js +1 -1
- package/umd/modules/@postnord/web-components/components/pn-segment.js +1 -1
- package/umd/modules/@postnord/web-components/components/pn-segmented-control.js +1 -1
- package/umd/modules/@postnord/web-components/components/pn-select2.js +2 -2
- package/umd/modules/@postnord/web-components/components/pn-select2.js.map +1 -1
- package/umd/modules/@postnord/web-components/components/pn-spinner2.js +1 -1
- package/umd/modules/@postnord/web-components/components/pn-tab.js +1 -1
- package/umd/modules/@postnord/web-components/components/pn-tablist.js +2 -2
- package/umd/modules/@postnord/web-components/components/pn-tablist.js.map +1 -1
- package/umd/modules/@postnord/web-components/components/pn-text-link2.js +1 -1
- package/umd/modules/@postnord/web-components/components/pn-textarea.js +1 -1
- package/umd/modules/@postnord/web-components/components/pn-tile.js +1 -1
- package/umd/modules/@postnord/web-components/components/pn-toast.js +25 -16
- package/umd/modules/@postnord/web-components/components/pn-toast.js.map +1 -1
- package/umd/modules/@postnord/web-components/components/pn-toggle-switch.js +1 -1
- package/umd/modules/@postnord/web-components/components/pn-tooltip.js +1 -1
- package/umd/modules/@postnord/web-components/components/pn-zipcode-search.js +1 -1
- package/umd/modules/@postnord/web-components/esm/{angle_down-d788f691.js → chevron_down-6e3fb42f.js} +3 -3
- package/umd/modules/@postnord/web-components/esm/chevron_down-6e3fb42f.js.map +1 -0
- package/umd/modules/@postnord/web-components/{components/angle_right.js → esm/chevron_right-9d9305e8.js} +4 -4
- package/umd/modules/@postnord/web-components/esm/chevron_right-9d9305e8.js.map +1 -0
- package/umd/modules/@postnord/web-components/esm/loader.js +1 -1
- package/umd/modules/@postnord/web-components/esm/pn-accordion-row.entry.js +2 -2
- package/umd/modules/@postnord/web-components/esm/pn-accordion-row.entry.js.map +1 -1
- package/umd/modules/@postnord/web-components/esm/pn-action-menu.entry.js +42 -12
- package/umd/modules/@postnord/web-components/esm/pn-action-menu.entry.js.map +1 -1
- package/umd/modules/@postnord/web-components/esm/pn-button_2.entry.js +1 -1
- package/umd/modules/@postnord/web-components/esm/pn-card.entry.js +1 -1
- package/umd/modules/@postnord/web-components/esm/pn-checkbox.entry.js +1 -1
- package/umd/modules/@postnord/web-components/esm/pn-choice-chip.entry.js +1 -1
- package/umd/modules/@postnord/web-components/esm/pn-counter.entry.js +1 -1
- package/umd/modules/@postnord/web-components/esm/pn-date-picker.entry.js +23 -7
- package/umd/modules/@postnord/web-components/esm/pn-date-picker.entry.js.map +1 -1
- package/umd/modules/@postnord/web-components/esm/pn-fieldset.entry.js +1 -1
- package/umd/modules/@postnord/web-components/esm/pn-file-upload.entry.js +1 -1
- package/umd/modules/@postnord/web-components/esm/pn-footer.entry.js +1 -1
- package/umd/modules/@postnord/web-components/esm/pn-header.entry.js +1 -1
- package/umd/modules/@postnord/web-components/esm/pn-input.entry.js +2 -2
- package/umd/modules/@postnord/web-components/esm/pn-modal.entry.js +22 -8
- package/umd/modules/@postnord/web-components/esm/pn-modal.entry.js.map +1 -1
- package/umd/modules/@postnord/web-components/esm/pn-multiselect.entry.js +2 -2
- package/umd/modules/@postnord/web-components/esm/pn-multiselect.entry.js.map +1 -1
- package/umd/modules/@postnord/web-components/esm/pn-ocr-search.entry.js +1 -1
- package/umd/modules/@postnord/web-components/esm/pn-page-nav-dropdown-item.entry.js +1 -1
- package/umd/modules/@postnord/web-components/esm/pn-page-nav-item.entry.js +1 -1
- package/umd/modules/@postnord/web-components/esm/pn-page-nav.entry.js +2 -2
- package/umd/modules/@postnord/web-components/esm/pn-page-nav.entry.js.map +1 -1
- package/umd/modules/@postnord/web-components/esm/pn-pagination.entry.js +1 -1
- package/umd/modules/@postnord/web-components/esm/pn-progress-bar.entry.js +1 -1
- package/umd/modules/@postnord/web-components/esm/pn-progress-indicator-step.entry.js +1 -1
- package/umd/modules/@postnord/web-components/esm/pn-progress-indicator-step.entry.js.map +1 -1
- package/umd/modules/@postnord/web-components/esm/pn-progress-indicator.entry.js +1 -1
- package/umd/modules/@postnord/web-components/esm/pn-progress-indicator.entry.js.map +1 -1
- package/umd/modules/@postnord/web-components/esm/pn-progress-stepper.entry.js +26 -41
- package/umd/modules/@postnord/web-components/esm/pn-progress-stepper.entry.js.map +1 -1
- package/umd/modules/@postnord/web-components/esm/pn-radio-button.entry.js +1 -1
- package/umd/modules/@postnord/web-components/esm/pn-search-field.entry.js +1 -1
- package/umd/modules/@postnord/web-components/esm/pn-segment.entry.js +1 -1
- package/umd/modules/@postnord/web-components/esm/pn-segmented-control.entry.js +1 -1
- package/umd/modules/@postnord/web-components/esm/pn-select.entry.js +2 -2
- package/umd/modules/@postnord/web-components/esm/pn-select.entry.js.map +1 -1
- package/umd/modules/@postnord/web-components/esm/pn-tab.entry.js +1 -1
- package/umd/modules/@postnord/web-components/esm/pn-tablist.entry.js +2 -2
- package/umd/modules/@postnord/web-components/esm/pn-tablist.entry.js.map +1 -1
- package/umd/modules/@postnord/web-components/esm/pn-text-link.entry.js +1 -1
- package/umd/modules/@postnord/web-components/esm/pn-textarea.entry.js +1 -1
- package/umd/modules/@postnord/web-components/esm/pn-tile.entry.js +1 -1
- package/umd/modules/@postnord/web-components/esm/pn-toast.entry.js +25 -16
- package/umd/modules/@postnord/web-components/esm/pn-toast.entry.js.map +1 -1
- package/umd/modules/@postnord/web-components/esm/pn-toggle-switch.entry.js +1 -1
- package/umd/modules/@postnord/web-components/esm/pn-tooltip.entry.js +1 -1
- package/umd/modules/@postnord/web-components/esm/pn-zipcode-search.entry.js +1 -1
- package/umd/modules/@postnord/web-components/esm/postnord-web-components.js +1 -1
- package/umd/modules/@postnord/web-components/hydrate/index.js +204 -137
- package/umd/modules/@postnord/web-components/hydrate/index.mjs +204 -137
- package/umd/modules/@postnord/web-components/package.json +16 -14
- package/umd/modules/@postnord/web-components/postnord-web-components/{p-7e88df1f.entry.js → p-01472170.entry.js} +2 -2
- package/umd/modules/@postnord/web-components/postnord-web-components/{p-ed4271af.entry.js → p-06c7e91b.entry.js} +2 -2
- package/umd/modules/@postnord/web-components/postnord-web-components/p-06c7e91b.entry.js.map +1 -0
- package/umd/modules/@postnord/web-components/postnord-web-components/{p-8773152d.entry.js → p-10532427.entry.js} +2 -2
- package/umd/modules/@postnord/web-components/postnord-web-components/{p-ffe79fa4.entry.js → p-11ef58ab.entry.js} +2 -2
- package/umd/modules/@postnord/web-components/postnord-web-components/p-16fb83d9.entry.js +6 -0
- package/umd/modules/@postnord/web-components/postnord-web-components/p-16fb83d9.entry.js.map +1 -0
- package/umd/modules/@postnord/web-components/postnord-web-components/{p-d74ccbb2.entry.js → p-1cd57319.entry.js} +2 -2
- package/umd/modules/@postnord/web-components/postnord-web-components/{p-adc6404b.entry.js → p-1e7c31ed.entry.js} +2 -2
- package/umd/modules/@postnord/web-components/postnord-web-components/p-1e7c31ed.entry.js.map +1 -0
- package/umd/modules/@postnord/web-components/postnord-web-components/{p-c2bbbcaa.entry.js → p-1fe6fc61.entry.js} +2 -2
- package/umd/modules/@postnord/web-components/postnord-web-components/{p-203ad7de.entry.js → p-23fdc4b6.entry.js} +2 -2
- package/umd/modules/@postnord/web-components/postnord-web-components/p-23fdc4b6.entry.js.map +1 -0
- package/umd/modules/@postnord/web-components/postnord-web-components/p-240f6613.entry.js +6 -0
- package/umd/modules/@postnord/web-components/postnord-web-components/{p-7ae9c053.entry.js.map → p-240f6613.entry.js.map} +1 -1
- package/umd/modules/@postnord/web-components/postnord-web-components/{p-4f67fffa.entry.js → p-28357e12.entry.js} +2 -2
- package/umd/modules/@postnord/web-components/postnord-web-components/p-28357e12.entry.js.map +1 -0
- package/umd/modules/@postnord/web-components/postnord-web-components/{p-c96ff403.js → p-2f7bb5e8.js} +2 -2
- package/umd/modules/@postnord/web-components/postnord-web-components/p-2f7bb5e8.js.map +1 -0
- package/umd/modules/@postnord/web-components/postnord-web-components/{p-5b0000e9.entry.js → p-363f578a.entry.js} +2 -2
- package/umd/modules/@postnord/web-components/postnord-web-components/{p-c0d19737.entry.js → p-37297b9a.entry.js} +2 -2
- package/umd/modules/@postnord/web-components/postnord-web-components/p-49a39ea1.entry.js +6 -0
- package/umd/modules/@postnord/web-components/postnord-web-components/p-49a39ea1.entry.js.map +1 -0
- package/umd/modules/@postnord/web-components/postnord-web-components/{p-bc95d4b0.entry.js → p-49f5fdd2.entry.js} +2 -2
- package/umd/modules/@postnord/web-components/postnord-web-components/p-49f5fdd2.entry.js.map +1 -0
- package/umd/modules/@postnord/web-components/postnord-web-components/{p-b556b835.entry.js → p-4d371963.entry.js} +2 -2
- package/umd/modules/@postnord/web-components/postnord-web-components/{p-ab29b9c0.entry.js → p-4eaab357.entry.js} +2 -2
- package/umd/modules/@postnord/web-components/postnord-web-components/{p-da713fc1.entry.js → p-5ed7e9b7.entry.js} +2 -2
- package/umd/modules/@postnord/web-components/postnord-web-components/p-617a946d.entry.js +6 -0
- package/umd/modules/@postnord/web-components/postnord-web-components/p-617a946d.entry.js.map +1 -0
- package/umd/modules/@postnord/web-components/postnord-web-components/{p-e087c5c5.entry.js → p-63aa3911.entry.js} +2 -2
- package/umd/modules/@postnord/web-components/postnord-web-components/p-65ae6360.entry.js +6 -0
- package/umd/modules/@postnord/web-components/postnord-web-components/p-65ae6360.entry.js.map +1 -0
- package/umd/modules/@postnord/web-components/postnord-web-components/{p-bf015c0f.entry.js → p-699b7bde.entry.js} +2 -2
- package/umd/modules/@postnord/web-components/postnord-web-components/{p-9bc1d14f.entry.js → p-6f9a21be.entry.js} +2 -2
- package/umd/modules/@postnord/web-components/postnord-web-components/p-75c5fb41.entry.js +6 -0
- package/umd/modules/@postnord/web-components/postnord-web-components/p-75c5fb41.entry.js.map +1 -0
- package/umd/modules/@postnord/web-components/postnord-web-components/{p-bd14cdca.entry.js → p-8e07bc17.entry.js} +2 -2
- package/umd/modules/@postnord/web-components/postnord-web-components/{p-7bd6d804.entry.js → p-8eaa2540.entry.js} +2 -2
- package/umd/modules/@postnord/web-components/postnord-web-components/{p-bf967b50.js → p-99600bc7.js} +2 -2
- package/umd/modules/@postnord/web-components/postnord-web-components/p-99600bc7.js.map +1 -0
- package/umd/modules/@postnord/web-components/postnord-web-components/{p-ff068744.entry.js → p-9cecd28d.entry.js} +2 -2
- package/umd/modules/@postnord/web-components/postnord-web-components/{p-605d99df.entry.js → p-a440734f.entry.js} +2 -2
- package/umd/modules/@postnord/web-components/postnord-web-components/{p-b9a494ae.entry.js → p-ab553e80.entry.js} +2 -2
- package/umd/modules/@postnord/web-components/postnord-web-components/{p-936ed2a1.entry.js → p-ae04e001.entry.js} +2 -2
- package/umd/modules/@postnord/web-components/postnord-web-components/p-ae04e001.entry.js.map +1 -0
- package/umd/modules/@postnord/web-components/postnord-web-components/{p-a4df55c4.entry.js → p-b202a599.entry.js} +2 -2
- package/umd/modules/@postnord/web-components/postnord-web-components/p-b83e6373.entry.js +6 -0
- package/umd/modules/@postnord/web-components/postnord-web-components/p-b83e6373.entry.js.map +1 -0
- package/umd/modules/@postnord/web-components/postnord-web-components/{p-fcd5028f.entry.js → p-bdb9bdc3.entry.js} +2 -2
- package/umd/modules/@postnord/web-components/postnord-web-components/{p-81f9f367.entry.js → p-cebe3a25.entry.js} +2 -2
- package/umd/modules/@postnord/web-components/postnord-web-components/{p-76b020f0.entry.js → p-d2f7b4a9.entry.js} +2 -2
- package/umd/modules/@postnord/web-components/postnord-web-components/{p-c45dc75d.entry.js → p-e8050420.entry.js} +2 -2
- package/umd/modules/@postnord/web-components/postnord-web-components/{p-412fc8d6.entry.js → p-eee2d131.entry.js} +2 -2
- package/umd/modules/@postnord/web-components/postnord-web-components/{p-d3521b5d.entry.js → p-fb5d6d47.entry.js} +2 -2
- package/umd/modules/@postnord/web-components/postnord-web-components/postnord-web-components.esm.js +1 -1
- package/umd/modules/@postnord/web-components/postnord-web-components/postnord-web-components.esm.js.map +1 -1
- package/umd/modules/@postnord/web-components/types/components/buttons/pn-action-menu/pn-action-menu.d.ts +3 -0
- package/umd/modules/@postnord/web-components/types/components/feedback/pn-modal/pn-modal.d.ts +12 -2
- package/umd/modules/@postnord/web-components/types/components/feedback/pn-progress-indicator/pn-progress-indicator-step/pn-progress-indicator-step.d.ts +4 -0
- package/umd/modules/@postnord/web-components/types/components/feedback/pn-progress-indicator/pn-progress-indicator.d.ts +4 -0
- package/umd/modules/@postnord/web-components/types/components/feedback/pn-progress-stepper/pn-progress-stepper.d.ts +27 -22
- package/umd/modules/@postnord/web-components/types/components/feedback/pn-toast/pn-toast.d.ts +2 -1
- package/umd/modules/@postnord/web-components/types/components.d.ts +60 -12
- package/umd/modules/@postnord/web-components/types/globals/types.d.ts +2 -1
- package/umd/modules/@postnord/web-components/vscode-data.json +7 -3
- package/vscode-data.json +4 -0
- package/pn-market-web-components/p-59cb7166.entry.js +0 -2
- package/pn-market-web-components/p-59cb7166.entry.js.map +0 -1
- package/pn-market-web-components/p-7c3091eb.entry.js +0 -2
- package/pn-market-web-components/p-7c3091eb.entry.js.map +0 -1
- package/pn-market-web-components/p-94a69959.entry.js +0 -2
- package/pn-market-web-components/p-94a69959.entry.js.map +0 -1
- package/umd/modules/@postnord/web-components/cjs/angle_down-0b63ebde.js.map +0 -1
- package/umd/modules/@postnord/web-components/cjs/angle_right-c8c55b43.js.map +0 -1
- package/umd/modules/@postnord/web-components/components/angle_down.js.map +0 -1
- package/umd/modules/@postnord/web-components/components/angle_right.js.map +0 -1
- package/umd/modules/@postnord/web-components/esm/angle_down-d788f691.js.map +0 -1
- package/umd/modules/@postnord/web-components/esm/angle_right-b52095c9.js.map +0 -1
- package/umd/modules/@postnord/web-components/postnord-web-components/p-203ad7de.entry.js.map +0 -1
- package/umd/modules/@postnord/web-components/postnord-web-components/p-2615282e.entry.js +0 -6
- package/umd/modules/@postnord/web-components/postnord-web-components/p-2615282e.entry.js.map +0 -1
- package/umd/modules/@postnord/web-components/postnord-web-components/p-3bd59ac8.entry.js +0 -6
- package/umd/modules/@postnord/web-components/postnord-web-components/p-3bd59ac8.entry.js.map +0 -1
- package/umd/modules/@postnord/web-components/postnord-web-components/p-4f67fffa.entry.js.map +0 -1
- package/umd/modules/@postnord/web-components/postnord-web-components/p-514107a5.entry.js +0 -6
- package/umd/modules/@postnord/web-components/postnord-web-components/p-514107a5.entry.js.map +0 -1
- package/umd/modules/@postnord/web-components/postnord-web-components/p-6a30576b.entry.js +0 -6
- package/umd/modules/@postnord/web-components/postnord-web-components/p-6a30576b.entry.js.map +0 -1
- package/umd/modules/@postnord/web-components/postnord-web-components/p-7ae9c053.entry.js +0 -6
- package/umd/modules/@postnord/web-components/postnord-web-components/p-8bc8f614.entry.js +0 -6
- package/umd/modules/@postnord/web-components/postnord-web-components/p-8bc8f614.entry.js.map +0 -1
- package/umd/modules/@postnord/web-components/postnord-web-components/p-936ed2a1.entry.js.map +0 -1
- package/umd/modules/@postnord/web-components/postnord-web-components/p-adc6404b.entry.js.map +0 -1
- package/umd/modules/@postnord/web-components/postnord-web-components/p-bc95d4b0.entry.js.map +0 -1
- package/umd/modules/@postnord/web-components/postnord-web-components/p-bf967b50.js.map +0 -1
- package/umd/modules/@postnord/web-components/postnord-web-components/p-c96ff403.js.map +0 -1
- package/umd/modules/@postnord/web-components/postnord-web-components/p-ed4271af.entry.js.map +0 -1
- package/umd/modules/@postnord/web-components/postnord-web-components/p-fc5f9092.entry.js +0 -6
- package/umd/modules/@postnord/web-components/postnord-web-components/p-fc5f9092.entry.js.map +0 -1
- package/umd/modules/@postnord/web-components/readme.md +0 -32
- /package/umd/modules/@postnord/web-components/postnord-web-components/{p-7e88df1f.entry.js.map → p-01472170.entry.js.map} +0 -0
- /package/umd/modules/@postnord/web-components/postnord-web-components/{p-8773152d.entry.js.map → p-10532427.entry.js.map} +0 -0
- /package/umd/modules/@postnord/web-components/postnord-web-components/{p-ffe79fa4.entry.js.map → p-11ef58ab.entry.js.map} +0 -0
- /package/umd/modules/@postnord/web-components/postnord-web-components/{p-d74ccbb2.entry.js.map → p-1cd57319.entry.js.map} +0 -0
- /package/umd/modules/@postnord/web-components/postnord-web-components/{p-c2bbbcaa.entry.js.map → p-1fe6fc61.entry.js.map} +0 -0
- /package/umd/modules/@postnord/web-components/postnord-web-components/{p-5b0000e9.entry.js.map → p-363f578a.entry.js.map} +0 -0
- /package/umd/modules/@postnord/web-components/postnord-web-components/{p-c0d19737.entry.js.map → p-37297b9a.entry.js.map} +0 -0
- /package/umd/modules/@postnord/web-components/postnord-web-components/{p-b556b835.entry.js.map → p-4d371963.entry.js.map} +0 -0
- /package/umd/modules/@postnord/web-components/postnord-web-components/{p-ab29b9c0.entry.js.map → p-4eaab357.entry.js.map} +0 -0
- /package/umd/modules/@postnord/web-components/postnord-web-components/{p-da713fc1.entry.js.map → p-5ed7e9b7.entry.js.map} +0 -0
- /package/umd/modules/@postnord/web-components/postnord-web-components/{p-e087c5c5.entry.js.map → p-63aa3911.entry.js.map} +0 -0
- /package/umd/modules/@postnord/web-components/postnord-web-components/{p-bf015c0f.entry.js.map → p-699b7bde.entry.js.map} +0 -0
- /package/umd/modules/@postnord/web-components/postnord-web-components/{p-9bc1d14f.entry.js.map → p-6f9a21be.entry.js.map} +0 -0
- /package/umd/modules/@postnord/web-components/postnord-web-components/{p-bd14cdca.entry.js.map → p-8e07bc17.entry.js.map} +0 -0
- /package/umd/modules/@postnord/web-components/postnord-web-components/{p-7bd6d804.entry.js.map → p-8eaa2540.entry.js.map} +0 -0
- /package/umd/modules/@postnord/web-components/postnord-web-components/{p-ff068744.entry.js.map → p-9cecd28d.entry.js.map} +0 -0
- /package/umd/modules/@postnord/web-components/postnord-web-components/{p-605d99df.entry.js.map → p-a440734f.entry.js.map} +0 -0
- /package/umd/modules/@postnord/web-components/postnord-web-components/{p-b9a494ae.entry.js.map → p-ab553e80.entry.js.map} +0 -0
- /package/umd/modules/@postnord/web-components/postnord-web-components/{p-a4df55c4.entry.js.map → p-b202a599.entry.js.map} +0 -0
- /package/umd/modules/@postnord/web-components/postnord-web-components/{p-fcd5028f.entry.js.map → p-bdb9bdc3.entry.js.map} +0 -0
- /package/umd/modules/@postnord/web-components/postnord-web-components/{p-81f9f367.entry.js.map → p-cebe3a25.entry.js.map} +0 -0
- /package/umd/modules/@postnord/web-components/postnord-web-components/{p-76b020f0.entry.js.map → p-d2f7b4a9.entry.js.map} +0 -0
- /package/umd/modules/@postnord/web-components/postnord-web-components/{p-c45dc75d.entry.js.map → p-e8050420.entry.js.map} +0 -0
- /package/umd/modules/@postnord/web-components/postnord-web-components/{p-412fc8d6.entry.js.map → p-eee2d131.entry.js.map} +0 -0
- /package/umd/modules/@postnord/web-components/postnord-web-components/{p-d3521b5d.entry.js.map → p-fb5d6d47.entry.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pn-action-menu.js","sourceRoot":"","sources":["../../../../src/components/buttons/pn-action-menu/pn-action-menu.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Prop, State, Watch, Element, h, Host, Event, EventEmitter, Listen } from '@stencil/core';\n\nimport {\n awaitTopbar,\n en,\n getMenuWidth,\n getTotalHeightOffset,\n isSmallScreen,\n reduceMotion,\n ripple,\n uuidv4,\n} from '@/index';\nimport type {\n PnLanguages,\n PnActionMenuItem,\n Components,\n PnActionMenuInput,\n PnActionMenuGroup,\n PnMeasurements,\n} from '@/index';\n\nimport { translations, PnMenuTextProp } from './translation';\n\nimport { angle_down, angle_left, angle_right, open_in_new } from 'pn-design-assets/pn-assets/icons.js';\n\n/**\n * Create a list of actions in an accessible way.\n *\n * Option types include:\n *\n * - Regular button, click and it will collapse the menu,\n * - Checkbox/radio, toggle the option on/off\n * - Link, behaves like a regular `a[href]` element.\n *\n * You can group these actions in groups and/or sub menus.\n *\n * - `group`, an array of options. The label will act as a title for the items.\n * - `options`, an array of options. These items will appear in a sub-menu that can be toggled.\n *\n * @see {@link PnActionMenuItem}\n */\n@Component({\n tag: 'pn-action-menu',\n styleUrl: 'pn-action-menu.scss',\n})\nexport class PnActionMenu {\n private readonly id: string = `pn-action-menu-${uuidv4()}`;\n\n private menuButtonId: string = `${this.id}-button`;\n private menuListId: string = `${this.id}-list`;\n\n private menuTrigger: HTMLPnButtonElement;\n private menuContainer: HTMLDivElement;\n private menuList: HTMLMenuElement;\n\n private animation: Animation;\n private readonly duration: number = 400;\n private animationDuration: number = this.duration;\n\n private timeout: NodeJS.Timeout;\n\n /** 16em */\n private readonly menuWidth: number = 256;\n\n @Element() private hostElement: HTMLElement;\n\n @State() private smallMenu: boolean = null;\n @State() private upwards: boolean = false;\n\n @State() private activeSubmenu: PnActionMenuItem['value'][] = [];\n\n @State() private isClosing = false;\n @State() private isExpanding = false;\n\n /** Array of action menu options. @see {@link PnActionMenuItem} */\n @Prop() options: PnActionMenuItem[] = [];\n /** Set any prop from the `pn-button` component here. @see {@link Components.PnButton} */\n @Prop() button: Components.PnButton;\n\n /** Set a custom ID for the menu. */\n @Prop() menuId?: string = this.id;\n /** Manually set the language. */\n @Prop({ mutable: true }) language?: PnLanguages = null;\n\n /** Open/close the action menu manually. @category Features */\n @Prop({ mutable: true, reflect: true }) open?: boolean = false;\n /** Prefer that the menu open upwards, if there is enough space. @category Features */\n @Prop() menuUp?: boolean = false;\n /** Prefer that the submenus opens to the left, if there is enough space. @category Features */\n @Prop() menuLeft?: boolean = false;\n\n /** Emitted when the menu is opened or closed. */\n @Event() private menuToggle: EventEmitter<{ open: boolean }>;\n /** Emitted when the menu is fully hidden/visible after the animation has played. */\n @Event() private menuVisible: EventEmitter<{ visible: boolean }>;\n /** Emitted when an option is clicked (button, link, input or submenus). */\n @Event() private menuOption: EventEmitter<{\n /** Which type of menu item was clicked. */\n type: 'button' | 'link' | 'input' | 'submenu';\n /** If its an `input` type (checkbox/radio), it will be a generic `Event` (ChangeEvent) instead of `MouseEvent`. */\n click: MouseEvent | Event;\n /** The full {@link PnActionMenuItem} object. */\n option: PnActionMenuItem;\n /** If the submenu is open/closed. */\n open?: Boolean;\n }>;\n\n @Watch('options')\n handleOptions() {\n this.setMenuLayout();\n }\n\n @Watch('open')\n openHandler() {\n this.setAnimationDuration();\n\n requestAnimationFrame(() => {\n if (this.open && !(this.isClosing || this.isExpanding)) {\n this.setOffset();\n this.setMenuLayout();\n }\n\n this.gridHandler();\n\n this.menuToggle.emit({ open: this.open });\n\n clearTimeout(this.timeout);\n this.timeout = setTimeout(() => {\n if (!this.open) {\n this.activeSubmenu = [];\n const subMenus = this.hostElement.querySelectorAll<HTMLUListElement>('[data-x]');\n Array.from(subMenus).forEach(el => {\n el.removeAttribute('data-x');\n el.removeAttribute('data-y');\n });\n }\n\n this.menuVisible.emit({ visible: this.open });\n }, this.animationDuration);\n });\n }\n\n @Watch('menuId')\n handleMenuId() {\n this.menuButtonId = `${this.menuId}-button`;\n this.menuListId = `${this.menuId}-list`;\n }\n\n @Listen('resize', { target: 'window' })\n handleResize() {\n if (this.open) this.toggleActionMenu(false);\n }\n\n async componentWillLoad() {\n if (!this.options.length) console.warn(`${this.hostElement.localName}: No options set.`);\n\n this.handleMenuId();\n this.setAnimationDuration();\n\n if (this.language !== null) await awaitTopbar(this.hostElement);\n }\n\n componentDidLoad() {\n this.setOffset();\n\n if (this.open) this.gridHandler();\n }\n\n private translate(prop: PnMenuTextProp) {\n return translations[prop][this.language || en];\n }\n\n /** Open/close the action menu. */\n private toggleActionMenu(state?: boolean) {\n this.open = state ?? !this.open;\n }\n\n private setMenuLayout() {\n if (!this.menuContainer) return;\n\n if (!(this.isClosing || this.isExpanding)) this.resetMaxHeight();\n\n const measurements = this.getMenuMeasurements();\n\n this.setDirection(measurements);\n this.setMenuSize(measurements);\n this.setMaxHeight(measurements);\n }\n\n private setDirection({ hUp, hDown, sUp, sDown }: PnMeasurements) {\n const fitsUpwards = sUp > hUp;\n const fitsDownards = sDown > hDown;\n const moreSpaceDown = sDown > sUp;\n this.upwards = (this.menuUp && fitsUpwards) || (!fitsDownards && !moreSpaceDown);\n }\n\n private setMenuSize({ hUp, hDown, sUp, sDown }: PnMeasurements) {\n const isWidthSmall = isSmallScreen();\n const menuFits = this.upwards ? sUp > hUp : sDown > hDown;\n const isSmall = isWidthSmall || !menuFits;\n\n if (isSmall !== this.smallMenu) {\n this.smallMenu = isSmall;\n }\n }\n\n private setMaxHeight({ hUp, hDown, sUp, sDown }: PnMeasurements) {\n if (this.smallMenu) {\n const heightUp = hUp > sUp ? hUp - 16 : hUp;\n const heightDown = hDown > sDown ? hDown - 8 : hDown;\n this.hostElement.style.setProperty('--pn-menu-height', `${this.upwards ? heightUp : heightDown}px`);\n } else this.resetMaxHeight();\n }\n\n private resetMaxHeight() {\n this.hostElement.style.setProperty('--pn-menu-height', 'unset');\n }\n\n private setAnimationDuration() {\n if (reduceMotion()) this.animationDuration = 0;\n else this.animationDuration = this.duration;\n }\n\n private getRect(element: HTMLElement): DOMRect {\n return element.getBoundingClientRect();\n }\n\n private getMenuMeasurements(): PnMeasurements {\n const allLists = Array.from(this.menuContainer.querySelectorAll('menu'));\n const maxHeight = Math.max(...allLists.map(el => el.scrollHeight));\n\n const rectButton = this.getRect(this.menuTrigger);\n const rectMenu = this.getRect(this.menuContainer);\n\n /** Measurements upwards. */\n const sUp = rectButton.top - getTotalHeightOffset();\n const hUp = sUp > maxHeight ? maxHeight : sUp;\n\n /** Measurements downwards. */\n const sDown = innerHeight - rectMenu.top;\n const hDown = sDown > maxHeight ? maxHeight : sDown;\n\n return {\n hUp,\n hDown,\n sUp,\n sDown,\n };\n }\n\n private setOffset() {\n const data = this.getRect(this.hostElement);\n const fullWidth = data.left - getMenuWidth() + this.menuWidth;\n const isWide = fullWidth > innerWidth;\n const offset = isWide ? fullWidth - innerWidth + 16 : 0;\n\n if (this.menuContainer) this.menuContainer.style.setProperty('--pn-action-menu-offset', `-${offset}px`);\n }\n\n private getListId(option: PnActionMenuItem) {\n return `pn-menu-${option.value}-list`;\n }\n\n private getButtonId(option: PnActionMenuItem) {\n return `pn-menu-${option.value}-button`;\n }\n\n private getTriggerIcon() {\n if (this.button?.icon) return;\n return angle_down;\n }\n\n /** Set the path of open sub menus. */\n private getSubMenuPath(options: PnActionMenuItem[], value: string, path = []): string[] {\n for (const item of options) {\n const newPath = [...path, item.value];\n if (item.value === value) return newPath;\n\n if (item.options || item.group) {\n const result = this.getSubMenuPath(item.options || item.group, value, newPath);\n if (result) return result;\n }\n }\n return null;\n }\n\n private closeEachSubMenu() {\n this.menuTrigger?.querySelector('button')?.focus({ preventScroll: true });\n\n const interval = setInterval(() => {\n if (this.smallMenu || this.activeSubmenu.length === 0) {\n clearInterval(interval);\n this.toggleActionMenu(false);\n } else {\n this.activeSubmenu.pop();\n this.activeSubmenu = [...this.activeSubmenu];\n }\n }, 150);\n }\n\n private escButton(event: KeyboardEvent, option: PnActionMenuItem) {\n const { key } = event;\n\n if (key === 'Escape') {\n event.preventDefault();\n event.stopImmediatePropagation();\n\n this.isSubmenuActive(option.value) ? this.toggleSub(option) : this.toggleActionMenu();\n }\n }\n\n // Animation Start\n\n private gridHandler() {\n if (this.open) this.openGrid();\n else this.closeGrid();\n }\n\n private openGrid() {\n const list = this.getRect(this.menuList);\n\n const { clientHeight } = this.menuContainer;\n const height = this.isClosing ? clientHeight : 0;\n this.menuContainer.style.height = `${list.height}px`;\n\n this.isExpanding = true;\n this.animateGrid(true, `${height}px`, `${list.height}px`);\n }\n\n private closeGrid() {\n const list = this.getRect(this.menuList);\n\n const { clientHeight } = this.menuContainer;\n const height = this.isExpanding ? clientHeight : list.height;\n this.menuContainer.style.height = `0px`;\n\n this.isClosing = true;\n this.animateGrid(false, `${height}px`, `0px`);\n }\n\n private animateGrid(open: boolean, startHeight: string, endHeight: string) {\n this.cancelAnimations();\n this.animation = this.menuContainer.animate(\n {\n height: [startHeight, endHeight],\n },\n {\n duration: this.animationDuration,\n easing: 'cubic-bezier(0.6, 0, 0.2, 1)',\n },\n );\n this.animation.onfinish = () => this.animationFinish();\n this.animation.oncancel = () => (open ? (this.isExpanding = false) : (this.isClosing = false));\n }\n\n private animationFinish() {\n this.cancelAnimations();\n this.menuContainer.style.height = this.isClosing ? '0px' : '';\n this.isClosing = false;\n this.isExpanding = false;\n }\n\n private cancelAnimations() {\n if (this.animation) this.animation.cancel();\n }\n\n // Animation end\n\n private async optionSelect(option: PnActionMenuItem, click: MouseEvent | Event) {\n const type = option?.options?.length ? 'submenu' : !!option.input ? 'input' : option.href ? 'link' : 'button';\n const isSubMenu = type === 'submenu';\n\n if (isSubMenu) this.toggleSub(option);\n else if (type === 'button') this.closeEachSubMenu();\n else if (type === 'input') option.checked = (click.target as HTMLInputElement).checked;\n\n this.menuOption.emit({\n option,\n type,\n click,\n open: isSubMenu ? this.isSubmenuActive(option.value) : null,\n });\n\n const target = click.target as HTMLElement;\n const element =\n target.localName === 'input'\n ? (target.nextElementSibling as HTMLElement)\n : target.className === 'pn-action-menu-button'\n ? target\n : target.closest<HTMLElement>('.pn-action-menu-button');\n\n const { x, width, y, top } = this.getRect(element as HTMLElement);\n const clientCor = { clientX: x + width - 24, clientY: y - top };\n\n ripple(click.type === 'click' ? (click as MouseEvent) : clientCor, element);\n\n this.menuContainer.scrollTo({ top: 0 });\n }\n\n /** Toggle individual sub-menus inside the action menu by using the `option['value']`. */\n private toggleSub(option: PnActionMenuItem) {\n const { value } = option;\n\n const path = this.getSubMenuPath(this.options, value);\n const isActive = this.activeSubmenu.includes(value);\n isActive && path.splice(this.activeSubmenu.indexOf(value), 1);\n\n const item = this.hostElement.querySelector<HTMLElement>(`#${this.getListId(option)}`);\n const data = this.getRect(item);\n\n const spaceLeft = data.left;\n const spaceRight = innerWidth - data.right - 8;\n\n const fitsLeft = spaceLeft > data.width;\n const fitsRight = spaceRight > data.width;\n\n const climbUp = this.menuUp && data.top - data.height > 0;\n const yDirection = climbUp ? 'top' : 'bottom';\n\n if (!isActive && !item.dataset.x)\n item.setAttribute(\n 'data-x',\n this.menuLeft && fitsLeft ? 'left' : fitsRight ? 'right' : fitsLeft ? 'left' : 'center',\n );\n if (!isActive && !item.dataset.y) item.setAttribute('data-y', yDirection);\n\n if (JSON.stringify(path) === JSON.stringify(this.activeSubmenu))\n this.activeSubmenu = this.activeSubmenu.filter(item => item !== value);\n else this.activeSubmenu = [...path];\n }\n\n /** Check if a sub-menu is active. */\n private isSubmenuActive(value: string): boolean {\n return this.activeSubmenu.includes(value);\n }\n\n private isMenuActive() {\n const isRootSubInsideGroup = this.options.find(({ value }) => this.activeSubmenu.every(val => val === value));\n return this.smallMenu && (this.activeSubmenu?.length === 0 || isRootSubInsideGroup);\n }\n\n private isCurrentSubMenu(value: string) {\n return Boolean(this.activeSubmenu[this.activeSubmenu.length - 1] === value);\n }\n\n private getOptionTrailing(option: PnActionMenuItem) {\n const useButtonIcon = option.options?.length && angle_right;\n const useTrailingIcon = option.trailingIcon;\n const useLinkIcon = option.target === '_blank' && open_in_new;\n\n /** If the user has defined a trialing icon, use it first. */\n const icon = useButtonIcon || useTrailingIcon || useLinkIcon;\n\n if (icon) {\n return <pn-icon icon={icon} color=\"blue700\" data-suffix data-active={this.isSubmenuActive(option.value)} />;\n }\n if (option.suffix) {\n return <span class=\"pn-action-menu-item-suffix\">{option.suffix}</span>;\n }\n }\n\n private renderCheckbox(option: PnActionMenuInput) {\n const id = `pn-menu-${option.value}-label`;\n const idHelper = `pn-menu-${option.value}-helpertext`;\n return (\n <div class=\"pn-action-menu-item-content\">\n <input\n type={option.input}\n id={id}\n class=\"pn-action-menu-input\"\n name={option.name}\n value={option.value}\n checked={option.checked}\n disabled={option.disabled}\n aria-describedby={option.helpertext ? idHelper : null}\n onInput={event => this.optionSelect(option, event)}\n tabIndex={this.open ? null : -1}\n />\n\n <div class=\"pn-action-menu-button\">\n {!!option.icon && <pn-icon icon={option.icon} color=\"blue700\" />}\n\n <div class=\"pn-action-menu-item-text\">\n <label htmlFor={id} class=\"pn-action-menu-item-label\">\n {option.label}\n </label>\n {option.helpertext && (\n <p id={idHelper} class=\"pn-action-menu-item-helpertext\">\n <span>{option.helpertext}</span>\n </p>\n )}\n </div>\n {option.input === 'checkbox' ? (\n <div class=\"pn-action-menu-checkbox\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\">\n <polyline class=\"pn-action-menu-checkbox-checkmark-path\" points=\"4,12 9,17 20,6\" stroke-width=\"3\" />\n </svg>\n </div>\n ) : (\n <div class=\"pn-action-menu-radio\">\n <div class=\"pn-action-menu-radio-outer\">\n <div class=\"pn-action-menu-radio-inner\" />\n </div>\n </div>\n )}\n </div>\n </div>\n );\n }\n\n private renderButton(option: PnActionMenuItem) {\n const isCloseButton = option.label === 'BACK';\n const isSub = !!option?.options?.length;\n const isGroup = !!option?.group?.length;\n const isLink = !!option.href && !isSub && !isGroup;\n\n const appendedId = isCloseButton ? '-close' : '';\n const hasIcon = isCloseButton || !!option.icon;\n\n const trailingObject = isCloseButton ? null : this.getOptionTrailing(option);\n const open = this.isSubmenuActive(option.value);\n const subMenuAttrs = isSub\n ? {\n 'aria-haspopup': 'true',\n 'aria-controls': open ? this.getListId(option) : null,\n 'aria-expanded': open?.toString(),\n }\n : {};\n\n const attrs = isLink\n ? {\n href: option.href,\n target: option.target,\n }\n : {\n disabled: option.disabled,\n };\n\n const Tag = isLink ? 'a' : 'button';\n\n return isGroup ? (\n <div class=\"pn-action-menu-group-label\">\n <p class=\"pn-action-menu-p\">{option.label}</p>\n {option.helpertext && <p class=\"pn-action-menu-group-helpertext\">{option.helpertext}</p>}\n </div>\n ) : (\n <div class=\"pn-action-menu-item-content\" data-close={isCloseButton}>\n <Tag\n id={this.getButtonId(option) + appendedId}\n class=\"pn-action-menu-button\"\n {...subMenuAttrs}\n {...attrs}\n tabIndex={this.open ? null : -1}\n onClick={event => this.optionSelect(option, event)}\n onKeyDown={(event: KeyboardEvent) => this.escButton(event, option)}\n >\n {hasIcon && <pn-icon icon={isCloseButton ? angle_left : option.icon} color=\"blue700\" />}\n <div class=\"pn-action-menu-item-text\">\n <span class=\"pn-action-menu-item-label\">{isCloseButton ? this.translate('BACK') : option.label}</span>\n {option.helpertext && !isLink && <span class=\"pn-action-menu-item-helpertext\">{option.helpertext}</span>}\n </div>\n {trailingObject}\n </Tag>\n </div>\n );\n }\n\n private renderSub(option: PnActionMenuItem) {\n return (\n <menu\n id={this.getListId(option)}\n aria-labelledby={this.getButtonId(option)}\n class=\"pn-action-menu-sub\"\n data-open={this.isSubmenuActive(option.value)?.toString()}\n data-current={this.isCurrentSubMenu(option.value)}\n >\n {this.smallMenu && (\n <li class=\"pn-action-menu-item\">\n {this.renderButton({\n label: 'BACK',\n value: option.value,\n options: option.options,\n })}\n </li>\n )}\n {option.options.map(item => this.renderMenuItem(item))}\n </menu>\n );\n }\n\n private renderGroup(option: PnActionMenuGroup) {\n return <menu class=\"pn-action-menu-group\">{option.group.map(item => this.renderMenuItem(item))}</menu>;\n }\n\n private renderMenuItem(option: PnActionMenuItem) {\n const isSub = !!option?.options?.length;\n const isGroup = !isSub && !!option?.group?.length;\n\n const isCheckbox = !!option.input && !isSub && !isGroup;\n\n return (\n <li class=\"pn-action-menu-item\" data-group={isGroup} data-sub={isSub}>\n {isCheckbox ? this.renderCheckbox(option) : this.renderButton(option)}\n {isSub ? this.renderSub(option) : isGroup && this.renderGroup(option)}\n </li>\n );\n }\n\n private renderMenu() {\n return (\n <div\n id={this.menuListId}\n class=\"pn-action-menu-container\"\n role=\"region\"\n aria-labelledby={this.menuButtonId}\n data-open={this.open}\n data-moving={this.isClosing || this.isExpanding}\n data-upwards={this.upwards}\n data-small={this.smallMenu}\n style={{ height: '0px' }}\n ref={el => (this.menuContainer = el)}\n >\n <menu class=\"pn-action-menu-list\" ref={el => (this.menuList = el)} data-current={this.isMenuActive()}>\n {this.options?.map(option => this.renderMenuItem(option))}\n </menu>\n </div>\n );\n }\n\n render() {\n return (\n <Host>\n <div id={this.menuId !== this.id ? this.menuId : null} class=\"pn-action-menu\">\n <pn-button\n icon={this.getTriggerIcon()}\n {...this.button}\n buttonId={this.menuButtonId}\n tooltipUp={!this.upwards}\n ariahaspopup=\"true\"\n ariacontrols={this.open ? this.menuListId : null}\n ariaexpanded={this.open.toString()}\n data-default-icon={!this.button?.icon}\n onPnClick={() => this.toggleActionMenu()}\n ref={el => (this.menuTrigger = el)}\n />\n {this.renderMenu()}\n </div>\n </Host>\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"pn-action-menu.js","sourceRoot":"","sources":["../../../../src/components/buttons/pn-action-menu/pn-action-menu.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Prop, State, Watch, Element, h, Host, Event, EventEmitter, Listen } from '@stencil/core';\n\nimport {\n awaitTopbar,\n en,\n getMenuWidth,\n getTotalHeightOffset,\n isSmallScreen,\n reduceMotion,\n ripple,\n uuidv4,\n} from '@/index';\nimport type {\n PnLanguages,\n PnActionMenuItem,\n Components,\n PnActionMenuInput,\n PnActionMenuGroup,\n PnMeasurements,\n} from '@/index';\n\nimport { translations, PnMenuTextProp } from './translation';\n\nimport { chevron_down, chevron_left, chevron_right, open_in_new } from 'pn-design-assets/pn-assets/icons.js';\n\n/**\n * Create a list of actions in an accessible way.\n *\n * Option types include:\n *\n * - Regular button, click and it will collapse the menu,\n * - Checkbox/radio, toggle the option on/off\n * - Link, behaves like a regular `a[href]` element.\n *\n * You can group these actions in groups and/or sub menus.\n *\n * - `group`, an array of options. The label will act as a title for the items.\n * - `options`, an array of options. These items will appear in a sub-menu that can be toggled.\n *\n * @see {@link PnActionMenuItem}\n */\n@Component({\n tag: 'pn-action-menu',\n styleUrl: 'pn-action-menu.scss',\n})\nexport class PnActionMenu {\n private readonly id: string = `pn-action-menu-${uuidv4()}`;\n\n private menuButtonId: string = `${this.id}-button`;\n private menuListId: string = `${this.id}-list`;\n\n private menuTrigger: HTMLPnButtonElement;\n private menuContainer: HTMLDivElement;\n private menuList: HTMLMenuElement;\n\n private animation: Animation;\n private readonly duration: number = 400;\n private animationDuration: number = this.duration;\n\n private timeout: NodeJS.Timeout;\n\n /** 16em */\n private readonly menuWidth: number = 256;\n\n @Element() private hostElement: HTMLElement;\n\n @State() private smallMenu: boolean = null;\n @State() private upwards: boolean = false;\n\n @State() private activeSubmenu: PnActionMenuItem['value'][] = [];\n\n @State() private isClosing = false;\n @State() private isExpanding = false;\n\n /** Array of action menu options. @see {@link PnActionMenuItem} */\n @Prop() options: PnActionMenuItem[] = [];\n /** Set any prop from the `pn-button` component here. @see {@link Components.PnButton} */\n @Prop() button: Components.PnButton;\n\n /** Set a custom ID for the menu. */\n @Prop() menuId?: string = this.id;\n /** Manually set the language. */\n @Prop({ mutable: true }) language?: PnLanguages = null;\n\n /** Open/close the action menu manually. @category Features */\n @Prop({ mutable: true, reflect: true }) open?: boolean = false;\n /** Prefer that the menu open upwards, if there is enough space. @category Features */\n @Prop() menuUp?: boolean = false;\n /** Prefer that the submenus opens to the left, if there is enough space. @category Features */\n @Prop() menuLeft?: boolean = false;\n\n /** Emitted when the menu is opened or closed. */\n @Event() private menuToggle: EventEmitter<{ open: boolean }>;\n /** Emitted when the menu is fully hidden/visible after the animation has played. */\n @Event() private menuVisible: EventEmitter<{ visible: boolean }>;\n /** Emitted when an option is clicked (button, link, input or submenus). */\n @Event() private menuOption: EventEmitter<{\n /** Which type of menu item was clicked. */\n type: 'button' | 'link' | 'input' | 'submenu';\n /** If its an `input` type (checkbox/radio), it will be a generic `Event` (ChangeEvent) instead of `MouseEvent`. */\n click: MouseEvent | Event;\n /** The full {@link PnActionMenuItem} object. */\n option: PnActionMenuItem;\n /** If the submenu is open/closed. */\n open?: Boolean;\n }>;\n\n @Watch('options')\n handleOptions() {\n this.setMenuLayout();\n }\n\n @Watch('open')\n openHandler() {\n this.setAnimationDuration();\n\n requestAnimationFrame(() => {\n if (this.open && !(this.isClosing || this.isExpanding)) {\n this.setOffset();\n this.setMenuLayout();\n }\n\n this.gridHandler();\n\n this.menuToggle.emit({ open: this.open });\n\n clearTimeout(this.timeout);\n this.timeout = setTimeout(() => {\n if (!this.open) {\n this.activeSubmenu = [];\n const subMenus = this.hostElement.querySelectorAll<HTMLUListElement>('[data-x]');\n Array.from(subMenus).forEach(el => {\n el.removeAttribute('data-x');\n el.removeAttribute('data-y');\n });\n }\n\n this.menuVisible.emit({ visible: this.open });\n }, this.animationDuration);\n });\n }\n\n @Watch('menuId')\n handleMenuId() {\n this.menuButtonId = `${this.menuId}-button`;\n this.menuListId = `${this.menuId}-list`;\n }\n\n @Listen('resize', { target: 'window' })\n handleResize() {\n if (this.open) this.toggleActionMenu(false);\n }\n\n async componentWillLoad() {\n if (!this.options.length) console.warn(`${this.hostElement.localName}: No options set.`);\n\n this.handleMenuId();\n this.setAnimationDuration();\n\n if (this.language !== null) await awaitTopbar(this.hostElement);\n }\n\n componentDidLoad() {\n this.setOffset();\n\n if (this.open) this.gridHandler();\n }\n\n private translate(prop: PnMenuTextProp) {\n return translations[prop][this.language || en];\n }\n\n private globalEvents = (event: PointerEvent | KeyboardEvent) => {\n const target = event.target as HTMLElement;\n const isWithinActionMenu = target?.closest(this.hostElement.localName);\n if (!isWithinActionMenu) this.closeEachSubMenu(true);\n };\n\n private addGlobalEventListeners() {\n const root: Document = this.hostElement.getRootNode() as Document;\n\n root.addEventListener('click', this.globalEvents);\n }\n\n private removeGlobalEventListeners() {\n const root: Document = this.hostElement.getRootNode() as Document;\n\n root.removeEventListener('click', this.globalEvents);\n }\n\n /** Open/close the action menu. */\n private toggleActionMenu(state?: boolean) {\n this.open = state ?? !this.open;\n }\n\n private setMenuLayout() {\n if (!this.menuContainer) return;\n\n if (!(this.isClosing || this.isExpanding)) this.resetMaxHeight();\n\n const measurements = this.getMenuMeasurements();\n\n this.setDirection(measurements);\n this.setMenuSize(measurements);\n this.setMaxHeight(measurements);\n }\n\n private setDirection({ hUp, hDown, sUp, sDown }: PnMeasurements) {\n const fitsUpwards = sUp > hUp;\n const fitsDownards = sDown > hDown;\n const moreSpaceDown = sDown > sUp;\n this.upwards = (this.menuUp && fitsUpwards) || (!fitsDownards && !moreSpaceDown);\n }\n\n private setMenuSize({ hUp, hDown, sUp, sDown }: PnMeasurements) {\n const isWidthSmall = isSmallScreen();\n const menuFits = this.upwards ? sUp > hUp : sDown > hDown;\n const isSmall = isWidthSmall || !menuFits;\n\n if (isSmall !== this.smallMenu) {\n this.smallMenu = isSmall;\n }\n }\n\n private setMaxHeight({ hUp, hDown, sUp, sDown }: PnMeasurements) {\n if (this.smallMenu) {\n const heightUp = hUp > sUp ? hUp - 16 : hUp;\n const heightDown = hDown > sDown ? hDown - 8 : hDown;\n this.hostElement.style.setProperty('--pn-menu-height', `${this.upwards ? heightUp : heightDown}px`);\n } else this.resetMaxHeight();\n }\n\n private resetMaxHeight() {\n this.hostElement.style.setProperty('--pn-menu-height', 'unset');\n }\n\n private setAnimationDuration() {\n if (reduceMotion()) this.animationDuration = 0;\n else this.animationDuration = this.duration;\n }\n\n private getRect(element: HTMLElement): DOMRect {\n return element.getBoundingClientRect();\n }\n\n private getMenuMeasurements(): PnMeasurements {\n const allLists = Array.from(this.menuContainer.querySelectorAll('menu'));\n const maxHeight = Math.max(...allLists.map(el => el.scrollHeight));\n\n const rectButton = this.getRect(this.menuTrigger);\n const rectMenu = this.getRect(this.menuContainer);\n\n /** Measurements upwards. */\n const sUp = rectButton.top - getTotalHeightOffset();\n const hUp = sUp > maxHeight ? maxHeight : sUp;\n\n /** Measurements downwards. */\n const sDown = innerHeight - rectMenu.top;\n const hDown = sDown > maxHeight ? maxHeight : sDown;\n\n return {\n hUp,\n hDown,\n sUp,\n sDown,\n };\n }\n\n private setOffset() {\n const data = this.getRect(this.hostElement);\n const sideMenuWidth = getMenuWidth();\n\n // Calculate potential menu position\n const menuLeft = data.left;\n const menuRight = data.left + this.menuWidth;\n\n // Define boundaries\n const leftBoundary = sideMenuWidth + 16; // Left menu + buffer\n const rightBoundary = innerWidth - 16; // Right edge - buffer\n\n let offset = 0;\n\n // Check if menu would overlap left menu or go off left edge\n if (menuLeft < leftBoundary) {\n offset = leftBoundary - menuLeft;\n }\n // Check if menu would go off right edge\n else if (menuRight > rightBoundary) {\n offset = rightBoundary - menuRight;\n }\n\n if (this.menuContainer) this.menuContainer.style.setProperty('--pn-action-menu-offset', `${offset}px`);\n }\n\n private getListId(option: PnActionMenuItem) {\n return `pn-menu-${option.value}-list`;\n }\n\n private getButtonId(option: PnActionMenuItem) {\n return `pn-menu-${option.value}-button`;\n }\n\n private getTriggerIcon() {\n if (this.button?.icon) return;\n return chevron_down;\n }\n\n /** Set the path of open sub menus. */\n private getSubMenuPath(options: PnActionMenuItem[], value: string, path = []): string[] {\n for (const item of options) {\n const newPath = [...path, item.value];\n if (item.value === value) return newPath;\n\n if (item.options || item.group) {\n const result = this.getSubMenuPath(item.options || item.group, value, newPath);\n if (result) return result;\n }\n }\n return null;\n }\n\n private closeEachSubMenu(preventFocus: boolean = false) {\n if (!preventFocus) this.menuTrigger?.querySelector('button')?.focus({ preventScroll: true });\n\n const interval = setInterval(() => {\n if (this.smallMenu || this.activeSubmenu.length === 0) {\n clearInterval(interval);\n this.toggleActionMenu(false);\n } else {\n this.activeSubmenu.pop();\n this.activeSubmenu = [...this.activeSubmenu];\n }\n }, 150);\n }\n\n private escButton(event: KeyboardEvent, option: PnActionMenuItem) {\n const { key } = event;\n\n if (key === 'Escape') {\n event.preventDefault();\n event.stopImmediatePropagation();\n\n this.isSubmenuActive(option.value) ? this.toggleSub(option) : this.toggleActionMenu();\n }\n }\n\n // Animation Start\n\n private gridHandler() {\n if (this.open) this.openGrid();\n else this.closeGrid();\n }\n\n private openGrid() {\n this.addGlobalEventListeners();\n\n const list = this.getRect(this.menuList);\n\n const { clientHeight } = this.menuContainer;\n const height = this.isClosing ? clientHeight : 0;\n this.menuContainer.style.height = `${list.height}px`;\n\n this.isExpanding = true;\n this.animateGrid(true, `${height}px`, `${list.height}px`);\n }\n\n private closeGrid() {\n this.removeGlobalEventListeners();\n\n const list = this.getRect(this.menuList);\n\n const { clientHeight } = this.menuContainer;\n const height = this.isExpanding ? clientHeight : list.height;\n this.menuContainer.style.height = `0px`;\n\n this.isClosing = true;\n this.animateGrid(false, `${height}px`, `0px`);\n }\n\n private animateGrid(open: boolean, startHeight: string, endHeight: string) {\n this.cancelAnimations();\n this.animation = this.menuContainer.animate(\n {\n height: [startHeight, endHeight],\n },\n {\n duration: this.animationDuration,\n easing: 'cubic-bezier(0.6, 0, 0.2, 1)',\n },\n );\n this.animation.onfinish = () => this.animationFinish();\n this.animation.oncancel = () => (open ? (this.isExpanding = false) : (this.isClosing = false));\n }\n\n private animationFinish() {\n this.cancelAnimations();\n this.menuContainer.style.height = this.isClosing ? '0px' : '';\n this.isClosing = false;\n this.isExpanding = false;\n }\n\n private cancelAnimations() {\n if (this.animation) this.animation.cancel();\n }\n\n // Animation end\n\n private async optionSelect(option: PnActionMenuItem, click: MouseEvent | Event) {\n const type = option?.options?.length ? 'submenu' : !!option.input ? 'input' : option.href ? 'link' : 'button';\n const isSubMenu = type === 'submenu';\n\n if (isSubMenu) this.toggleSub(option);\n else if (type === 'button') this.closeEachSubMenu();\n else if (type === 'input') option.checked = (click.target as HTMLInputElement).checked;\n\n this.menuOption.emit({\n option,\n type,\n click,\n open: isSubMenu ? this.isSubmenuActive(option.value) : null,\n });\n\n const target = click.target as HTMLElement;\n const element =\n target.localName === 'input'\n ? (target.nextElementSibling as HTMLElement)\n : target.className === 'pn-action-menu-button'\n ? target\n : target.closest<HTMLElement>('.pn-action-menu-button');\n\n const { x, width, y, top } = this.getRect(element as HTMLElement);\n const clientCor = { clientX: x + width - 24, clientY: y - top };\n\n ripple(click.type === 'click' ? (click as MouseEvent) : clientCor, element);\n\n this.menuContainer.scrollTo({ top: 0 });\n }\n\n /** Toggle individual sub-menus inside the action menu by using the `option['value']`. */\n private toggleSub(option: PnActionMenuItem) {\n const { value } = option;\n\n const path = this.getSubMenuPath(this.options, value);\n const isActive = this.activeSubmenu.includes(value);\n isActive && path.splice(this.activeSubmenu.indexOf(value), 1);\n\n const item = this.hostElement.querySelector<HTMLElement>(`#${this.getListId(option)}`);\n const data = this.getRect(item);\n\n const spaceLeft = data.left;\n const spaceRight = innerWidth - data.right - 8;\n\n const fitsLeft = spaceLeft > data.width;\n const fitsRight = spaceRight > data.width;\n\n const climbUp = this.menuUp && data.top - data.height > 0;\n const yDirection = climbUp ? 'top' : 'bottom';\n\n if (!isActive && !item.dataset.x)\n item.setAttribute(\n 'data-x',\n this.menuLeft && fitsLeft ? 'left' : fitsRight ? 'right' : fitsLeft ? 'left' : 'center',\n );\n if (!isActive && !item.dataset.y) item.setAttribute('data-y', yDirection);\n\n if (JSON.stringify(path) === JSON.stringify(this.activeSubmenu))\n this.activeSubmenu = this.activeSubmenu.filter(item => item !== value);\n else this.activeSubmenu = [...path];\n }\n\n /** Check if a sub-menu is active. */\n private isSubmenuActive(value: string): boolean {\n return this.activeSubmenu.includes(value);\n }\n\n private isMenuActive() {\n const isRootSubInsideGroup = this.options.find(({ value }) => this.activeSubmenu.every(val => val === value));\n return this.smallMenu && (this.activeSubmenu?.length === 0 || isRootSubInsideGroup);\n }\n\n private isCurrentSubMenu(value: string) {\n return Boolean(this.activeSubmenu[this.activeSubmenu.length - 1] === value);\n }\n\n private getOptionTrailing(option: PnActionMenuItem) {\n const useButtonIcon = option.options?.length && chevron_right;\n const useTrailingIcon = option.trailingIcon;\n const useLinkIcon = option.target === '_blank' && open_in_new;\n\n /** If the user has defined a trialing icon, use it first. */\n const icon = useButtonIcon || useTrailingIcon || useLinkIcon;\n\n if (icon) {\n return <pn-icon icon={icon} color=\"blue700\" data-suffix data-active={this.isSubmenuActive(option.value)} />;\n }\n if (option.suffix) {\n return <span class=\"pn-action-menu-item-suffix\">{option.suffix}</span>;\n }\n }\n\n private renderCheckbox(option: PnActionMenuInput) {\n const id = `pn-menu-${option.value}-label`;\n const idHelper = `pn-menu-${option.value}-helpertext`;\n return (\n <div class=\"pn-action-menu-item-content\">\n <input\n type={option.input}\n id={id}\n class=\"pn-action-menu-input\"\n name={option.name}\n value={option.value}\n checked={option.checked}\n disabled={option.disabled}\n aria-describedby={option.helpertext ? idHelper : null}\n onInput={event => this.optionSelect(option, event)}\n tabIndex={this.open ? null : -1}\n />\n\n <div class=\"pn-action-menu-button\">\n {!!option.icon && <pn-icon icon={option.icon} color=\"blue700\" />}\n\n <div class=\"pn-action-menu-item-text\">\n <label htmlFor={id} class=\"pn-action-menu-item-label\">\n {option.label}\n </label>\n {option.helpertext && (\n <p id={idHelper} class=\"pn-action-menu-item-helpertext\">\n <span>{option.helpertext}</span>\n </p>\n )}\n </div>\n {option.input === 'checkbox' ? (\n <div class=\"pn-action-menu-checkbox\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\">\n <polyline class=\"pn-action-menu-checkbox-checkmark-path\" points=\"4,12 9,17 20,6\" stroke-width=\"3\" />\n </svg>\n </div>\n ) : (\n <div class=\"pn-action-menu-radio\">\n <div class=\"pn-action-menu-radio-outer\">\n <div class=\"pn-action-menu-radio-inner\" />\n </div>\n </div>\n )}\n </div>\n </div>\n );\n }\n\n private renderButton(option: PnActionMenuItem) {\n const isCloseButton = option.label === 'BACK';\n const isSub = !!option?.options?.length;\n const isGroup = !!option?.group?.length;\n const isLink = !!option.href && !isSub && !isGroup;\n\n const appendedId = isCloseButton ? '-close' : '';\n const hasIcon = isCloseButton || !!option.icon;\n\n const trailingObject = isCloseButton ? null : this.getOptionTrailing(option);\n const open = this.isSubmenuActive(option.value);\n const subMenuAttrs = isSub\n ? {\n 'aria-haspopup': 'true',\n 'aria-controls': open ? this.getListId(option) : null,\n 'aria-expanded': open?.toString(),\n }\n : {};\n\n const attrs = isLink\n ? {\n href: option.href,\n target: option.target,\n }\n : {\n disabled: option.disabled,\n };\n\n const Tag = isLink ? 'a' : 'button';\n\n return isGroup ? (\n <div class=\"pn-action-menu-group-label\">\n <p class=\"pn-action-menu-p\">{option.label}</p>\n {option.helpertext && <p class=\"pn-action-menu-group-helpertext\">{option.helpertext}</p>}\n </div>\n ) : (\n <div class=\"pn-action-menu-item-content\" data-close={isCloseButton}>\n <Tag\n id={this.getButtonId(option) + appendedId}\n class=\"pn-action-menu-button\"\n {...subMenuAttrs}\n {...attrs}\n tabIndex={this.open ? null : -1}\n onClick={event => this.optionSelect(option, event)}\n onKeyDown={(event: KeyboardEvent) => this.escButton(event, option)}\n >\n {hasIcon && <pn-icon icon={isCloseButton ? chevron_left : option.icon} color=\"blue700\" />}\n <div class=\"pn-action-menu-item-text\">\n <span class=\"pn-action-menu-item-label\">{isCloseButton ? this.translate('BACK') : option.label}</span>\n {option.helpertext && !isLink && <span class=\"pn-action-menu-item-helpertext\">{option.helpertext}</span>}\n </div>\n {trailingObject}\n </Tag>\n </div>\n );\n }\n\n private renderSub(option: PnActionMenuItem) {\n return (\n <menu\n id={this.getListId(option)}\n aria-labelledby={this.getButtonId(option)}\n class=\"pn-action-menu-sub\"\n data-open={this.isSubmenuActive(option.value)?.toString()}\n data-current={this.isCurrentSubMenu(option.value)}\n >\n {this.smallMenu && (\n <li class=\"pn-action-menu-item\">\n {this.renderButton({\n label: 'BACK',\n value: option.value,\n options: option.options,\n })}\n </li>\n )}\n {option.options.map(item => this.renderMenuItem(item))}\n </menu>\n );\n }\n\n private renderGroup(option: PnActionMenuGroup) {\n return <menu class=\"pn-action-menu-group\">{option.group.map(item => this.renderMenuItem(item))}</menu>;\n }\n\n private renderMenuItem(option: PnActionMenuItem) {\n const isSub = !!option?.options?.length;\n const isGroup = !isSub && !!option?.group?.length;\n\n const isCheckbox = !!option.input && !isSub && !isGroup;\n\n return (\n <li class=\"pn-action-menu-item\" data-group={isGroup} data-sub={isSub}>\n {isCheckbox ? this.renderCheckbox(option) : this.renderButton(option)}\n {isSub ? this.renderSub(option) : isGroup && this.renderGroup(option)}\n </li>\n );\n }\n\n private renderMenu() {\n return (\n <div\n id={this.menuListId}\n class=\"pn-action-menu-container\"\n role=\"region\"\n aria-labelledby={this.menuButtonId}\n data-open={this.open}\n data-moving={this.isClosing || this.isExpanding}\n data-upwards={this.upwards}\n data-small={this.smallMenu}\n style={{ height: '0px' }}\n ref={el => (this.menuContainer = el)}\n >\n <menu class=\"pn-action-menu-list\" ref={el => (this.menuList = el)} data-current={this.isMenuActive()}>\n {this.options?.map(option => this.renderMenuItem(option))}\n </menu>\n </div>\n );\n }\n\n render() {\n return (\n <Host>\n <div id={this.menuId !== this.id ? this.menuId : null} class=\"pn-action-menu\">\n <pn-button\n icon={this.getTriggerIcon()}\n {...this.button}\n buttonId={this.menuButtonId}\n tooltipUp={!this.upwards}\n ariahaspopup=\"true\"\n ariacontrols={this.open ? this.menuListId : null}\n ariaexpanded={this.open.toString()}\n data-default-icon={!this.button?.icon}\n onPnClick={() => this.toggleActionMenu()}\n ref={el => (this.menuTrigger = el)}\n />\n {this.renderMenu()}\n </div>\n </Host>\n );\n }\n}\n"]}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* By PostNord.
|
|
4
4
|
*/
|
|
5
5
|
import { h, Host } from "@stencil/core";
|
|
6
|
-
import {
|
|
6
|
+
import { chevron_down } from "pn-design-assets/pn-assets/icons.js";
|
|
7
7
|
import { reduceMotion, ripple } from "../../../../index";
|
|
8
8
|
/**
|
|
9
9
|
* Use this row component inside a `pn-accordion` to create an accordion group.
|
|
@@ -113,7 +113,7 @@ export class PnAccordionRow {
|
|
|
113
113
|
this.animation.cancel();
|
|
114
114
|
}
|
|
115
115
|
render() {
|
|
116
|
-
return (h(Host, { key: '
|
|
116
|
+
return (h(Host, { key: '0dcedaab706f95589734c04230abbdbeca16cdf1' }, h("details", { key: '58bead8dce64594af81aae11a42beea75ba0db88', class: "pn-accordion-row", open: this.state, ref: (el) => (this.details = el) }, h("summary", { key: '7447539647210cb5b132ce16d7019e310c8ca1f4', id: this.buttonid, class: "pn-accordion-row-summary", onClick: e => this.clickHandler(e), ref: el => (this.summary = el) }, h("div", { key: '83c87346e27703cab3203920848691fc8d3d007f', class: "pn-accordion-row-text", "data-transparent": this.transparent }, this.label ? this.label : '', h("slot", { key: '8904be6cbec811925b0fa935ed10c4b7bc12fb5d', name: "label" }), h("pn-icon", { key: 'cf71062d11b3a20c106dec2bec2aab1dc4bf0c7f', class: "pn-accordion-row-icon", icon: chevron_down }))), h("div", { key: 'ae73f9fa6e7121352979ec2dad9a4620cff58a91', id: this.contentid, class: "pn-accordion-row-content", ref: (el) => (this.content = el) }, h("slot", { key: '4d7d894af656c1b7e95028832611530d04f3d439' })))));
|
|
117
117
|
}
|
|
118
118
|
static get is() { return "pn-accordion-row"; }
|
|
119
119
|
static get originalStyleUrls() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pn-accordion-row.js","sourceRoot":"","sources":["../../../../../src/components/content/pn-accordion/row/pn-accordion-row.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, h, Host, Element, Event, EventEmitter, Prop, State, Listen } from '@stencil/core';\nimport { angle_down } from 'pn-design-assets/pn-assets/icons.js';\nimport { reduceMotion, ripple } from '@/index';\n\n/**\n * Use this row component inside a `pn-accordion` to create an accordion group.\n *\n * **Note**: you can use the `pn-accordion-row` without the parent accordion.\n * But you will have to style the gap between each row.\n *\n * @slot label - Include your own HTML as the label.\n * ```\n * <h3 slot=\"label\">Custom title</h3>\n * ```\n */\n@Component({\n tag: 'pn-accordion-row',\n styleUrl: 'pn-accordion-row.scss',\n})\nexport class PnAccordionRow {\n private details: HTMLDetailsElement;\n private summary: HTMLElement;\n private content: HTMLDivElement;\n private animation: Animation;\n\n private readonly defaultAnimationDuration: number = 400;\n private animationDuration: number = this.defaultAnimationDuration;\n\n @Element() hostElement: HTMLElement;\n\n @State() isClosing = false;\n @State() isExpanding = false;\n\n /** The label/title of the accordion row, you can also pass a slot with the name \"label\" if you want to put custom HTML content in there. */\n @Prop({ mutable: true }) label: string;\n /** The open/close status of the accordion row. */\n @Prop({ mutable: true }) state?: boolean = false;\n\n /** Optional unique id for the `summary` element. @category ID */\n @Prop() buttonid?: string;\n /** Optional unique id for the `div` element containing the content. @category ID */\n @Prop() contentid?: string;\n /** Optional prop that removes the default white background on the accordion row */\n @Prop() transparent: boolean = false;\n\n /** Dispatched every time the row is toggled. Includes the row element and the boolean `state` prop. */\n @Event() togglerow: EventEmitter<{ element: HTMLElement; state: Boolean }>;\n\n /** Internal function for closing rows when using the `single` prop on the `pn-accordion`. */\n @Listen('rowstate')\n handleRowState(event: CustomEvent) {\n if (event.detail !== this.state) {\n this.details.style.overflow = 'hidden';\n this.closeAccordion();\n }\n }\n\n componentWillLoad() {\n const slottedLabel = !!this.hostElement.querySelector('[slot=\"label\"]');\n this.label = slottedLabel ? null : this.label;\n }\n\n private toggleOpen(open?: boolean) {\n const state = open ?? !this.state;\n if (this.state !== open) this.togglerow.emit({ element: this.details, state });\n this.state = state;\n }\n\n private clickHandler(e: MouseEvent) {\n e.preventDefault();\n\n this.details.style.overflow = 'hidden';\n\n if (this.isClosing || !this.state) this.openAccordion();\n else if (this.isClosing || this.state) this.closeAccordion();\n\n const { x, width, y, top } = this.hostElement.getBoundingClientRect();\n const clientCor = e.clientX === 0 && e.clientY === 0 ? { clientX: x + width - 24, clientY: y - top } : e;\n\n ripple(clientCor, this.hostElement, '.pn-accordion-row-text');\n }\n\n private openAccordion() {\n this.details.style.height = `${this.details.offsetHeight}px`;\n this.toggleOpen(true);\n\n requestAnimationFrame(() => {\n this.isExpanding = true;\n\n const startHeight = `${this.details.offsetHeight}px`;\n const endHeight = `${this.summary.offsetHeight + this.content.offsetHeight}px`;\n\n this.cancelAnimations();\n\n this.animate(true, startHeight, endHeight);\n });\n }\n\n private closeAccordion() {\n this.isClosing = true;\n\n const startHeight = `${this.details.offsetHeight}px`;\n const endHeight = `${this.summary.offsetHeight}px`;\n\n this.cancelAnimations();\n\n this.animate(false, startHeight, endHeight);\n }\n\n private animate(open: boolean, startHeight: string, endHeight: string) {\n if (reduceMotion()) this.animationDuration = 0;\n else this.animationDuration = this.defaultAnimationDuration;\n\n this.animation = this.details.animate(\n {\n height: [startHeight, endHeight],\n },\n {\n duration: this.animationDuration,\n easing: 'cubic-bezier(0.6, 0, 0.2, 1)',\n },\n );\n\n this.animation.onfinish = () => this.animationFinish(open);\n\n this.animation.oncancel = () => {\n if (open) this.isExpanding = false;\n else this.isClosing = false;\n };\n }\n\n private animationFinish(open: boolean) {\n this.toggleOpen(open);\n this.cancelAnimations();\n\n this.isClosing = false;\n this.isExpanding = false;\n\n this.details.style.height = '';\n this.details.style.overflow = '';\n }\n\n private cancelAnimations() {\n if (this.animation) this.animation.cancel();\n }\n\n render() {\n return (\n <Host>\n <details class=\"pn-accordion-row\" open={this.state} ref={(el: HTMLDetailsElement) => (this.details = el)}>\n <summary\n id={this.buttonid}\n class=\"pn-accordion-row-summary\"\n onClick={e => this.clickHandler(e)}\n ref={el => (this.summary = el)}\n >\n <div class=\"pn-accordion-row-text\" data-transparent={this.transparent}>\n {this.label ? this.label : ''}\n <slot name=\"label\" />\n\n <pn-icon class=\"pn-accordion-row-icon\" icon={angle_down} />\n </div>\n </summary>\n\n <div id={this.contentid} class=\"pn-accordion-row-content\" ref={(el: HTMLDivElement) => (this.content = el)}>\n <slot />\n </div>\n </details>\n </Host>\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"pn-accordion-row.js","sourceRoot":"","sources":["../../../../../src/components/content/pn-accordion/row/pn-accordion-row.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, h, Host, Element, Event, EventEmitter, Prop, State, Listen } from '@stencil/core';\nimport { chevron_down } from 'pn-design-assets/pn-assets/icons.js';\nimport { reduceMotion, ripple } from '@/index';\n\n/**\n * Use this row component inside a `pn-accordion` to create an accordion group.\n *\n * **Note**: you can use the `pn-accordion-row` without the parent accordion.\n * But you will have to style the gap between each row.\n *\n * @slot label - Include your own HTML as the label.\n * ```\n * <h3 slot=\"label\">Custom title</h3>\n * ```\n */\n@Component({\n tag: 'pn-accordion-row',\n styleUrl: 'pn-accordion-row.scss',\n})\nexport class PnAccordionRow {\n private details: HTMLDetailsElement;\n private summary: HTMLElement;\n private content: HTMLDivElement;\n private animation: Animation;\n\n private readonly defaultAnimationDuration: number = 400;\n private animationDuration: number = this.defaultAnimationDuration;\n\n @Element() hostElement: HTMLElement;\n\n @State() isClosing = false;\n @State() isExpanding = false;\n\n /** The label/title of the accordion row, you can also pass a slot with the name \"label\" if you want to put custom HTML content in there. */\n @Prop({ mutable: true }) label: string;\n /** The open/close status of the accordion row. */\n @Prop({ mutable: true }) state?: boolean = false;\n\n /** Optional unique id for the `summary` element. @category ID */\n @Prop() buttonid?: string;\n /** Optional unique id for the `div` element containing the content. @category ID */\n @Prop() contentid?: string;\n /** Optional prop that removes the default white background on the accordion row */\n @Prop() transparent: boolean = false;\n\n /** Dispatched every time the row is toggled. Includes the row element and the boolean `state` prop. */\n @Event() togglerow: EventEmitter<{ element: HTMLElement; state: Boolean }>;\n\n /** Internal function for closing rows when using the `single` prop on the `pn-accordion`. */\n @Listen('rowstate')\n handleRowState(event: CustomEvent) {\n if (event.detail !== this.state) {\n this.details.style.overflow = 'hidden';\n this.closeAccordion();\n }\n }\n\n componentWillLoad() {\n const slottedLabel = !!this.hostElement.querySelector('[slot=\"label\"]');\n this.label = slottedLabel ? null : this.label;\n }\n\n private toggleOpen(open?: boolean) {\n const state = open ?? !this.state;\n if (this.state !== open) this.togglerow.emit({ element: this.details, state });\n this.state = state;\n }\n\n private clickHandler(e: MouseEvent) {\n e.preventDefault();\n\n this.details.style.overflow = 'hidden';\n\n if (this.isClosing || !this.state) this.openAccordion();\n else if (this.isClosing || this.state) this.closeAccordion();\n\n const { x, width, y, top } = this.hostElement.getBoundingClientRect();\n const clientCor = e.clientX === 0 && e.clientY === 0 ? { clientX: x + width - 24, clientY: y - top } : e;\n\n ripple(clientCor, this.hostElement, '.pn-accordion-row-text');\n }\n\n private openAccordion() {\n this.details.style.height = `${this.details.offsetHeight}px`;\n this.toggleOpen(true);\n\n requestAnimationFrame(() => {\n this.isExpanding = true;\n\n const startHeight = `${this.details.offsetHeight}px`;\n const endHeight = `${this.summary.offsetHeight + this.content.offsetHeight}px`;\n\n this.cancelAnimations();\n\n this.animate(true, startHeight, endHeight);\n });\n }\n\n private closeAccordion() {\n this.isClosing = true;\n\n const startHeight = `${this.details.offsetHeight}px`;\n const endHeight = `${this.summary.offsetHeight}px`;\n\n this.cancelAnimations();\n\n this.animate(false, startHeight, endHeight);\n }\n\n private animate(open: boolean, startHeight: string, endHeight: string) {\n if (reduceMotion()) this.animationDuration = 0;\n else this.animationDuration = this.defaultAnimationDuration;\n\n this.animation = this.details.animate(\n {\n height: [startHeight, endHeight],\n },\n {\n duration: this.animationDuration,\n easing: 'cubic-bezier(0.6, 0, 0.2, 1)',\n },\n );\n\n this.animation.onfinish = () => this.animationFinish(open);\n\n this.animation.oncancel = () => {\n if (open) this.isExpanding = false;\n else this.isClosing = false;\n };\n }\n\n private animationFinish(open: boolean) {\n this.toggleOpen(open);\n this.cancelAnimations();\n\n this.isClosing = false;\n this.isExpanding = false;\n\n this.details.style.height = '';\n this.details.style.overflow = '';\n }\n\n private cancelAnimations() {\n if (this.animation) this.animation.cancel();\n }\n\n render() {\n return (\n <Host>\n <details class=\"pn-accordion-row\" open={this.state} ref={(el: HTMLDetailsElement) => (this.details = el)}>\n <summary\n id={this.buttonid}\n class=\"pn-accordion-row-summary\"\n onClick={e => this.clickHandler(e)}\n ref={el => (this.summary = el)}\n >\n <div class=\"pn-accordion-row-text\" data-transparent={this.transparent}>\n {this.label ? this.label : ''}\n <slot name=\"label\" />\n\n <pn-icon class=\"pn-accordion-row-icon\" icon={chevron_down} />\n </div>\n </summary>\n\n <div id={this.contentid} class=\"pn-accordion-row-content\" ref={(el: HTMLDivElement) => (this.content = el)}>\n <slot />\n </div>\n </details>\n </Host>\n );\n }\n}\n"]}
|
package/umd/modules/@postnord/web-components/collection/components/feedback/pn-modal/pn-modal.css
CHANGED
|
@@ -3,22 +3,17 @@
|
|
|
3
3
|
/* Transition variables */
|
|
4
4
|
pn-modal .pn-modal {
|
|
5
5
|
--pn-modal-max-width: 45em;
|
|
6
|
-
--pn-modal-overflow: hidden auto;
|
|
7
6
|
z-index: 10000;
|
|
8
7
|
position: fixed;
|
|
9
8
|
top: 0;
|
|
10
9
|
inset-block-start: 0;
|
|
11
10
|
inset-block-end: 0;
|
|
12
11
|
margin: auto;
|
|
13
|
-
|
|
12
|
+
padding: 0;
|
|
14
13
|
max-width: var(--pn-modal-max-width);
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
border:
|
|
18
|
-
border-radius: 0.5em;
|
|
19
|
-
flex-direction: column;
|
|
20
|
-
align-items: stretch;
|
|
21
|
-
gap: 0.75em;
|
|
14
|
+
overflow: hidden;
|
|
15
|
+
border: 0;
|
|
16
|
+
border-radius: 1.5em;
|
|
22
17
|
box-shadow: 0 0.25em 0.875em rgba(0, 0, 0, 0.18), 0 1.625em 3.5em rgba(0, 0, 0, 0.22);
|
|
23
18
|
background-color: #ffffff;
|
|
24
19
|
display: none;
|
|
@@ -26,7 +21,7 @@ pn-modal .pn-modal {
|
|
|
26
21
|
transform: translate(0%, 20%);
|
|
27
22
|
outline: 0.2rem solid transparent;
|
|
28
23
|
outline-offset: 0.2rem;
|
|
29
|
-
transition-property: opacity, overlay, display, transform, outline-color;
|
|
24
|
+
transition-property: opacity, overlay, display, transform, outline-color, border-radius;
|
|
30
25
|
transition-duration: 0.4s;
|
|
31
26
|
transition-timing-function: cubic-bezier(0.7, 0, 0.3, 1);
|
|
32
27
|
transition-behavior: allow-discrete;
|
|
@@ -34,40 +29,34 @@ pn-modal .pn-modal {
|
|
|
34
29
|
pn-modal .pn-modal:focus-visible {
|
|
35
30
|
outline-color: #ffffff;
|
|
36
31
|
}
|
|
37
|
-
pn-modal .pn-modal::-webkit-scrollbar {
|
|
38
|
-
background-color: #ffffff;
|
|
39
|
-
width: 0.875em;
|
|
40
|
-
border-radius: 0.5em;
|
|
41
|
-
}
|
|
42
|
-
pn-modal .pn-modal::-webkit-scrollbar-track {
|
|
43
|
-
background-color: #ffffff;
|
|
44
|
-
border-radius: 0.5em;
|
|
45
|
-
}
|
|
46
|
-
pn-modal .pn-modal::-webkit-scrollbar-thumb {
|
|
47
|
-
cursor: pointer;
|
|
48
|
-
background-color: #969087;
|
|
49
|
-
border-radius: 1em;
|
|
50
|
-
border: 0.25em solid #ffffff;
|
|
51
|
-
}
|
|
52
|
-
pn-modal .pn-modal::-webkit-scrollbar-thumb:hover {
|
|
53
|
-
background-color: #5e554a;
|
|
54
|
-
}
|
|
55
|
-
pn-modal .pn-modal::-webkit-scrollbar-corner, pn-modal .pn-modal::-webkit-scrollbar-button {
|
|
56
|
-
display: none;
|
|
57
|
-
}
|
|
58
32
|
@media (prefers-reduced-motion: reduce) {
|
|
59
33
|
pn-modal .pn-modal {
|
|
60
34
|
transition-duration: 0s;
|
|
61
35
|
transition-delay: 0s;
|
|
62
36
|
}
|
|
63
37
|
}
|
|
38
|
+
pn-modal .pn-modal[data-allow-overflow] {
|
|
39
|
+
overflow: unset;
|
|
40
|
+
}
|
|
41
|
+
pn-modal .pn-modal[data-allow-overflow] .pn-modal-container {
|
|
42
|
+
overflow: unset;
|
|
43
|
+
}
|
|
44
|
+
pn-modal .pn-modal[data-allow-overflow] .pn-modal-picture {
|
|
45
|
+
border-top-right-radius: 1.5em;
|
|
46
|
+
}
|
|
47
|
+
pn-modal .pn-modal[data-image] {
|
|
48
|
+
padding-top: 0;
|
|
49
|
+
}
|
|
64
50
|
pn-modal .pn-modal[data-sheet] {
|
|
65
51
|
margin: 0 0 0 auto;
|
|
66
52
|
height: 100%;
|
|
67
53
|
max-height: unset;
|
|
68
|
-
border-radius:
|
|
54
|
+
border-radius: 1.5em 0 0 1.5em;
|
|
69
55
|
transform: translate(20%, 0%);
|
|
70
56
|
}
|
|
57
|
+
pn-modal .pn-modal[data-sheet] .pn-modal-container {
|
|
58
|
+
max-height: unset;
|
|
59
|
+
}
|
|
71
60
|
pn-modal .pn-modal[open] {
|
|
72
61
|
display: flex;
|
|
73
62
|
opacity: 1;
|
|
@@ -109,16 +98,52 @@ pn-modal .pn-modal[open]::backdrop {
|
|
|
109
98
|
background-color: rgba(0, 0, 0, 0);
|
|
110
99
|
}
|
|
111
100
|
}
|
|
101
|
+
pn-modal .pn-modal-container {
|
|
102
|
+
max-height: 85vh;
|
|
103
|
+
display: flex;
|
|
104
|
+
flex-direction: column;
|
|
105
|
+
align-items: stretch;
|
|
106
|
+
height: 100%;
|
|
107
|
+
overflow: hidden auto;
|
|
108
|
+
}
|
|
109
|
+
pn-modal .pn-modal-container::-webkit-scrollbar {
|
|
110
|
+
background-color: #ffffff;
|
|
111
|
+
width: 0.875em;
|
|
112
|
+
border-radius: 0.5em;
|
|
113
|
+
}
|
|
114
|
+
pn-modal .pn-modal-container::-webkit-scrollbar-track {
|
|
115
|
+
background-color: #ffffff;
|
|
116
|
+
border-radius: 0.5em;
|
|
117
|
+
}
|
|
118
|
+
pn-modal .pn-modal-container::-webkit-scrollbar-thumb {
|
|
119
|
+
cursor: pointer;
|
|
120
|
+
background-color: #969087;
|
|
121
|
+
border-radius: 1em;
|
|
122
|
+
border: 0.25em solid #ffffff;
|
|
123
|
+
}
|
|
124
|
+
pn-modal .pn-modal-container::-webkit-scrollbar-thumb:hover {
|
|
125
|
+
background-color: #5e554a;
|
|
126
|
+
}
|
|
127
|
+
pn-modal .pn-modal-container::-webkit-scrollbar-corner, pn-modal .pn-modal-container::-webkit-scrollbar-button {
|
|
128
|
+
display: none;
|
|
129
|
+
}
|
|
112
130
|
pn-modal .pn-modal-close-button {
|
|
113
131
|
position: absolute;
|
|
114
|
-
|
|
115
|
-
|
|
132
|
+
z-index: 10;
|
|
133
|
+
right: 0.75em;
|
|
134
|
+
top: 0.75em;
|
|
116
135
|
}
|
|
117
136
|
pn-modal .pn-modal-header {
|
|
118
137
|
display: flex;
|
|
119
138
|
flex-direction: column;
|
|
120
139
|
gap: 0.5em;
|
|
121
|
-
padding:
|
|
140
|
+
padding: clamp(1em, 5vw, 1.5em);
|
|
141
|
+
}
|
|
142
|
+
pn-modal .pn-modal-header[hidden] {
|
|
143
|
+
display: none;
|
|
144
|
+
}
|
|
145
|
+
pn-modal .pn-modal-header:not([hidden]) + .pn-modal-content:not([hidden]) {
|
|
146
|
+
padding-top: 0;
|
|
122
147
|
}
|
|
123
148
|
pn-modal .pn-modal-label {
|
|
124
149
|
line-height: 1.5;
|
|
@@ -129,28 +154,55 @@ pn-modal .pn-modal-text {
|
|
|
129
154
|
margin: 0;
|
|
130
155
|
}
|
|
131
156
|
pn-modal .pn-modal-content {
|
|
132
|
-
padding:
|
|
157
|
+
padding: clamp(1em, 5vw, 1.5em);
|
|
158
|
+
}
|
|
159
|
+
pn-modal .pn-modal-image {
|
|
160
|
+
position: relative;
|
|
161
|
+
display: flex;
|
|
162
|
+
flex-direction: column;
|
|
163
|
+
}
|
|
164
|
+
pn-modal .pn-modal-image[hidden] {
|
|
165
|
+
display: none;
|
|
166
|
+
}
|
|
167
|
+
pn-modal .pn-modal-picture {
|
|
168
|
+
margin: 0;
|
|
169
|
+
padding: 0;
|
|
170
|
+
display: block;
|
|
171
|
+
overflow: hidden;
|
|
172
|
+
border-radius: 1.5em 0 0 0;
|
|
173
|
+
}
|
|
174
|
+
pn-modal .pn-modal-picture > *[slot=image] {
|
|
175
|
+
display: block;
|
|
176
|
+
height: 100%;
|
|
177
|
+
width: 100%;
|
|
178
|
+
object-fit: cover;
|
|
133
179
|
}
|
|
134
180
|
pn-modal .pn-modal-buttons {
|
|
135
181
|
background-color: #ffffff;
|
|
136
182
|
border-top: 0.0625em solid #d3cecb;
|
|
137
|
-
padding: clamp(1em, 5vw, 1.5em)
|
|
183
|
+
padding: clamp(1em, 5vw, 1.5em);
|
|
138
184
|
display: flex;
|
|
139
185
|
justify-content: flex-end;
|
|
140
186
|
gap: 0.5em;
|
|
187
|
+
border-radius: 0 0 1.5em 1.5em;
|
|
141
188
|
}
|
|
142
|
-
pn-modal .pn-modal-buttons [slot=buttons]:not(pn-button) {
|
|
189
|
+
pn-modal .pn-modal-buttons > [slot=buttons]:not(pn-button) {
|
|
143
190
|
display: flex;
|
|
144
191
|
justify-content: flex-end;
|
|
145
192
|
gap: 0.5em;
|
|
146
193
|
}
|
|
194
|
+
pn-modal .pn-modal-buttons > [slot=buttons]:not(pn-button) > [data-left] {
|
|
195
|
+
margin-right: auto;
|
|
196
|
+
}
|
|
197
|
+
pn-modal .pn-modal-buttons > [data-left] {
|
|
198
|
+
margin-right: auto;
|
|
199
|
+
}
|
|
147
200
|
pn-modal .pn-modal-buttons:empty {
|
|
148
201
|
display: none;
|
|
149
202
|
}
|
|
150
203
|
|
|
151
|
-
@media (max-width:
|
|
204
|
+
@media (max-width: 55em) {
|
|
152
205
|
pn-modal .pn-modal {
|
|
153
|
-
width: 100%;
|
|
154
206
|
max-height: 95vh;
|
|
155
207
|
margin-bottom: 0;
|
|
156
208
|
bottom: 0;
|
package/umd/modules/@postnord/web-components/collection/components/feedback/pn-modal/pn-modal.js
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* Built with Stencil
|
|
3
3
|
* By PostNord.
|
|
4
4
|
*/
|
|
5
|
-
import { h, Host, forceUpdate } from "@stencil/core";
|
|
6
|
-
import { awaitTopbar, en, reduceMotion } from "../../../index";
|
|
5
|
+
import { h, Host, forceUpdate, } from "@stencil/core";
|
|
6
|
+
import { awaitTopbar, en, isSmallScreen, reduceMotion } from "../../../index";
|
|
7
7
|
import { close as closeIcon } from "pn-design-assets/pn-assets/icons.js";
|
|
8
8
|
import { translations } from "./translation";
|
|
9
9
|
/**
|
|
@@ -12,13 +12,16 @@ import { translations } from "./translation";
|
|
|
12
12
|
* Use the event `modalToggle` to determine when the modal is being closed/opened by the user.
|
|
13
13
|
*
|
|
14
14
|
* @slot - The default slot, will be placed in the middle content area.
|
|
15
|
+
* @slot image - Place an image or illustration at the top of the modal.
|
|
15
16
|
* @slot header - Place the title + lead text in the header.
|
|
16
17
|
* @slot buttons - Place buttons inside the modal at the bottom.
|
|
18
|
+
* pn-buttons aligns automatically to the right, set the data-left attribute on the button you want to align to the left.
|
|
17
19
|
*/
|
|
18
20
|
export class PnModal {
|
|
19
21
|
constructor() {
|
|
20
22
|
this.isClosing = false;
|
|
21
23
|
this.isOpening = false;
|
|
24
|
+
this.removeOverflow = false;
|
|
22
25
|
this.label = undefined;
|
|
23
26
|
this.helpertext = undefined;
|
|
24
27
|
this.language = null;
|
|
@@ -34,6 +37,8 @@ export class PnModal {
|
|
|
34
37
|
animationDuration = this.standardAnimationDuration;
|
|
35
38
|
modalTimeout;
|
|
36
39
|
modalElement;
|
|
40
|
+
modalContainer;
|
|
41
|
+
modalPicture;
|
|
37
42
|
hostElement;
|
|
38
43
|
handleOpen() {
|
|
39
44
|
if (this.open)
|
|
@@ -59,6 +64,10 @@ export class PnModal {
|
|
|
59
64
|
const width = this.maxWidth || '45em';
|
|
60
65
|
this.modalElement.style.setProperty('--pn-modal-max-width', width);
|
|
61
66
|
}
|
|
67
|
+
handleOverflow() {
|
|
68
|
+
if (this.allowOverflow)
|
|
69
|
+
this.setOverflow();
|
|
70
|
+
}
|
|
62
71
|
/** This event is fired when the modal is toggled. */
|
|
63
72
|
modalToggle;
|
|
64
73
|
/** This event is dispatched after the opening/closing animation has finished playing. */
|
|
@@ -88,11 +97,18 @@ export class PnModal {
|
|
|
88
97
|
translate(prop) {
|
|
89
98
|
return translations?.[prop]?.[this.language || en] || prop;
|
|
90
99
|
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
this.
|
|
100
|
+
showImage() {
|
|
101
|
+
return !!this.modalPicture?.innerHTML;
|
|
102
|
+
}
|
|
103
|
+
showHeader() {
|
|
104
|
+
return !!(this.label || this.helpertext || this.hostElement.querySelector('[slot="header"]')?.textContent);
|
|
105
|
+
}
|
|
106
|
+
setOverflow() {
|
|
107
|
+
this.removeOverflow = !this.hasOverflow();
|
|
108
|
+
}
|
|
109
|
+
hasOverflow() {
|
|
110
|
+
const multiplyWith = isSmallScreen() ? 0.95 : 0.85;
|
|
111
|
+
return this.modalContainer?.scrollHeight > innerHeight * multiplyWith;
|
|
96
112
|
}
|
|
97
113
|
isSameModal(target) {
|
|
98
114
|
return this.modalElement.isSameNode(target);
|
|
@@ -129,7 +145,7 @@ export class PnModal {
|
|
|
129
145
|
this.open = state ?? !this.open;
|
|
130
146
|
}
|
|
131
147
|
render() {
|
|
132
|
-
return (h(Host, { key: '
|
|
148
|
+
return (h(Host, { key: 'd24c1b43f9eebc2d2759e4b6b15982889c559c08' }, h("dialog", { key: '4111d8ae6c9eb198cb74744dce15b37ec1a4157c', class: "pn-modal", "data-closing": this.isClosing, "data-sheet": this.sheet, "data-image": this.showImage(), "data-allow-overflow": this.removeOverflow, onClose: () => this.setModalClose(), onCancel: () => this.setModalClose(), onToggle: () => this.modalToggle.emit({ open: this.open }), onKeyDown: event => this.handleKeyboard(event), onClick: event => this.clickModalBackground(event), ref: el => (this.modalElement = el) }, !this.hideClose && (h("pn-button", { key: '9411bdbf12899d1913f5094981d08e8161277408', small: true, class: "pn-modal-close-button", icon: closeIcon, iconOnly: true, arialabel: this.translate('CLOSE_MODAL'), appearance: "light", variant: "borderless", type: "button", onPnClick: () => this.setModalClose() })), h("div", { key: '917803e1f7847c4b4609fd121391fc33919ea5d3', class: "pn-modal-container", ref: el => (this.modalContainer = el) }, h("div", { key: '3241e14d8647278032ecb4274c39ab6e3615cf6b', class: "pn-modal-image", hidden: !this.showImage() }, h("picture", { key: '6a830c0e51a4c1a9870dd06509a3eaa5a06ce048', class: "pn-modal-picture", ref: el => (this.modalPicture = el) }, h("slot", { key: '098e962a7cc8ac57309ba74951e4a8b0c0aebf08', name: "image" }))), h("header", { key: '41697c436ba9431fe4fa2ae11ca270852f7db309', class: "pn-modal-header", hidden: !this.showHeader() }, this.label && h("h2", { key: '1fcb37a181cfcb6315f2e470eef006842b1ccf53', class: "pn-modal-label" }, this.label), this.helpertext && h("p", { key: '7907955b0d34a729eb142985be24a85fcf5b0c73', class: "pn-modal-text" }, this.helpertext), h("slot", { key: 'c4c8d17830001c3e8df504de9006bcc3cd448549', name: "header" })), h("section", { key: '266f424be0a181433d50cb08904133c9f2aaa67e', class: "pn-modal-content" }, h("slot", { key: '030bb328e6fc00a14305b4134861b38a8fc8f426' })), h("nav", { key: '05d67c40c30af133a7037c3ed57a72b5e5b9de2f', class: "pn-modal-buttons" }, h("slot", { key: 'a12fd530166c6d08aa1a50f0393c4ca2b22b1fc0', name: "buttons" }))))));
|
|
133
149
|
}
|
|
134
150
|
static get is() { return "pn-modal"; }
|
|
135
151
|
static get originalStyleUrls() {
|
|
@@ -330,7 +346,8 @@ export class PnModal {
|
|
|
330
346
|
static get states() {
|
|
331
347
|
return {
|
|
332
348
|
"isClosing": {},
|
|
333
|
-
"isOpening": {}
|
|
349
|
+
"isOpening": {},
|
|
350
|
+
"removeOverflow": {}
|
|
334
351
|
};
|
|
335
352
|
}
|
|
336
353
|
static get events() {
|
|
@@ -394,5 +411,14 @@ export class PnModal {
|
|
|
394
411
|
"methodName": "handleMaxWidth"
|
|
395
412
|
}];
|
|
396
413
|
}
|
|
414
|
+
static get listeners() {
|
|
415
|
+
return [{
|
|
416
|
+
"name": "resize",
|
|
417
|
+
"method": "handleOverflow",
|
|
418
|
+
"target": "window",
|
|
419
|
+
"capture": false,
|
|
420
|
+
"passive": true
|
|
421
|
+
}];
|
|
422
|
+
}
|
|
397
423
|
}
|
|
398
424
|
//# sourceMappingURL=pn-modal.js.map
|