@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
package/umd/modules/@postnord/web-components/postnord-web-components/p-ed4271af.entry.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["translations","SELECT_AN_OPTION","en","sv","da","fi","no","SELECT_ALL_OPTIONS","SELECT_FOUND_OPTIONS","SELECTED_OPTIONS","BUTTON_OPEN","BUTTON_CLOSE","REMOVE","REMOVED","MORE_OPTION","MORE_OPTIONS","SEARCH","RESULTS_FOUND","NO_SEARCH_RESULTS","NO_OPTIONS","pnMultiselectCss","PnMultiselectStyle0","PnMultiselect","this","id","uuidv4","idLegend","idButton","idOptions","idHelper","idChips","idSr","elGroup","elButton","elInput","elList","elChips","srTimer","animation","animationDurationDefault","animationDuration","handleOpen","open","addGlobalEventListeners","handleDirection","handleMaxHeight","handleWidth","requestAnimationFrame","openGrid","closeGrid","removeGlobalEventListeners","handleSearch","search","options","map","option","item","hide","group","length","opt","handleSearchQuery","searchQuery","handleInputSearch","handleSelectId","selectId","handleResize","toggleOpen","style","removeProperty","toggleSelect","allOptions","selectedOption","selectedAllOptions","searchInput","componentWillLoad","language","awaitTopbar","hostElement","componentDidLoad","globalEvents","event","target","isWithinCalendar","closest","localName","root","getRootNode","addEventListener","removeEventListener","clientHeight","scrollHeight","height","isClosing","isExpanding","animateGrid","maxHeight","startHeight","endHeight","cancelAnimations","reduceMotion","animate","duration","easing","onfinish","animationFinish","oncancel","cancel","emitEvents","all","emit","data","checked","searching","isSearching","optionsTotal","optionsSearch","query","found","optionsChecked","list","reduce","sum","subgroup","filter","push","optionsIndex","val","findNested","findIndex","value","indexGroup","indexNested","optionsCheckedTotal","optionsCheckedPreview","slice","itemCount","optionsCheckedLabels","label","join","noResults","isIndeterminate","groupIndex","every","none","optionSelect","chip","allValue","optionSelectAll","nested","allSiblingsChecked","handleSrMesssage","translate","index","btn","Array","from","children","querySelector","focus","preventScroll","allChecked","optionSelected","find","prop","text","includes","replace","getRect","element","getBoundingClientRect","ripple","clientX","clientY","isKeyboard","nextElementSibling","x","width","y","top","clientCor","srMessage","clearTimeout","setTimeout","upwards","bottom","oneEm","offsetTop","window","innerHeight","offsetBottom","setProperty","inputHeight","getTotalHeightOffset","offset","Math","ceil","setFocus","hasError","invalid","error","hasMessage","helpertext","state","handleInputKeyboard","stopImmediatePropagation","code","match","setSearchQuery","isEmpty","term","performSearch","trim","toLowerCase","foundNested","some","getListItem","getOptionIndex","triggers","total","valIndex","count","checkboxNav","e","arrowUp","arrowDown","pageUp","pageDown","home","end","tab","space","enter","escape","preventDefault","handleBlur","related","relatedTarget","jumpingToChips","className","handleLabel","disabled","showSelectAll","selectAll","showEmptyOption","getPlaceholder","autoTranslation","placeholder","handleChange","additonalOptions","single","describedBy","Boolean","renderOption","icon","h","class","key","hidden","type","indeterminate","undefined","name","required","onClick","onKeyDown","onBlur","color","htmlFor","xmlns","viewBox","fill","points","i","renderOptions","onChange","ref","el","role","renderChips","close","small","render","Host","tabindex","selectName","toString","readonly","onInput","alert_exclamation_circle","angle_down"],"sources":["src/components/input/pn-multiselect/translations.ts","src/components/input/pn-multiselect/pn-multiselect.scss?tag=pn-multiselect","src/components/input/pn-multiselect/pn-multiselect.tsx"],"sourcesContent":["export const translations = {\n SELECT_AN_OPTION: {\n en: 'Select an option',\n sv: 'Välj ett alternativ',\n da: 'Vælg en mulighed',\n fi: 'Valitse vaihtoehto',\n no: 'Velg et alternativ',\n },\n SELECT_ALL_OPTIONS: {\n en: 'Select all options',\n sv: 'Välj alla alternativ',\n da: 'Vælg alle muligheder',\n fi: 'Valitse kaikki vaihtoehdot',\n no: 'Velg alle alternativer',\n },\n SELECT_FOUND_OPTIONS: {\n en: 'Select {number} options',\n sv: 'Välj {number} alternativ',\n da: 'Vælg {number} muligheder',\n fi: 'Valitse {number} vaihtoehtoa',\n no: 'Velg {number} alternativer',\n },\n SELECTED_OPTIONS: {\n en: 'Selected options.',\n sv: 'Valda alternativ.',\n da: 'Valgte muligheder.',\n fi: 'Valitut vaihtoehdot.',\n no: 'Valgte alternativer.',\n },\n BUTTON_OPEN: {\n en: 'Open list',\n sv: 'Öppna listan',\n da: 'Open list',\n fi: 'Open list',\n no: 'Open list',\n },\n BUTTON_CLOSE: {\n en: 'Close list',\n sv: 'Stäng listan',\n da: 'Close list',\n fi: 'Close list',\n no: 'Close list',\n },\n REMOVE: {\n en: 'Remove',\n sv: 'Ta bort',\n da: 'Remove',\n fi: 'Remove',\n no: 'Remove',\n },\n REMOVED: {\n en: 'Removed',\n sv: 'Tog bort',\n da: 'Fjernet',\n fi: 'Poistettu',\n no: 'Fjernet',\n },\n MORE_OPTION: {\n en: 'more option.',\n sv: 'alternativ till.',\n da: 'mulighed mere.',\n fi: 'vaihtoehto lisää.',\n no: 'alternativ til.',\n },\n MORE_OPTIONS: {\n en: 'more options.',\n sv: 'fler alternativ.',\n da: 'more options.',\n fi: 'more options.',\n no: 'more options.',\n },\n SEARCH: {\n en: 'Search',\n sv: 'Sök',\n da: 'Søg',\n fi: 'Hae',\n no: 'Søk',\n },\n RESULTS_FOUND: {\n en: 'options found',\n sv: 'alternativ hittades',\n da: 'muligheder fundet',\n fi: 'vaihtoehtoja löytyi',\n no: 'alternativer funnet',\n },\n NO_SEARCH_RESULTS: {\n en: 'No options found',\n sv: 'Inga alternativ hittades',\n da: 'Ingen muligheder fundet',\n fi: 'Vaihtoehtoja ei löytynyt',\n no: 'Finner ingen alternativer',\n },\n NO_OPTIONS: {\n en: 'No options available',\n sv: 'Inga alternativ tillgängliga',\n da: 'Ingen tilgængelige muligheder',\n fi: 'Ei vaihtoehtoja',\n no: 'Ingen tilgjengelige alternativer',\n },\n};\n","@use 'src/globals/main';\n\npn-multiselect {\n display: inline-block;\n}\n\npn-multiselect .pn-multiselect {\n border: 0;\n margin: 0;\n padding: 0;\n\n &[data-icon] .pn-multiselect-element {\n padding-left: 3em;\n }\n\n &[data-error] .pn-multiselect-element {\n padding-right: 5.5em;\n @include main.pn-input-field-error();\n }\n\n &-label {\n @include main.pn-input-label;\n width: 100%;\n }\n\n @include main.pn-sr-only-class();\n\n &-group {\n position: relative;\n padding: 0;\n margin: 0;\n }\n\n &-input {\n position: relative;\n\n > pn-icon {\n pointer-events: none;\n position: absolute;\n top: 0.75em;\n right: 3.5em;\n &[data-custom] {\n left: 0.75em;\n right: unset;\n }\n }\n }\n\n &-button {\n cursor: pointer;\n position: absolute;\n right: 0.75em;\n top: 50%;\n transform: translateY(-50%);\n padding: 0;\n margin: 0;\n border: 0;\n width: 2em;\n height: 2em;\n font-size: 1em;\n border-radius: 50%;\n background-color: transparent;\n\n -webkit-tap-highlight-color: transparent;\n\n @include main.pn-transition('background-color, outline-color, border-color');\n @include main.pn-focus(main.$blue700, main.$white, main.$blue700);\n\n > pn-icon > svg > path {\n @include main.pn-transition('transform');\n transition-delay: main.$timing;\n transform-origin: center;\n transform: rotate(0deg);\n }\n\n &:hover {\n background-color: main.$blue25;\n }\n\n &[aria-expanded='true'] {\n background-color: main.$blue25;\n > pn-icon > svg > path {\n transform: rotate(180deg);\n transition-delay: 0s;\n }\n }\n }\n\n &-element {\n @include main.pn-input-field;\n\n cursor: text;\n text-align: left;\n transition-delay: 0.1s, 0.1s, 0s;\n width: 100%;\n padding-right: 3.5em;\n\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 0.5em;\n\n overflow: hidden;\n text-overflow: ellipsis;\n\n &:disabled {\n @include main.pn-disabled;\n pointer-events: none;\n + .pn-multiselect-button {\n pointer-events: none;\n path {\n fill: main.$input-color-disabled;\n }\n }\n }\n\n &:placeholder {\n @include main.pn-placeholder;\n }\n\n &[type='input']:hover {\n cursor: pointer;\n color: main.$input-color;\n background-color: main.$input-background-hover;\n transition-delay: 0s;\n &[aria-invalid='true'] {\n background-color: main.$input-background-error-hover;\n }\n }\n\n &:focus-visible {\n transition-delay: 0s;\n }\n\n &::-webkit-search-cancel-button,\n &::-webkit-search-decoration {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n }\n }\n\n &-options {\n scroll-behavior: smooth;\n position: absolute;\n z-index: 10;\n top: calc(100% + 0.5em);\n left: 0;\n right: 0;\n background-color: main.$white;\n box-shadow:\n 0em 0.075em 0.225em 0em rgba(0, 0, 0, 0.1),\n 0em 0.4em 0.9em 0em rgba(0, 0, 0, 0.13);\n\n border-radius: main.$border-radius;\n\n list-style: none;\n margin: 0;\n padding: 0;\n\n width: var(--pn-select-options-width);\n max-height: var(--pn-select-max-height);\n overflow-y: auto;\n overflow-x: hidden;\n\n display: flex;\n flex-direction: column;\n\n visibility: hidden;\n\n transform-origin: top left;\n\n &[data-open] {\n visibility: visible;\n }\n\n &[data-upwards] {\n top: unset;\n bottom: calc(100% + 0.5em);\n transform-origin: bottom left;\n box-shadow: 0 -0.0625em 0.125em rgba(0, 0, 0, 0.2);\n }\n\n &[data-moving] {\n overflow: hidden;\n visibility: visible;\n }\n\n @include main.pn-scrollbar();\n\n > pn-input {\n padding: 0.5em;\n }\n }\n\n &-optgroup {\n list-style: none;\n padding: 0;\n > .pn-multiselect-option > .pn-multiselect-option-content {\n padding-left: 2em;\n }\n }\n\n &-chips {\n list-style: none;\n display: flex;\n flex-wrap: wrap;\n gap: 0.5em;\n padding: 0;\n margin: 0.5em 0 0 0;\n color: main.$gray700;\n font-weight: 400;\n &:empty {\n display: none;\n }\n }\n\n &-chip {\n margin: 0;\n display: inline-flex;\n align-items: center;\n gap: 0.25em;\n background-color: main.$white;\n border-radius: main.$border-radius;\n padding: 0.125em 0.25em 0.125em 0.5em;\n line-height: 1.5em;\n border: 0.0625em solid main.$gray700;\n\n @include main.pn-focus-base;\n @include main.pn-transition('background-color, outline-color, border-color, color');\n\n &:focus-within {\n color: main.$blue700;\n @include main.pn-focus-visible(main.$blue700, main.$blue25, main.$blue700);\n }\n\n &[data-count] {\n pointer-events: none;\n border: 0;\n padding-left: 0;\n padding-right: 0;\n background-color: unset;\n }\n\n &-label {\n font-size: 0.875em;\n white-space: nowrap;\n }\n\n &-button {\n cursor: pointer;\n font-size: 1em;\n padding: 0.25em;\n height: 1.5em;\n width: 1.5em;\n border: 0;\n background-color: unset;\n border-radius: 50%;\n @include main.pn-transition('background-color');\n -webkit-tap-highlight-color: transparent;\n\n &:hover {\n background-color: main.$blue200;\n }\n &:focus {\n outline: 0;\n }\n }\n }\n\n &-no-results {\n margin: 0;\n padding: 0.75em;\n }\n\n &-description {\n @include main.pn-input-helpertext;\n &[role='alert'] {\n color: main.$helpertext-color-error;\n }\n }\n}\n\n// Select option\npn-multiselect .pn-multiselect-option {\n position: relative;\n margin: 0;\n padding: 0;\n @include main.pn-ripple(main.$blue700);\n\n &-input {\n cursor: pointer;\n position: absolute;\n opacity: 0;\n left: 0;\n top: 0;\n height: 100%;\n width: 100%;\n margin: 0;\n -webkit-tap-highlight-color: transparent;\n\n &:disabled {\n pointer-events: none;\n + .pn-multiselect-option-content {\n @include main.pn-disabled;\n pointer-events: none;\n .pn-multiselect-option-checkbox {\n background-color: main.$input-background-disabled;\n border-color: main.$input-border-disabled;\n }\n path {\n fill: main.$input-color-disabled;\n }\n }\n\n &:checked {\n + .pn-multiselect-option-content {\n @include main.pn-disabled;\n .pn-multiselect-option-checkbox {\n background-color: main.$input-button-disabled;\n border-color: main.$input-border-disabled;\n }\n path {\n fill: main.$input-color-disabled;\n }\n }\n }\n }\n\n &[aria-invalid='true'] {\n + .pn-multiselect-option-content {\n .pn-multiselect-option-checkbox {\n border-color: main.$border-color-error;\n }\n .pn-ripple {\n background-color: main.$warning;\n }\n }\n\n &:checked + .pn-multiselect-option-content {\n background-color: main.$input-background-error-active;\n .pn-multiselect-option-checkbox {\n background-color: main.$input-button-active-error;\n border-color: main.$input-button-active-error;\n }\n }\n\n &:checked:focus-visible + .pn-multiselect-option-content {\n background-color: main.$input-background-error-active;\n .pn-multiselect-option-checkbox {\n background-color: main.$input-button-active-error-focus;\n border-color: main.$input-button-active-error-focus;\n }\n }\n\n &:checked:hover + .pn-multiselect-option-content {\n background-color: main.$coral25;\n .pn-multiselect-option-checkbox {\n background-color: main.$input-button-active-error-hover;\n border-color: main.$input-button-active-error-hover;\n }\n }\n\n &:hover + .pn-multiselect-option-content {\n background-color: main.$coral25;\n .pn-multiselect-option-checkbox {\n background-color: main.$input-background-error-hover;\n border-color: main.$border-color-error-focus;\n }\n }\n\n &:focus-visible + .pn-multiselect-option-content .pn-multiselect-option-checkbox {\n @include main.pn-focus-visible(\n main.$border-color-error-focus,\n main.$input-background-error-active,\n main.$border-color-error-focus\n );\n }\n }\n\n &:hover + .pn-multiselect-option-content {\n background-color: main.$blue25;\n .pn-multiselect-option-checkbox {\n border-color: main.$blue700;\n background-color: main.$blue50;\n }\n }\n\n &:focus-visible + .pn-multiselect-option-content .pn-multiselect-option-checkbox {\n @include main.pn-focus-visible(main.$blue700, main.$blue50, main.$blue700);\n }\n\n &:checked + .pn-multiselect-option-content {\n background-color: main.$blue50;\n .pn-multiselect-option-checkbox {\n border-color: main.$blue700;\n background-color: main.$blue700;\n svg polyline.pn-multiselect-option-checkbox-checkmark-path {\n transition-delay: 0.2s;\n stroke-dashoffset: 0;\n }\n }\n }\n\n &:checked:hover + .pn-multiselect-option-content {\n background-color: main.$blue25;\n .pn-multiselect-option-checkbox {\n border-color: main.$blue900;\n background-color: main.$blue900;\n }\n }\n\n &:checked:focus-visible + .pn-multiselect-option-content {\n background-color: main.$blue50;\n .pn-multiselect-option-checkbox {\n border-color: main.$blue900;\n background-color: main.$blue900;\n }\n }\n\n &:indeterminate + .pn-multiselect-option-content {\n .pn-multiselect-option-checkbox {\n background-color: main.$blue700;\n border-color: main.$blue700;\n }\n svg .pn-multiselect-option-checkbox-checkmark-path {\n stroke-dashoffset: 23;\n }\n svg .pn-multiselect-option-checkbox-indeterminate-path {\n stroke-dashoffset: 0;\n }\n }\n\n &:indeterminate:hover + .pn-multiselect-option-content {\n .pn-multiselect-option-checkbox {\n background-color: main.$blue900;\n border-color: main.$blue900;\n }\n }\n }\n\n &-content {\n position: relative;\n overflow: hidden;\n z-index: -1;\n display: flex;\n align-items: center;\n padding: 0.75em 1em;\n gap: 0.5em;\n background-color: main.$white;\n @include main.pn-transition('background-color');\n }\n\n &-text {\n flex: 1;\n text-overflow: ellipsis;\n overflow: hidden;\n }\n\n &-label {\n color: main.$gray900;\n font-weight: 400;\n }\n\n &-helper {\n color: main.$gray700;\n margin: 0;\n }\n\n &-checkbox {\n background-color: main.$white;\n flex: 0 0 1.5em;\n width: 1.5em;\n height: 1.5em;\n border: 0.0625em solid main.$gray400;\n border-radius: 0.25em;\n\n @include main.pn-focus-base;\n @include main.pn-transition('background-color, border-color, outline-color');\n\n svg polyline {\n stroke: main.$white;\n stroke-linecap: round;\n stroke-dasharray: 23;\n @include main.pn-transition('stroke-dashoffset');\n transition-delay: 0s;\n\n &.pn-multiselect-option-checkbox-checkmark-path {\n stroke-dashoffset: 23;\n }\n\n &.pn-multiselect-option-checkbox-indeterminate-path {\n stroke-dashoffset: 23;\n }\n }\n }\n}\n","import { Component, h, Host, Element, Watch, Prop, State, EventEmitter, Event, Listen } from '@stencil/core';\n\nimport { translations } from './translations';\n\nimport { close, alert_exclamation_circle, angle_down } from 'pn-design-assets/pn-assets/icons.js';\n\nimport { uuidv4, awaitTopbar, ripple, en, getTotalHeightOffset, reduceMotion } from '@/index';\nimport type { PnLanguages, PnMultiselectOption } from '@/index';\n\n/**\n * The `pn-multiselect` gets its options via javascript.\n *\n * Native HTML does not accept arrays of objects. Most frameworks solves this automatically (Vue, react, etc...),\n * but keep this in mind if you use this component outside of a framework environment.\n *\n * @nativeChange The `pn-multiselect` is built with `input[type=checkbox]` elements, so the `change` event works. However, we recommend the customEvents described above.\n *\n * @see {@link https://portal.postnord.com/web-components/?path=/docs/components-input-multiselect--docs#pn-multiselect%20(options) Options documentation}\n */\n@Component({\n tag: 'pn-multiselect',\n styleUrl: 'pn-multiselect.scss',\n})\nexport class PnMultiselect {\n private readonly id: string = `pn-multiselect-${uuidv4()}`;\n private idLegend: string = `${this.id}-legend`;\n private idButton: string = `${this.id}-button`;\n private idOptions: string = `${this.id}-options`;\n private idHelper: string = `${this.id}-text`;\n private idChips: string = `${this.id}-chips`;\n private idSr: string = `${this.id}-sr`;\n\n private elGroup: HTMLDivElement;\n private elButton: HTMLButtonElement;\n private elInput: HTMLInputElement;\n private elList: HTMLUListElement;\n private elChips: HTMLUListElement;\n\n private srTimer: NodeJS.Timeout;\n\n private animation: Animation;\n private animationDurationDefault: number = 400;\n private animationDuration: number = this.animationDurationDefault;\n\n @Element() hostElement: HTMLElement;\n\n @State() private isSearching: boolean = false;\n\n /** Layout state. */\n @State() private open: boolean = false;\n @State() private upwards: boolean = false;\n\n @State() private srMessage?: string;\n\n @State() private isClosing: boolean = false;\n @State() private isExpanding: boolean = false;\n\n /** Label placed above the select */\n @Prop() label!: string;\n /** Display a helper text underneath the select */\n @Prop() helpertext?: string;\n /**\n * This is what will be shown on load if no value is used.\n * The `placeholder` will override the default text used if you have the `search` prop active.\n */\n @Prop() placeholder?: string;\n /** HTML name of the checkbox elements. Used for each checkbox inside the multiselect. */\n @Prop() name?: string;\n /** Select HTML id */\n @Prop() selectId?: string = this.id;\n /** HTML name of the input element.*/\n @Prop() selectName?: string;\n /** Display an icon to the left of the select input */\n @Prop() icon?: string;\n /** Manually set the language, not needed if you have the pnTopbar available */\n @Prop() language?: PnLanguages = null;\n /**\n * Array of options.\n * @hide true\n **/\n @Prop({ mutable: true }) options!: PnMultiselectOption[];\n\n /**\n * Adds a \"Select all\" option into the list.\n * If you use the search feature at the same time, clicking this option will only toggle the options found.\n * @see {@link search}\n * @category Features\n **/\n @Prop() selectAll?: boolean = false;\n /**\n * Set a custom value for the \"Select all value\" option.\n * @see {@link selectAll}\n * @category Features\n */\n @Prop() allValue?: string = 'pn_multiselect_all';\n /**\n * Allow the user to search among the options.\n * The selected options will now display underneath the multiselect element.\n *\n * @category Features\n **/\n @Prop() search?: boolean = false;\n /** Set the search query of the multiselect.\n *\n * @see {@link search}\n * @category Features\n */\n @Prop({ mutable: true }) searchQuery?: string = '';\n /**\n * Decide how many items should be shown before ellipsis. Requires the `search` prop to work.\n *\n * @see {@link search}\n * @category Features\n **/\n @Prop() itemCount?: number = 5;\n /**\n * Use a custom max-height for the dropdown list.\n * @description The component will automatically set the max height of the dropdown list on its own.\n * It takes the `pn-topbar` into account and will open in the direction that fits best.\n * Use this prop to override this behaviour and use a custom max-height.\n * @category Features\n **/\n @Prop() maxHeight?: string;\n /**\n * Force the dropdown to always open upwards.\n * @category Features\n **/\n @Prop() top?: boolean = false;\n /**\n * Force the dropdown to always open downwards.\n * @category Features\n **/\n @Prop() bottom?: boolean = false;\n\n /** Set the select as required. @category Validation */\n @Prop() required?: boolean = false;\n /** Disable the select. @category Validation */\n @Prop() disabled?: boolean = false;\n /** Trigger the invalid state. @category Validation */\n @Prop() invalid?: boolean = false;\n /** Display an error message and trigger the invalid state. @category Validation */\n @Prop() error?: string;\n\n @Watch('open')\n handleOpen() {\n if (this.open) {\n this.addGlobalEventListeners();\n\n this.handleDirection();\n this.handleMaxHeight();\n this.handleWidth();\n requestAnimationFrame(() => this.openGrid());\n } else {\n this.closeGrid();\n this.removeGlobalEventListeners();\n }\n }\n\n @Watch('search')\n handleSearch() {\n if (!this.search)\n this.options = [\n ...this.options.map(option => {\n const item = {\n ...option,\n hide: false,\n };\n\n if (item?.group?.length) item.group.map(opt => ({ ...opt, hide: false }));\n\n return item;\n }),\n ];\n }\n\n @Watch('searchQuery')\n handleSearchQuery() {\n if (this.search && typeof this.searchQuery === 'string') this.handleInputSearch();\n }\n\n @Watch('selectId')\n handleSelectId() {\n const id = this.selectId;\n this.idLegend = `${id}-legend`;\n this.idButton = `${id}-button`;\n this.idOptions = `${id}-options`;\n this.idHelper = `${id}-text`;\n this.idChips = `${id}-chips`;\n this.idSr = `${id}-sr`;\n }\n\n /**\n * If the select is open and you resize the window.\n * Remove all css props and disable the animations entierly.\n **/\n @Listen('resize', { target: 'window' })\n handleResize() {\n if (!this.open) return;\n this.toggleOpen(false);\n\n this.elList.style.removeProperty('--pn-select-options-width');\n this.elList.style.removeProperty('--pn-select-max-height');\n }\n\n /** Dispatched everytime the multiselect is opened or closed. */\n @Event() toggleSelect: EventEmitter<{ open: boolean }>;\n /** This event contains the entire options array with the new props. Dispatched everytime you make changes to any option. */\n @Event() allOptions: EventEmitter<PnMultiselectOption[]>;\n /** Dispatched when you toggle an option. Includes all the props of the option. */\n @Event() selectedOption: EventEmitter<PnMultiselectOption>;\n /**\n * This event is dispatched when the user toggles the \"Choose all options\" box.\n * Also triggers when you click the \"Select {number} options\" if you are performing a search at the same time.\n **/\n @Event() selectedAllOptions: EventEmitter<{\n checked: boolean;\n searching: boolean;\n query?: string;\n found?: PnMultiselectOption[];\n }>;\n /**\n * Contains the search text and the options found for that query.\n * Dispacthed everytime you change the search query.\n **/\n @Event() searchInput: EventEmitter<{\n query: string;\n found?: PnMultiselectOption[];\n }>;\n\n async componentWillLoad() {\n this.handleSelectId();\n if (this.language === null) await awaitTopbar(this.hostElement);\n }\n\n componentDidLoad() {\n if (!!this.searchQuery?.length) this.handleSearchQuery();\n }\n\n private globalEvents = (event: PointerEvent | KeyboardEvent) => {\n const target = event.target as HTMLElement;\n const isWithinCalendar = target?.closest(this.hostElement.localName);\n if (!isWithinCalendar) this.toggleOpen(false);\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 private openGrid() {\n requestAnimationFrame(() => {\n const { clientHeight, scrollHeight } = this.elList;\n const height = this.isClosing ? clientHeight : 0;\n this.elList.style.height = `${scrollHeight}px`;\n\n this.isExpanding = true;\n this.animateGrid(true, `${height}px`, this.maxHeight || `${this.elList.scrollHeight}px`);\n });\n }\n\n private closeGrid() {\n const { scrollHeight, clientHeight } = this.elList;\n const height = this.isExpanding ? clientHeight : scrollHeight;\n this.elList.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\n if (reduceMotion()) this.animationDuration = 0;\n else this.animationDuration = this.animationDurationDefault;\n\n this.animation = this.elList.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.elList.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 private emitEvents(option?: PnMultiselectOption, all?: boolean) {\n this.allOptions.emit(this.options);\n\n if (option) return this.selectedOption.emit(option);\n\n const data: { checked: boolean; searching: boolean; query?: string; found?: PnMultiselectOption[] } = {\n checked: all,\n searching: this.isSearching,\n };\n\n if (this.search && this.optionsTotal() !== this.optionsSearch().length) {\n data.query = this.searchQuery;\n data.found = this.optionsSearch();\n }\n\n this.selectedAllOptions.emit(data);\n }\n\n private optionsChecked(): PnMultiselectOption[] {\n const list = this.options?.reduce((sum, item) => {\n const subgroup = item.group ? [...item.group.filter(({ checked }) => checked)] : [];\n\n if (item.checked) sum.push(item);\n\n if (subgroup?.length) sum.push(...subgroup);\n\n return sum;\n }, []);\n\n return list;\n }\n\n private optionsTotal(): number {\n return this.options?.reduce((sum, item) => sum + (item?.group?.length ? item.group.length + 1 : 1), 0);\n }\n\n private optionsIndex(val: string): { indexGroup: number; indexNested?: number } {\n const findNested = ({ group = [] }: PnMultiselectOption) => group?.findIndex(({ value }) => value === val);\n\n const indexGroup = this.options.findIndex(option => option.value === val || findNested(option) !== -1);\n const indexNested = findNested(this.options?.[indexGroup]);\n\n return {\n indexGroup,\n indexNested,\n };\n }\n\n private optionsCheckedTotal(): number {\n return this.optionsChecked()?.length;\n }\n\n private optionsCheckedPreview(): PnMultiselectOption[] {\n return this.optionsChecked()?.slice(0, this.itemCount);\n }\n\n private optionsCheckedLabels(): string {\n return this.optionsChecked()\n ?.map(({ label }) => label)\n ?.join(', ');\n }\n\n private optionsSearch(): PnMultiselectOption[] {\n const list = this.options?.reduce((sum, item) => {\n const subgroup = item.group ? [...item.group.filter(({ hide }) => !hide)] : [];\n if (!item.hide) sum.push(item);\n if (subgroup?.length) sum.push(...subgroup);\n return sum;\n }, []);\n\n return list;\n }\n\n private noResults() {\n return this.optionsSearch()?.length === 0;\n }\n\n private isIndeterminate(groupIndex: number): boolean {\n const option = this.options?.[groupIndex];\n if (option?.group?.length) {\n const all = option.group.every(({ checked }) => checked);\n const none = option.group.every(({ checked }) => !checked);\n\n return !(all || none);\n }\n return false;\n }\n\n private optionSelect({ val, checked, chip }: { val: string; checked: boolean; chip?: number }) {\n if (val === this.allValue) return this.optionSelectAll(checked);\n\n const options = this.options;\n\n const { indexGroup, indexNested } = this.optionsIndex(val);\n\n const group = options[indexGroup]?.group;\n const nested = group?.[indexNested];\n\n if (nested?.value) {\n options[indexGroup].group[indexNested].checked = checked;\n\n const allSiblingsChecked = group?.every(({ checked }) => checked);\n\n if (allSiblingsChecked) options[indexGroup].checked = true;\n else options[indexGroup].checked = false;\n } else {\n options[indexGroup].checked = checked;\n if (group?.length) options[indexGroup].group = group?.map(opt => ({ ...opt, checked: checked }));\n }\n\n const option = indexNested === -1 ? options[indexGroup] : options[indexGroup].group[indexNested];\n\n this.emitEvents(option);\n\n this.options = [...options];\n\n if (typeof chip === 'number') {\n this.handleSrMesssage(`${this.translate('REMOVED')} ${option.label}`);\n\n requestAnimationFrame(() => {\n const index = chip === this.optionsCheckedTotal() ? chip - 1 : chip;\n const btn = Array.from(this.elChips.children)?.[index];\n btn?.querySelector('button').focus({ preventScroll: true });\n });\n }\n }\n\n private optionSelectAll(checked: boolean) {\n this.options = [\n ...this.options.map(option => {\n const opt = {\n ...option,\n checked: this.isSearching ? (option.hide ? option.checked : checked) : checked,\n };\n\n if (opt.group)\n opt.group = [\n ...opt.group.map(item => ({\n ...item,\n checked: this.isSearching ? (item.hide ? item.checked : checked) : checked,\n })),\n ];\n\n const allChecked = opt?.group?.every(({ checked }) => checked);\n if (opt?.group?.length) opt.checked = allChecked;\n\n return opt;\n }),\n ];\n\n this.emitEvents(null, checked);\n }\n\n private optionSelected(val: string): boolean {\n return !!this.optionsChecked()?.find(({ value, checked }) => value === val && checked);\n }\n\n private translate(prop: string): string {\n const text = translations?.[prop]?.[this.language || en];\n if (text.includes('{number}')) return text.replace('{number}', this.optionsSearch().length);\n return text;\n }\n\n private getRect(element: HTMLElement): DOMRect {\n return element?.getBoundingClientRect();\n }\n\n private ripple({ clientX, clientY, target }: MouseEvent) {\n const isKeyboard = clientX === 0 && clientY === 0;\n const element = (target as HTMLInputElement).nextElementSibling;\n const { x, width, y, top } = this.getRect(element as HTMLElement);\n const clientCor = isKeyboard ? { clientX: x + width - 24, clientY: y - top } : { clientX, clientY };\n\n ripple(clientCor, element as HTMLElement);\n }\n\n private handleSrMesssage(text: string) {\n this.srMessage = text;\n clearTimeout(this.srTimer);\n this.srTimer = setTimeout(() => (this.srMessage = null), 2000);\n }\n\n private handleDirection() {\n if (this.top) return (this.upwards = true);\n if (this.bottom) return (this.upwards = false);\n\n const { bottom, top } = this.getRect(this.elInput);\n\n const oneEm = 16;\n\n /*\n * Take the inner window height and subtract the elements bottom and 1em (16px)\n * If the max height of this calculation is less than the space above the element, open it upwards.\n * Do another calculation with the top value - 1em.\n */\n const offsetTop = window.innerHeight - bottom - oneEm;\n const offsetBottom = top - oneEm;\n\n /** Always point downwards, unless the space to the bottom is less than half of the top offset space. */\n this.upwards = offsetBottom / 2 > offsetTop;\n }\n\n private handleMaxHeight() {\n if (this.maxHeight) return this.elGroup.style.setProperty('--pn-select-max-height', this.maxHeight);\n\n const { bottom, top } = this.getRect(this.elInput);\n const inputHeight = this.upwards ? top : bottom;\n\n const offsetTop = getTotalHeightOffset();\n\n const offset = this.upwards ? offsetTop + 16 : 16;\n\n const maxHeight = this.upwards ? inputHeight - offset : window.innerHeight - inputHeight - offset;\n\n this.elGroup.style.setProperty('--pn-select-max-height', `${Math.ceil(maxHeight)}px`);\n }\n\n private handleWidth() {\n const { width } = this.getRect(this.elInput);\n this.elGroup.style.setProperty('--pn-select-options-width', `${Math.ceil(width)}px`);\n }\n\n private setFocus() {\n if (this.search) this.elInput.focus({ preventScroll: true });\n else this.elButton.focus({ preventScroll: true });\n }\n\n private hasError(): boolean {\n return this.invalid || !!this.error;\n }\n\n private hasMessage(): boolean {\n return !!this.helpertext || !!this.error;\n }\n\n private toggleOpen(state?: boolean) {\n if (typeof state === 'boolean' && state === this.open) return;\n this.open = state ?? !this.open;\n this.toggleSelect.emit({ open: this.open });\n }\n\n private handleInputKeyboard(event: KeyboardEvent) {\n event.stopImmediatePropagation();\n\n const { code } = event;\n\n if (code === 'Escape') return this.toggleOpen(false);\n if (!this.open && code.match(/^(Space|Enter)$|Arrow|^Key.*$/)) this.toggleOpen();\n }\n\n private setSearchQuery(value: string) {\n if (!this.open) this.toggleOpen(true);\n this.searchQuery = value;\n }\n\n private handleInputSearch() {\n if (this.isEmpty()) return;\n\n const term = this.searchQuery;\n const performSearch = ({ label, helpertext, value }: PnMultiselectOption): boolean => {\n return `${label} ${helpertext} ${value}`.trim().toLowerCase().includes(term.toLowerCase());\n };\n\n const options = this.options.map(option => {\n const foundNested = option?.group?.map(item => ({ ...item, hide: !performSearch(item) })) || [];\n\n const found = performSearch(option) || foundNested?.some(({ hide }) => !hide);\n\n option.hide = !found;\n if (option?.group?.length) option.group = [...foundNested];\n\n return option;\n });\n\n this.isSearching = term !== '';\n\n this.options = [...options];\n\n this.searchInput.emit({ query: term, found: this.optionsSearch() });\n }\n\n private getListItem(index: number): HTMLInputElement {\n const { value } = this.options[index];\n return this.elList.querySelector<HTMLInputElement>(`.pn-multiselect-option-input[value='${value}']`);\n }\n\n private getOptionIndex(val: string, triggers: (boolean | number)[], code?: string) {\n const total = this.optionsTotal() - 1;\n\n if (code === 'End') return total;\n if (code === 'Home') return 0;\n\n const valIndex = this.options.findIndex(({ value }) => value === val);\n\n const count = triggers.find(item => typeof item === 'number') as number;\n const index = valIndex + count;\n\n if (index >= total) return total;\n if (index <= 0) return 0;\n\n return index;\n }\n\n private checkboxNav(e: KeyboardEvent, val: string) {\n const { code } = e;\n\n const arrowUp = code === 'ArrowUp' && -1;\n const arrowDown = code === 'ArrowDown' && 1;\n const pageUp = code === 'PageUp' && -10;\n const pageDown = code === 'PageDown' && 10;\n const home = code === 'Home' && 0;\n const end = code === 'End' && this.optionsTotal() - 1;\n const tab = code === 'Tab';\n const space = code === 'Space';\n const enter = code === 'Enter';\n const escape = code === 'Escape';\n\n const triggers = [arrowUp, arrowDown, pageUp, pageDown, home, end, tab, space, enter, escape];\n\n if (!triggers.some(item => typeof item === 'number' || item)) return;\n\n if (tab || space || enter) return;\n\n e.stopImmediatePropagation();\n e.preventDefault();\n\n if (escape) {\n this.setFocus();\n return this.toggleOpen(false);\n }\n\n const item = this.getOptionIndex(val, triggers, code);\n return this.getListItem(item)?.focus();\n }\n\n private handleBlur(event: FocusEvent) {\n const target = event.target as HTMLElement;\n const related = event.relatedTarget as HTMLElement;\n\n const jumpingToChips = (related || target)?.className === 'pn-multiselect-chip-button';\n\n if (jumpingToChips) this.toggleOpen(false);\n }\n\n private handleLabel() {\n if (this.disabled) return;\n this.setFocus();\n }\n\n /** Check if there are no options in the list. */\n private isEmpty(): boolean {\n return (this.options?.length || 0) === 0;\n }\n\n private showSelectAll(): boolean {\n return this.selectAll && !this.isEmpty() && !this.noResults();\n }\n\n /** Check if the empty/nothing found should be visible. */\n private showEmptyOption() {\n return (this.isSearching && this.noResults()) || this.isEmpty();\n }\n\n private getPlaceholder(): string {\n const autoTranslation = this.search ? 'SEARCH' : 'SELECT_AN_OPTION';\n return this.placeholder || this.translate(autoTranslation);\n }\n\n private handleChange({ target }: InputEvent) {\n const { value, checked } = target as HTMLInputElement;\n this.optionSelect({ val: value, checked });\n }\n\n /** Display the \"X more selected options\" text. */\n private additonalOptions() {\n const count = this.optionsCheckedTotal() - this.itemCount;\n const single = `MORE_OPTION${count === 1 ? '' : 'S'}`;\n return `${count} ${this.translate(single)}`;\n }\n\n private describedBy(): string {\n const list = [this.search && this.idChips, this.srMessage && this.idSr, !!this.helpertext && this.idHelper].filter(\n Boolean,\n );\n if (list.length) return list.join(' ');\n return null;\n }\n\n private renderOption(\n {\n label,\n value,\n checked,\n helpertext,\n icon,\n id = `${this.selectId}-${value || label}`,\n invalid,\n disabled,\n hide,\n group,\n }: PnMultiselectOption,\n indexGroup?: number,\n indexNested?: number,\n ): HTMLLIElement {\n return (\n <li class=\"pn-multiselect-option\" key={id} hidden={hide}>\n <input\n type=\"checkbox\"\n id={id}\n class=\"pn-multiselect-option-input\"\n checked={checked ?? this.optionSelected(value)}\n indeterminate={indexNested === undefined && this.isIndeterminate(indexGroup)}\n name={this.name}\n value={value}\n disabled={this.disabled || disabled}\n required={this.required}\n aria-invalid={invalid ? 'true' : null}\n aria-describedby={helpertext ? `${id}-helper` : null}\n onClick={(event: MouseEvent) => this.ripple(event)}\n onKeyDown={(event: KeyboardEvent) => this.checkboxNav(event, value)}\n onBlur={(event: FocusEvent) => this.handleBlur(event)}\n />\n <div class=\"pn-multiselect-option-content\">\n {!!icon && <pn-icon icon={icon} color=\"blue900\" />}\n <div class=\"pn-multiselect-option-text\">\n <label class=\"pn-multiselect-option-label\" htmlFor={id}>\n <span>{label}</span>\n </label>\n {helpertext && (\n <p class=\"pn-multiselect-option-helper\" id={`${id}-helper`}>\n {helpertext}\n </p>\n )}\n </div>\n <div class=\"pn-multiselect-option-checkbox\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\">\n <polyline\n class=\"pn-multiselect-option-checkbox-checkmark-path\"\n points=\"4,12 9,17 20,6\"\n stroke-width=\"3\"\n />\n <polyline\n class=\"pn-multiselect-option-checkbox-indeterminate-path\"\n points=\"4,12 20,12\"\n stroke-width=\"3\"\n />\n </svg>\n </div>\n </div>\n {group?.length && (\n <ul class=\"pn-multiselect-optgroup\">{group?.map((option, i) => this.renderOption(option, indexGroup, i))}</ul>\n )}\n </li>\n );\n }\n\n private renderOptions(): HTMLUListElement {\n return (\n <ul\n id={this.idOptions}\n class=\"pn-multiselect-options\"\n data-open={this.open}\n data-upwards={this.upwards}\n data-moving={this.isClosing || this.isExpanding}\n onChange={(event: InputEvent) => this.handleChange(event)}\n style={{ height: '0px' }}\n ref={el => (this.elList = el)}\n >\n {this.showSelectAll() &&\n this.renderOption({\n label: this.translate(`SELECT_${this.isSearching ? 'FOUND' : 'ALL'}_OPTIONS`),\n value: this.allValue,\n checked: this.optionsTotal() === this.optionsCheckedTotal(),\n })}\n\n {this.options?.map((option, index) => this.renderOption(option, index))}\n\n {this.showEmptyOption() && (\n <li class=\"pn-multiselect-option\">\n <div class=\"pn-multiselect-option-content\" role=\"alert\">\n <div class=\"pn-multiselect-option-text\">\n <span class=\"pn-multiselect-option-label\">\n {this.translate(this.isEmpty() ? 'NO_OPTIONS' : 'NO_SEARCH_RESULTS')}\n </span>\n </div>\n </div>\n </li>\n )}\n </ul>\n );\n }\n\n private renderChips(): HTMLUListElement {\n return (\n <ul\n id={this.idChips}\n class=\"pn-multiselect-chips\"\n aria-label={this.translate('SELECTED_OPTIONS')}\n ref={el => (this.elChips = el)}\n >\n {this.optionsCheckedPreview()?.map(({ label, value }, index) => (\n <li\n class=\"pn-multiselect-chip\"\n aria-setsize={this.optionsCheckedTotal()}\n aria-posinset={index + 1}\n key={`${label}-${value}`}\n >\n <span class=\"pn-multiselect-chip-label\">{label}</span>\n <button\n type=\"button\"\n class=\"pn-multiselect-chip-button\"\n aria-label={`${this.translate('REMOVE')} ${label}`}\n onClick={() => this.optionSelect({ val: value, checked: false, chip: index })}\n >\n <pn-icon icon={close} small color=\"blue700\" />\n </button>\n </li>\n ))}\n {this.optionsCheckedTotal() > this.itemCount && (\n <li class=\"pn-multiselect-chip\" data-count>\n <span class=\"pn-multiselect-chip-label\">+ {this.additonalOptions()}</span>\n </li>\n )}\n </ul>\n );\n }\n\n render() {\n return (\n <Host>\n <fieldset class=\"pn-multiselect\" data-icon={!!this.icon} data-error={this.hasError()} disabled={this.disabled}>\n {this.label && (\n <legend id={this.idLegend} class=\"pn-multiselect-label\" onClick={() => this.handleLabel()}>\n <span>{this.label}</span>\n\n {!!this.optionsChecked()?.length && (\n <span>\n {this.optionsCheckedTotal()}/{this.optionsTotal()}\n </span>\n )}\n </legend>\n )}\n <div class=\"pn-multiselect-group\" ref={el => (this.elGroup = el)}>\n <div class=\"pn-multiselect-input\">\n {!!this.icon && <pn-icon class=\"pn-multiselect-icon\" data-custom icon={this.icon} />}\n\n <input\n tabindex={this.search ? null : '-1'}\n type={this.search ? 'search' : 'input'}\n id={this.selectId}\n class=\"pn-multiselect-element\"\n value={this.search ? this.searchQuery : this.optionsCheckedLabels()}\n name={this.selectName}\n placeholder={this.getPlaceholder()}\n required={this.search ? null : this.required}\n aria-labelledby={this.idLegend}\n aria-describedby={this.describedBy()}\n aria-controls={`${this.idOptions} ${this.search ? this.idChips : ''}`}\n aria-invalid={this.hasError()?.toString()}\n disabled={this.disabled}\n readonly={!this.search}\n onClick={() => (this.search && this.open ? null : this.toggleOpen())}\n onKeyDown={e => this.handleInputKeyboard(e)}\n onBlur={e => this.handleBlur(e)}\n onInput={e => this.search && this.setSearchQuery((e.target as HTMLInputElement).value)}\n ref={el => (this.elInput = el)}\n />\n\n {this.hasError() && (\n <pn-icon class=\"pn-multiselect-icon\" data-error icon={alert_exclamation_circle} color=\"warning\" />\n )}\n\n <button\n id={this.idButton}\n type=\"button\"\n class=\"pn-multiselect-button\"\n aria-label={this.translate(`BUTTON_${this.open ? 'CLOSE' : 'OPEN'}`)}\n aria-describedby={this.search ? null : this.selectId}\n aria-controls={this.idOptions}\n aria-expanded={this.open.toString()}\n onClick={() => this.toggleOpen()}\n ref={el => (this.elButton = el)}\n >\n <pn-icon class=\"pn-multiselect-icon\" icon={angle_down} color=\"blue700\" />\n </button>\n </div>\n\n {this.renderOptions()}\n </div>\n\n {this.hasMessage() && (\n <p id={this.idHelper} class=\"pn-multiselect-description\" role={!!this.error ? 'alert' : null}>\n <span>{this.error || this.helpertext}</span>\n </p>\n )}\n\n {this.search && this.renderChips()}\n\n <slot />\n\n {this.search && (\n <p id={this.idSr} class=\"pn-multiselect-sr-only\" role=\"alert\" aria-live=\"assertive\">\n {this.srMessage && <span>{this.srMessage}</span>}\n </p>\n )}\n </fieldset>\n </Host>\n );\n }\n}\n"],"mappings":";;;;8OAAO,MAAMA,EAAe,CAC1BC,iBAAkB,CAChBC,GAAI,mBACJC,GAAI,sBACJC,GAAI,mBACJC,GAAI,qBACJC,GAAI,sBAENC,mBAAoB,CAClBL,GAAI,qBACJC,GAAI,uBACJC,GAAI,uBACJC,GAAI,6BACJC,GAAI,0BAENE,qBAAsB,CACpBN,GAAI,0BACJC,GAAI,2BACJC,GAAI,2BACJC,GAAI,+BACJC,GAAI,8BAENG,iBAAkB,CAChBP,GAAI,oBACJC,GAAI,oBACJC,GAAI,qBACJC,GAAI,uBACJC,GAAI,wBAENI,YAAa,CACXR,GAAI,YACJC,GAAI,eACJC,GAAI,YACJC,GAAI,YACJC,GAAI,aAENK,aAAc,CACZT,GAAI,aACJC,GAAI,eACJC,GAAI,aACJC,GAAI,aACJC,GAAI,cAENM,OAAQ,CACNV,GAAI,SACJC,GAAI,UACJC,GAAI,SACJC,GAAI,SACJC,GAAI,UAENO,QAAS,CACPX,GAAI,UACJC,GAAI,WACJC,GAAI,UACJC,GAAI,YACJC,GAAI,WAENQ,YAAa,CACXZ,GAAI,eACJC,GAAI,mBACJC,GAAI,iBACJC,GAAI,oBACJC,GAAI,mBAENS,aAAc,CACZb,GAAI,gBACJC,GAAI,mBACJC,GAAI,gBACJC,GAAI,gBACJC,GAAI,iBAENU,OAAQ,CACNd,GAAI,SACJC,GAAI,MACJC,GAAI,MACJC,GAAI,MACJC,GAAI,OAENW,cAAe,CACbf,GAAI,gBACJC,GAAI,sBACJC,GAAI,oBACJC,GAAI,sBACJC,GAAI,uBAENY,kBAAmB,CACjBhB,GAAI,mBACJC,GAAI,2BACJC,GAAI,0BACJC,GAAI,2BACJC,GAAI,6BAENa,WAAY,CACVjB,GAAI,uBACJC,GAAI,+BACJC,GAAI,gCACJC,GAAI,kBACJC,GAAI,qCCjGR,MAAMc,EAAmB,0yfACzB,MAAAC,EAAeD,E,MCsBFE,EAAa,M,2QAuBgB,M,UAGP,M,aACG,M,wCAIE,M,iBACE,M,4GAcZC,KAAKC,G,4DAMA,K,sCAaH,M,cAMF,qB,YAOD,M,iBAMqB,G,eAOnB,E,kCAaL,M,YAKG,M,cAGE,M,cAEA,M,aAED,M,qBAnHXA,GAAa,kBAAkBC,MACxCC,SAAmB,GAAGH,KAAKC,YAC3BG,SAAmB,GAAGJ,KAAKC,YAC3BI,UAAoB,GAAGL,KAAKC,aAC5BK,SAAmB,GAAGN,KAAKC,UAC3BM,QAAkB,GAAGP,KAAKC,WAC1BO,KAAe,GAAGR,KAAKC,QAEvBQ,QACAC,SACAC,QACAC,OACAC,QAEAC,QAEAC,UACAC,yBAAmC,IACnCC,kBAA4BjB,KAAKgB,yB,iCAsGzC,UAAAE,GACE,GAAIlB,KAAKmB,KAAM,CACbnB,KAAKoB,0BAELpB,KAAKqB,kBACLrB,KAAKsB,kBACLtB,KAAKuB,cACLC,uBAAsB,IAAMxB,KAAKyB,Y,KAC5B,CACLzB,KAAK0B,YACL1B,KAAK2B,4B,EAKT,YAAAC,GACE,IAAK5B,KAAK6B,OACR7B,KAAK8B,QAAU,IACV9B,KAAK8B,QAAQC,KAAIC,IAClB,MAAMC,EAAO,IACRD,EACHE,KAAM,OAGR,GAAID,GAAME,OAAOC,OAAQH,EAAKE,MAAMJ,KAAIM,IAAG,IAAUA,EAAKH,KAAM,UAEhE,OAAOD,CAAI,I,CAMnB,iBAAAK,GACE,GAAItC,KAAK6B,eAAiB7B,KAAKuC,cAAgB,SAAUvC,KAAKwC,mB,CAIhE,cAAAC,GACE,MAAMxC,EAAKD,KAAK0C,SAChB1C,KAAKG,SAAW,GAAGF,WACnBD,KAAKI,SAAW,GAAGH,WACnBD,KAAKK,UAAY,GAAGJ,YACpBD,KAAKM,SAAW,GAAGL,SACnBD,KAAKO,QAAU,GAAGN,UAClBD,KAAKQ,KAAO,GAAGP,M,CAQjB,YAAA0C,GACE,IAAK3C,KAAKmB,KAAM,OAChBnB,KAAK4C,WAAW,OAEhB5C,KAAKY,OAAOiC,MAAMC,eAAe,6BACjC9C,KAAKY,OAAOiC,MAAMC,eAAe,yB,CAI1BC,aAEAC,WAEAC,eAKAC,mBAUAC,YAKT,uBAAMC,GACJpD,KAAKyC,iBACL,GAAIzC,KAAKqD,WAAa,WAAYC,EAAYtD,KAAKuD,Y,CAGrD,gBAAAC,GACE,KAAMxD,KAAKuC,aAAaH,OAAQpC,KAAKsC,mB,CAG/BmB,aAAgBC,IACtB,MAAMC,EAASD,EAAMC,OACrB,MAAMC,EAAmBD,GAAQE,QAAQ7D,KAAKuD,YAAYO,WAC1D,IAAKF,EAAkB5D,KAAK4C,WAAW,MAAM,EAGvC,uBAAAxB,GACN,MAAM2C,EAAiB/D,KAAKuD,YAAYS,cAExCD,EAAKE,iBAAiB,QAASjE,KAAKyD,a,CAG9B,0BAAA9B,GACN,MAAMoC,EAAiB/D,KAAKuD,YAAYS,cAExCD,EAAKG,oBAAoB,QAASlE,KAAKyD,a,CAGjC,QAAAhC,GACND,uBAAsB,KACpB,MAAM2C,aAAEA,EAAYC,aAAEA,GAAiBpE,KAAKY,OAC5C,MAAMyD,EAASrE,KAAKsE,UAAYH,EAAe,EAC/CnE,KAAKY,OAAOiC,MAAMwB,OAAS,GAAGD,MAE9BpE,KAAKuE,YAAc,KACnBvE,KAAKwE,YAAY,KAAM,GAAGH,MAAYrE,KAAKyE,WAAa,GAAGzE,KAAKY,OAAOwD,iBAAiB,G,CAIpF,SAAA1C,GACN,MAAM0C,aAAEA,EAAYD,aAAEA,GAAiBnE,KAAKY,OAC5C,MAAMyD,EAASrE,KAAKuE,YAAcJ,EAAeC,EACjDpE,KAAKY,OAAOiC,MAAMwB,OAAS,MAE3BrE,KAAKsE,UAAY,KACjBtE,KAAKwE,YAAY,MAAO,GAAGH,MAAY,M,CAGjC,WAAAG,CAAYrD,EAAeuD,EAAqBC,GACtD3E,KAAK4E,mBAEL,GAAIC,IAAgB7E,KAAKiB,kBAAoB,OACxCjB,KAAKiB,kBAAoBjB,KAAKgB,yBAEnChB,KAAKe,UAAYf,KAAKY,OAAOkE,QAC3B,CACET,OAAQ,CAACK,EAAaC,IAExB,CACEI,SAAU/E,KAAKiB,kBACf+D,OAAQ,iCAGZhF,KAAKe,UAAUkE,SAAW,IAAMjF,KAAKkF,kBACrClF,KAAKe,UAAUoE,SAAW,IAAOhE,EAAQnB,KAAKuE,YAAc,MAAUvE,KAAKsE,UAAY,K,CAGjF,eAAAY,GACNlF,KAAK4E,mBACL5E,KAAKY,OAAOiC,MAAMwB,OAASrE,KAAKsE,UAAY,MAAQ,GACpDtE,KAAKsE,UAAY,MACjBtE,KAAKuE,YAAc,K,CAGb,gBAAAK,GACN,GAAI5E,KAAKe,UAAWf,KAAKe,UAAUqE,Q,CAG7B,UAAAC,CAAWrD,EAA8BsD,GAC/CtF,KAAKgD,WAAWuC,KAAKvF,KAAK8B,SAE1B,GAAIE,EAAQ,OAAOhC,KAAKiD,eAAesC,KAAKvD,GAE5C,MAAMwD,EAAgG,CACpGC,QAASH,EACTI,UAAW1F,KAAK2F,aAGlB,GAAI3F,KAAK6B,QAAU7B,KAAK4F,iBAAmB5F,KAAK6F,gBAAgBzD,OAAQ,CACtEoD,EAAKM,MAAQ9F,KAAKuC,YAClBiD,EAAKO,MAAQ/F,KAAK6F,e,CAGpB7F,KAAKkD,mBAAmBqC,KAAKC,E,CAGvB,cAAAQ,GACN,MAAMC,EAAOjG,KAAK8B,SAASoE,QAAO,CAACC,EAAKlE,KACtC,MAAMmE,EAAWnE,EAAKE,MAAQ,IAAIF,EAAKE,MAAMkE,QAAO,EAAGZ,aAAcA,KAAY,GAEjF,GAAIxD,EAAKwD,QAASU,EAAIG,KAAKrE,GAE3B,GAAImE,GAAUhE,OAAQ+D,EAAIG,QAAQF,GAElC,OAAOD,CAAG,GACT,IAEH,OAAOF,C,CAGD,YAAAL,GACN,OAAO5F,KAAK8B,SAASoE,QAAO,CAACC,EAAKlE,IAASkE,GAAOlE,GAAME,OAAOC,OAASH,EAAKE,MAAMC,OAAS,EAAI,IAAI,E,CAG9F,YAAAmE,CAAaC,GACnB,MAAMC,EAAa,EAAGtE,QAAQ,MAA8BA,GAAOuE,WAAU,EAAGC,WAAYA,IAAUH,IAEtG,MAAMI,EAAa5G,KAAK8B,QAAQ4E,WAAU1E,GAAUA,EAAO2E,QAAUH,GAAOC,EAAWzE,MAAa,IACpG,MAAM6E,EAAcJ,EAAWzG,KAAK8B,UAAU8E,IAE9C,MAAO,CACLA,aACAC,c,CAII,mBAAAC,GACN,OAAO9G,KAAKgG,kBAAkB5D,M,CAGxB,qBAAA2E,GACN,OAAO/G,KAAKgG,kBAAkBgB,MAAM,EAAGhH,KAAKiH,U,CAGtC,oBAAAC,GACN,OAAOlH,KAAKgG,kBACRjE,KAAI,EAAGoF,WAAYA,KACnBC,KAAK,K,CAGH,aAAAvB,GACN,MAAMI,EAAOjG,KAAK8B,SAASoE,QAAO,CAACC,EAAKlE,KACtC,MAAMmE,EAAWnE,EAAKE,MAAQ,IAAIF,EAAKE,MAAMkE,QAAO,EAAGnE,WAAYA,KAAS,GAC5E,IAAKD,EAAKC,KAAMiE,EAAIG,KAAKrE,GACzB,GAAImE,GAAUhE,OAAQ+D,EAAIG,QAAQF,GAClC,OAAOD,CAAG,GACT,IAEH,OAAOF,C,CAGD,SAAAoB,GACN,OAAOrH,KAAK6F,iBAAiBzD,SAAW,C,CAGlC,eAAAkF,CAAgBC,GACtB,MAAMvF,EAAShC,KAAK8B,UAAUyF,GAC9B,GAAIvF,GAAQG,OAAOC,OAAQ,CACzB,MAAMkD,EAAMtD,EAAOG,MAAMqF,OAAM,EAAG/B,aAAcA,IAChD,MAAMgC,EAAOzF,EAAOG,MAAMqF,OAAM,EAAG/B,cAAeA,IAElD,QAASH,GAAOmC,E,CAElB,OAAO,K,CAGD,YAAAC,EAAalB,IAAEA,EAAGf,QAAEA,EAAOkC,KAAEA,IACnC,GAAInB,IAAQxG,KAAK4H,SAAU,OAAO5H,KAAK6H,gBAAgBpC,GAEvD,MAAM3D,EAAU9B,KAAK8B,QAErB,MAAM8E,WAAEA,EAAUC,YAAEA,GAAgB7G,KAAKuG,aAAaC,GAEtD,MAAMrE,EAAQL,EAAQ8E,IAAazE,MACnC,MAAM2F,EAAS3F,IAAQ0E,GAEvB,GAAIiB,GAAQnB,MAAO,CACjB7E,EAAQ8E,GAAYzE,MAAM0E,GAAapB,QAAUA,EAEjD,MAAMsC,EAAqB5F,GAAOqF,OAAM,EAAG/B,aAAcA,IAEzD,GAAIsC,EAAoBjG,EAAQ8E,GAAYnB,QAAU,UACjD3D,EAAQ8E,GAAYnB,QAAU,K,KAC9B,CACL3D,EAAQ8E,GAAYnB,QAAUA,EAC9B,GAAItD,GAAOC,OAAQN,EAAQ8E,GAAYzE,MAAQA,GAAOJ,KAAIM,IAAG,IAAUA,EAAKoD,QAASA,K,CAGvF,MAAMzD,EAAS6E,KAAiB,EAAI/E,EAAQ8E,GAAc9E,EAAQ8E,GAAYzE,MAAM0E,GAEpF7G,KAAKqF,WAAWrD,GAEhBhC,KAAK8B,QAAU,IAAIA,GAEnB,UAAW6F,IAAS,SAAU,CAC5B3H,KAAKgI,iBAAiB,GAAGhI,KAAKiI,UAAU,cAAcjG,EAAOmF,SAE7D3F,uBAAsB,KACpB,MAAM0G,EAAQP,IAAS3H,KAAK8G,sBAAwBa,EAAO,EAAIA,EAC/D,MAAMQ,EAAMC,MAAMC,KAAKrI,KAAKa,QAAQyH,YAAYJ,GAChDC,GAAKI,cAAc,UAAUC,MAAM,CAAEC,cAAe,MAAO,G,EAKzD,eAAAZ,CAAgBpC,GACtBzF,KAAK8B,QAAU,IACV9B,KAAK8B,QAAQC,KAAIC,IAClB,MAAMK,EAAM,IACPL,EACHyD,QAASzF,KAAK2F,YAAe3D,EAAOE,KAAOF,EAAOyD,QAAUA,EAAWA,GAGzE,GAAIpD,EAAIF,MACNE,EAAIF,MAAQ,IACPE,EAAIF,MAAMJ,KAAIE,IAAI,IAChBA,EACHwD,QAASzF,KAAK2F,YAAe1D,EAAKC,KAAOD,EAAKwD,QAAUA,EAAWA,OAIzE,MAAMiD,EAAarG,GAAKF,OAAOqF,OAAM,EAAG/B,aAAcA,IACtD,GAAIpD,GAAKF,OAAOC,OAAQC,EAAIoD,QAAUiD,EAEtC,OAAOrG,CAAG,KAIdrC,KAAKqF,WAAW,KAAMI,E,CAGhB,cAAAkD,CAAenC,GACrB,QAASxG,KAAKgG,kBAAkB4C,MAAK,EAAGjC,QAAOlB,aAAckB,IAAUH,GAAOf,G,CAGxE,SAAAwC,CAAUY,GAChB,MAAMC,EAAOrK,IAAeoK,KAAQ7I,KAAKqD,UAAY1E,GACrD,GAAImK,EAAKC,SAAS,YAAa,OAAOD,EAAKE,QAAQ,WAAYhJ,KAAK6F,gBAAgBzD,QACpF,OAAO0G,C,CAGD,OAAAG,CAAQC,GACd,OAAOA,GAASC,uB,CAGV,MAAAC,EAAOC,QAAEA,EAAOC,QAAEA,EAAO3F,OAAEA,IACjC,MAAM4F,EAAaF,IAAY,GAAKC,IAAY,EAChD,MAAMJ,EAAWvF,EAA4B6F,mBAC7C,MAAMC,EAAEA,EAACC,MAAEA,EAAKC,EAAEA,EAACC,IAAEA,GAAQ5J,KAAKiJ,QAAQC,GAC1C,MAAMW,EAAYN,EAAa,CAAEF,QAASI,EAAIC,EAAQ,GAAIJ,QAASK,EAAIC,GAAQ,CAAEP,UAASC,WAE1FF,EAAOS,EAAWX,E,CAGZ,gBAAAlB,CAAiBc,GACvB9I,KAAK8J,UAAYhB,EACjBiB,aAAa/J,KAAKc,SAClBd,KAAKc,QAAUkJ,YAAW,IAAOhK,KAAK8J,UAAY,MAAO,I,CAGnD,eAAAzI,GACN,GAAIrB,KAAK4J,IAAK,OAAQ5J,KAAKiK,QAAU,KACrC,GAAIjK,KAAKkK,OAAQ,OAAQlK,KAAKiK,QAAU,MAExC,MAAMC,OAAEA,EAAMN,IAAEA,GAAQ5J,KAAKiJ,QAAQjJ,KAAKW,SAE1C,MAAMwJ,EAAQ,GAOd,MAAMC,EAAYC,OAAOC,YAAcJ,EAASC,EAChD,MAAMI,EAAeX,EAAMO,EAG3BnK,KAAKiK,QAAUM,EAAe,EAAIH,C,CAG5B,eAAA9I,GACN,GAAItB,KAAKyE,UAAW,OAAOzE,KAAKS,QAAQoC,MAAM2H,YAAY,yBAA0BxK,KAAKyE,WAEzF,MAAMyF,OAAEA,EAAMN,IAAEA,GAAQ5J,KAAKiJ,QAAQjJ,KAAKW,SAC1C,MAAM8J,EAAczK,KAAKiK,QAAUL,EAAMM,EAEzC,MAAME,EAAYM,IAElB,MAAMC,EAAS3K,KAAKiK,QAAUG,EAAY,GAAK,GAE/C,MAAM3F,EAAYzE,KAAKiK,QAAUQ,EAAcE,EAASN,OAAOC,YAAcG,EAAcE,EAE3F3K,KAAKS,QAAQoC,MAAM2H,YAAY,yBAA0B,GAAGI,KAAKC,KAAKpG,O,CAGhE,WAAAlD,GACN,MAAMmI,MAAEA,GAAU1J,KAAKiJ,QAAQjJ,KAAKW,SACpCX,KAAKS,QAAQoC,MAAM2H,YAAY,4BAA6B,GAAGI,KAAKC,KAAKnB,O,CAGnE,QAAAoB,GACN,GAAI9K,KAAK6B,OAAQ7B,KAAKW,QAAQ6H,MAAM,CAAEC,cAAe,YAChDzI,KAAKU,SAAS8H,MAAM,CAAEC,cAAe,M,CAGpC,QAAAsC,GACN,OAAO/K,KAAKgL,WAAahL,KAAKiL,K,CAGxB,UAAAC,GACN,QAASlL,KAAKmL,cAAgBnL,KAAKiL,K,CAG7B,UAAArI,CAAWwI,GACjB,UAAWA,IAAU,WAAaA,IAAUpL,KAAKmB,KAAM,OACvDnB,KAAKmB,KAAOiK,IAAUpL,KAAKmB,KAC3BnB,KAAK+C,aAAawC,KAAK,CAAEpE,KAAMnB,KAAKmB,M,CAG9B,mBAAAkK,CAAoB3H,GAC1BA,EAAM4H,2BAEN,MAAMC,KAAEA,GAAS7H,EAEjB,GAAI6H,IAAS,SAAU,OAAOvL,KAAK4C,WAAW,OAC9C,IAAK5C,KAAKmB,MAAQoK,EAAKC,MAAM,iCAAkCxL,KAAK4C,Y,CAG9D,cAAA6I,CAAe9E,GACrB,IAAK3G,KAAKmB,KAAMnB,KAAK4C,WAAW,MAChC5C,KAAKuC,YAAcoE,C,CAGb,iBAAAnE,GACN,GAAIxC,KAAK0L,UAAW,OAEpB,MAAMC,EAAO3L,KAAKuC,YAClB,MAAMqJ,EAAgB,EAAGzE,QAAOgE,aAAYxE,WACnC,GAAGQ,KAASgE,KAAcxE,IAAQkF,OAAOC,cAAc/C,SAAS4C,EAAKG,eAG9E,MAAMhK,EAAU9B,KAAK8B,QAAQC,KAAIC,IAC/B,MAAM+J,EAAc/J,GAAQG,OAAOJ,KAAIE,IAAI,IAAUA,EAAMC,MAAO0J,EAAc3J,QAAa,GAE7F,MAAM8D,EAAQ6F,EAAc5J,IAAW+J,GAAaC,MAAK,EAAG9J,WAAYA,IAExEF,EAAOE,MAAQ6D,EACf,GAAI/D,GAAQG,OAAOC,OAAQJ,EAAOG,MAAQ,IAAI4J,GAE9C,OAAO/J,CAAM,IAGfhC,KAAK2F,YAAcgG,IAAS,GAE5B3L,KAAK8B,QAAU,IAAIA,GAEnB9B,KAAKmD,YAAYoC,KAAK,CAAEO,MAAO6F,EAAM5F,MAAO/F,KAAK6F,iB,CAG3C,WAAAoG,CAAY/D,GAClB,MAAMvB,MAAEA,GAAU3G,KAAK8B,QAAQoG,GAC/B,OAAOlI,KAAKY,OAAO2H,cAAgC,uCAAuC5B,M,CAGpF,cAAAuF,CAAe1F,EAAa2F,EAAgCZ,GAClE,MAAMa,EAAQpM,KAAK4F,eAAiB,EAEpC,GAAI2F,IAAS,MAAO,OAAOa,EAC3B,GAAIb,IAAS,OAAQ,OAAO,EAE5B,MAAMc,EAAWrM,KAAK8B,QAAQ4E,WAAU,EAAGC,WAAYA,IAAUH,IAEjE,MAAM8F,EAAQH,EAASvD,MAAK3G,UAAeA,IAAS,WACpD,MAAMiG,EAAQmE,EAAWC,EAEzB,GAAIpE,GAASkE,EAAO,OAAOA,EAC3B,GAAIlE,GAAS,EAAG,OAAO,EAEvB,OAAOA,C,CAGD,WAAAqE,CAAYC,EAAkBhG,GACpC,MAAM+E,KAAEA,GAASiB,EAEjB,MAAMC,EAAUlB,IAAS,YAAc,EACvC,MAAMmB,EAAYnB,IAAS,aAAe,EAC1C,MAAMoB,EAASpB,IAAS,WAAa,GACrC,MAAMqB,EAAWrB,IAAS,YAAc,GACxC,MAAMsB,EAAOtB,IAAS,QAAU,EAChC,MAAMuB,EAAMvB,IAAS,OAASvL,KAAK4F,eAAiB,EACpD,MAAMmH,EAAMxB,IAAS,MACrB,MAAMyB,EAAQzB,IAAS,QACvB,MAAM0B,EAAQ1B,IAAS,QACvB,MAAM2B,EAAS3B,IAAS,SAExB,MAAMY,EAAW,CAACM,EAASC,EAAWC,EAAQC,EAAUC,EAAMC,EAAKC,EAAKC,EAAOC,EAAOC,GAEtF,IAAKf,EAASH,MAAK/J,UAAeA,IAAS,UAAYA,IAAO,OAE9D,GAAI8K,GAAOC,GAASC,EAAO,OAE3BT,EAAElB,2BACFkB,EAAEW,iBAEF,GAAID,EAAQ,CACVlN,KAAK8K,WACL,OAAO9K,KAAK4C,WAAW,M,CAGzB,MAAMX,EAAOjC,KAAKkM,eAAe1F,EAAK2F,EAAUZ,GAChD,OAAOvL,KAAKiM,YAAYhK,IAAOuG,O,CAGzB,UAAA4E,CAAW1J,GACjB,MAAMC,EAASD,EAAMC,OACrB,MAAM0J,EAAU3J,EAAM4J,cAEtB,MAAMC,GAAkBF,GAAW1J,IAAS6J,YAAc,6BAE1D,GAAID,EAAgBvN,KAAK4C,WAAW,M,CAG9B,WAAA6K,GACN,GAAIzN,KAAK0N,SAAU,OACnB1N,KAAK8K,U,CAIC,OAAAY,GACN,OAAQ1L,KAAK8B,SAASM,QAAU,KAAO,C,CAGjC,aAAAuL,GACN,OAAO3N,KAAK4N,YAAc5N,KAAK0L,YAAc1L,KAAKqH,W,CAI5C,eAAAwG,GACN,OAAQ7N,KAAK2F,aAAe3F,KAAKqH,aAAgBrH,KAAK0L,S,CAGhD,cAAAoC,GACN,MAAMC,EAAkB/N,KAAK6B,OAAS,SAAW,mBACjD,OAAO7B,KAAKgO,aAAehO,KAAKiI,UAAU8F,E,CAGpC,YAAAE,EAAatK,OAAEA,IACrB,MAAMgD,MAAEA,EAAKlB,QAAEA,GAAY9B,EAC3B3D,KAAK0H,aAAa,CAAElB,IAAKG,EAAOlB,W,CAI1B,gBAAAyI,GACN,MAAM5B,EAAQtM,KAAK8G,sBAAwB9G,KAAKiH,UAChD,MAAMkH,EAAS,cAAc7B,IAAU,EAAI,GAAK,MAChD,MAAO,GAAGA,KAAStM,KAAKiI,UAAUkG,I,CAG5B,WAAAC,GACN,MAAMnI,EAAO,CAACjG,KAAK6B,QAAU7B,KAAKO,QAASP,KAAK8J,WAAa9J,KAAKQ,OAAQR,KAAKmL,YAAcnL,KAAKM,UAAU+F,OAC1GgI,SAEF,GAAIpI,EAAK7D,OAAQ,OAAO6D,EAAKmB,KAAK,KAClC,OAAO,I,CAGD,YAAAkH,EACNnH,MACEA,EAAKR,MACLA,EAAKlB,QACLA,EAAO0F,WACPA,EAAUoD,KACVA,EAAItO,GACJA,EAAK,GAAGD,KAAK0C,YAAYiE,GAASQ,IAAO6D,QACzCA,EAAO0C,SACPA,EAAQxL,KACRA,EAAIC,MACJA,GAEFyE,EACAC,GAEA,OACE2H,EAAA,MAAIC,MAAM,wBAAwBC,IAAKzO,EAAI0O,OAAQzM,GACjDsM,EAAA,SACEI,KAAK,WACL3O,GAAIA,EACJwO,MAAM,8BACNhJ,QAASA,GAAWzF,KAAK2I,eAAehC,GACxCkI,cAAehI,IAAgBiI,WAAa9O,KAAKsH,gBAAgBV,GACjEmI,KAAM/O,KAAK+O,KACXpI,MAAOA,EACP+G,SAAU1N,KAAK0N,UAAYA,EAC3BsB,SAAUhP,KAAKgP,SAAQ,eACThE,EAAU,OAAS,KAAI,mBACnBG,EAAa,GAAGlL,WAAc,KAChDgP,QAAUvL,GAAsB1D,KAAKoJ,OAAO1F,GAC5CwL,UAAYxL,GAAyB1D,KAAKuM,YAAY7I,EAAOiD,GAC7DwI,OAASzL,GAAsB1D,KAAKoN,WAAW1J,KAEjD8K,EAAA,OAAKC,MAAM,mCACNF,GAAQC,EAAA,WAASD,KAAMA,EAAMa,MAAM,YACtCZ,EAAA,OAAKC,MAAM,8BACTD,EAAA,SAAOC,MAAM,8BAA8BY,QAASpP,GAClDuO,EAAA,YAAOrH,IAERgE,GACCqD,EAAA,KAAGC,MAAM,+BAA+BxO,GAAI,GAAGA,YAC5CkL,IAIPqD,EAAA,OAAKC,MAAM,kCACTD,EAAA,OAAKc,MAAM,6BAA6BC,QAAQ,YAAYC,KAAK,QAC/DhB,EAAA,YACEC,MAAM,gDACNgB,OAAO,iBAAgB,eACV,MAEfjB,EAAA,YACEC,MAAM,oDACNgB,OAAO,aAAY,eACN,SAKpBtN,GAAOC,QACNoM,EAAA,MAAIC,MAAM,2BAA2BtM,GAAOJ,KAAI,CAACC,EAAQ0N,IAAM1P,KAAKsO,aAAatM,EAAQ4E,EAAY8I,M,CAMrG,aAAAC,GACN,OACEnB,EAAA,MACEvO,GAAID,KAAKK,UACToO,MAAM,yBAAwB,YACnBzO,KAAKmB,KAAI,eACNnB,KAAKiK,QAAO,cACbjK,KAAKsE,WAAatE,KAAKuE,YACpCqL,SAAWlM,GAAsB1D,KAAKiO,aAAavK,GACnDb,MAAO,CAAEwB,OAAQ,OACjBwL,IAAKC,GAAO9P,KAAKY,OAASkP,GAEzB9P,KAAK2N,iBACJ3N,KAAKsO,aAAa,CAChBnH,MAAOnH,KAAKiI,UAAU,UAAUjI,KAAK2F,YAAc,QAAU,iBAC7DgB,MAAO3G,KAAK4H,SACZnC,QAASzF,KAAK4F,iBAAmB5F,KAAK8G,wBAGzC9G,KAAK8B,SAASC,KAAI,CAACC,EAAQkG,IAAUlI,KAAKsO,aAAatM,EAAQkG,KAE/DlI,KAAK6N,mBACJW,EAAA,MAAIC,MAAM,yBACRD,EAAA,OAAKC,MAAM,gCAAgCsB,KAAK,SAC9CvB,EAAA,OAAKC,MAAM,8BACTD,EAAA,QAAMC,MAAM,+BACTzO,KAAKiI,UAAUjI,KAAK0L,UAAY,aAAe,yB,CAUxD,WAAAsE,GACN,OACExB,EAAA,MACEvO,GAAID,KAAKO,QACTkO,MAAM,uBAAsB,aAChBzO,KAAKiI,UAAU,oBAC3B4H,IAAKC,GAAO9P,KAAKa,QAAUiP,GAE1B9P,KAAK+G,yBAAyBhF,KAAI,EAAGoF,QAAOR,SAASuB,IACpDsG,EAAA,MACEC,MAAM,sBAAqB,eACbzO,KAAK8G,sBAAqB,gBACzBoB,EAAQ,EACvBwG,IAAK,GAAGvH,KAASR,KAEjB6H,EAAA,QAAMC,MAAM,6BAA6BtH,GACzCqH,EAAA,UACEI,KAAK,SACLH,MAAM,6BAA4B,aACtB,GAAGzO,KAAKiI,UAAU,aAAad,IAC3C8H,QAAS,IAAMjP,KAAK0H,aAAa,CAAElB,IAAKG,EAAOlB,QAAS,MAAOkC,KAAMO,KAErEsG,EAAA,WAASD,KAAM0B,EAAOC,MAAK,KAACd,MAAM,gBAIvCpP,KAAK8G,sBAAwB9G,KAAKiH,WACjCuH,EAAA,MAAIC,MAAM,sBAAqB,mBAC7BD,EAAA,QAAMC,MAAM,6BAA2B,KAAIzO,KAAKkO,qB,CAO1D,MAAAiC,GACE,OACE3B,EAAC4B,EAAI,CAAA1B,IAAA,4CACHF,EAAA,YAAAE,IAAA,2CAAUD,MAAM,iBAAgB,cAAczO,KAAKuO,KAAI,aAAcvO,KAAK+K,WAAY2C,SAAU1N,KAAK0N,UAClG1N,KAAKmH,OACJqH,EAAA,UAAAE,IAAA,2CAAQzO,GAAID,KAAKG,SAAUsO,MAAM,uBAAuBQ,QAAS,IAAMjP,KAAKyN,eAC1Ee,EAAA,QAAAE,IAAA,4CAAO1O,KAAKmH,SAETnH,KAAKgG,kBAAkB5D,QACxBoM,EAAA,QAAAE,IAAA,4CACG1O,KAAK8G,sBAAqB,IAAG9G,KAAK4F,iBAK3C4I,EAAA,OAAAE,IAAA,2CAAKD,MAAM,uBAAuBoB,IAAKC,GAAO9P,KAAKS,QAAUqP,GAC3DtB,EAAA,OAAAE,IAAA,2CAAKD,MAAM,0BACNzO,KAAKuO,MAAQC,EAAA,WAAAE,IAAA,2CAASD,MAAM,sBAAqB,mBAAaF,KAAMvO,KAAKuO,OAE5EC,EAAA,SAAAE,IAAA,2CACE2B,SAAUrQ,KAAK6B,OAAS,KAAO,KAC/B+M,KAAM5O,KAAK6B,OAAS,SAAW,QAC/B5B,GAAID,KAAK0C,SACT+L,MAAM,yBACN9H,MAAO3G,KAAK6B,OAAS7B,KAAKuC,YAAcvC,KAAKkH,uBAC7C6H,KAAM/O,KAAKsQ,WACXtC,YAAahO,KAAK8N,iBAClBkB,SAAUhP,KAAK6B,OAAS,KAAO7B,KAAKgP,SAAQ,kBAC3BhP,KAAKG,SAAQ,mBACZH,KAAKoO,cAAa,gBACrB,GAAGpO,KAAKK,aAAaL,KAAK6B,OAAS7B,KAAKO,QAAU,KAAI,eACvDP,KAAK+K,YAAYwF,WAC/B7C,SAAU1N,KAAK0N,SACf8C,UAAWxQ,KAAK6B,OAChBoN,QAAS,IAAOjP,KAAK6B,QAAU7B,KAAKmB,KAAO,KAAOnB,KAAK4C,aACvDsM,UAAW1C,GAAKxM,KAAKqL,oBAAoBmB,GACzC2C,OAAQ3C,GAAKxM,KAAKoN,WAAWZ,GAC7BiE,QAASjE,GAAKxM,KAAK6B,QAAU7B,KAAKyL,eAAgBe,EAAE7I,OAA4BgD,OAChFkJ,IAAKC,GAAO9P,KAAKW,QAAUmP,IAG5B9P,KAAK+K,YACJyD,EAAA,WAAAE,IAAA,2CAASD,MAAM,sBAAqB,kBAAYF,KAAMmC,EAA0BtB,MAAM,YAGxFZ,EAAA,UAAAE,IAAA,2CACEzO,GAAID,KAAKI,SACTwO,KAAK,SACLH,MAAM,wBAAuB,aACjBzO,KAAKiI,UAAU,UAAUjI,KAAKmB,KAAO,QAAU,UAAS,mBAClDnB,KAAK6B,OAAS,KAAO7B,KAAK0C,SAAQ,gBACrC1C,KAAKK,UAAS,gBACdL,KAAKmB,KAAKoP,WACzBtB,QAAS,IAAMjP,KAAK4C,aACpBiN,IAAKC,GAAO9P,KAAKU,SAAWoP,GAE5BtB,EAAA,WAAAE,IAAA,2CAASD,MAAM,sBAAsBF,KAAMoC,EAAYvB,MAAM,cAIhEpP,KAAK2P,iBAGP3P,KAAKkL,cACJsD,EAAA,KAAAE,IAAA,2CAAGzO,GAAID,KAAKM,SAAUmO,MAAM,6BAA6BsB,OAAQ/P,KAAKiL,MAAQ,QAAU,MACtFuD,EAAA,QAAAE,IAAA,4CAAO1O,KAAKiL,OAASjL,KAAKmL,aAI7BnL,KAAK6B,QAAU7B,KAAKgQ,cAErBxB,EAAA,QAAAE,IAAA,6CAEC1O,KAAK6B,QACJ2M,EAAA,KAAAE,IAAA,2CAAGzO,GAAID,KAAKQ,KAAMiO,MAAM,yBAAyBsB,KAAK,QAAO,YAAW,aACrE/P,KAAK8J,WAAa0E,EAAA,QAAAE,IAAA,4CAAO1O,KAAK8J,a","ignoreList":[]}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Built with Stencil
|
|
3
|
-
* By PostNord.
|
|
4
|
-
*/
|
|
5
|
-
import{r as t,g as e,h as s,a as i}from"./p-43660913.js";import{u as r,e as a,k as p}from"./p-f64d17a6.js";const o={STEP:{da:"Trin",en:"Step",fi:"Vaihe",no:"Trinn",sv:"Steg"}};const h="pn-progress-stepper .pn-progress-stepper{position:relative;width:100%;background:#f3f2f2;height:0.5em;border-radius:0.5em;box-shadow:0 0 0 0.0625em #969087}pn-progress-stepper .pn-progress-stepper[data-full] .pn-progress-stepper-value{border-top-right-radius:0.5em;border-bottom-right-radius:0.5em}pn-progress-stepper .pn-progress-stepper-label{margin-bottom:0.5em}pn-progress-stepper .pn-progress-stepper-value{position:absolute;top:-0.0625em;left:-0.0625em;height:0.625em;background-color:#005d92;width:calc(var(--progress-value) + 0.125em);border-radius:0.5em 0 0 0.5em;transition-property:width, border-radius;transition-duration:0.4s;transition-timing-function:cubic-bezier(0.7, 0, 0.3, 1)}@media (prefers-reduced-motion: reduce){pn-progress-stepper .pn-progress-stepper-value{transition-duration:0s;transition-delay:0s}}";const n=h;const d=class{constructor(e){t(this,e);this.progressValue=0;this.label=undefined;this.totalSteps=this.maxStep;this.currentStep=this.minStep;this.stepName=undefined;this.progressStepperId="";this.language=null}id=`pn-progress-stepper-${r()}`;idLabel=`${this.id}-label`;idBar=`${this.id}-bar`;minStep=1;maxStep=7;get hostElement(){return e(this)}validateCurrentStep(t){this.validate(t,"currentStep")}validateTotalSteps(t){this.validate(t,"totalSteps")}watchLanguage(){if(this.hasCustomLabel())return;this.label=o.STEP[this.language||a]}watchId(){if(this.progressStepperId){this.idLabel=`${this.progressStepperId}-label`;this.idBar=`${this.progressStepperId}-bar`}else{this.idLabel=`${this.id}-label`;this.idBar=`${this.id}-bar`}}async componentWillLoad(){this.watchLanguage();this.watchId();this.validate(this.currentStep,"currentStep");this.validate(this.totalSteps,"totalSteps");if(this.language)return;await p(this.hostElement)}componentWillRender(){this.calculateProgress()}hasCustomLabel(){if(this.label===undefined)return false;return!Object.keys(o.STEP).find((t=>o.STEP[t]===this.label))}validate(t,e){const s=this.hostElement.localName;if(t<this.minStep){console.warn(`${s}: The ${e} ${t} is below the minimum allowed steps of ${this.minStep}. ${e} will default to ${this.minStep}.`);this[e]=this.minStep}if(e==="currentStep"&&t>this.totalSteps){console.warn(`${s}: The ${e} ${t} is above totalSteps ${this.totalSteps}, ${e} will default to ${this.totalSteps}.`);this[e]=this.totalSteps}if(t>this.maxStep){console.warn(`${s}: The ${e} ${t} is above the maximum allowed steps of ${this.maxStep}. ${e} will default to ${this.maxStep}.`);this[e]=this.maxStep}}calculateProgress(){try{this.progressValue=Math.floor(this.currentStep/this.totalSteps*100);this.hostElement.style.setProperty("--progress-value",`${this.progressValue}%`)}catch(t){console.error(`${this.hostElement.localName}:`,t.message)}}render(){return s(i,{key:"4ba09046dab423fa79ebfdab9fbf312d9d8929cf"},s("p",{key:"fa2f78ce5509e1dd7af40657a083356e61d393db",id:this.idLabel,class:"pn-progress-stepper-label"},s("span",{key:"963374a110ad8fc87d6d6d2b00cd1694992fffab"},this.label," ",this.currentStep,"/",this.totalSteps),this.stepName&&s("span",{key:"f5cef98692b9baf2dc2826d1a0ebaebb64e75cf5"}," - ",this.stepName)),s("div",{key:"2259ad7c3a8d77ff6a59d32124695e9259b22ba5",class:"pn-progress-stepper",role:"progressbar","aria-labelledby":this.idLabel,"aria-valuenow":this.progressValue,id:this.idBar,"data-full":this.currentStep===this.totalSteps},s("div",{key:"f469df98da0b06db3a80fdcdc96555151789b014",class:"pn-progress-stepper-value"})))}static get watchers(){return{currentStep:["validateCurrentStep"],totalSteps:["validateTotalSteps"],language:["watchLanguage"],progressStepperId:["watchId"]}}};d.style=n;export{d as pn_progress_stepper};
|
|
6
|
-
//# sourceMappingURL=p-fc5f9092.entry.js.map
|
package/umd/modules/@postnord/web-components/postnord-web-components/p-fc5f9092.entry.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["translations","STEP","da","en","fi","no","sv","pnProgressStepperCss","PnProgressStepperStyle0","PnProgressStepper","this","maxStep","minStep","id","uuidv4","idLabel","idBar","validateCurrentStep","step","validate","validateTotalSteps","watchLanguage","hasCustomLabel","label","language","watchId","progressStepperId","componentWillLoad","currentStep","totalSteps","awaitTopbar","hostElement","componentWillRender","calculateProgress","undefined","Object","keys","find","prop","componentName","localName","console","warn","progressValue","Math","floor","style","setProperty","error","message","render","h","Host","key","class","stepName","role"],"sources":["src/components/feedback/pn-progress-stepper/translations.ts","src/components/feedback/pn-progress-stepper/pn-progress-stepper.scss?tag=pn-progress-stepper","src/components/feedback/pn-progress-stepper/pn-progress-stepper.tsx"],"sourcesContent":["export const translations = {\n STEP: {\n da: 'Trin',\n en: 'Step',\n fi: 'Vaihe',\n no: 'Trinn',\n sv: 'Steg',\n },\n};\n","@use 'src/globals/main';\n\npn-progress-stepper .pn-progress-stepper {\n position: relative;\n\n width: 100%;\n background: main.$gray50;\n height: 0.5em;\n border-radius: 0.5em;\n box-shadow: (0 0 0 0.0625em main.$gray400);\n\n &[data-full] .pn-progress-stepper-value {\n border-top-right-radius: 0.5em;\n border-bottom-right-radius: 0.5em;\n }\n\n &-label {\n margin-bottom: 0.5em;\n }\n\n &-value {\n position: absolute;\n top: -0.0625em;\n left: -0.0625em;\n\n height: 0.625em;\n background-color: main.$blue700;\n width: calc(var(--progress-value) + 0.125em);\n border-radius: 0.5em 0 0 0.5em;\n\n @include main.pn-transition('width, border-radius', main.$timing-layout);\n }\n}\n","import { Component, Element, h, Host, Prop, State, Watch } from '@stencil/core';\nimport { translations } from './translations';\nimport { en, awaitTopbar, uuidv4 } from '@/globals/helpers';\nimport type { PnLanguages, PnSteps, PnStepProps } from '@/globals/types';\n\n/**\n * The `pn-progress-stepper` is used to visualize the users progress through a flow (checkout/survey, etc...).\n **/\n@Component({\n tag: 'pn-progress-stepper',\n styleUrl: 'pn-progress-stepper.scss',\n})\nexport class PnProgressStepper {\n id: string = `pn-progress-stepper-${uuidv4()}`;\n\n idLabel: string = `${this.id}-label`;\n idBar: string = `${this.id}-bar`;\n\n minStep: 1 = 1;\n maxStep: 7 = 7;\n\n @Element() hostElement: HTMLElement;\n\n /** Percentage calculated with currentStep / totalSteps. */\n @State() progressValue: number = 0;\n\n /** Set custom label for the stepper, recommended default label is \"Step\". */\n @Prop({ mutable: true }) label?: string;\n /** Set total amount of steps, maximum `7` is allowed. */\n @Prop({ mutable: true }) totalSteps: PnSteps = this.maxStep;\n /** The current step of the progress stepper. */\n @Prop({ mutable: true }) currentStep: PnSteps = this.minStep;\n /** You can add a custom optional string to the label if you need a name for the current step. */\n @Prop() stepName?: string;\n /** Set a custom HTML id on the progress stepper element to associate progress bar with label. */\n @Prop() progressStepperId?: string = '';\n /**\n * Set the language manually, only use this prop if the pnTopbar is not loaded.\n * Will not overwrite the `label` prop if used.\n **/\n @Prop() language?: PnLanguages = null;\n\n @Watch('currentStep')\n validateCurrentStep(step: PnSteps) {\n this.validate(step, 'currentStep');\n }\n\n @Watch('totalSteps')\n validateTotalSteps(step: PnSteps) {\n this.validate(step, 'totalSteps');\n }\n\n @Watch('language')\n watchLanguage() {\n if (this.hasCustomLabel()) return;\n this.label = translations.STEP[this.language || en];\n }\n\n @Watch('progressStepperId')\n watchId() {\n if (this.progressStepperId) {\n this.idLabel = `${this.progressStepperId}-label`;\n this.idBar = `${this.progressStepperId}-bar`;\n } else {\n this.idLabel = `${this.id}-label`;\n this.idBar = `${this.id}-bar`;\n }\n }\n\n async componentWillLoad() {\n this.watchLanguage();\n this.watchId();\n\n this.validate(this.currentStep, 'currentStep');\n this.validate(this.totalSteps, 'totalSteps');\n\n if (this.language) return;\n await awaitTopbar(this.hostElement);\n }\n\n componentWillRender() {\n this.calculateProgress();\n }\n\n hasCustomLabel(): boolean {\n if (this.label === undefined) return false;\n return !Object.keys(translations.STEP).find(step => translations.STEP[step] === this.label);\n }\n\n validate(step: PnSteps, prop: PnStepProps) {\n const componentName = this.hostElement.localName;\n if (step < this.minStep) {\n console.warn(\n `${componentName}: The ${prop} ${step} is below the minimum allowed steps of ${this.minStep}. ${prop} will default to ${this.minStep}.`,\n );\n this[prop] = this.minStep;\n }\n if (prop === 'currentStep' && step > this.totalSteps) {\n console.warn(\n `${componentName}: The ${prop} ${step} is above totalSteps ${this.totalSteps}, ${prop} will default to ${this.totalSteps}.`,\n );\n this[prop] = this.totalSteps;\n }\n if (step > this.maxStep) {\n console.warn(\n `${componentName}: The ${prop} ${step} is above the maximum allowed steps of ${this.maxStep}. ${prop} will default to ${this.maxStep}.`,\n );\n this[prop] = this.maxStep;\n }\n }\n\n calculateProgress() {\n try {\n this.progressValue = Math.floor((this.currentStep / this.totalSteps) * 100);\n this.hostElement.style.setProperty('--progress-value', `${this.progressValue}%`);\n } catch (error) {\n console.error(`${this.hostElement.localName}:`, error.message);\n }\n }\n\n render() {\n return (\n <Host>\n <p id={this.idLabel} class=\"pn-progress-stepper-label\">\n <span>\n {this.label} {this.currentStep}/{this.totalSteps}\n </span>\n {this.stepName && <span> - {this.stepName}</span>}\n </p>\n <div\n class=\"pn-progress-stepper\"\n role=\"progressbar\"\n aria-labelledby={this.idLabel}\n aria-valuenow={this.progressValue}\n id={this.idBar}\n data-full={this.currentStep === this.totalSteps}\n >\n <div class=\"pn-progress-stepper-value\"></div>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
# PostNords web component library
|
|
2
|
-
|
|
3
|
-
This repo utilizes the Web Components compiler Stencil.js. The goal is to be able to provide re-usable components that the PostNord web teams can use to save time and get a holistic design. These components can be used in any popular framework or with no framework at all.
|
|
4
|
-
|
|
5
|
-
The library is intended to work with any other CSS framework you wish to use. As long as the CSS class names do not begin with "pn-" there should be no issues at all. However, we do recommend that you use the [pn-design-assets package](https://www.npmjs.com/package/pn-design-assets) which the libary was intended to be used with. The design assets include fonts, icons and more that helps you get started.
|
|
6
|
-
|
|
7
|
-
## Documentation
|
|
8
|
-
|
|
9
|
-
The library is documented with the help of Storybook. You can view [the latest documentation here](https://portal.postnord.com/web-components/).
|
|
10
|
-
|
|
11
|
-
Quick links:
|
|
12
|
-
|
|
13
|
-
- [Using PostNord Web Components in your project](https://portal.postnord.com/web-components/?path=/docs/docs-installation--docs)
|
|
14
|
-
- [Get started with PostNord design assets](https://portal.postnord.com/web-components/?path=/docs/docs-assets--docs)
|
|
15
|
-
|
|
16
|
-
### localhost Web Components in codepen.io
|
|
17
|
-
|
|
18
|
-
- To try out your localhost Web Components in codepen.io, you can run
|
|
19
|
-
|
|
20
|
-
```bash
|
|
21
|
-
# start exposed server at https://localhost:8000
|
|
22
|
-
npm run exposed
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
First time you need to go to https://localhost:8000 and accept the SSL warning.
|
|
26
|
-
|
|
27
|
-
Add the following code to the HTML section in codepen.io
|
|
28
|
-
|
|
29
|
-
```html
|
|
30
|
-
<!-- If you want to register all componets we have at once -->
|
|
31
|
-
<script type="module" src="https://localhost:8000/postnord-web-components.esm.js"></script>
|
|
32
|
-
```
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|