@ukic/web-components 3.9.0 → 3.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/constants-8354f6e6.js +189 -0
- package/dist/cjs/constants-8354f6e6.js.map +1 -0
- package/dist/cjs/core.cjs.js +1 -1
- package/dist/cjs/{helpers-a0e78e2e.js → helpers-ffe1c2d9.js} +6 -187
- package/dist/cjs/helpers-ffe1c2d9.js.map +1 -0
- package/dist/cjs/ic-accordion-group.cjs.entry.js +2 -1
- package/dist/cjs/ic-accordion-group.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-accordion.cjs.entry.js +2 -1
- package/dist/cjs/ic-accordion.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-action-chip.cjs.entry.js +2 -1
- package/dist/cjs/ic-action-chip.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-alert.cjs.entry.js +4 -3
- package/dist/cjs/ic-alert.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-back-to-top.cjs.entry.js +2 -1
- package/dist/cjs/ic-back-to-top.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-badge.cjs.entry.js +2 -1
- package/dist/cjs/ic-badge.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-breadcrumb-group.cjs.entry.js +2 -1
- package/dist/cjs/ic-breadcrumb-group.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-breadcrumb.cjs.entry.js +2 -1
- package/dist/cjs/ic-breadcrumb.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-button_3.cjs.entry.js +27 -20
- package/dist/cjs/ic-button_3.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-card-vertical.cjs.entry.js +2 -1
- package/dist/cjs/ic-card-vertical.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-checkbox-group.cjs.entry.js +4 -3
- package/dist/cjs/ic-checkbox-group.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-checkbox.cjs.entry.js +5 -4
- package/dist/cjs/ic-checkbox.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-chip.cjs.entry.js +2 -1
- package/dist/cjs/ic-chip.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-data-list.cjs.entry.js +2 -2
- package/dist/cjs/ic-data-row.cjs.entry.js +4 -3
- package/dist/cjs/ic-data-row.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-dialog.cjs.entry.js +7 -4
- package/dist/cjs/ic-dialog.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-divider.cjs.entry.js +2 -1
- package/dist/cjs/ic-divider.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-empty-state.cjs.entry.js +4 -3
- package/dist/cjs/ic-empty-state.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-footer-link-group.cjs.entry.js +2 -1
- package/dist/cjs/ic-footer-link-group.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-footer-link.cjs.entry.js +4 -3
- package/dist/cjs/ic-footer-link.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-footer.cjs.entry.js +10 -9
- package/dist/cjs/ic-footer.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-hero.cjs.entry.js +6 -5
- package/dist/cjs/ic-hero.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-horizontal-scroll.cjs.entry.js +8 -7
- package/dist/cjs/ic-horizontal-scroll.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-input-component-container_3.cjs.entry.js +12 -11
- package/dist/cjs/ic-input-component-container_3.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-input-label_2.cjs.entry.js +26 -12
- package/dist/cjs/ic-input-label_2.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-layout-grid-item.cjs.entry.js +2 -2
- package/dist/cjs/ic-layout-grid.cjs.entry.js +2 -2
- package/dist/cjs/ic-link.cjs.entry.js +5 -4
- package/dist/cjs/ic-link.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-menu-group.cjs.entry.js +3 -2
- package/dist/cjs/ic-menu-group.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-menu-item.cjs.entry.js +2 -1
- package/dist/cjs/ic-menu-item.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-navigation-button.cjs.entry.js +3 -2
- package/dist/cjs/ic-navigation-button.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-navigation-group.cjs.entry.js +3 -2
- package/dist/cjs/ic-navigation-group.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-navigation-item.cjs.entry.js +2 -1
- package/dist/cjs/ic-navigation-item.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-navigation-menu.cjs.entry.js +6 -5
- package/dist/cjs/ic-navigation-menu.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-page-header.cjs.entry.js +8 -7
- package/dist/cjs/ic-page-header.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-pagination-item.cjs.entry.js +3 -2
- package/dist/cjs/ic-pagination-item.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-pagination.cjs.entry.js +6 -5
- package/dist/cjs/ic-pagination.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-popover-menu.cjs.entry.js +6 -5
- package/dist/cjs/ic-popover-menu.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-radio-group.cjs.entry.js +6 -5
- package/dist/cjs/ic-radio-group.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-radio-option.cjs.entry.js +6 -5
- package/dist/cjs/ic-radio-option.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-search-bar.cjs.entry.js +11 -10
- package/dist/cjs/ic-search-bar.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-section-container.cjs.entry.js +2 -2
- package/dist/cjs/ic-select.cjs.entry.js +13 -11
- package/dist/cjs/ic-select.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-side-navigation.cjs.entry.js +6 -5
- package/dist/cjs/ic-side-navigation.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-skeleton.cjs.entry.js +2 -2
- package/dist/cjs/ic-skip-link.cjs.entry.js +2 -2
- package/dist/cjs/ic-status-tag.cjs.entry.js +4 -3
- package/dist/cjs/ic-status-tag.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-step.cjs.entry.js +15 -14
- package/dist/cjs/ic-step.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-stepper.cjs.entry.js +4 -3
- package/dist/cjs/ic-stepper.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-switch.cjs.entry.js +6 -5
- package/dist/cjs/ic-switch.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-tab-context.cjs.entry.js +10 -2
- package/dist/cjs/ic-tab-context.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-tab-group.cjs.entry.js +4 -3
- package/dist/cjs/ic-tab-group.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-tab-panel.cjs.entry.js +2 -2
- package/dist/cjs/ic-tab.cjs.entry.js +2 -1
- package/dist/cjs/ic-tab.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-text-field.cjs.entry.js +32 -23
- package/dist/cjs/ic-text-field.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-theme.cjs.entry.js +5 -4
- package/dist/cjs/ic-theme.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-toast-region.cjs.entry.js +1 -1
- package/dist/cjs/ic-toast.cjs.entry.js +7 -6
- package/dist/cjs/ic-toast.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-toggle-button-group.cjs.entry.js +4 -3
- package/dist/cjs/ic-toggle-button-group.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-toggle-button.cjs.entry.js +4 -3
- package/dist/cjs/ic-toggle-button.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-top-navigation.cjs.entry.js +2 -1
- package/dist/cjs/ic-top-navigation.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-typography.cjs.entry.js +4 -3
- package/dist/cjs/ic-typography.cjs.entry.js.map +1 -1
- package/dist/cjs/index.cjs.js +15 -0
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/assets/ai-icon.svg +1 -1
- package/dist/collection/assets/error-icon.svg +4 -4
- package/dist/collection/assets/info-icon.svg +4 -4
- package/dist/collection/assets/neutral-icon.svg +4 -4
- package/dist/collection/assets/success-icon.svg +4 -4
- package/dist/collection/assets/warning-icon.svg +4 -4
- package/dist/collection/components/ic-alert/ic-alert.js +1 -1
- package/dist/collection/components/ic-alert/ic-alert.js.map +1 -1
- package/dist/collection/components/ic-back-to-top/ic-back-to-top.stories.js +179 -0
- package/dist/collection/components/ic-button/ic-button.js +14 -8
- package/dist/collection/components/ic-button/ic-button.js.map +1 -1
- package/dist/collection/components/ic-button/ic-button.stories.js +191 -0
- package/dist/collection/components/ic-card-vertical/ic-card-vertical.stories.js +10 -10
- package/dist/collection/components/ic-checkbox/ic-checkbox.css +5 -0
- package/dist/collection/components/ic-checkbox/ic-checkbox.js +2 -2
- package/dist/collection/components/ic-checkbox/ic-checkbox.js.map +1 -1
- package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.js +2 -2
- package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.stories.js +11 -28
- package/dist/collection/components/ic-data-list/ic-data-list.js +2 -2
- package/dist/collection/components/ic-data-list/ic-data-list.stories.js +30 -6
- package/dist/collection/components/ic-data-row/ic-data-row.js +2 -2
- package/dist/collection/components/ic-dialog/ic-dialog.js +5 -3
- package/dist/collection/components/ic-dialog/ic-dialog.js.map +1 -1
- package/dist/collection/components/ic-dialog/ic-dialog.stories.js +40 -1
- package/dist/collection/components/ic-empty-state/ic-empty-state.js +2 -2
- package/dist/collection/components/ic-footer/ic-footer.stories.js +72 -0
- package/dist/collection/components/ic-footer-link/ic-footer-link.js +2 -2
- package/dist/collection/components/ic-hero/ic-hero.js +4 -4
- package/dist/collection/components/ic-hero/ic-hero.stories.js +72 -0
- package/dist/collection/components/ic-horizontal-scroll/ic-horizontal-scroll.css +8 -0
- package/dist/collection/components/ic-horizontal-scroll/ic-horizontal-scroll.js +5 -5
- package/dist/collection/components/ic-input-component-container/ic-input-component-container.js +3 -3
- package/dist/collection/components/ic-input-container/ic-input-container.js +2 -2
- package/dist/collection/components/ic-input-label/ic-input-label.js +2 -2
- package/dist/collection/components/ic-input-validation/ic-input-validation.css +5 -0
- package/dist/collection/components/ic-input-validation/ic-input-validation.js +22 -6
- package/dist/collection/components/ic-input-validation/ic-input-validation.js.map +1 -1
- package/dist/collection/components/ic-input-validation/ic-input-validation.types.js.map +1 -1
- package/dist/collection/components/ic-layout-grid/ic-layout-grid.js +2 -2
- package/dist/collection/components/ic-layout-grid-item/ic-layout-grid-item.js +2 -2
- package/dist/collection/components/ic-link/ic-link.js +1 -1
- package/dist/collection/components/ic-loading-indicator/ic-loading-indicator.js +5 -5
- package/dist/collection/components/ic-menu/ic-menu.css +2 -2
- package/dist/collection/components/ic-menu/ic-menu.js +4 -4
- package/dist/collection/components/ic-menu/ic-menu.js.map +1 -1
- package/dist/collection/components/ic-menu-group/ic-menu-group.js +1 -1
- package/dist/collection/components/ic-navigation-group/ic-navigation-group.js +1 -1
- package/dist/collection/components/ic-navigation-menu/ic-navigation-menu.js +4 -4
- package/dist/collection/components/ic-navigation-menu/ic-navigation-menu.js.map +1 -1
- package/dist/collection/components/ic-page-header/ic-page-header.js +6 -6
- package/dist/collection/components/ic-pagination/ic-pagination.js +4 -4
- package/dist/collection/components/ic-pagination-item/ic-pagination-item.js +1 -1
- package/dist/collection/components/ic-popover-menu/ic-popover-menu.js +4 -4
- package/dist/collection/components/ic-radio-group/ic-radio-group.js +4 -4
- package/dist/collection/components/ic-radio-group/ic-radio-group.js.map +1 -1
- package/dist/collection/components/ic-radio-group/ic-radio-group.stories.js +14 -15
- package/dist/collection/components/ic-radio-option/ic-radio-option.js +4 -4
- package/dist/collection/components/ic-radio-option/ic-radio-option.js.map +1 -1
- package/dist/collection/components/ic-search-bar/ic-search-bar.js +9 -9
- package/dist/collection/components/ic-search-bar/ic-search-bar.js.map +1 -1
- package/dist/collection/components/ic-section-container/ic-section-container.js +2 -2
- package/dist/collection/components/ic-section-container/ic-section-container.stories.js +39 -0
- package/dist/collection/components/ic-select/ic-select.js +10 -9
- package/dist/collection/components/ic-select/ic-select.js.map +1 -1
- package/dist/collection/components/ic-select/ic-select_(multi).stories.js +8 -6
- package/dist/collection/components/ic-select/ic-select_(searchable).stories.js +6 -3
- package/dist/collection/components/ic-select/ic-select_(single).stories.js +8 -6
- package/dist/collection/components/ic-select/test/a11y/ic-select.test.a11y.js +60 -0
- package/dist/collection/components/ic-select/test/a11y/ic-select.test.a11y.js.map +1 -0
- package/dist/collection/components/ic-side-navigation/ic-side-navigation.js +4 -4
- package/dist/collection/components/ic-skeleton/ic-skeleton.js +2 -2
- package/dist/collection/components/ic-skip-link/ic-skip-link.js +2 -2
- package/dist/collection/components/ic-status-tag/ic-status-tag.js +2 -2
- package/dist/collection/components/ic-step/ic-step.js +13 -13
- package/dist/collection/components/ic-stepper/ic-stepper.js +2 -2
- package/dist/collection/components/ic-switch/ic-switch.js +4 -4
- package/dist/collection/components/ic-tab-context/ic-tab-context.js +27 -2
- package/dist/collection/components/ic-tab-context/ic-tab-context.js.map +1 -1
- package/dist/collection/components/ic-tab-group/ic-tab-group.js +2 -2
- package/dist/collection/components/ic-tab-panel/ic-tab-panel.js +2 -2
- package/dist/collection/components/ic-text-field/ic-text-field.css +4 -0
- package/dist/collection/components/ic-text-field/ic-text-field.js +53 -19
- package/dist/collection/components/ic-text-field/ic-text-field.js.map +1 -1
- package/dist/collection/components/ic-text-field/ic-text-field.stories.js +102 -4
- package/dist/collection/components/ic-theme/ic-theme.js +1 -1
- package/dist/collection/components/ic-toast/ic-toast.js +3 -3
- package/dist/collection/components/ic-toast/ic-toast.js.map +1 -1
- package/dist/collection/components/ic-toast-region/ic-toast-region.js +1 -1
- package/dist/collection/components/ic-toggle-button/ic-toggle-button.js +2 -2
- package/dist/collection/components/ic-toggle-button/ic-toggle-button.js.map +1 -1
- package/dist/collection/components/ic-toggle-button/ic-toggle-button.stories.js +236 -0
- package/dist/collection/components/ic-toggle-button-group/ic-toggle-button-group.js +2 -2
- package/dist/collection/components/ic-tooltip/ic-tooltip.js +6 -4
- package/dist/collection/components/ic-tooltip/ic-tooltip.js.map +1 -1
- package/dist/collection/components/ic-typography/ic-typography.js +2 -2
- package/dist/collection/index.js +1 -1
- package/dist/collection/index.js.map +1 -1
- package/dist/collection/utils/types.js.map +1 -1
- package/dist/components/constants.js +176 -0
- package/dist/components/constants.js.map +1 -0
- package/dist/components/helpers.js +2 -174
- package/dist/components/helpers.js.map +1 -1
- package/dist/components/ic-action-chip.js +1 -1
- package/dist/components/ic-alert.js +3 -2
- package/dist/components/ic-alert.js.map +1 -1
- package/dist/components/ic-back-to-top.js +1 -1
- package/dist/components/ic-back-to-top.js.map +1 -1
- package/dist/components/ic-badge.js +1 -1
- package/dist/components/ic-breadcrumb-group.js +1 -1
- package/dist/components/ic-breadcrumb2.js +1 -1
- package/dist/components/ic-button2.js +17 -11
- package/dist/components/ic-button2.js.map +1 -1
- package/dist/components/ic-card-vertical.js +1 -1
- package/dist/components/ic-checkbox-group.js +3 -3
- package/dist/components/ic-checkbox.js +4 -4
- package/dist/components/ic-checkbox.js.map +1 -1
- package/dist/components/ic-chip.js +1 -1
- package/dist/components/ic-data-list.js +2 -2
- package/dist/components/ic-data-row.js +3 -3
- package/dist/components/ic-dialog.js +6 -4
- package/dist/components/ic-dialog.js.map +1 -1
- package/dist/components/ic-divider2.js +1 -1
- package/dist/components/ic-empty-state.js +3 -3
- package/dist/components/ic-footer-link-group.js +1 -1
- package/dist/components/ic-footer-link.js +3 -3
- package/dist/components/ic-footer.js +2 -1
- package/dist/components/ic-footer.js.map +1 -1
- package/dist/components/ic-hero.js +5 -5
- package/dist/components/ic-horizontal-scroll2.js +7 -7
- package/dist/components/ic-horizontal-scroll2.js.map +1 -1
- package/dist/components/ic-input-component-container2.js +5 -4
- package/dist/components/ic-input-component-container2.js.map +1 -1
- package/dist/components/ic-input-container2.js +2 -2
- package/dist/components/ic-input-label2.js +3 -3
- package/dist/components/ic-input-validation2.js +23 -7
- package/dist/components/ic-input-validation2.js.map +1 -1
- package/dist/components/ic-layout-grid-item.js +2 -2
- package/dist/components/ic-layout-grid.js +2 -2
- package/dist/components/ic-link2.js +3 -2
- package/dist/components/ic-link2.js.map +1 -1
- package/dist/components/ic-loading-indicator2.js +5 -5
- package/dist/components/ic-menu-group.js +2 -2
- package/dist/components/ic-menu-item2.js +1 -1
- package/dist/components/ic-menu2.js +6 -6
- package/dist/components/ic-menu2.js.map +1 -1
- package/dist/components/ic-navigation-button.js +2 -1
- package/dist/components/ic-navigation-button.js.map +1 -1
- package/dist/components/ic-navigation-group.js +2 -2
- package/dist/components/ic-navigation-item.js +1 -1
- package/dist/components/ic-navigation-menu2.js +5 -5
- package/dist/components/ic-navigation-menu2.js.map +1 -1
- package/dist/components/ic-page-header.js +7 -7
- package/dist/components/ic-pagination-item2.js +2 -2
- package/dist/components/ic-pagination.js +4 -4
- package/dist/components/ic-pagination.js.map +1 -1
- package/dist/components/ic-popover-menu.js +5 -5
- package/dist/components/ic-popover-menu.js.map +1 -1
- package/dist/components/ic-radio-group.js +5 -5
- package/dist/components/ic-radio-group.js.map +1 -1
- package/dist/components/ic-radio-option.js +5 -5
- package/dist/components/ic-radio-option.js.map +1 -1
- package/dist/components/ic-search-bar.js +10 -10
- package/dist/components/ic-search-bar.js.map +1 -1
- package/dist/components/ic-section-container2.js +2 -2
- package/dist/components/ic-select.js +12 -10
- package/dist/components/ic-select.js.map +1 -1
- package/dist/components/ic-side-navigation.js +5 -5
- package/dist/components/ic-side-navigation.js.map +1 -1
- package/dist/components/ic-skeleton.js +2 -2
- package/dist/components/ic-skip-link.js +2 -2
- package/dist/components/ic-status-tag.js +2 -2
- package/dist/components/ic-status-tag.js.map +1 -1
- package/dist/components/ic-step.js +14 -14
- package/dist/components/ic-stepper.js +2 -2
- package/dist/components/ic-switch.js +5 -5
- package/dist/components/ic-tab-context.js +11 -2
- package/dist/components/ic-tab-context.js.map +1 -1
- package/dist/components/ic-tab-group.js +2 -2
- package/dist/components/ic-tab-panel.js +2 -2
- package/dist/components/ic-tab-panel.js.map +1 -1
- package/dist/components/ic-text-field.js +31 -21
- package/dist/components/ic-text-field.js.map +1 -1
- package/dist/components/ic-theme.js +3 -2
- package/dist/components/ic-theme.js.map +1 -1
- package/dist/components/ic-toast-region.js +1 -1
- package/dist/components/ic-toast.js +5 -4
- package/dist/components/ic-toast.js.map +1 -1
- package/dist/components/ic-toggle-button-group.js +2 -2
- package/dist/components/ic-toggle-button.js +3 -3
- package/dist/components/ic-toggle-button.js.map +1 -1
- package/dist/components/ic-tooltip2.js +6 -4
- package/dist/components/ic-tooltip2.js.map +1 -1
- package/dist/components/ic-top-navigation.js +1 -1
- package/dist/components/ic-typography2.js +2 -2
- package/dist/components/index.js +1 -0
- package/dist/components/index.js.map +1 -1
- package/dist/core/core.css +32 -4
- package/dist/core/core.esm.js +1 -1
- package/dist/core/core.esm.js.map +1 -1
- package/dist/core/index.esm.js +1 -1
- package/dist/core/p-01aeffca.entry.js +2 -0
- package/dist/core/{p-b52000d9.entry.js.map → p-01aeffca.entry.js.map} +1 -1
- package/dist/core/p-0201abbf.entry.js +2 -0
- package/dist/core/{p-ea778379.entry.js.map → p-0201abbf.entry.js.map} +1 -1
- package/dist/core/p-02c2c31f.entry.js +2 -0
- package/dist/core/{p-6a576a8b.entry.js.map → p-02c2c31f.entry.js.map} +1 -1
- package/dist/core/p-0809aff4.entry.js +2 -0
- package/dist/core/{p-1e2f40b0.entry.js.map → p-0809aff4.entry.js.map} +1 -1
- package/dist/core/p-19366be6.entry.js +2 -0
- package/dist/core/{p-19cf2327.entry.js.map → p-19366be6.entry.js.map} +1 -1
- package/dist/core/p-1ab63899.entry.js +2 -0
- package/dist/core/{p-ef4b5469.entry.js.map → p-1ab63899.entry.js.map} +1 -1
- package/dist/core/p-1d4dfef1.entry.js +2 -0
- package/dist/core/{p-661ae402.entry.js.map → p-1d4dfef1.entry.js.map} +1 -1
- package/dist/core/p-1dab47b1.entry.js +2 -0
- package/dist/core/{p-72a9909c.entry.js.map → p-1dab47b1.entry.js.map} +1 -1
- package/dist/core/p-23b223bf.entry.js +2 -0
- package/dist/core/{p-f309d3af.entry.js.map → p-23b223bf.entry.js.map} +1 -1
- package/dist/core/p-35ee7c53.entry.js +2 -0
- package/dist/core/{p-9eeb5e85.entry.js.map → p-35ee7c53.entry.js.map} +1 -1
- package/dist/core/{p-287e5c17.entry.js → p-37d217b5.entry.js} +2 -2
- package/dist/core/{p-df88ff5b.entry.js → p-37daa8fe.entry.js} +2 -2
- package/dist/core/p-3a78bf6e.entry.js +2 -0
- package/dist/core/{p-2f4f392f.entry.js.map → p-3a78bf6e.entry.js.map} +1 -1
- package/dist/core/p-3f55bb5b.entry.js +2 -0
- package/dist/core/p-3f55bb5b.entry.js.map +1 -0
- package/dist/core/p-402813c9.entry.js +2 -0
- package/dist/core/{p-9323c234.entry.js.map → p-402813c9.entry.js.map} +1 -1
- package/dist/core/p-402c2455.entry.js +2 -0
- package/dist/core/{p-5daa7915.entry.js.map → p-402c2455.entry.js.map} +1 -1
- package/dist/core/p-46423f42.entry.js +2 -0
- package/dist/core/{p-b0d488d0.entry.js.map → p-46423f42.entry.js.map} +1 -1
- package/dist/core/{p-45dd12ee.entry.js → p-4747c39f.entry.js} +2 -2
- package/dist/core/p-4747c39f.entry.js.map +1 -0
- package/dist/core/{p-ffac41d6.entry.js → p-492fcb51.entry.js} +2 -2
- package/dist/core/p-4a2c02b2.entry.js +2 -0
- package/dist/core/{p-711bfeed.entry.js.map → p-4a2c02b2.entry.js.map} +1 -1
- package/dist/core/p-4dd8add9.entry.js +2 -0
- package/dist/core/{p-6ed0ac48.entry.js.map → p-4dd8add9.entry.js.map} +1 -1
- package/dist/core/p-515ded3f.entry.js +2 -0
- package/dist/core/{p-41f92698.entry.js.map → p-515ded3f.entry.js.map} +1 -1
- package/dist/core/p-52a2f800.entry.js +2 -0
- package/dist/core/p-52a2f800.entry.js.map +1 -0
- package/dist/core/{p-6e8ef73c.entry.js → p-57721431.entry.js} +2 -2
- package/dist/core/p-57803949.entry.js +2 -0
- package/dist/core/{p-f6a02202.entry.js.map → p-57803949.entry.js.map} +1 -1
- package/dist/core/p-58b8d154.entry.js +2 -0
- package/dist/core/{p-cbe0d1bb.entry.js.map → p-58b8d154.entry.js.map} +1 -1
- package/dist/core/p-5c6efed3.entry.js +2 -0
- package/dist/core/{p-3dc54847.entry.js.map → p-5c6efed3.entry.js.map} +1 -1
- package/dist/core/{p-5fbc8e62.entry.js → p-5fcfcfb6.entry.js} +2 -2
- package/dist/core/p-641c26c4.js +2 -0
- package/dist/core/p-641c26c4.js.map +1 -0
- package/dist/core/p-65a3c216.entry.js +2 -0
- package/dist/core/{p-15dbccc2.entry.js.map → p-65a3c216.entry.js.map} +1 -1
- package/dist/core/p-69412f61.entry.js +2 -0
- package/dist/core/{p-21cf2beb.entry.js.map → p-69412f61.entry.js.map} +1 -1
- package/dist/core/p-69cc0f7d.entry.js +2 -0
- package/dist/core/{p-6014ab64.entry.js.map → p-69cc0f7d.entry.js.map} +1 -1
- package/dist/core/p-6ceedfa8.js +2 -0
- package/dist/core/p-6ceedfa8.js.map +1 -0
- package/dist/core/p-75a9b2e4.entry.js +2 -0
- package/dist/core/p-75a9b2e4.entry.js.map +1 -0
- package/dist/core/p-75e0278a.entry.js +2 -0
- package/dist/core/{p-4ca782eb.entry.js.map → p-75e0278a.entry.js.map} +1 -1
- package/dist/core/p-8326db29.entry.js +2 -0
- package/dist/core/{p-3e5d7a3d.entry.js.map → p-8326db29.entry.js.map} +1 -1
- package/dist/core/p-8af9413c.entry.js +2 -0
- package/dist/core/p-8af9413c.entry.js.map +1 -0
- package/dist/core/p-8d1fbbeb.entry.js +2 -0
- package/dist/core/{p-7cd4f6a6.entry.js.map → p-8d1fbbeb.entry.js.map} +1 -1
- package/dist/core/p-8d29c0fa.entry.js +2 -0
- package/dist/core/{p-52748d5c.entry.js.map → p-8d29c0fa.entry.js.map} +1 -1
- package/dist/core/{p-ea061ccf.entry.js → p-9a8bcb78.entry.js} +2 -2
- package/dist/core/{p-8b5022bc.entry.js → p-9cf6ccfd.entry.js} +2 -2
- package/dist/core/p-a468df37.entry.js +2 -0
- package/dist/core/{p-fc3b1155.entry.js.map → p-a468df37.entry.js.map} +1 -1
- package/dist/core/p-a48b581a.entry.js +2 -0
- package/dist/core/{p-9f36791b.entry.js.map → p-a48b581a.entry.js.map} +1 -1
- package/dist/core/p-a4e67ab8.entry.js +2 -0
- package/dist/core/{p-4d1a3036.entry.js.map → p-a4e67ab8.entry.js.map} +1 -1
- package/dist/core/p-aab838e5.entry.js +2 -0
- package/dist/core/{p-9c013333.entry.js.map → p-aab838e5.entry.js.map} +1 -1
- package/dist/core/p-abb9dccb.entry.js +2 -0
- package/dist/core/{p-af9c391d.entry.js.map → p-abb9dccb.entry.js.map} +1 -1
- package/dist/core/{p-999f0a5d.entry.js → p-b4a2f6fa.entry.js} +2 -2
- package/dist/core/p-b80d408f.entry.js +2 -0
- package/dist/core/p-b80d408f.entry.js.map +1 -0
- package/dist/core/p-b9018261.entry.js +2 -0
- package/dist/core/{p-0d680d19.entry.js.map → p-b9018261.entry.js.map} +1 -1
- package/dist/core/p-c81ffadd.entry.js +2 -0
- package/dist/core/{p-595a4d06.entry.js.map → p-c81ffadd.entry.js.map} +1 -1
- package/dist/core/p-cd63bcf2.entry.js +2 -0
- package/dist/core/p-cd63bcf2.entry.js.map +1 -0
- package/dist/core/p-cdd04ec2.entry.js +2 -0
- package/dist/core/{p-41ef74a7.entry.js.map → p-cdd04ec2.entry.js.map} +1 -1
- package/dist/core/p-d27e46ac.entry.js +2 -0
- package/dist/core/{p-cf631191.entry.js.map → p-d27e46ac.entry.js.map} +1 -1
- package/dist/core/p-d35f8bd4.entry.js +2 -0
- package/dist/core/{p-493eaabb.entry.js.map → p-d35f8bd4.entry.js.map} +1 -1
- package/dist/core/p-d6b3e02f.entry.js +2 -0
- package/dist/core/p-d6b3e02f.entry.js.map +1 -0
- package/dist/core/p-d7bd5aa0.entry.js +2 -0
- package/dist/core/p-d7bd5aa0.entry.js.map +1 -0
- package/dist/core/p-ed69f110.entry.js +2 -0
- package/dist/core/p-ed69f110.entry.js.map +1 -0
- package/dist/core/p-eddc5517.entry.js +2 -0
- package/dist/core/{p-313a8a2f.entry.js.map → p-eddc5517.entry.js.map} +1 -1
- package/dist/core/p-f045f59d.entry.js +2 -0
- package/dist/core/{p-317e005f.entry.js.map → p-f045f59d.entry.js.map} +1 -1
- package/dist/core/p-f086d6df.entry.js +2 -0
- package/dist/core/{p-43324339.entry.js.map → p-f086d6df.entry.js.map} +1 -1
- package/dist/core/p-f17e1525.entry.js +2 -0
- package/dist/core/{p-a77364f5.entry.js.map → p-f17e1525.entry.js.map} +1 -1
- package/dist/core/p-f78f34ce.entry.js +2 -0
- package/dist/core/{p-1d37ac1c.entry.js.map → p-f78f34ce.entry.js.map} +1 -1
- package/dist/core/p-fd488ed7.entry.js +2 -0
- package/dist/core/{p-a602a8e1.entry.js.map → p-fd488ed7.entry.js.map} +1 -1
- package/dist/core/p-ffc608a1.entry.js +2 -0
- package/dist/core/{p-8a4b12e4.entry.js.map → p-ffc608a1.entry.js.map} +1 -1
- package/dist/esm/constants-48759bda.js +176 -0
- package/dist/esm/constants-48759bda.js.map +1 -0
- package/dist/esm/core.js +1 -1
- package/dist/esm/{helpers-56631aa0.js → helpers-d8189e9d.js} +3 -175
- package/dist/esm/helpers-d8189e9d.js.map +1 -0
- package/dist/esm/ic-accordion-group.entry.js +2 -1
- package/dist/esm/ic-accordion-group.entry.js.map +1 -1
- package/dist/esm/ic-accordion.entry.js +2 -1
- package/dist/esm/ic-accordion.entry.js.map +1 -1
- package/dist/esm/ic-action-chip.entry.js +2 -1
- package/dist/esm/ic-action-chip.entry.js.map +1 -1
- package/dist/esm/ic-alert.entry.js +3 -2
- package/dist/esm/ic-alert.entry.js.map +1 -1
- package/dist/esm/ic-back-to-top.entry.js +2 -1
- package/dist/esm/ic-back-to-top.entry.js.map +1 -1
- package/dist/esm/ic-badge.entry.js +2 -1
- package/dist/esm/ic-badge.entry.js.map +1 -1
- package/dist/esm/ic-breadcrumb-group.entry.js +2 -1
- package/dist/esm/ic-breadcrumb-group.entry.js.map +1 -1
- package/dist/esm/ic-breadcrumb.entry.js +2 -1
- package/dist/esm/ic-breadcrumb.entry.js.map +1 -1
- package/dist/esm/ic-button_3.entry.js +25 -18
- package/dist/esm/ic-button_3.entry.js.map +1 -1
- package/dist/esm/ic-card-vertical.entry.js +2 -1
- package/dist/esm/ic-card-vertical.entry.js.map +1 -1
- package/dist/esm/ic-checkbox-group.entry.js +4 -3
- package/dist/esm/ic-checkbox-group.entry.js.map +1 -1
- package/dist/esm/ic-checkbox.entry.js +5 -4
- package/dist/esm/ic-checkbox.entry.js.map +1 -1
- package/dist/esm/ic-chip.entry.js +2 -1
- package/dist/esm/ic-chip.entry.js.map +1 -1
- package/dist/esm/ic-data-list.entry.js +2 -2
- package/dist/esm/ic-data-row.entry.js +4 -3
- package/dist/esm/ic-data-row.entry.js.map +1 -1
- package/dist/esm/ic-dialog.entry.js +7 -4
- package/dist/esm/ic-dialog.entry.js.map +1 -1
- package/dist/esm/ic-divider.entry.js +2 -1
- package/dist/esm/ic-divider.entry.js.map +1 -1
- package/dist/esm/ic-empty-state.entry.js +4 -3
- package/dist/esm/ic-empty-state.entry.js.map +1 -1
- package/dist/esm/ic-footer-link-group.entry.js +2 -1
- package/dist/esm/ic-footer-link-group.entry.js.map +1 -1
- package/dist/esm/ic-footer-link.entry.js +4 -3
- package/dist/esm/ic-footer-link.entry.js.map +1 -1
- package/dist/esm/ic-footer.entry.js +2 -1
- package/dist/esm/ic-footer.entry.js.map +1 -1
- package/dist/esm/ic-hero.entry.js +6 -5
- package/dist/esm/ic-hero.entry.js.map +1 -1
- package/dist/esm/ic-horizontal-scroll.entry.js +8 -7
- package/dist/esm/ic-horizontal-scroll.entry.js.map +1 -1
- package/dist/esm/ic-input-component-container_3.entry.js +12 -11
- package/dist/esm/ic-input-component-container_3.entry.js.map +1 -1
- package/dist/esm/ic-input-label_2.entry.js +23 -9
- package/dist/esm/ic-input-label_2.entry.js.map +1 -1
- package/dist/esm/ic-layout-grid-item.entry.js +2 -2
- package/dist/esm/ic-layout-grid.entry.js +2 -2
- package/dist/esm/ic-link.entry.js +3 -2
- package/dist/esm/ic-link.entry.js.map +1 -1
- package/dist/esm/ic-menu-group.entry.js +3 -2
- package/dist/esm/ic-menu-group.entry.js.map +1 -1
- package/dist/esm/ic-menu-item.entry.js +2 -1
- package/dist/esm/ic-menu-item.entry.js.map +1 -1
- package/dist/esm/ic-navigation-button.entry.js +2 -1
- package/dist/esm/ic-navigation-button.entry.js.map +1 -1
- package/dist/esm/ic-navigation-group.entry.js +3 -2
- package/dist/esm/ic-navigation-group.entry.js.map +1 -1
- package/dist/esm/ic-navigation-item.entry.js +2 -1
- package/dist/esm/ic-navigation-item.entry.js.map +1 -1
- package/dist/esm/ic-navigation-menu.entry.js +6 -5
- package/dist/esm/ic-navigation-menu.entry.js.map +1 -1
- package/dist/esm/ic-page-header.entry.js +8 -7
- package/dist/esm/ic-page-header.entry.js.map +1 -1
- package/dist/esm/ic-pagination-item.entry.js +3 -2
- package/dist/esm/ic-pagination-item.entry.js.map +1 -1
- package/dist/esm/ic-pagination.entry.js +6 -5
- package/dist/esm/ic-pagination.entry.js.map +1 -1
- package/dist/esm/ic-popover-menu.entry.js +6 -5
- package/dist/esm/ic-popover-menu.entry.js.map +1 -1
- package/dist/esm/ic-radio-group.entry.js +6 -5
- package/dist/esm/ic-radio-group.entry.js.map +1 -1
- package/dist/esm/ic-radio-option.entry.js +6 -5
- package/dist/esm/ic-radio-option.entry.js.map +1 -1
- package/dist/esm/ic-search-bar.entry.js +11 -10
- package/dist/esm/ic-search-bar.entry.js.map +1 -1
- package/dist/esm/ic-section-container.entry.js +2 -2
- package/dist/esm/ic-select.entry.js +12 -10
- package/dist/esm/ic-select.entry.js.map +1 -1
- package/dist/esm/ic-side-navigation.entry.js +6 -5
- package/dist/esm/ic-side-navigation.entry.js.map +1 -1
- package/dist/esm/ic-skeleton.entry.js +2 -2
- package/dist/esm/ic-skip-link.entry.js +2 -2
- package/dist/esm/ic-status-tag.entry.js +4 -3
- package/dist/esm/ic-status-tag.entry.js.map +1 -1
- package/dist/esm/ic-step.entry.js +15 -14
- package/dist/esm/ic-step.entry.js.map +1 -1
- package/dist/esm/ic-stepper.entry.js +4 -3
- package/dist/esm/ic-stepper.entry.js.map +1 -1
- package/dist/esm/ic-switch.entry.js +6 -5
- package/dist/esm/ic-switch.entry.js.map +1 -1
- package/dist/esm/ic-tab-context.entry.js +10 -2
- package/dist/esm/ic-tab-context.entry.js.map +1 -1
- package/dist/esm/ic-tab-group.entry.js +4 -3
- package/dist/esm/ic-tab-group.entry.js.map +1 -1
- package/dist/esm/ic-tab-panel.entry.js +2 -2
- package/dist/esm/ic-tab.entry.js +2 -1
- package/dist/esm/ic-tab.entry.js.map +1 -1
- package/dist/esm/ic-text-field.entry.js +30 -21
- package/dist/esm/ic-text-field.entry.js.map +1 -1
- package/dist/esm/ic-theme.entry.js +3 -2
- package/dist/esm/ic-theme.entry.js.map +1 -1
- package/dist/esm/ic-toast-region.entry.js +1 -1
- package/dist/esm/ic-toast.entry.js +5 -4
- package/dist/esm/ic-toast.entry.js.map +1 -1
- package/dist/esm/ic-toggle-button-group.entry.js +4 -3
- package/dist/esm/ic-toggle-button-group.entry.js.map +1 -1
- package/dist/esm/ic-toggle-button.entry.js +4 -3
- package/dist/esm/ic-toggle-button.entry.js.map +1 -1
- package/dist/esm/ic-top-navigation.entry.js +2 -1
- package/dist/esm/ic-top-navigation.entry.js.map +1 -1
- package/dist/esm/ic-typography.entry.js +4 -3
- package/dist/esm/ic-typography.entry.js.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/types/components/ic-button/ic-button.d.ts +1 -0
- package/dist/types/components/ic-dialog/ic-dialog.d.ts +1 -0
- package/dist/types/components/ic-input-validation/ic-input-validation.d.ts +2 -0
- package/dist/types/components/ic-input-validation/ic-input-validation.types.d.ts +1 -1
- package/dist/types/components/ic-select/test/a11y/ic-select.test.a11y.d.ts +1 -0
- package/dist/types/components/ic-tab-context/ic-tab-context.d.ts +4 -0
- package/dist/types/components/ic-text-field/ic-text-field.d.ts +6 -1
- package/dist/types/components.d.ts +14 -2
- package/dist/types/index.d.ts +1 -0
- package/dist/types/utils/types.d.ts +1 -0
- package/hydrate/index.js +244 -204
- package/hydrate/index.mjs +244 -204
- package/package.json +3 -3
- package/vscode-data.json +21 -0
- package/dist/cjs/helpers-a0e78e2e.js.map +0 -1
- package/dist/core/p-0d680d19.entry.js +0 -2
- package/dist/core/p-15dbccc2.entry.js +0 -2
- package/dist/core/p-19cf2327.entry.js +0 -2
- package/dist/core/p-1d37ac1c.entry.js +0 -2
- package/dist/core/p-1e2f40b0.entry.js +0 -2
- package/dist/core/p-21cf2beb.entry.js +0 -2
- package/dist/core/p-25007ec9.js +0 -2
- package/dist/core/p-25007ec9.js.map +0 -1
- package/dist/core/p-28efe829.entry.js +0 -2
- package/dist/core/p-28efe829.entry.js.map +0 -1
- package/dist/core/p-2f4f392f.entry.js +0 -2
- package/dist/core/p-313a8a2f.entry.js +0 -2
- package/dist/core/p-317e005f.entry.js +0 -2
- package/dist/core/p-3dc54847.entry.js +0 -2
- package/dist/core/p-3e5d7a3d.entry.js +0 -2
- package/dist/core/p-41ef74a7.entry.js +0 -2
- package/dist/core/p-41f92698.entry.js +0 -2
- package/dist/core/p-43324339.entry.js +0 -2
- package/dist/core/p-45dd12ee.entry.js.map +0 -1
- package/dist/core/p-493eaabb.entry.js +0 -2
- package/dist/core/p-4ca782eb.entry.js +0 -2
- package/dist/core/p-4d1a3036.entry.js +0 -2
- package/dist/core/p-52748d5c.entry.js +0 -2
- package/dist/core/p-595a4d06.entry.js +0 -2
- package/dist/core/p-5daa7915.entry.js +0 -2
- package/dist/core/p-5f68f62b.entry.js +0 -2
- package/dist/core/p-5f68f62b.entry.js.map +0 -1
- package/dist/core/p-6014ab64.entry.js +0 -2
- package/dist/core/p-661ae402.entry.js +0 -2
- package/dist/core/p-6a576a8b.entry.js +0 -2
- package/dist/core/p-6ed0ac48.entry.js +0 -2
- package/dist/core/p-711bfeed.entry.js +0 -2
- package/dist/core/p-72a9909c.entry.js +0 -2
- package/dist/core/p-742a9181.entry.js +0 -2
- package/dist/core/p-742a9181.entry.js.map +0 -1
- package/dist/core/p-7cd4f6a6.entry.js +0 -2
- package/dist/core/p-8a4b12e4.entry.js +0 -2
- package/dist/core/p-9323c234.entry.js +0 -2
- package/dist/core/p-948f89a0.entry.js +0 -2
- package/dist/core/p-948f89a0.entry.js.map +0 -1
- package/dist/core/p-97b93ddf.entry.js +0 -2
- package/dist/core/p-97b93ddf.entry.js.map +0 -1
- package/dist/core/p-9c013333.entry.js +0 -2
- package/dist/core/p-9eeb5e85.entry.js +0 -2
- package/dist/core/p-9f36791b.entry.js +0 -2
- package/dist/core/p-a602a8e1.entry.js +0 -2
- package/dist/core/p-a77364f5.entry.js +0 -2
- package/dist/core/p-af9c391d.entry.js +0 -2
- package/dist/core/p-b0d488d0.entry.js +0 -2
- package/dist/core/p-b25d33d8.entry.js +0 -2
- package/dist/core/p-b25d33d8.entry.js.map +0 -1
- package/dist/core/p-b52000d9.entry.js +0 -2
- package/dist/core/p-cbe0d1bb.entry.js +0 -2
- package/dist/core/p-ceea1712.entry.js +0 -2
- package/dist/core/p-ceea1712.entry.js.map +0 -1
- package/dist/core/p-cf631191.entry.js +0 -2
- package/dist/core/p-e652ab09.entry.js +0 -2
- package/dist/core/p-e652ab09.entry.js.map +0 -1
- package/dist/core/p-e876e47c.entry.js +0 -2
- package/dist/core/p-e876e47c.entry.js.map +0 -1
- package/dist/core/p-ea778379.entry.js +0 -2
- package/dist/core/p-ef4b5469.entry.js +0 -2
- package/dist/core/p-f309d3af.entry.js +0 -2
- package/dist/core/p-f6a02202.entry.js +0 -2
- package/dist/core/p-fc3b1155.entry.js +0 -2
- package/dist/esm/helpers-56631aa0.js.map +0 -1
- /package/dist/core/{p-287e5c17.entry.js.map → p-37d217b5.entry.js.map} +0 -0
- /package/dist/core/{p-df88ff5b.entry.js.map → p-37daa8fe.entry.js.map} +0 -0
- /package/dist/core/{p-ffac41d6.entry.js.map → p-492fcb51.entry.js.map} +0 -0
- /package/dist/core/{p-6e8ef73c.entry.js.map → p-57721431.entry.js.map} +0 -0
- /package/dist/core/{p-5fbc8e62.entry.js.map → p-5fcfcfb6.entry.js.map} +0 -0
- /package/dist/core/{p-ea061ccf.entry.js.map → p-9a8bcb78.entry.js.map} +0 -0
- /package/dist/core/{p-8b5022bc.entry.js.map → p-9cf6ccfd.entry.js.map} +0 -0
- /package/dist/core/{p-999f0a5d.entry.js.map → p-b4a2f6fa.entry.js.map} +0 -0
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["icInputComponentContainerCss","IcInputComponentContainerStyle0","InputComponentContainer","constructor","hostRef","this","disabled","fullWidth","multiLine","readonly","size","validationInline","validationStatus","watchDisabledHandler","removeDisabledFalse","el","componentWillLoad","componentDidLoad","hostMutationObserver","MutationObserver","mutationList","renderDynamicChildSlots","observe","childList","render","h","Host","key","class","slotHasContent","name","IcInformationStatus","Success","innerHTML","successIcon","icInputContainerCss","IcInputContainerStyle0","InputContainer","icMenuCss","IcMenuStyle0","Menu","ACTIVE_DESCENDANT","CLEAR_BUTTON_ID","SEARCH_BAR_TAG","disabledOptionSelected","hasPreviouslyBlurred","hasTimedOut","isLoading","lastOptionSelected","lastOptionFocused","multiOptionClicked","preventClickOpen","preventMenuFocus","shiftPressed","ungroupedOptions","focusFromSearchKeypress","initialOptionsListRender","keyboardNav","preventIncorrectTabOrder","popperProps","activationType","autofocusOnSelected","closeOnSelect","labelField","multiSelect","searchableSelect","searchBar","searchMode","selectOnEnter","valueField","handleClearListener","optionHighlighted","handleSubmitSearch","highlightedOptionIndex","options","findIndex","option","setInputValue","handleMenuChange","open","focusInput","menuStateChange","emit","_a","inputEl","focus","undefined","setNextOptionValue","selectedOptionIndex","menuOptionSelect","value","optionId","getOptionId","setPreviousOptionValue","length","arrowBehaviour","event","preventDefault","getMenuOptions","setHighlightedOption","highlightedIndex","menuOptions","timedOut","autoSetInputValueKeyboardOpen","target","id","selectHighlightedOption","isOpen","isOptionSelected","index","includes","deselectSelectedOptions","optionsToKeepSelected","selectedOptionIndexes","map","forEach","manualSetInputValueKeyboardOpen","isKeyboardCombination","shiftKey","metaKey","ctrlKey","getOptionHighlightedIndex","clickedMultiOptionIndex","Array","from","host","querySelectorAll","handleOptionSelect","handleSingleShiftSelect","menuOptionId","startOptionIndex","handleMultipleShiftSelect","endOptionIndex","stopImmediatePropagation","isMacDevice","emitSelectAllEvents","selectAllButton","focusOnSearchOrSelectInput","parentEl","setFocus","handleOptionClick","label","dataset","handleRetry","retryButtonClicked","handleRetryKeyDown","ev","keyPressed","handleBlur","relatedTarget","menu","removeAttribute","_b","contains","_c","_d","handleMouseDown","handleMenuKeyDown","autoSetValueOnMenuKeyDown","handleMenuKeyUp","handleSelectAllClick","handleSelectAllBlur","classList","remove","handleSelectAllFocus","add","handleSelectAllMouseDown","optionToSelectIndex","lastOptionInSelection","useFocusForSelection","firstOptionSelected","firstOptionInSelection","getFirstOptionInSelection","optionsToSelect","i","push","optionIndex","menuOptionSelectAll","select","icClear","emitMenuKeyPress","isNavKey","menuKeyPress","cancelBubble","isSearchableSelect","tagName","menuId","getOptionAriaLabel","parentOption","ariaLabel","description","element","getSortedOptions","sorted","sort","optionA","optionB","recommended","isManualMode","scrollToSelected","selectedOption","querySelector","elTop","offsetTop","offsetHeight","scrollTop","setAttribute","loadUngroupedOptions","children","ungroupedOptionsSet","setMenuScrollbar","optionsHeight","clientHeight","handleTimeoutBlur","timeoutBlur","optionContent","selected","showCheckIcon","Fragment","loading","icon","variant","component","Check","displayOption","timeout","role","tabindex","onClick","onBlur","onMouseDown","xmlns","viewBox","fill","d","onKeyDown","watchOpenHandler","popperInstance","destroy","watchOptionsHandler","newOptions","some","opt","connectedCallback","disconnectedCallback","removeEventListener","addEventListener","disableAutoFiltering","onComponentRequiredPropUndefined","prop","propName","inputLabel","componentDidUpdate","inputValueInOptions","highlightedEl","componentDidRender","anchorEl","initPopperJs","handleClickOpen","handleKeyboardOpen","handleSetFirstOption","anchor","createPopper","Object","assign","placement","modifiers","offset","fallbackPlacements","rootBoundary","setExternalPopperProps","props","selectAllButtonText","hasNoResults","ref","onKeyUp","childOption","getOptionsWithoutGroupTitlesCount","onFocus"],"sources":["src/components/ic-input-component-container/ic-input-component-container.css?tag=ic-input-component-container","src/components/ic-input-component-container/ic-input-component-container.tsx","src/components/ic-input-container/ic-input-container.css?tag=ic-input-container","src/components/ic-input-container/ic-input-container.tsx","src/components/ic-menu/ic-menu.css?tag=ic-menu&encapsulation=scoped","src/components/ic-menu/ic-menu.tsx"],"sourcesContent":["ic-input-component-container {\n /**\n * @prop --border-color: Border colour of the input component container\n * @prop --border-color-hover: Border colour of the input component container on hover\n * @prop --border-color-pressed: Border colour of the input component container when pressed\n * @prop --border-color-disabled: Border colour of the input component container when disabled\n * @prop --border-color-error: Border colour of the error variant for input component container\n * @prop --border-color-error-hover: Border colour of the error hover variant for input component container\n * @prop --border-color-error-pressed: Border colour of the error pressed variant for input component container\n * @prop --border-color-warning: Border colour of the warning variant for input component container\n * @prop --border-color-warning-hover: Border colour of the warning hover variant for input component container\n * @prop --border-color-warning-pressed: Border colour of the warning pressed variant for input component container\n * @prop --border-color-success: Border colour of the success variant for input component container\n * @prop --border-color-success-hover: Border colour of the success hover variant for input component container\n * @prop --border-color-success-pressed: Border colour of the success pressed variant for input component container\n */\n\n display: flex;\n border: var(--ic-border-width) solid\n var(--border-color, var(--ic-architectural-400));\n border-radius: var(--ic-border-radius);\n transition: var(--ic-easing-transition-slow);\n height: 2.5rem;\n min-height: 2.5rem;\n width: var(--input-width, 20rem);\n padding: var(--ic-space-1px);\n background-color: var(--input-bg-color, var(--ic-color-background-primary));\n box-sizing: border-box;\n fill: var(--ic-architectural-400);\n outline: none;\n}\n\nic-input-component-container.ic-input-component-container-full-width {\n width: 100%;\n}\n\nic-input-component-container.ic-input-component-container-disabled,\nic-input-component-container.ic-input-component-container-disabled:hover {\n border: var(--ic-border-width) dashed\n var(--border-color-disabled, var(--ic-color-border-neutral-disabled));\n}\n\nic-input-component-container.ic-input-component-container-readonly,\nic-input-component-container.ic-input-component-container-small.ic-input-component-container-readonly,\nic-input-component-container.ic-input-component-container-large.ic-input-component-container-readonly {\n height: auto;\n background: transparent;\n}\n\nic-input-component-container.ic-input-component-container-readonly,\nic-input-component-container.ic-input-component-container-readonly:hover {\n border: none;\n padding: 0;\n}\n\nic-input-component-container.ic-input-component-container-error {\n border: var(--ic-space-xxxs) solid\n var(--border-color-error, var(--ic-color-border-error));\n padding: 0;\n}\n\nic-input-component-container.ic-input-component-container-error:hover {\n border: var(--ic-space-xxxs) solid\n var(--border-color-error-hover, var(--ic-color-border-error-hover));\n}\n\nic-input-component-container.ic-input-component-container-error:focus-within {\n border: var(--ic-space-xxxs) solid\n var(--border-color-error-pressed, var(--ic-color-border-error-pressed));\n}\n\nic-input-component-container.ic-input-component-container-warning {\n border: var(--ic-space-xxxs) solid\n var(--border-color-warning, var(--ic-color-border-warning));\n padding: 0;\n}\n\nic-input-component-container.ic-input-component-container-warning:hover {\n border: var(--ic-space-xxxs) solid\n var(--border-color-warning-hover, var(--ic-color-border-warning-hover));\n}\n\nic-input-component-container.ic-input-component-container-warning:focus-within {\n border: var(--ic-space-xxxs) solid\n var(--border-color-warning-pressed, var(--ic-color-border-warning-pressed));\n}\n\nic-input-component-container.ic-input-component-container-success {\n border: var(--ic-space-xxxs) solid\n var(--border-color-success, var(--ic-color-border-success));\n padding: 0;\n}\n\nic-input-component-container.ic-input-component-container-success:hover {\n border: var(--ic-space-xxxs) solid\n var(--border-color-success-hover, var(--ic-color-border-success-hover));\n}\n\nic-input-component-container.ic-input-component-container-success:focus-within {\n border: var(--ic-space-xxxs) solid\n var(--border-color-success-pressed, var(--ic-color-border-success-pressed));\n}\n\nic-input-component-container.ic-input-component-container-small {\n height: var(--ic-space-xl);\n min-height: var(--ic-space-xl);\n}\n\nic-input-component-container.ic-input-component-container-large {\n height: var(--ic-space-xxl);\n min-height: var(--ic-space-xxl);\n}\n\nic-input-component-container.ic-input-component-container-multiline {\n height: auto;\n}\n\nic-input-component-container .icon-container {\n margin-top: var(--ic-space-xxs);\n margin-left: 0.438rem;\n display: flex;\n align-items: center;\n}\n\nic-input-component-container.ic-input-component-container-multiline\n .icon-container,\nic-input-component-container.ic-input-component-container-multiline.ic-input-component-container-small\n .icon-container {\n margin-top: 0.375rem;\n display: block;\n}\n\nic-input-component-container.ic-input-component-container-readonly\n .icon-container {\n margin-left: -0.313rem;\n}\n\nic-input-component-container.ic-input-component-container-disabled\n ::placeholder {\n display: none;\n}\n\nic-input-component-container .inline-success {\n margin: var(--ic-space-xs) 0.375rem;\n display: flex;\n align-items: center;\n}\n\nic-input-component-container .inline-success > svg {\n fill: var(--ic-input-component-container-success-icon-inline-color);\n height: 1.25rem;\n width: 1.25rem;\n}\n\nic-input-component-container:hover {\n border: var(--ic-input-component-container-hover-border);\n border-color: var(--border-color-hover, var(--ic-color-border-neutral-hover));\n color: var(--ic-action-monochrome-hover-dark);\n}\n\nic-input-component-container:focus {\n border: var(--ic-border-pressed);\n border-color: var(\n --border-color-pressed,\n var(--ic-color-border-neutral-pressed)\n );\n}\n\n.focus-indicator {\n display: flex;\n width: 100%;\n margin: -0.125rem;\n padding: 0.125rem;\n border-radius: var(--ic-border-radius);\n transition: var(--ic-easing-transition-fast);\n}\n\n.focus-indicator:focus-within,\n.focus-indicator-enabled {\n box-shadow: var(--ic-border-focus);\n}\n\n.focus-indicator.ic-input-component-container-dark:focus-within {\n box-shadow: var(--ic-border-focus);\n}\n\n@media (forced-colors: active) {\n /* Styles here only apply to Forced Colors Mode */\n ic-input-component-container,\n .focus-indicator {\n transition: none;\n }\n\n ic-input-component-container:focus-within {\n border: var(--ic-border-width) solid Highlight;\n outline: 0.125rem solid Highlight;\n }\n\n ic-input-component-container.ic-input-component-container-disabled,\n ic-input-component-container.ic-input-component-container-disabled:hover {\n border: var(--ic-border-width) dashed GrayText;\n }\n}\n","import { Component, Element, Host, Prop, Watch, h } from \"@stencil/core\";\n\nimport {\n IcInformationStatus,\n IcInformationStatusOrEmpty,\n IcSizes,\n} from \"../../utils/types\";\nimport successIcon from \"../../assets/success-icon.svg\";\nimport {\n removeDisabledFalse,\n renderDynamicChildSlots,\n slotHasContent,\n} from \"../../utils/helpers\";\n\n/**\n * @slot left-icon - Content will be placed to the left of the input.\n */\n@Component({\n tag: \"ic-input-component-container\",\n styleUrl: \"ic-input-component-container.css\",\n})\nexport class InputComponentContainer {\n private hostMutationObserver: MutationObserver;\n @Element() el: HTMLIcInputComponentContainerElement;\n\n /**\n * If `true`, the disabled state will be set.\n */\n @Prop() disabled?: boolean = false;\n @Watch(\"disabled\")\n watchDisabledHandler(): void {\n removeDisabledFalse(this.disabled, this.el);\n }\n\n /**\n * If `true`, the input component container will fill the width of the container it is in.\n */\n @Prop() fullWidth?: boolean = false;\n\n /**\n * If `true`, the input component container will allow for multiple lines.\n */\n @Prop() multiLine?: boolean = false;\n\n /**\n * If `true`, the readonly state will be set.\n */\n @Prop() readonly?: boolean = false;\n\n /**\n * The size of the input component container component.\n */\n @Prop() size?: IcSizes = \"medium\";\n\n /**\n * If `true`, the validation will display inline.\n */\n @Prop() validationInline?: boolean = false;\n\n /**\n * The validation status of the input component container - e.g. 'error' | 'warning' | 'success'.\n */\n @Prop() validationStatus?: IcInformationStatusOrEmpty = \"\";\n\n componentWillLoad(): void {\n removeDisabledFalse(this.disabled, this.el);\n }\n\n componentDidLoad(): void {\n this.hostMutationObserver = new MutationObserver((mutationList) =>\n renderDynamicChildSlots(mutationList, \"left-icon\", this)\n );\n this.hostMutationObserver.observe(this.el, { childList: true });\n }\n\n render() {\n const {\n size,\n validationStatus,\n disabled,\n readonly,\n multiLine,\n fullWidth,\n validationInline,\n } = this;\n\n return (\n <Host\n class={{\n [`ic-input-component-container-${size}`]: true,\n [`ic-input-component-container-${validationStatus}`]:\n validationStatus !== \"\" && !disabled && !readonly,\n \"ic-input-component-container-disabled\": !!disabled,\n \"ic-input-component-container-readonly\": !!readonly,\n \"ic-input-component-container-multiline\": !!multiLine,\n \"ic-input-component-container-full-width\": !!fullWidth,\n }}\n aria-disabled={disabled ? \"true\" : null}\n >\n <div class=\"focus-indicator\">\n {slotHasContent(this.el, \"left-icon\") && (\n <div class=\"icon-container\">\n <slot name=\"left-icon\" />\n </div>\n )}\n <slot></slot>\n\n {validationInline &&\n validationStatus === IcInformationStatus.Success && (\n <span class=\"inline-success\" innerHTML={successIcon} />\n )}\n </div>\n </Host>\n );\n }\n}\n","ic-input-container .component-container {\n display: flex;\n flex-direction: column;\n}\n","import { Component, Host, Prop, h } from \"@stencil/core\";\n\n@Component({\n tag: \"ic-input-container\",\n styleUrl: \"ic-input-container.css\",\n})\nexport class InputContainer {\n /**\n * If `true`, the disabled state will be set.\n */\n @Prop() disabled?: boolean = false;\n\n /**\n * If `true`, the readonly state will be set.\n */\n @Prop() readonly?: boolean = false;\n\n render() {\n return (\n <Host>\n <div\n class={{\n [\"component-container\"]: true,\n [\"disabled\"]: !!this.disabled,\n [\"readonly\"]: !!this.readonly,\n }}\n >\n <slot></slot>\n </div>\n </Host>\n );\n }\n}\n","@import \"../../global/normalize.css\";\n\n/**\n * @prop --ic-z-index-menu: z-index of menu\n */\n\n@media (prefers-reduced-motion: no-preference) {\n :host(.ic-menu-open) .menu {\n transition: max-height var(--ic-transition-duration-slow);\n }\n}\n\n:host {\n max-height: 0;\n width: var(--menu-width, var(--input-width, 20rem));\n color: var(--menu-item-text-color, var(--ic-menu-list-option-text-color));\n\n --ic-typography-color: var(\n --menu-item-text-color,\n var(--ic-menu-list-option-text-color)\n );\n\n background-color: var(\n --menu-bg-color,\n var(--ic-menu-list-option-background-color)\n );\n position: relative;\n z-index: var(--ic-z-index-menu);\n box-sizing: border-box;\n box-shadow: var(--ic-elevation-overlay);\n border-radius: var(--ic-border-radius);\n}\n\n:host(.ic-menu-open:not(.ic-menu-no-focus):focus-within) {\n box-shadow: var(--ic-border-focus);\n outline: var(--ic-hc-focus-outline);\n}\n\n:host(.ic-select-select-all-focused) {\n box-shadow: var(--ic-elevation-overlay) !important;\n}\n\n#retry-button::part(button) {\n height: var(--ic-space-lg);\n}\n\n.small #retry-button::part(button) {\n height: var(--ic-space-md);\n}\n\n:host(.on-dialog) {\n inset: auto !important;\n}\n\n.menu {\n text-decoration: none;\n list-style-type: none;\n border-radius: 1px;\n background-color: var(\n --menu-bg-color,\n var(--ic-menu-list-option-background-color)\n );\n visibility: hidden;\n max-height: 0;\n overflow-y: hidden;\n}\n\n.menu:has(+ .option-bar) {\n border-radius: 0 0 1px 1px;\n}\n\n.menu-scroll {\n overflow-y: auto;\n}\n\n.menu:focus-visible {\n outline: none;\n}\n\n:host(.ic-menu-open) {\n max-height: none;\n display: flex;\n flex-direction: column-reverse;\n border: var(--ic-border-width) solid\n var(--menu-border-color, var(--ic-menu-border-color));\n transition: box-shadow var(--ic-easing-transition-fast);\n}\n\n:host(.ic-menu-open) .menu {\n visibility: visible;\n max-height: calc(var(--ic-space-xl) * 10 + var(--ic-space-xxxs));\n}\n\n:host(.ic-menu-open) .option-bar {\n visibility: visible;\n}\n\n:host(.ic-menu-open) .select-all-button {\n display: block;\n}\n\n:host(.ic-menu-full-width) {\n width: 100%;\n}\n\n.option {\n padding: var(--ic-space-xs) calc(var(--ic-space-xs) - var(--ic-space-1px));\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: var(--ic-space-xs);\n}\n\n.loading-option p {\n margin-bottom: 0 !important;\n}\n\n.option:not(.loading-option) {\n justify-content: space-between;\n}\n\n:host(.ic-menu-small) .option {\n padding: var(--ic-space-xxs) calc(var(--ic-space-xs) - var(--ic-space-1px));\n}\n\n:host(.ic-menu-large) .option {\n padding: var(--ic-space-sm) calc(var(--ic-space-xs) - var(--ic-space-1px));\n}\n\n.option:last-child {\n border-radius: 0 0 1px 1px;\n}\n\n:not(.menu:has(+ .option-bar)) .option:first-child {\n border-radius: 1px 1px 0 0;\n}\n\n.option:not(.disabled-option):hover {\n background-color: var(--ic-menu-list-option-hover-background-color);\n}\n\n.option:not(.disabled-option):active {\n background-color: var(--ic-menu-list-option-pressed-background-color);\n}\n\n.option:focus-visible {\n outline: var(--ic-hc-focus-outline);\n}\n\n.option:not(.disabled-option) .option-description {\n --ic-typography-color: var(\n --menu-item-desc-text-color,\n var(--ic-menu-list-option-description-text-color)\n );\n}\n\n.option .option-label {\n display: flex;\n flex-direction: row;\n align-items: top;\n}\n\n.option .option-label ic-typography {\n max-width: 100%;\n word-wrap: break-word;\n}\n\n.option .option-element {\n margin-top: var(--ic-space-xxs);\n}\n\n.option .option-icon {\n height: var(--ic-space-md);\n width: var(--ic-space-md);\n margin-top: var(--ic-space-xxs);\n margin-right: var(--ic-space-xxxs);\n}\n\n.option-text-container {\n pointer-events: none;\n width: 100%;\n}\n\n.option-text-container.show-check-icon {\n flex-grow: 1;\n}\n\n.option.loading-option .option-text-container {\n margin-left: calc(var(--ic-space-xs) + var(--ic-space-xxxs));\n color: var(--ic-menu-loading-list-option-text-color);\n\n --ic-typography-color: var(--ic-menu-loading-list-option-text-color);\n}\n\n.error-icon-svg {\n height: var(--ic-space-md);\n width: var(--ic-space-md);\n fill: var(--ic-atoms-status-icon-error);\n align-self: center;\n display: flex;\n margin-right: calc(var(--ic-space-xxs) * 1.2);\n}\n\n.loading-error-info {\n display: flex;\n}\n\n.check-icon {\n height: var(--ic-space-lg);\n min-width: var(--ic-space-lg);\n width: var(--ic-space-lg);\n pointer-events: none;\n}\n\n.focused-option .check-icon * {\n fill: currentcolor;\n}\n\n.option-group-title {\n padding: var(--ic-space-lg) calc(var(--ic-space-xs) - var(--ic-space-1px))\n var(--ic-space-xs);\n\n --ic-typography-color: var(--ic-menu-option-group-label-text-color);\n}\n\n:host(.ic-menu-small) .option-group-title {\n padding: var(--ic-space-sm) calc(var(--ic-space-xs) - var(--ic-space-1px))\n var(--ic-space-xxs);\n}\n\n.last-recommended-option {\n border-bottom: var(--ic-menu-last-recommended-option-border);\n}\n\n.disabled-option {\n color: var(--ic-atoms-list-option-text-disabled-light);\n\n --ic-typography-color: var(--ic-atoms-list-option-text-disabled-light);\n\n cursor: default;\n pointer-events: none;\n}\n\n.focused-option,\n.focused-option .option-description {\n background-color: var(--ic-color-focus-inner) !important;\n color: var(--ic-atoms-list-option-text-focused-light) !important;\n\n --ic-typography-color: var(\n --ic-atoms-list-option-text-focused-light\n ) !important;\n}\n\n:host(.no-results) li {\n cursor: no-drop;\n}\n\n:host(.no-results) li:hover {\n background-color: transparent;\n}\n\n.option-bar {\n padding: var(--ic-space-xxs) var(--ic-space-xs);\n display: flex;\n align-items: center;\n justify-content: space-between;\n background-color: var(--ic-menu-option-bar-background-color);\n visibility: hidden;\n border-bottom: var(--ic-border-width) solid\n var(--ic-menu-option-bar-divider-color);\n border-radius: 1px 1px 0 0;\n}\n\n.option-bar p {\n margin-bottom: 0 !important;\n}\n\n:host(.ic-menu-large) .option-bar {\n padding: var(--ic-space-xs);\n}\n\n.select-all-button {\n display: none;\n}\n\n.select-all-button:focus {\n z-index: calc(var(--ic-z-index-menu) + 1);\n}\n\n@media (forced-colors: active) {\n .focused-option:focus {\n outline: none;\n border: 0.125rem solid transparent;\n }\n\n .disabled-option {\n color: GrayText;\n\n --ic-typography-color: GrayText;\n }\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Prop,\n Method,\n State,\n Watch,\n Fragment,\n} from \"@stencil/core\";\nimport {\n createPopper,\n Instance as PopperInstance,\n Options,\n} from \"@popperjs/core\";\n\nimport {\n IcActivationTypes,\n IcMenuOption,\n IcSizes,\n IcMultiValueEventDetail,\n} from \"../../utils/types\";\nimport Check from \"../../assets/check-icon.svg\";\nimport {\n getOptionsWithoutGroupTitlesCount,\n isMacDevice,\n onComponentRequiredPropUndefined,\n} from \"../../utils/helpers\";\nimport {\n IcOptionSelectEventDetail,\n IcMenuChangeEventDetail,\n IcMenuOptionIdEventDetail,\n} from \"./ic-menu.types\";\nimport { IcSearchBarSearchModes } from \"../ic-search-bar/ic-search-bar.types\";\n\n@Component({\n tag: \"ic-menu\",\n styleUrl: \"ic-menu.css\",\n scoped: true,\n})\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport class Menu {\n private ACTIVE_DESCENDANT = \"aria-activedescendant\";\n private CLEAR_BUTTON_ID = \"clear-button\";\n private SEARCH_BAR_TAG = \"IC-SEARCH-BAR\";\n private disabledOptionSelected = false;\n private hasPreviouslyBlurred = false;\n private hasTimedOut = false;\n private isLoading = false;\n private lastOptionSelected: number | null = null; // Index of last option selected\n private lastOptionFocused: number | null = null; // Index of last option focused\n private menu?: HTMLUListElement;\n private multiOptionClicked: string | null = null;\n private popperInstance: PopperInstance | null;\n private preventClickOpen = false; // Prevents menu re-opening immediately after it is closed on blur when clicking input.\n private preventMenuFocus = false; // (When multiple) ensures focus moves straight to select all button from menu.\n private selectAllButton?: HTMLIcButtonElement;\n private shiftPressed = false;\n private ungroupedOptions: IcMenuOption[] = [];\n\n @Element() host: HTMLIcMenuElement;\n\n @State() focusFromSearchKeypress = false;\n @State() initialOptionsListRender = false;\n @State() keyboardNav = false;\n @State() optionHighlighted?: string;\n @State() preventIncorrectTabOrder = false;\n @State() menuOptions: IcMenuOption[];\n @State() popperProps: Partial<Options> = {};\n\n /**\n * Determines whether options manually set as values (by pressing 'Enter') when they receive focus using keyboard navigation.\n */\n @Prop() activationType: IcActivationTypes = \"automatic\";\n\n /**\n * The reference to an anchor element the menu will position itself from when rendered.\n */\n @Prop() anchorEl?: HTMLElement;\n\n /**\n * @internal If `true`, autofocus will be applied on selected item when menu is open.\n */\n @Prop() autofocusOnSelected = true;\n\n /**\n * If `true`, the menu will close when an option is selected.\n */\n @Prop() closeOnSelect = true;\n\n /**\n * If `true`, the menu will fill the width of the container.\n */\n @Prop() fullWidth = false;\n\n /**\n * The reference to the input element.\n */\n @Prop() inputEl?: HTMLElement;\n\n /**\n * The label for the input element.\n */\n @Prop() inputLabel!: string;\n\n /**\n * The custom name for the label field for IcMenuOption.\n */\n @Prop() labelField = \"label\";\n\n /**\n * The ID of the menu.\n */\n @Prop() menuId!: string;\n\n /**\n * @internal - flag to specify if menu is in a ic-select multiple.\n */\n @Prop() multiSelect = false;\n\n /**\n * If `true`, the menu will be displayed open.\n */\n @Prop({ reflect: true }) open!: boolean;\n @Watch(\"open\")\n watchOpenHandler(): void {\n if (!this.open && this.popperInstance) {\n this.popperInstance.destroy();\n this.popperInstance = null;\n }\n }\n\n /**\n * @internal - The parent element if ic-menu is nested inside another component.\n */\n @Prop() parentEl?: HTMLElement;\n\n /**\n * @internal - flag to specify if menu is in a searchable ic-select.\n */\n @Prop() searchableSelect = false;\n\n /**\n * @internal - flag to specify if menu is in a ic-search-bar.\n */\n @Prop() searchBar = false;\n\n /**\n * Specify the mode search bar uses to search. `navigation` allows for quick lookups of a set of values, `query` allows for more general searches.\n */\n @Prop() searchMode: IcSearchBarSearchModes = \"navigation\";\n\n /**\n * @internal If `true`, the icOptionSelect event will be fired on enter instead of ArrowUp and ArrowDown.\n */\n @Prop() selectOnEnter: boolean = false;\n\n /**\n * The size of the menu.\n */\n @Prop() size: IcSizes = \"medium\";\n\n /**\n * The possible menu selection options.\n */\n @Prop() options!: IcMenuOption[];\n @Watch(\"options\")\n watchOptionsHandler(newOptions: IcMenuOption[]): void {\n this.hasTimedOut = newOptions.some((opt) => opt.timedOut);\n this.isLoading = newOptions.some((opt) => opt.loading);\n this.ungroupedOptions = [];\n this.loadUngroupedOptions();\n }\n\n /**\n * The value of the currently selected option - or array of values (if multiple options allowed).\n */\n @Prop() value!: string | string[];\n\n /**\n * The custom name for the value field for IcMenuOption.\n */\n @Prop() valueField = \"value\";\n\n /**\n * Emitted when the clear all button is clicked.\n */\n @Event() icClear: EventEmitter<void>;\n\n /**\n * @internal Emitted when key is pressed while menu is open.\n */\n @Event() menuKeyPress: EventEmitter<{ isNavKey: boolean; key: string }>;\n\n /**\n * @internal Emitted when an option has been highlighted.\n */\n @Event() menuOptionId: EventEmitter<IcMenuOptionIdEventDetail>;\n\n /**\n * @internal Emitted when an option is selected.\n */\n @Event() menuOptionSelect!: EventEmitter<IcOptionSelectEventDetail>;\n\n /**\n * @internal Emitted when all options are selected or deselected.\n */\n @Event() menuOptionSelectAll!: EventEmitter<{ select: boolean }>;\n\n /**\n * @internal Emitted when state of menu changes (i.e. open or closed).\n */\n @Event() menuStateChange!: EventEmitter<IcMenuChangeEventDetail>;\n\n /**\n * @internal Emitted when the retry button is clicked.\n */\n @Event() retryButtonClicked: EventEmitter<IcMultiValueEventDetail>;\n\n /**\n * @internal Emitted when the timeout menu loses focus.\n */\n @Event() timeoutBlur: EventEmitter<{ ev: FocusEvent }>;\n\n /**\n * @internal Emitted when the ungrouped options have been set.\n */\n @Event() ungroupedOptionsSet: EventEmitter<{ options: IcMenuOption[] }>;\n\n connectedCallback(): void {\n if (this.searchBar) {\n if (this.searchMode === \"navigation\") this.setHighlightedOption(0);\n this.initialOptionsListRender = true;\n }\n }\n\n disconnectedCallback(): void {\n this.popperInstance?.destroy();\n this.parentEl?.removeEventListener(\"icClear\", this.handleClearListener);\n this.parentEl?.removeEventListener(\n \"icSubmitSearch\",\n this.handleSubmitSearch\n );\n }\n\n componentWillLoad(): void {\n this.loadUngroupedOptions();\n this.parentEl?.addEventListener(\"icClear\", this.handleClearListener);\n this.parentEl?.addEventListener(\"icSubmitSearch\", this.handleSubmitSearch);\n this.hasTimedOut = this.options?.some((opt) => opt.timedOut);\n this.isLoading = this.options?.some((opt) => opt.loading);\n }\n\n componentDidLoad(): void {\n if (\n this.searchBar &&\n (this.parentEl as HTMLIcSearchBarElement).disableAutoFiltering\n ) {\n this.focusFromSearchKeypress = true;\n }\n\n onComponentRequiredPropUndefined(\n [\n { prop: this.open, propName: \"open\" },\n { prop: this.options, propName: \"options\" },\n { prop: this.menuId, propName: \"menu-id\" },\n { prop: this.inputLabel, propName: \"input-label\" },\n //NOTE: no check for value, input-el or anchor-el as otherwise get console errors on first load of select component\n ],\n \"Menu\"\n );\n }\n\n componentDidUpdate(): void {\n const inputValueInOptions = this.options.some(\n (option) => option[this.valueField] === this.value\n );\n\n if (\n this.menu &&\n this.open &&\n this.options.length !== 0 &&\n !this.preventMenuFocus\n ) {\n if (\n this.value &&\n this.keyboardNav &&\n inputValueInOptions &&\n this.autofocusOnSelected &&\n !this.searchableSelect\n ) {\n this.scrollToSelected(this.menu);\n } else if (this.selectOnEnter) {\n this.menu.focus();\n } else if (\n !!this.optionHighlighted &&\n !this.focusFromSearchKeypress &&\n !this.preventIncorrectTabOrder\n ) {\n const highlightedEl = this.host.querySelector(\n `li[data-value=\"${this.optionHighlighted}\"]`\n ) as HTMLElement;\n\n if (highlightedEl) {\n this.menu.setAttribute(this.ACTIVE_DESCENDANT, highlightedEl.id);\n highlightedEl.focus();\n }\n } else if (this.inputEl && this.inputEl.tagName !== \"INPUT\") {\n this.menu.focus();\n }\n }\n\n if (this.menu && this.open && !this.value && this.selectOnEnter) {\n this.scrollToSelected(this.menu);\n }\n\n this.preventMenuFocus = false;\n }\n\n componentDidRender(): void {\n if (this.open && !this.popperInstance && this.anchorEl) {\n this.initPopperJs(this.anchorEl);\n }\n\n if (this.open && !!this.options.length) {\n this.setMenuScrollbar();\n }\n }\n\n /**\n * @internal If menu is opened with the mouse, emit menuStateChange custom event.\n */\n @Method()\n async handleClickOpen(): Promise<void> {\n if (!this.preventClickOpen) {\n this.menuStateChange.emit({ open: !this.open });\n this.keyboardNav = false;\n }\n this.preventClickOpen = false;\n }\n\n /**\n * Used alongside activationType\n * If menu is opened via keyboard navigation (i.e. Enter, ArrowUp or ArrowDown), emit optionSelect custom event.\n * @param {KeyboardEvent} event The keyboard event which is available when handleKeyboardOpen is invoked.\n */\n @Method()\n async handleKeyboardOpen(event: KeyboardEvent): Promise<void> {\n if (this.activationType === \"automatic\") {\n this.autoSetInputValueKeyboardOpen(event);\n } else {\n this.manualSetInputValueKeyboardOpen(event);\n }\n }\n\n /**\n * @internal Used to highlight the first option in the menu.\n */\n @Method()\n async handleSetFirstOption(): Promise<void> {\n this.setHighlightedOption(0);\n }\n\n /**\n * @internal Used to initialize popperJS with an anchor element.\n * 5/12/2023: Tested with Floating UI, however, discovered inconsistent\n * boundary behaviour so sticking with PopperJS.\n */\n @Method()\n async initPopperJs(anchor: HTMLElement): Promise<void> {\n // Placements set to \"-start\" to accommodate for custom menu width - menu should always be aligned to the left\n this.popperInstance = createPopper(anchor, this.host, {\n placement: \"bottom-start\",\n modifiers: [\n {\n name: \"offset\",\n options: {\n offset: [0, 7],\n },\n },\n {\n name: \"flip\",\n options: {\n fallbackPlacements: [\"top-start\"],\n rootBoundary: \"viewport\",\n },\n },\n ],\n ...this.popperProps,\n });\n }\n\n /**\n * @internal This method allows props to be added to the PopperJS createPopper instance outside of the menu\n * @param props object - createPopper props set externally\n */\n @Method()\n async setExternalPopperProps<T extends Partial<Options>>(props: T) {\n this.popperProps = props;\n }\n\n private handleClearListener = (): void => {\n this.optionHighlighted = \"\";\n };\n\n private handleSubmitSearch = (): void => {\n const highlightedOptionIndex = this.options.findIndex(\n (option) => option[this.valueField] === this.optionHighlighted\n );\n\n this.setInputValue(highlightedOptionIndex);\n };\n\n private handleMenuChange = (open: boolean, focusInput?: boolean): void => {\n this.menuStateChange.emit({ open, focusInput });\n\n if (!open) {\n if (focusInput !== false) {\n this.inputEl?.focus();\n this.preventClickOpen = false;\n }\n\n // Reset optionHighlighted so previously highlighted option doesn't get reselected when Enter pressed\n if (this.multiSelect) {\n this.optionHighlighted = undefined;\n this.multiOptionClicked = null;\n }\n }\n };\n\n private setNextOptionValue = (selectedOptionIndex: number): void => {\n if (this.ungroupedOptions[selectedOptionIndex + 1]) {\n this.menuOptionSelect.emit({\n value: this.ungroupedOptions[selectedOptionIndex + 1][this.valueField],\n optionId: this.getOptionId(\n this.ungroupedOptions[selectedOptionIndex + 1][this.valueField]\n ),\n });\n } else {\n this.menuOptionSelect.emit({\n value: this.ungroupedOptions[0][this.valueField],\n optionId: this.getOptionId(this.ungroupedOptions[0][this.valueField]),\n });\n }\n };\n\n private setPreviousOptionValue = (selectedOptionIndex: number): void => {\n if (this.ungroupedOptions[selectedOptionIndex - 1]) {\n this.menuOptionSelect.emit({\n value: this.ungroupedOptions[selectedOptionIndex - 1][this.valueField],\n optionId: this.getOptionId(\n this.ungroupedOptions[selectedOptionIndex - 1][this.valueField]\n ),\n });\n } else {\n this.menuOptionSelect.emit({\n value:\n this.ungroupedOptions[this.ungroupedOptions.length - 1][\n this.valueField\n ],\n optionId: this.getOptionId(\n this.ungroupedOptions[this.ungroupedOptions.length - 1][\n this.valueField\n ]\n ),\n });\n }\n };\n\n // Open menu when up or down arrow keys are pressed\n private arrowBehaviour = (event: KeyboardEvent): void => {\n event.preventDefault();\n this.handleMenuChange(true);\n };\n\n private getMenuOptions = () =>\n this.searchBar ? this.options : this.ungroupedOptions;\n\n // Set option that is focused and so should show focus state\n private setHighlightedOption = (highlightedIndex: number): void => {\n const menuOptions = this.getMenuOptions();\n\n menuOptions[highlightedIndex] &&\n !menuOptions[highlightedIndex].timedOut &&\n (this.optionHighlighted =\n menuOptions[highlightedIndex][this.valueField] || undefined);\n };\n\n // Determines keyboard behaviour when selection is automatic\n // (i.e. you don't have to press Enter select an option - just focus on it)\n // and menu is closed\n private autoSetInputValueKeyboardOpen = (event: KeyboardEvent) => {\n const selectedOptionIndex = this.ungroupedOptions.findIndex(\n (option) => option[this.valueField] === this.value\n );\n\n this.keyboardNav = false;\n\n switch (event.key) {\n case \"ArrowDown\":\n this.keyboardNav = true;\n this.arrowBehaviour(event);\n this.setNextOptionValue(selectedOptionIndex);\n break;\n case \"ArrowUp\":\n this.keyboardNav = true;\n this.arrowBehaviour(event);\n this.setPreviousOptionValue(selectedOptionIndex);\n break;\n case \" \":\n case \"Enter\":\n if ((event.target as HTMLElement).id !== this.CLEAR_BUTTON_ID) {\n this.handleMenuChange(true);\n }\n break;\n }\n };\n\n private selectHighlightedOption = (\n options: IcMenuOption[],\n highlightedOptionIndex: number\n ) => {\n if (!this.isLoading && !this.hasTimedOut) {\n this.keyboardNav = true;\n }\n\n const isOpen: boolean =\n this.searchBar || this.searchableSelect || this.open;\n\n if (isOpen) {\n if (highlightedOptionIndex >= 0) {\n if (options[highlightedOptionIndex] !== undefined) {\n if (\n this.searchBar &&\n options[highlightedOptionIndex].disabled === true\n ) {\n this.disabledOptionSelected = true;\n } else {\n this.setInputValue(highlightedOptionIndex);\n }\n }\n } else {\n this.setInputValue(highlightedOptionIndex);\n }\n } else {\n this.handleMenuChange(true);\n }\n };\n\n // Check if option is selected based on the index of the option\n private isOptionSelected = (index: number) => {\n const menuOptions = this.getMenuOptions();\n\n return this.value\n ? this.value.includes(menuOptions[index][this.valueField])\n : false;\n };\n\n // Deselect currently selected options when shift pressed, but keep certain options selected\n private deselectSelectedOptions = (optionsToKeepSelected: number[]) => {\n const menuOptions = this.getMenuOptions();\n\n if (this.value) {\n const selectedOptionIndexes = (this.value as string[]).map((value) => {\n return menuOptions.findIndex(\n (option) => option[this.valueField] === value\n );\n });\n\n // Call setInputValue (which toggles the selected state) on options that need to be deselected\n selectedOptionIndexes.forEach(\n (index) =>\n !optionsToKeepSelected.includes(index) && this.setInputValue(index)\n );\n }\n };\n\n // Determines keyboard behaviour when selection is manual (i.e. when you have to press Enter to select an option)\n private manualSetInputValueKeyboardOpen = (event: KeyboardEvent) => {\n const menuOptions = this.getMenuOptions();\n\n // For preventing focus disappearing on currently focused option when Shift / Cmd / Ctrl pressed\n // (i.e. when user is likely in the middle of executing a keyboard combination to select options)\n const isKeyboardCombination =\n event.shiftKey || event.metaKey || event.ctrlKey;\n\n const highlightedOptionIndex = this.getOptionHighlightedIndex();\n\n const clickedMultiOptionIndex = menuOptions.findIndex(\n (option) => option[this.valueField] === this.multiOptionClicked\n );\n\n const getOptionId = (index: number): string =>\n Array.from(this.host.querySelectorAll(\"li\"))[index]?.id;\n\n // Space press should be equivalent to Enter when multi-select\n if (event.key === \" \" && this.multiSelect) {\n this.handleOptionSelect(event, highlightedOptionIndex);\n } else {\n switch (event.key) {\n case \"ArrowDown\":\n this.keyboardNav = true;\n this.arrowBehaviour(event);\n if (this.multiOptionClicked) {\n // Set focus to option last clicked\n // Prevents it resetting to the top of the menu when user switches to using keyboard\n this.setHighlightedOption(clickedMultiOptionIndex);\n this.multiOptionClicked = null;\n } else {\n this.handleSingleShiftSelect(\n event,\n highlightedOptionIndex,\n menuOptions\n );\n\n if (highlightedOptionIndex < menuOptions.length - 1) {\n this.setHighlightedOption(highlightedOptionIndex + 1);\n this.menuOptionId.emit({\n optionId: getOptionId(highlightedOptionIndex + 1),\n });\n\n this.handleSingleShiftSelect(\n event,\n highlightedOptionIndex + 1,\n menuOptions\n );\n } else {\n this.setHighlightedOption(0);\n this.menuOptionId.emit({\n optionId: getOptionId(0),\n });\n\n this.handleSingleShiftSelect(event, 0, menuOptions);\n }\n\n // Deselect currently selected options if arrow was pressed for first time after shift is held\n if (this.multiSelect && this.shiftPressed) {\n this.deselectSelectedOptions([\n highlightedOptionIndex,\n this.getOptionHighlightedIndex(),\n ]);\n this.shiftPressed = false;\n }\n }\n this.lastOptionFocused = this.getOptionHighlightedIndex();\n this.preventIncorrectTabOrder = false;\n this.focusFromSearchKeypress = false;\n break;\n case \"ArrowUp\":\n this.keyboardNav = true;\n this.arrowBehaviour(event);\n if (this.multiOptionClicked) {\n // Set focus to option last clicked\n // Prevents it resetting to the bottom of the menu when user switches to using keyboard\n this.setHighlightedOption(clickedMultiOptionIndex);\n this.multiOptionClicked = null;\n } else {\n this.handleSingleShiftSelect(\n event,\n highlightedOptionIndex,\n menuOptions\n );\n\n if (\n highlightedOptionIndex <= 0 ||\n highlightedOptionIndex > menuOptions.length + 1\n ) {\n this.setHighlightedOption(menuOptions.length - 1);\n this.menuOptionId.emit({\n optionId: getOptionId(menuOptions.length - 1),\n });\n\n this.handleSingleShiftSelect(\n event,\n menuOptions.length - 1,\n menuOptions\n );\n } else {\n this.setHighlightedOption(highlightedOptionIndex - 1);\n this.menuOptionId.emit({\n optionId: getOptionId(highlightedOptionIndex - 1),\n });\n\n this.handleSingleShiftSelect(\n event,\n highlightedOptionIndex - 1,\n menuOptions\n );\n }\n\n // Deselect currently selected options if arrow was pressed for first time after shift is held\n if (this.multiSelect && this.shiftPressed) {\n this.deselectSelectedOptions([\n highlightedOptionIndex,\n this.getOptionHighlightedIndex(),\n ]);\n this.shiftPressed = false;\n }\n }\n\n this.lastOptionFocused = this.getOptionHighlightedIndex();\n this.preventIncorrectTabOrder = false;\n this.focusFromSearchKeypress = false;\n break;\n case \"Home\": {\n const startOptionIndex = 0;\n\n this.keyboardNav = true;\n event.preventDefault();\n this.arrowBehaviour(event);\n this.setHighlightedOption(startOptionIndex);\n this.menuOptionId.emit({\n optionId: getOptionId(startOptionIndex),\n });\n\n if (event.shiftKey && event.ctrlKey) {\n this.handleMultipleShiftSelect(startOptionIndex);\n }\n\n this.lastOptionFocused = startOptionIndex;\n this.lastOptionSelected = startOptionIndex;\n break;\n }\n case \"End\": {\n const endOptionIndex = menuOptions.length - 1;\n\n this.keyboardNav = true;\n event.preventDefault();\n this.arrowBehaviour(event);\n this.setHighlightedOption(endOptionIndex);\n this.menuOptionId.emit({\n optionId: getOptionId(endOptionIndex),\n });\n\n if (event.shiftKey && event.ctrlKey) {\n this.handleMultipleShiftSelect(endOptionIndex);\n }\n\n this.lastOptionFocused = endOptionIndex;\n this.lastOptionSelected = endOptionIndex;\n break;\n }\n case \" \":\n if (!isKeyboardCombination) {\n this.keyboardNav = false;\n }\n if (this.searchBar || this.searchableSelect) {\n break;\n } else {\n if ((event.target as HTMLElement).id !== this.CLEAR_BUTTON_ID) {\n this.handleMenuChange(true);\n }\n }\n break;\n case \"Enter\":\n event.preventDefault();\n if (!isKeyboardCombination) {\n this.keyboardNav = false;\n }\n this.handleOptionSelect(event, highlightedOptionIndex);\n break;\n case \"Escape\":\n if (this.open) {\n event.stopImmediatePropagation();\n }\n this.handleMenuChange(false);\n this.menuOptionId.emit({ optionId: undefined });\n break;\n case \"a\":\n // Checks if Cmd (meta) key is pressed if Mac device (while excluding meta key on Windows)\n // Otherwise, if a different OS, checks Ctrl key\n if (\n (isMacDevice() && event.metaKey) ||\n (!isMacDevice() && event.ctrlKey)\n ) {\n this.emitSelectAllEvents();\n this.lastOptionFocused = null;\n this.lastOptionSelected = null;\n }\n break;\n case \"Shift\":\n case \"Tab\":\n if (event.key === \"Shift\") {\n this.shiftPressed = true;\n }\n if (this.searchBar) {\n this.keyboardNav = true;\n }\n if (this.multiSelect) {\n if (this.open && !event.shiftKey && this.selectAllButton) {\n event.preventDefault();\n this.selectAllButton.focus(); // Move focus to select all button instead of focused option\n this.preventMenuFocus = true;\n this.preventClickOpen = true;\n this.optionHighlighted = undefined; // Stop any option focus states showing when focus moved to select all button\n }\n } else {\n this.preventIncorrectTabOrder = true;\n }\n break;\n default:\n if (!isKeyboardCombination) {\n this.keyboardNav = false;\n }\n this.focusOnSearchOrSelectInput(menuOptions, highlightedOptionIndex);\n }\n }\n };\n\n private setInputValue = (highlightedOptionIndex: number) => {\n const menuOptions = this.getMenuOptions();\n\n if (menuOptions[highlightedOptionIndex] !== undefined) {\n this.menuOptionSelect.emit({\n value: menuOptions[highlightedOptionIndex][this.valueField],\n });\n\n if (this.closeOnSelect) {\n this.optionHighlighted = undefined;\n this.menuOptionId.emit({ optionId: undefined });\n }\n }\n\n if (this.closeOnSelect) {\n if (!this.hasTimedOut) {\n this.handleMenuChange(false);\n } else {\n (this.parentEl as HTMLIcSearchBarElement).setFocus();\n }\n }\n };\n\n private handleOptionClick = (event: MouseEvent): void => {\n const { value, label } = (event.target as HTMLLIElement).dataset;\n\n if (this.multiSelect) {\n const menuOptions = this.getMenuOptions();\n const selectedOptionIndex = menuOptions.findIndex(\n (option) => option.value === value\n );\n\n this.handleOptionSelect(event, selectedOptionIndex, true);\n this.multiOptionClicked = value || null;\n } else {\n this.menuOptionSelect.emit({ value, label });\n this.handleMenuChange(false);\n }\n\n this.optionHighlighted = undefined;\n };\n\n private handleRetry = (): void => {\n this.retryButtonClicked.emit({ value: this.value });\n };\n\n private handleRetryKeyDown = (ev: KeyboardEvent): void => {\n if (ev.key === \"Enter\" || ev.key === \" \") {\n ev.preventDefault();\n this.retryButtonClicked.emit({ value: this.value, keyPressed: ev.key });\n }\n };\n\n private handleBlur = (event: FocusEvent): void => {\n if (event.relatedTarget !== this.inputEl) {\n if (event.relatedTarget === this.selectAllButton) {\n this.menu?.removeAttribute(this.ACTIVE_DESCENDANT);\n }\n\n if (\n !(\n this.menu?.contains(event.relatedTarget as HTMLElement) ||\n event.relatedTarget === this.selectAllButton\n )\n ) {\n this.handleMenuChange(false, this.hasPreviouslyBlurred);\n this.menu?.removeAttribute(this.ACTIVE_DESCENDANT);\n this.lastOptionFocused = null;\n this.lastOptionSelected = null;\n }\n } else {\n this.handleMenuChange(false);\n this.preventClickOpen = true;\n this.menu?.removeAttribute(this.ACTIVE_DESCENDANT);\n this.lastOptionFocused = null;\n this.lastOptionSelected = null;\n }\n if (!this.searchBar) this.hasPreviouslyBlurred = !!event.relatedTarget;\n };\n\n private handleMouseDown = (event: Event): void => {\n event.preventDefault();\n };\n\n private handleMenuKeyDown = (event: KeyboardEvent) => {\n if (this.activationType === \"automatic\") {\n this.autoSetValueOnMenuKeyDown(event);\n } else if (this.activationType === \"manual\" && !this.searchBar) {\n this.manualSetInputValueKeyboardOpen(event);\n }\n };\n\n private handleMenuKeyUp = (event: KeyboardEvent): void => {\n if (event.key === \"Tab\" && event.shiftKey) {\n this.preventClickOpen = false;\n }\n if (event.key === \"Enter\" && this.disabledOptionSelected) {\n this.disabledOptionSelected = false;\n event.stopImmediatePropagation();\n }\n\n if (event.key === \"Shift\") {\n this.shiftPressed = false;\n }\n };\n\n private handleSelectAllClick = () => {\n this.keyboardNav = false;\n this.menu?.focus();\n this.emitSelectAllEvents();\n this.lastOptionFocused = null;\n this.lastOptionSelected = null;\n };\n\n private handleSelectAllBlur = (event: FocusEvent) => {\n this.host.classList.remove(\"ic-select-select-all-focused\");\n if (!this.menu?.contains(event.relatedTarget as HTMLElement)) {\n this.handleMenuChange(false, false);\n }\n };\n\n private handleSelectAllFocus = () => {\n this.host.classList.add(\"ic-select-select-all-focused\");\n this.lastOptionFocused = null;\n this.lastOptionSelected = null;\n };\n\n // Fix for Safari - select all button click was causing menu to close\n private handleSelectAllMouseDown = (event: Event) => {\n event.preventDefault();\n };\n\n // When shift key is being used to select contiguous options one by one on a multi-select\n // I.e. holding shift and pressing up and down arrow keys\n private handleSingleShiftSelect = (\n event: KeyboardEvent,\n optionToSelectIndex: number,\n options: IcMenuOption[]\n ) => {\n if (\n this.multiSelect &&\n event.shiftKey &&\n !this.isOptionSelected(optionToSelectIndex)\n ) {\n this.selectHighlightedOption(options, optionToSelectIndex);\n this.lastOptionSelected = optionToSelectIndex;\n }\n };\n\n // When shift key is being used to select multiple options at once on a multi-select\n // I.e. holding shift when selecting another option\n private handleMultipleShiftSelect = (\n lastOptionInSelection: number,\n useFocusForSelection = false,\n firstOptionSelected: number | null = null\n ) => {\n this.shiftPressed = false;\n\n const firstOptionInSelection =\n firstOptionSelected === null\n ? this.getFirstOptionInSelection(useFocusForSelection)\n : firstOptionSelected;\n if (firstOptionInSelection !== null) {\n const optionsToSelect = [];\n\n if (firstOptionInSelection < lastOptionInSelection) {\n for (\n let i = firstOptionInSelection;\n i < lastOptionInSelection + 1;\n i++\n ) {\n optionsToSelect.push(i);\n }\n } else {\n for (\n let i = firstOptionInSelection;\n i > lastOptionInSelection - 1;\n i--\n ) {\n optionsToSelect.push(i);\n }\n }\n\n optionsToSelect.forEach(\n (optionIndex) =>\n !this.isOptionSelected(optionIndex) && this.setInputValue(optionIndex)\n );\n this.deselectSelectedOptions(optionsToSelect);\n }\n };\n\n private handleOptionSelect = (\n event: KeyboardEvent | MouseEvent,\n optionIndex: number,\n useFocusForSelection = false\n ) => {\n const menuOptions = this.getMenuOptions();\n const firstOptionInSelection =\n this.getFirstOptionInSelection(useFocusForSelection);\n if (event.shiftKey && firstOptionInSelection !== null) {\n this.handleMultipleShiftSelect(\n optionIndex,\n useFocusForSelection,\n firstOptionInSelection\n );\n } else {\n this.selectHighlightedOption(menuOptions, optionIndex);\n }\n\n this.lastOptionFocused = optionIndex;\n this.lastOptionSelected = optionIndex;\n };\n\n private getFirstOptionInSelection = (\n useFocusForSelection: boolean\n ): number | null => {\n return useFocusForSelection && this.lastOptionFocused !== null\n ? this.lastOptionFocused\n : this.lastOptionSelected !== null\n ? this.lastOptionSelected\n : null;\n };\n\n private emitSelectAllEvents = () => {\n // Select all if there is either no value or not all options are selected\n // 'true' means select all, 'false' means clear all\n this.menuOptionSelectAll.emit({\n select:\n !this.value || !(this.value?.length === this.ungroupedOptions.length),\n });\n // Emit clear event if all options are selected\n if (this.value?.length === this.ungroupedOptions.length) {\n this.icClear.emit();\n }\n };\n\n private emitMenuKeyPress = (isNavKey: boolean, key: string) => {\n this.menuKeyPress.emit({ isNavKey: isNavKey, key: key });\n };\n\n // Determines keyboard behaviour when selection is automatic\n // (i.e. you don't have to press Enter select an option - just focus on it)\n // and menu is focused\n private autoSetValueOnMenuKeyDown = (event: KeyboardEvent): void => {\n event.cancelBubble = true;\n const selectedOptionIndex = this.ungroupedOptions.findIndex(\n (option) => option[this.valueField] === this.value\n );\n\n const isSearchableSelect =\n !!this.inputEl && this.inputEl.tagName === \"INPUT\";\n\n this.keyboardNav = false;\n\n switch (event.key) {\n case \" \":\n event.preventDefault();\n break;\n case \"ArrowUp\":\n if (!this.hasTimedOut) {\n event.preventDefault();\n this.setPreviousOptionValue(selectedOptionIndex);\n this.keyboardNav = true;\n }\n break;\n case \"ArrowDown\":\n if (!this.hasTimedOut) {\n event.preventDefault();\n this.setNextOptionValue(selectedOptionIndex);\n this.keyboardNav = true;\n }\n break;\n case \"Home\":\n this.menuOptionSelect.emit({\n value: this.ungroupedOptions[0][this.valueField],\n });\n this.keyboardNav = true;\n break;\n case \"End\":\n this.menuOptionSelect.emit({\n value:\n this.ungroupedOptions[this.ungroupedOptions.length - 1][\n this.valueField\n ],\n });\n this.keyboardNav = true;\n break;\n case \"Enter\":\n !this.hasTimedOut && this.handleMenuChange(false);\n break;\n case \"Escape\":\n this.handleMenuChange(false);\n break;\n case \"Backspace\":\n if (isSearchableSelect) {\n this.inputEl?.focus();\n }\n break;\n case \"Shift\":\n break;\n default:\n if (isSearchableSelect && event.key !== \"Tab\" && !this.hasTimedOut) {\n this.inputEl?.focus();\n }\n if (event.key.length === 1) {\n this.keyboardNav = true;\n }\n break;\n }\n this.emitMenuKeyPress(this.keyboardNav, event.key);\n };\n\n private getOptionId = (value: string): string => {\n return `${this.menuId}-${value}`;\n };\n\n private getOptionAriaLabel = (\n option: IcMenuOption,\n parentOption?: IcMenuOption\n ): string => {\n let ariaLabel = option[this.labelField];\n\n if (option.description) {\n ariaLabel = `${ariaLabel}, ${option.description}`;\n }\n\n if (option.element) {\n ariaLabel = `${ariaLabel}, ${option.element.ariaLabel}`;\n }\n\n if (parentOption) {\n return `${ariaLabel}, ${parentOption[this.labelField]} group`;\n } else {\n return ariaLabel;\n }\n };\n\n private getSortedOptions = (options: IcMenuOption[]): IcMenuOption[] => {\n let sorted: IcMenuOption[] = [];\n if (options.sort) {\n sorted = options.sort((optionA, optionB) =>\n optionA.recommended && !optionB.recommended ? -1 : 0\n );\n }\n return sorted;\n };\n\n private getOptionHighlightedIndex = () => {\n const menuOptions = this.getMenuOptions();\n\n return menuOptions.findIndex(\n (option) => option[this.valueField] === this.optionHighlighted\n );\n };\n\n private isManualMode = this.activationType === \"manual\";\n\n private scrollToSelected = (menu: HTMLUListElement) => {\n const selectedOption = this.selectOnEnter\n ? (this.host.querySelector(\n `li[data-value=\"${this.optionHighlighted}\"]`\n ) as HTMLElement)\n : (menu.querySelector(\".option[aria-selected='true']\") as HTMLElement);\n\n if (selectedOption) {\n const elTop = selectedOption.offsetTop + selectedOption.offsetHeight;\n if (\n elTop > menu.scrollTop + menu.offsetHeight ||\n elTop < menu.scrollTop + menu.offsetHeight\n ) {\n menu.scrollTop = selectedOption.offsetTop;\n }\n // 'aria-activedescendant' affects screen reader focus\n // https://www.w3.org/TR/2017/WD-wai-aria-practices-1.1-20170628/#kbd_focus_activedescendant\n this.menu?.setAttribute(this.ACTIVE_DESCENDANT, selectedOption.id);\n selectedOption.focus();\n }\n };\n\n // Set 'ungroupedOptions' variable and emit its value\n // - this is all the options with disabled options and group titles removed\n private loadUngroupedOptions = () => {\n if (this.options.length > 0 && this.options.map) {\n this.options.map((option) => {\n if (option.children) {\n option.children.map(\n (option) => !option.disabled && this.ungroupedOptions.push(option)\n );\n } else if (!option.disabled) {\n this.ungroupedOptions.push(option);\n }\n });\n }\n this.ungroupedOptions = this.getSortedOptions(this.ungroupedOptions);\n this.ungroupedOptionsSet.emit({ options: this.ungroupedOptions });\n };\n\n private setMenuScrollbar = () => {\n let optionsHeight = 0;\n this.host\n .querySelectorAll(\".option, .option-group-title\")\n .forEach((option) => (optionsHeight += option.clientHeight));\n\n if (optionsHeight >= 320) {\n this.menu?.classList.add(\"menu-scroll\");\n }\n };\n\n private handleTimeoutBlur = (ev: FocusEvent) => {\n this.timeoutBlur.emit({ ev });\n };\n\n private focusOnSearchOrSelectInput(\n menuOptions: IcMenuOption[],\n highlightedOptionIndex: number\n ) {\n if (!menuOptions[highlightedOptionIndex]) return;\n\n if (this.searchBar) {\n (this.parentEl as HTMLIcSearchBarElement).setFocus();\n if (this.searchMode === \"navigation\") this.setHighlightedOption(0);\n }\n\n if (this.searchableSelect) {\n (this.parentEl as HTMLIcSelectElement).setFocus();\n }\n\n this.focusFromSearchKeypress = true;\n }\n\n private optionContent = (option: IcMenuOption, selected: boolean) => {\n const showCheckIcon =\n !!option[this.valueField] &&\n !!this.value &&\n selected &&\n this.parentEl?.tagName !== this.SEARCH_BAR_TAG;\n\n return (\n <Fragment>\n {option.loading && <ic-loading-indicator size=\"icon\" />}\n <div\n class={{\n \"option-text-container\": true,\n \"show-check-icon\": showCheckIcon,\n }}\n >\n <div class=\"option-label\">\n {option.icon && (\n <div\n class=\"option-icon\"\n innerHTML={option.icon}\n aria-hidden=\"true\"\n ></div>\n )}\n <ic-typography variant=\"body\" aria-hidden=\"true\">\n {option[this.labelField]}\n </ic-typography>\n </div>\n {option.description && (\n <ic-typography\n id={`${this.getOptionId(option[this.valueField])}-description`}\n class=\"option-description\"\n variant=\"caption\"\n aria-hidden=\"true\"\n >\n <p>{option.description}</p>\n </ic-typography>\n )}\n {option.element && (\n <div\n class=\"option-element\"\n innerHTML={option.element.component}\n aria-hidden=\"true\"\n ></div>\n )}\n </div>\n {showCheckIcon && <span class=\"check-icon\" innerHTML={Check} />}\n </Fragment>\n );\n };\n\n private displayOption = (\n option: IcMenuOption,\n selected: boolean,\n index: number,\n parentOption?: IcMenuOption\n ): HTMLLIElement => {\n const {\n open,\n keyboardNav,\n isManualMode,\n initialOptionsListRender,\n optionHighlighted,\n options,\n } = this;\n\n return (\n <li\n id={this.getOptionId(option[this.valueField])}\n class={{\n option: true,\n \"focused-option\": isManualMode\n ? (keyboardNav || initialOptionsListRender) &&\n option[this.valueField] === optionHighlighted\n : keyboardNav && selected,\n \"last-recommended-option\": !!(\n option.recommended &&\n options[index + 1] &&\n !options[index + 1].recommended\n ),\n \"disabled-option\": !!option.disabled,\n \"loading-option\": !!option.loading,\n timeout: !!option.timedOut,\n }}\n role=\"option\"\n tabindex={\n open &&\n (selected || option[this.valueField] === optionHighlighted) &&\n keyboardNav\n ? \"0\"\n : \"-1\"\n }\n aria-label={this.getOptionAriaLabel(option, parentOption)}\n aria-selected={selected ? \"true\" : \"false\"}\n aria-disabled={option.disabled ? \"true\" : \"false\"}\n onClick={\n !option.timedOut && !option.loading\n ? this.handleOptionClick\n : undefined\n }\n onBlur={this.handleBlur}\n onMouseDown={this.handleMouseDown}\n data-value={option[this.valueField]}\n data-label={option[this.labelField]}\n >\n {option.timedOut ? (\n <Fragment>\n <div class=\"loading-error-info\">\n <svg\n class=\"error-icon-svg\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"#000000\"\n >\n <title>Error</title>\n <g>\n <path d=\"M8.77 3L3.5 8.27V15.73L8.77 21H16.23L21.5 15.73V8.27L16.23 3M8.91 7L12.5 10.59L16.09 7L17.5 8.41L13.91 12L17.5 15.59L16.09 17L12.5 13.41L8.91 17L7.5 15.59L11.09 12L7.5 8.41\" />\n </g>\n </svg>\n <ic-typography variant=\"label\">\n {option[this.labelField]}\n </ic-typography>\n </div>\n <ic-button\n size=\"small\"\n variant=\"tertiary\"\n onClick={this.handleRetry}\n onKeyDown={this.handleRetryKeyDown}\n onBlur={this.handleTimeoutBlur}\n id=\"retry-button\"\n >\n Retry\n </ic-button>\n </Fragment>\n ) : (\n this.optionContent(option, selected)\n )}\n </li>\n );\n };\n\n render() {\n const {\n inputLabel,\n options,\n menuId,\n value,\n fullWidth,\n hasTimedOut,\n isLoading,\n size,\n open,\n inputEl,\n keyboardNav,\n parentEl,\n SEARCH_BAR_TAG,\n multiSelect,\n } = this;\n\n const selectAllButtonText = `${\n value?.length === this.ungroupedOptions.length ? \"Clear\" : \"Select\"\n } all`;\n\n const hasNoResults = this.host.classList.contains(\"no-results\");\n\n return (\n <Host\n class={{\n \"ic-menu-full-width\": !!fullWidth,\n \"ic-menu-no-focus\":\n (inputEl?.tagName === \"INPUT\" &&\n parentEl?.tagName !== SEARCH_BAR_TAG) ||\n hasTimedOut ||\n isLoading,\n [`ic-menu-${size}`]: true,\n \"ic-menu-open\": open && options.length !== 0,\n \"ic-menu-multiple\": multiSelect,\n }}\n >\n {options.length !== 0 && (\n <ul\n id={menuId}\n class=\"menu\"\n role=\"listbox\"\n aria-label={`${inputLabel} pop-up`}\n aria-multiselectable={multiSelect ? \"true\" : \"false\"}\n tabindex={\n open &&\n !keyboardNav &&\n (inputEl?.tagName !== \"INPUT\" ||\n parentEl?.tagName === SEARCH_BAR_TAG)\n ? \"0\"\n : \"-1\"\n }\n ref={(el) => (this.menu = el)}\n onKeyDown={this.handleMenuKeyDown}\n onKeyUp={this.handleMenuKeyUp}\n onBlur={this.handleBlur}\n >\n {this.getSortedOptions(options).map((option, index) => {\n if (option.children) {\n if (option.children.length > 0) {\n return (\n <div>\n <ic-typography\n class=\"option-group-title\"\n role=\"presentation\"\n variant=\"subtitle-small\"\n >\n <p>{option[this.labelField]}</p>\n </ic-typography>\n {option.children.map(\n (childOption) =>\n childOption.label &&\n this.displayOption(\n childOption,\n multiSelect\n ? value?.includes(childOption[this.valueField])\n : childOption[this.valueField] === value,\n index,\n option\n )\n )}\n </div>\n );\n } else {\n return null;\n }\n } else {\n // Display option only if it has a label (rather than displaying an empty space)\n return (\n option.label &&\n this.displayOption(\n option,\n multiSelect\n ? value?.includes(option[this.valueField])\n : option[this.valueField] === value,\n index\n )\n );\n }\n })}\n </ul>\n )}\n {options.length !== 0 &&\n multiSelect &&\n !isLoading &&\n !hasTimedOut &&\n !hasNoResults && (\n <div class=\"option-bar\">\n <ic-typography>\n <p>{`${\n value ? value.length : 0\n }/${getOptionsWithoutGroupTitlesCount(\n this.options\n )} selected`}</p>\n </ic-typography>\n <ic-button\n class=\"select-all-button\"\n aria-label={`${selectAllButtonText} options for ${inputLabel}`}\n ref={(el) => (this.selectAllButton = el)}\n variant=\"tertiary\"\n onClick={this.handleSelectAllClick}\n onMouseDown={this.handleSelectAllMouseDown}\n onBlur={this.handleSelectAllBlur}\n onFocus={this.handleSelectAllFocus}\n size={size === \"small\" ? \"small\" : \"medium\"}\n >\n {selectAllButtonText}\n </ic-button>\n </div>\n )}\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
@@ -0,0 +1,2 @@
|
|
1
|
+
import{r as t,h as a,H as i,g as e}from"./p-8e4e97b4.js";import{o as l,S as r,T as o,J as n}from"./p-6ceedfa8.js";import{w as s,f as c,s as p}from"./p-641c26c4.js";const d="ic-input-label{margin-bottom:var(--ic-space-xs);--ic-typography-color:var(\n --ic-input-label-text-color,\n var(--ic-color-text-primary)\n )}ic-input-label.with-helper{margin-bottom:0}ic-input-label.ic-input-label-readonly{--ic-typography-color:var(--ic-input-label-readonly-typography-color)}ic-input-label .helpertext,ic-input-label .helpertext ::slotted(*){margin-top:var(--ic-space-xxxs);padding-bottom:var(--ic-input-label-helpertext-padding, 0);--ic-typography-color:var(\n --ic-input-label-helper-text-color,\n var(--ic-color-text-secondary)\n )}ic-input-label .helpertext-normal{--ic-typography-color:var(\n --ic-input-label-helper-text-color,\n var(--ic-color-text-secondary)\n )}ic-input-label .helpertext-readonly{--ic-typography-color:var(--ic-input-label-readonly-helpertext-color)}ic-input-label .readonly-label{--ic-typography-color:var(--ic-input-label-readonly-label-color)}ic-input-label .error-label{--ic-typography-color:var(--ic-input-label-error-label-color)}";const u=d;const h=class{constructor(a){t(this,a);this.disabled=false;this.helperText="";this.hideLabel=false;this.readonly=false;this.required=false;this.status="";this.useLabelTag=true;this.isHelperTextSlotUsed=t=>{const a=t===null||t===void 0?void 0:t.assignedElements();if(a&&a.length){for(const t of a){if(t.tagName==="SLOT"){if(this.isHelperTextSlotUsed(t)){return true}}else{return true}}}return false}}componentDidLoad(){l([{prop:this.label,propName:"label"}],"Input Label")}render(){const{disabled:t,readonly:e,label:l,required:o,helperText:n,status:s,hideLabel:c,useLabelTag:p}=this;const d=o?l+" *":l;const u=this.for&&r(this.for);const h={helpertext:true,"helpertext-normal":!t&&!e,"helpertext-readonly":e};const b=this.el.querySelector("slot[name='helper-text']");return a(i,{key:"b4ae951684bc9fbacd077fd7586a60a680cb1114",class:{"ic-input-label-disabled":!!t,"ic-input-label-readonly":e,"with-helper":this.isHelperTextSlotUsed(b)||n!==""}},!c&&a("ic-typography",{key:"dd5d6d73707aadd9cc59225224fffadefecda9c7",variant:"label",class:{"readonly-label":e,"error-label":s==="error"&&!(e||t)}},e||!p?`${d}`:a("label",{htmlFor:this.for},d)),this.isHelperTextSlotUsed(b)?a("span",{id:u,class:h},a("slot",{name:"helper-text"})):n!==""&&a("ic-typography",{variant:"caption",class:h},a("span",{id:u},n)))}get el(){return e(this)}};h.style=u;const b="ic-input-validation{width:var(--input-width, 20rem);margin-top:var(--ic-space-xs);display:flex}ic-input-validation.ic-input-validation-full-width{width:100%}ic-input-validation span.status-icon{padding-right:var(--ic-space-xxs)}ic-input-validation span.status-icon>svg{height:1.25rem;width:1.25rem}ic-input-validation span.icon-success>svg{fill:var(--ic-input-validation-success-icon-color)}ic-input-validation span.icon-error>svg{fill:var(--ic-input-validation-error, var(--ic-atoms-status-icon-error))}ic-input-validation span.icon-warning>svg{fill:var(--ic-input-validation-warning-icon-color)}ic-input-validation .statustext{flex-grow:1;color:var(\n --ic-input-validation-status-text-color,\n var(--ic-color-text-primary)\n );--ic-typography-color:var(\n --ic-input-validation-status-text-color,\n var(--ic-color-text-primary)\n )}ic-input-validation .sr-only{position:absolute;left:-9999px}";const v=b;const y={[n.Warning]:s,[n.Error]:c,[n.Success]:p};const f="";const g=class{constructor(a){t(this,a);this.ariaLiveMode="polite";this.fullWidth=false;this.status=""}watchMessageHandler(t){this.messageEl.textContent=f;setTimeout((()=>{this.messageEl.textContent=t}),100)}componentDidLoad(){l([{prop:this.message,propName:"message"}],"Input Validation");this.messageEl.textContent=f}render(){const{ariaLiveMode:t,fullWidth:e,status:l,message:r}=this;const n=l!==""?y[l]:"";return a(i,{key:"34ecf789f9c0821d672bcdf532f778b8132bb595",class:{[`ic-input-validation-${l}`]:l!=="","ic-input-validation-full-width":!!e}},n!==""&&a("span",{key:"8d40b240e1e7647725c0359205a638eae4cb2cee",class:{"status-icon":true,[`icon-${l}`]:true},innerHTML:n}),a("ic-typography",{key:"841555cf1e183663ed22863bb98ccbf18dc5747d",variant:"caption",class:"statustext"},a("span",{key:"8f9cde8e980016736a58129b3928a8f90da8054c",id:this.for&&o(this.for)},r),a("span",{key:"3497fb929f8e6d55db69462405d4d2655741511b",ref:t=>this.messageEl=t,class:"sr-only","aria-live":t})),a("slot",{key:"58ac53581ef92420a088eb50bfb1e9fcedad5660",name:"validation-message-adornment"}))}get el(){return e(this)}static get watchers(){return{message:["watchMessageHandler"]}}};g.style=v;export{h as ic_input_label,g as ic_input_validation};
|
2
|
+
//# sourceMappingURL=p-ed69f110.entry.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["icInputLabelCss","IcInputLabelStyle0","InputLabel","constructor","hostRef","this","disabled","helperText","hideLabel","readonly","required","status","useLabelTag","isHelperTextSlotUsed","slot","assignedEls","assignedElements","length","el","tagName","componentDidLoad","onComponentRequiredPropUndefined","prop","label","propName","render","labelText","helperTextId","for","getInputHelperTextID","helperTextClass","helpertext","helperTextSlot","querySelector","h","Host","key","class","variant","htmlFor","id","name","icInputValidationCss","IcInputValidationStyle0","ICON","IcInformationStatus","Warning","warningIcon","Error","errorIcon","Success","successIcon","INVISIBLE_CHAR","InputValidation","ariaLiveMode","fullWidth","watchMessageHandler","newValue","messageEl","textContent","setTimeout","message","displayIcon","innerHTML","getInputValidationTextID","ref"],"sources":["src/components/ic-input-label/ic-input-label.css?tag=ic-input-label","src/components/ic-input-label/ic-input-label.tsx","src/components/ic-input-validation/ic-input-validation.css?tag=ic-input-validation","src/components/ic-input-validation/ic-input-validation.tsx"],"sourcesContent":["ic-input-label {\n margin-bottom: var(--ic-space-xs);\n\n --ic-typography-color: var(\n --ic-input-label-text-color,\n var(--ic-color-text-primary)\n );\n}\n\nic-input-label.with-helper {\n margin-bottom: 0;\n}\n\nic-input-label.ic-input-label-readonly {\n --ic-typography-color: var(--ic-input-label-readonly-typography-color);\n}\n\nic-input-label .helpertext,\nic-input-label .helpertext ::slotted(*) {\n margin-top: var(--ic-space-xxxs);\n padding-bottom: var(--ic-input-label-helpertext-padding, 0);\n\n --ic-typography-color: var(\n --ic-input-label-helper-text-color,\n var(--ic-color-text-secondary)\n );\n}\n\nic-input-label .helpertext-normal {\n --ic-typography-color: var(\n --ic-input-label-helper-text-color,\n var(--ic-color-text-secondary)\n );\n}\n\nic-input-label .helpertext-readonly {\n --ic-typography-color: var(--ic-input-label-readonly-helpertext-color);\n}\n\nic-input-label .readonly-label {\n --ic-typography-color: var(--ic-input-label-readonly-label-color);\n}\n\nic-input-label .error-label {\n --ic-typography-color: var(--ic-input-label-error-label-color);\n}\n","import { Component, Element, Host, Prop, h } from \"@stencil/core\";\n\nimport {\n getInputHelperTextID,\n onComponentRequiredPropUndefined,\n} from \"../../utils/helpers\";\n\n@Component({\n tag: \"ic-input-label\",\n styleUrl: \"./ic-input-label.css\",\n})\nexport class InputLabel {\n @Element() el: HTMLIcInputLabelElement;\n\n /**\n * If `true`, the disabled state will be set.\n */\n @Prop() disabled?: boolean = false;\n\n /**\n * The ID of the form element the label is bound to.\n */\n @Prop() for?: string;\n\n /**\n * The helper text that will be displayed.\n */\n @Prop() helperText: string = \"\";\n\n /**\n * The label will be visually hidden.\n */\n @Prop() hideLabel: boolean = false;\n\n /**\n * The text content of the label.\n */\n @Prop() label!: string;\n\n /**\n * If `true`, the readonly state will be set.\n */\n @Prop() readonly: boolean = false;\n\n /**\n * If `true`, the input label will require a value.\n */\n @Prop() required: boolean = false;\n\n /**\n * The status of the label - e.g. 'error'.\n */\n @Prop() status: \"error\" | \"\" = \"\";\n\n /**\n * @internal If `true`, wraps label text in label tag\n */\n @Prop() useLabelTag: boolean = true;\n\n componentDidLoad(): void {\n onComponentRequiredPropUndefined(\n [{ prop: this.label, propName: \"label\" }],\n \"Input Label\"\n );\n }\n\n private isHelperTextSlotUsed = (slot: Element | null): boolean => {\n const assignedEls = (slot as HTMLSlotElement)?.assignedElements();\n if (assignedEls && assignedEls.length) {\n for (const el of assignedEls) {\n if (el.tagName === \"SLOT\") {\n // Recursion needed for when slot is forwarded multiple times - through child components\n // (e.g. in date picker)\n if (this.isHelperTextSlotUsed(el as HTMLSlotElement)) {\n return true;\n }\n } else {\n // Found an assigned element which is not a nested <slot>\n return true;\n }\n }\n }\n return false;\n };\n\n render() {\n const {\n disabled,\n readonly,\n label,\n required,\n helperText,\n status,\n hideLabel,\n useLabelTag,\n } = this;\n const labelText = required ? label + \" *\" : label;\n const helperTextId = this.for && getInputHelperTextID(this.for);\n const helperTextClass = {\n helpertext: true,\n \"helpertext-normal\": !disabled && !readonly,\n \"helpertext-readonly\": readonly,\n };\n\n const helperTextSlot = this.el.querySelector(\"slot[name='helper-text']\");\n\n return (\n <Host\n class={{\n \"ic-input-label-disabled\": !!disabled,\n \"ic-input-label-readonly\": readonly,\n \"with-helper\":\n this.isHelperTextSlotUsed(helperTextSlot) || helperText !== \"\",\n }}\n >\n {!hideLabel && (\n <ic-typography\n variant=\"label\"\n class={{\n \"readonly-label\": readonly,\n \"error-label\": status === \"error\" && !(readonly || disabled),\n }}\n >\n {readonly || !useLabelTag ? (\n `${labelText}`\n ) : (\n <label htmlFor={this.for}>{labelText}</label>\n )}\n </ic-typography>\n )}\n {this.isHelperTextSlotUsed(helperTextSlot) ? (\n <span id={helperTextId} class={helperTextClass}>\n <slot name=\"helper-text\"></slot>\n </span>\n ) : (\n helperText !== \"\" && (\n <ic-typography variant=\"caption\" class={helperTextClass}>\n <span id={helperTextId}>{helperText}</span>\n </ic-typography>\n )\n )}\n </Host>\n );\n }\n}\n","ic-input-validation {\n width: var(--input-width, 20rem);\n margin-top: var(--ic-space-xs);\n display: flex;\n}\n\nic-input-validation.ic-input-validation-full-width {\n width: 100%;\n}\n\nic-input-validation span.status-icon {\n padding-right: var(--ic-space-xxs);\n}\n\nic-input-validation span.status-icon > svg {\n height: 1.25rem;\n width: 1.25rem;\n}\n\nic-input-validation span.icon-success > svg {\n fill: var(--ic-input-validation-success-icon-color);\n}\n\nic-input-validation span.icon-error > svg {\n fill: var(--ic-input-validation-error, var(--ic-atoms-status-icon-error));\n}\n\nic-input-validation span.icon-warning > svg {\n fill: var(--ic-input-validation-warning-icon-color);\n}\n\nic-input-validation .statustext {\n flex-grow: 1;\n color: var(\n --ic-input-validation-status-text-color,\n var(--ic-color-text-primary)\n );\n\n --ic-typography-color: var(\n --ic-input-validation-status-text-color,\n var(--ic-color-text-primary)\n );\n}\n\nic-input-validation .sr-only {\n position: absolute;\n left: -9999px;\n}\n","import { Element, Component, Host, Prop, h, Watch } from \"@stencil/core\";\n\nimport {\n IcInformationStatus,\n IcInformationStatusOrEmpty,\n} from \"../../utils/types\";\nimport errorIcon from \"../../assets/error-icon.svg\";\nimport successIcon from \"../../assets/success-icon.svg\";\nimport warningIcon from \"../../assets/warning-icon.svg\";\n\nimport {\n getInputValidationTextID,\n onComponentRequiredPropUndefined,\n} from \"../../utils/helpers\";\nimport { IcAriaLiveModeVariants } from \"./ic-input-validation.types\";\n\nconst ICON = {\n [IcInformationStatus.Warning]: warningIcon,\n [IcInformationStatus.Error]: errorIcon,\n [IcInformationStatus.Success]: successIcon,\n};\nconst INVISIBLE_CHAR = \"\\u200B\";\n\n/**\n * @slot validation-message-adornment - Content will be placed to the right of the validation message.\n */\n@Component({\n tag: \"ic-input-validation\",\n styleUrl: \"ic-input-validation.css\",\n})\nexport class InputValidation {\n private messageEl!: HTMLSpanElement;\n\n @Element() el: HTMLIcInputValidationElement;\n\n /**\n * The ARIA live mode to apply to the message.\n */\n @Prop() ariaLiveMode?: IcAriaLiveModeVariants = \"polite\";\n\n /**\n * The ID of the form element the validation is bound to.\n */\n @Prop() for?: string;\n\n /**\n * If `true`, the input validation will fill the width of the container.\n */\n @Prop() fullWidth?: boolean = false;\n\n /**\n * The validation message to display.\n */\n @Prop() message!: string;\n @Watch(\"message\")\n watchMessageHandler(newValue: string) {\n // Force detectable DOM changes\n // Invisible character used as screen readers can ignore whitespace changes e.g. \"\" and \" \"\n this.messageEl.textContent = INVISIBLE_CHAR;\n setTimeout(() => {\n this.messageEl.textContent = newValue;\n }, 100); // Delay to help ensure screen readers detect change\n }\n\n /**\n * The status of the validation - e.g. 'error' | 'warning' | 'success'.\n */\n @Prop() status?: IcInformationStatusOrEmpty = \"\";\n\n componentDidLoad(): void {\n onComponentRequiredPropUndefined(\n [{ prop: this.message, propName: \"message\" }],\n \"Input Validation\"\n );\n this.messageEl.textContent = INVISIBLE_CHAR;\n }\n\n render() {\n const { ariaLiveMode, fullWidth, status, message } = this;\n const displayIcon = status !== \"\" ? ICON[status!] : \"\";\n return (\n <Host\n class={{\n [`ic-input-validation-${status}`]: status !== \"\",\n \"ic-input-validation-full-width\": !!fullWidth,\n }}\n >\n {displayIcon !== \"\" && (\n <span\n class={{\n \"status-icon\": true,\n [`icon-${status}`]: true,\n }}\n innerHTML={displayIcon}\n />\n )}\n <ic-typography variant=\"caption\" class=\"statustext\">\n <span id={this.for && getInputValidationTextID(this.for)}>\n {message}\n </span>\n {/* Separate aria-live region to avoid flashing due to textContent delay */}\n <span\n ref={(el) => (this.messageEl = el as HTMLSpanElement)}\n class=\"sr-only\"\n aria-live={ariaLiveMode}\n ></span>\n </ic-typography>\n <slot name=\"validation-message-adornment\"></slot>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
@@ -0,0 +1,2 @@
|
|
1
|
+
import{r as i,h as s,H as t,g as e}from"./p-8e4e97b4.js";import{D as h,f as a,h as l}from"./p-6ceedfa8.js";import"./p-641c26c4.js";const c=":host{display:block}:host ol{display:flex;list-style-type:none;align-items:center;flex-wrap:wrap;padding:0;margin:0}:host(.ic-breadcrumb-group-back) ol ::slotted(ic-breadcrumb){display:none}:host(.ic-breadcrumb-group-back) ol ::slotted(ic-breadcrumb.show){display:flex}:host(.ic-breadcrumb-group-collapsed) ol ::slotted(ic-breadcrumb.hide){display:none;opacity:0;visibility:hidden}:host(.ic-breadcrumb-group-collapsed) ol ::slotted(ic-breadcrumb.visuallyhidden){display:block;opacity:0;transition:all var(--ic-easing-transition-slow)}:host(.ic-breadcrumb-group-collapsed) ol ::slotted(ic-breadcrumb.fade){opacity:1}";const r=c;const d=class{constructor(s){i(this,s);this.ADD_CLASS_DELAY=50;this.IC_BREADCRUMB="ic-breadcrumb";this.SHOW_BACK_ICON="show-back-icon";this.collapsedBreadcrumbs=[];this.resizeObserver=null;this.lastParentBreadcrumb=null;this.deviceSize=h.XL;this.backBreadcrumbOnly=false;this.collapsed=false;this.monochrome=false;this.theme="inherit";this.setBreadcrumbTheme=()=>{Array.from(this.el.querySelectorAll(this.IC_BREADCRUMB)).forEach((i=>{i.theme=this.theme}))};this.setBreadcrumbMonochrome=()=>{Array.from(this.el.querySelectorAll(this.IC_BREADCRUMB)).forEach((i=>{i.monochrome=this.monochrome}))};this.setBackBreadcrumb=()=>{if(this.backBreadcrumbOnly){this.setLastParentCollapsedBackBreadcrumb()}else{this.revertLastParentCollapsedBreadcrumb()}};this.setBackBreadcrumbAttr=()=>{if(this.lastParentBreadcrumb){this.lastParentBreadcrumb.classList.add("show");this.lastParentBreadcrumb.setAttribute(this.SHOW_BACK_ICON,"true")}};this.getLastParentBreadcrumb=()=>{const i=this.el.querySelectorAll(this.IC_BREADCRUMB);return i.length>1?i[i.length-2]:null};this.setCollapsed=()=>{var i,s;this.collapsedBreadcrumbs.forEach((i=>{i.classList.remove("visuallyhidden");i.classList.remove("fade")}));if(this.collapsed){this.renderCollapsedBreadcrumb();const s=Array.from(this.el.querySelectorAll(this.IC_BREADCRUMB));this.collapsedBreadcrumbs=s.splice(1,s.length-2).filter((i=>!i.classList.contains("collapsed-breadcrumb-wrapper")));if(!this.backBreadcrumbOnly){this.collapsedBreadcrumbs.forEach((i=>i.classList.add("hide")))}if(this.collapsedBreadcrumbWrapper){(i=s[0])===null||i===void 0?void 0:i.insertAdjacentElement("afterend",this.collapsedBreadcrumbWrapper)}}else{(s=this.collapsedBreadcrumbWrapper)===null||s===void 0?void 0:s.remove()}};this.clickHandler=()=>{var i;(i=this.collapsedBreadcrumbWrapper)===null||i===void 0?void 0:i.remove();this.collapsedBreadcrumbs.forEach((i=>{i.classList.add("visuallyhidden");i.classList.remove("hide");setTimeout((()=>{i.classList.add("fade")}),this.ADD_CLASS_DELAY);i.addEventListener("transitionend",this.transitionendHandler)}));this.collapsed=false;this.collapsedBreadcrumbs[0].setFocus()};this.renderCollapsedBreadcrumb=()=>{if(this.collapsedBreadcrumbEl===undefined){this.collapsedBreadcrumbWrapper=document.createElement("ic-breadcrumb");this.collapsedBreadcrumbWrapper.classList.add("collapsed-breadcrumb-wrapper");this.collapsedBreadcrumbEl=document.createElement("button");const i=document.createElement("span");i.id="collapsed-button-label";i.innerText="Collapsed breadcrumbs";i.className="hide";this.collapsedBreadcrumbEl.setAttribute("aria-labelledby",i.id);const s=document.createElement("span");s.id="collapsed-button-described";s.innerText="Select to view collapsed breadcrumbs";s.className="hide";this.collapsedBreadcrumbEl.setAttribute("aria-describedby",s.id);this.collapsedBreadcrumbEl.id="collapsed-ellipsis";this.collapsedBreadcrumbEl.innerText="...";this.collapsedBreadcrumbEl.classList.add("collapsed-breadcrumb");this.collapsedBreadcrumbEl.addEventListener("click",this.clickHandler);this.collapsedBreadcrumbWrapper.append(s);this.collapsedBreadcrumbWrapper.append(i);this.collapsedBreadcrumbWrapper.append(this.collapsedBreadcrumbEl)}};this.transitionendHandler=i=>{if(i.propertyName==="opacity"){i.target.classList.remove("visuallyhidden")}};this.setLastParentCollapsedBackBreadcrumb=()=>{this.lastParentBreadcrumb=this.getLastParentBreadcrumb();this.setBackBreadcrumbAttr();if(this.lastParentBreadcrumb){this.lastParentBreadcrumb.classList.remove("hide");this.lastParentBreadcrumb.classList.add("show")}};this.revertLastParentCollapsedBreadcrumb=()=>{if(this.lastParentBreadcrumb){this.lastParentBreadcrumb.setAttribute(this.SHOW_BACK_ICON,"false");if(this.collapsed){this.lastParentBreadcrumb.classList.add("hide")}}};this.resizeObserverCallback=i=>{if(i!==this.deviceSize){this.deviceSize=i;const s=this.deviceSize<=h.S;this.el.setAttribute("back-breadcrumb-only",`${s}`);if(s){if(this.collapsed){this.setLastParentCollapsedBackBreadcrumb()}else{this.setBackBreadcrumb()}}else{const i=Array.from(this.el.querySelectorAll(this.IC_BREADCRUMB));if(this.collapsed&&i.length>2){this.revertLastParentCollapsedBreadcrumb();this.setCollapsed()}else{i.forEach((i=>{i.setAttribute(this.SHOW_BACK_ICON,"false")}))}}}};this.runResizeObserver=()=>{this.resizeObserver=new ResizeObserver((()=>{this.resizeObserverCallback(a())}));this.resizeObserver.observe(this.el)}}watchBackBreadcrumbHandler(){this.setBackBreadcrumb()}watchCollapsedHandler(){this.setCollapsed()}watchMonochromeHandler(){this.setBreadcrumbMonochrome()}watchThemeHandler(){this.setBreadcrumbTheme()}componentWillLoad(){this.setBreadcrumbTheme();this.setBreadcrumbMonochrome();if(this.backBreadcrumbOnly){this.setBackBreadcrumb()}else{l(this.runResizeObserver)}if(this.collapsed&&this.el.querySelectorAll(this.IC_BREADCRUMB).length>2){if(a()===h.S){this.setLastParentCollapsedBackBreadcrumb()}else{this.setCollapsed()}}this.lastParentBreadcrumb=this.getLastParentBreadcrumb()}disconnectedCallback(){var i,s;(i=this.lastParentBreadcrumb)===null||i===void 0?void 0:i.removeEventListener("transitionend",this.transitionendHandler);(s=this.collapsedBreadcrumbEl)===null||s===void 0?void 0:s.removeEventListener("click",this.clickHandler)}render(){const{backBreadcrumbOnly:i,collapsed:e,theme:h}=this;return s(t,{key:"e9547e6fce74b57f2a3d7904bdca580c59abf881",class:{"ic-breadcrumb-group-back":i,"ic-breadcrumb-group-collapsed":e,[`ic-theme-${h}`]:h!=="inherit"}},s("nav",{key:"56fd90771323680169a7e2ff757c534f499bda48","aria-label":"breadcrumbs"},s("ol",{key:"2817e0c715c94937436a41222f86a0e5e6b9cc92"},s("slot",{key:"137e284689752e6256c39ecc19988aafd3e49942"}))))}get el(){return e(this)}static get watchers(){return{backBreadcrumbOnly:["watchBackBreadcrumbHandler"],collapsed:["watchCollapsedHandler"],monochrome:["watchMonochromeHandler"],theme:["watchThemeHandler"]}}};d.style=r;export{d as ic_breadcrumb_group};
|
2
|
+
//# sourceMappingURL=p-eddc5517.entry.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["icBreadcrumbGroupCss","IcBreadcrumbGroupStyle0","BreadcrumbGroup","constructor","hostRef","this","ADD_CLASS_DELAY","IC_BREADCRUMB","SHOW_BACK_ICON","collapsedBreadcrumbs","resizeObserver","lastParentBreadcrumb","deviceSize","DEVICE_SIZES","XL","backBreadcrumbOnly","collapsed","monochrome","theme","setBreadcrumbTheme","Array","from","el","querySelectorAll","forEach","breadcrumb","setBreadcrumbMonochrome","setBackBreadcrumb","setLastParentCollapsedBackBreadcrumb","revertLastParentCollapsedBreadcrumb","setBackBreadcrumbAttr","classList","add","setAttribute","getLastParentBreadcrumb","allBreadcrumbs","length","setCollapsed","remove","renderCollapsedBreadcrumb","splice","filter","contains","collapsedBreadcrumbWrapper","_a","insertAdjacentElement","_b","clickHandler","setTimeout","addEventListener","transitionendHandler","setFocus","collapsedBreadcrumbEl","undefined","document","createElement","ariaLabel","id","innerText","className","ariaDescribed","append","event","propertyName","target","resizeObserverCallback","currSize","isSmallDevice","S","runResizeObserver","ResizeObserver","getCurrentDeviceSize","observe","watchBackBreadcrumbHandler","watchCollapsedHandler","watchMonochromeHandler","watchThemeHandler","componentWillLoad","checkResizeObserver","disconnectedCallback","removeEventListener","render","h","Host","key","class"],"sources":["src/components/ic-breadcrumb-group/ic-breadcrumb-group.css?tag=ic-breadcrumb-group&encapsulation=shadow","src/components/ic-breadcrumb-group/ic-breadcrumb-group.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n:host ol {\n display: flex;\n list-style-type: none;\n align-items: center;\n flex-wrap: wrap;\n padding: 0;\n margin: 0;\n}\n\n:host(.ic-breadcrumb-group-back) ol ::slotted(ic-breadcrumb) {\n display: none;\n}\n\n:host(.ic-breadcrumb-group-back) ol ::slotted(ic-breadcrumb.show) {\n display: flex;\n}\n\n:host(.ic-breadcrumb-group-collapsed) ol ::slotted(ic-breadcrumb.hide) {\n display: none;\n opacity: 0;\n visibility: hidden;\n}\n\n:host(.ic-breadcrumb-group-collapsed)\n ol\n ::slotted(ic-breadcrumb.visuallyhidden) {\n display: block;\n opacity: 0;\n transition: all var(--ic-easing-transition-slow);\n}\n\n:host(.ic-breadcrumb-group-collapsed) ol ::slotted(ic-breadcrumb.fade) {\n opacity: 1;\n}\n","import { Component, Host, h, Element, Prop, State, Watch } from \"@stencil/core\";\nimport {\n checkResizeObserver,\n DEVICE_SIZES,\n getCurrentDeviceSize,\n} from \"../../utils/helpers\";\nimport { IcThemeMode } from \"../../utils/types\";\n\n@Component({\n tag: \"ic-breadcrumb-group\",\n styleUrl: \"ic-breadcrumb-group.css\",\n shadow: true,\n})\n\n// Added ResizeObserver to find out width of breadcrumbs and parents. Use side navigation long title for ref.\nexport class BreadcrumbGroup {\n private ADD_CLASS_DELAY = 50;\n private IC_BREADCRUMB = \"ic-breadcrumb\";\n private SHOW_BACK_ICON = \"show-back-icon\";\n private collapsedBreadcrumbEl?: HTMLButtonElement;\n private collapsedBreadcrumbs: HTMLIcBreadcrumbElement[] = [];\n private collapsedBreadcrumbWrapper?: HTMLIcBreadcrumbElement;\n private resizeObserver: ResizeObserver | null = null;\n private lastParentBreadcrumb: HTMLIcBreadcrumbElement | null = null;\n\n @Element() el: HTMLIcBreadcrumbGroupElement;\n\n @State() deviceSize: number = DEVICE_SIZES.XL;\n\n /**\n * If `true`, display only a single breadcrumb for the parent page with a back icon.\n */\n @Prop() backBreadcrumbOnly = false;\n @Watch(\"backBreadcrumbOnly\")\n watchBackBreadcrumbHandler(): void {\n this.setBackBreadcrumb();\n }\n\n /**\n * If `true`, all breadcrumbs between the first and last breadcrumb will be collapsed.\n */\n @Prop({ mutable: true }) collapsed = false;\n @Watch(\"collapsed\")\n watchCollapsedHandler(): void {\n this.setCollapsed();\n }\n\n /**\n * If `true`, the breadcrumb group will display as black in the light theme, and white in the dark theme.\n */\n @Prop() monochrome = false;\n @Watch(\"monochrome\")\n watchMonochromeHandler(): void {\n this.setBreadcrumbMonochrome();\n }\n\n /**\n * Sets the theme color to the dark or light theme color. \"inherit\" will set the color based on the system settings or ic-theme component.\n */\n @Prop() theme: IcThemeMode = \"inherit\";\n @Watch(\"theme\")\n watchThemeHandler(): void {\n this.setBreadcrumbTheme();\n }\n\n componentWillLoad(): void {\n this.setBreadcrumbTheme();\n this.setBreadcrumbMonochrome();\n\n if (this.backBreadcrumbOnly) {\n this.setBackBreadcrumb();\n } else {\n checkResizeObserver(this.runResizeObserver);\n }\n\n if (\n this.collapsed &&\n this.el.querySelectorAll(this.IC_BREADCRUMB).length > 2\n ) {\n if (getCurrentDeviceSize() === DEVICE_SIZES.S) {\n this.setLastParentCollapsedBackBreadcrumb();\n } else {\n this.setCollapsed();\n }\n }\n\n this.lastParentBreadcrumb = this.getLastParentBreadcrumb();\n }\n\n disconnectedCallback(): void {\n this.lastParentBreadcrumb?.removeEventListener(\n \"transitionend\",\n this.transitionendHandler\n );\n\n this.collapsedBreadcrumbEl?.removeEventListener(\"click\", this.clickHandler);\n }\n\n private setBreadcrumbTheme = () => {\n Array.from(\n this.el.querySelectorAll<HTMLIcBreadcrumbElement>(this.IC_BREADCRUMB)\n ).forEach((breadcrumb) => {\n breadcrumb.theme = this.theme;\n });\n };\n\n private setBreadcrumbMonochrome = () => {\n Array.from(\n this.el.querySelectorAll<HTMLIcBreadcrumbElement>(this.IC_BREADCRUMB)\n ).forEach((breadcrumb) => {\n breadcrumb.monochrome = this.monochrome;\n });\n };\n\n private setBackBreadcrumb = () => {\n if (this.backBreadcrumbOnly) {\n this.setLastParentCollapsedBackBreadcrumb();\n } else {\n this.revertLastParentCollapsedBreadcrumb();\n }\n };\n\n private setBackBreadcrumbAttr = () => {\n if (this.lastParentBreadcrumb) {\n this.lastParentBreadcrumb.classList.add(\"show\");\n this.lastParentBreadcrumb.setAttribute(this.SHOW_BACK_ICON, \"true\");\n }\n };\n\n private getLastParentBreadcrumb = (): HTMLIcBreadcrumbElement | null => {\n const allBreadcrumbs = this.el.querySelectorAll<HTMLIcBreadcrumbElement>(\n this.IC_BREADCRUMB\n );\n\n return allBreadcrumbs.length > 1\n ? allBreadcrumbs[allBreadcrumbs.length - 2]\n : null;\n };\n\n private setCollapsed = () => {\n this.collapsedBreadcrumbs.forEach((breadcrumb) => {\n breadcrumb.classList.remove(\"visuallyhidden\");\n breadcrumb.classList.remove(\"fade\");\n });\n\n if (this.collapsed) {\n this.renderCollapsedBreadcrumb();\n const allBreadcrumbs = Array.from(\n this.el.querySelectorAll<HTMLIcBreadcrumbElement>(this.IC_BREADCRUMB)\n );\n\n this.collapsedBreadcrumbs = allBreadcrumbs\n .splice(1, allBreadcrumbs.length - 2)\n .filter(\n (breadcrumb) =>\n !breadcrumb.classList.contains(\"collapsed-breadcrumb-wrapper\")\n );\n if (!this.backBreadcrumbOnly) {\n this.collapsedBreadcrumbs.forEach((breadcrumb) =>\n breadcrumb.classList.add(\"hide\")\n );\n }\n\n if (this.collapsedBreadcrumbWrapper) {\n allBreadcrumbs[0]?.insertAdjacentElement(\n \"afterend\",\n this.collapsedBreadcrumbWrapper\n );\n }\n } else {\n this.collapsedBreadcrumbWrapper?.remove();\n }\n };\n\n private clickHandler = () => {\n this.collapsedBreadcrumbWrapper?.remove();\n this.collapsedBreadcrumbs.forEach((breadcrumb) => {\n breadcrumb.classList.add(\"visuallyhidden\");\n breadcrumb.classList.remove(\"hide\");\n setTimeout(() => {\n breadcrumb.classList.add(\"fade\");\n }, this.ADD_CLASS_DELAY);\n\n breadcrumb.addEventListener(\"transitionend\", this.transitionendHandler);\n });\n this.collapsed = false;\n // Set focus to first unhidden breadcrumb\n this.collapsedBreadcrumbs[0].setFocus();\n };\n\n private renderCollapsedBreadcrumb = () => {\n if (this.collapsedBreadcrumbEl === undefined) {\n this.collapsedBreadcrumbWrapper = document.createElement(\"ic-breadcrumb\");\n this.collapsedBreadcrumbWrapper.classList.add(\n \"collapsed-breadcrumb-wrapper\"\n );\n this.collapsedBreadcrumbEl = document.createElement(\"button\");\n\n const ariaLabel = document.createElement(\"span\");\n ariaLabel.id = \"collapsed-button-label\";\n ariaLabel.innerText = \"Collapsed breadcrumbs\";\n ariaLabel.className = \"hide\";\n this.collapsedBreadcrumbEl.setAttribute(\"aria-labelledby\", ariaLabel.id);\n\n const ariaDescribed = document.createElement(\"span\");\n ariaDescribed.id = \"collapsed-button-described\";\n ariaDescribed.innerText = \"Select to view collapsed breadcrumbs\";\n ariaDescribed.className = \"hide\";\n this.collapsedBreadcrumbEl.setAttribute(\n \"aria-describedby\",\n ariaDescribed.id\n );\n\n this.collapsedBreadcrumbEl.id = \"collapsed-ellipsis\";\n this.collapsedBreadcrumbEl.innerText = \"...\";\n this.collapsedBreadcrumbEl.classList.add(\"collapsed-breadcrumb\");\n this.collapsedBreadcrumbEl.addEventListener(\"click\", this.clickHandler);\n\n this.collapsedBreadcrumbWrapper.append(ariaDescribed);\n this.collapsedBreadcrumbWrapper.append(ariaLabel);\n this.collapsedBreadcrumbWrapper.append(this.collapsedBreadcrumbEl);\n }\n };\n\n private transitionendHandler = (event: TransitionEvent) => {\n if (event.propertyName === \"opacity\") {\n (event.target as HTMLElement).classList.remove(\"visuallyhidden\");\n }\n };\n\n private setLastParentCollapsedBackBreadcrumb = () => {\n this.lastParentBreadcrumb = this.getLastParentBreadcrumb();\n this.setBackBreadcrumbAttr();\n if (this.lastParentBreadcrumb) {\n this.lastParentBreadcrumb.classList.remove(\"hide\");\n this.lastParentBreadcrumb.classList.add(\"show\");\n }\n };\n\n private revertLastParentCollapsedBreadcrumb = () => {\n if (this.lastParentBreadcrumb) {\n this.lastParentBreadcrumb.setAttribute(this.SHOW_BACK_ICON, \"false\");\n if (this.collapsed) {\n this.lastParentBreadcrumb.classList.add(\"hide\");\n }\n }\n };\n\n private resizeObserverCallback = (currSize: number) => {\n if (currSize !== this.deviceSize) {\n this.deviceSize = currSize;\n\n const isSmallDevice = this.deviceSize <= DEVICE_SIZES.S;\n this.el.setAttribute(\"back-breadcrumb-only\", `${isSmallDevice}`);\n\n if (isSmallDevice) {\n if (this.collapsed) {\n this.setLastParentCollapsedBackBreadcrumb();\n } else {\n this.setBackBreadcrumb();\n }\n } else {\n const allBreadcrumbs = Array.from(\n this.el.querySelectorAll(this.IC_BREADCRUMB)\n );\n\n if (this.collapsed && allBreadcrumbs.length > 2) {\n this.revertLastParentCollapsedBreadcrumb();\n this.setCollapsed();\n } else {\n allBreadcrumbs.forEach((breadcrumb) => {\n breadcrumb.setAttribute(this.SHOW_BACK_ICON, \"false\");\n });\n }\n }\n }\n };\n\n private runResizeObserver = () => {\n this.resizeObserver = new ResizeObserver(() => {\n this.resizeObserverCallback(getCurrentDeviceSize());\n });\n\n this.resizeObserver.observe(this.el);\n };\n\n render() {\n const { backBreadcrumbOnly, collapsed, theme } = this;\n\n return (\n <Host\n class={{\n \"ic-breadcrumb-group-back\": backBreadcrumbOnly,\n \"ic-breadcrumb-group-collapsed\": collapsed,\n [`ic-theme-${theme}`]: theme !== \"inherit\",\n }}\n >\n <nav aria-label=\"breadcrumbs\">\n <ol>\n <slot />\n </ol>\n </nav>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"names":["icBreadcrumbGroupCss","IcBreadcrumbGroupStyle0","BreadcrumbGroup","constructor","hostRef","this","ADD_CLASS_DELAY","IC_BREADCRUMB","SHOW_BACK_ICON","collapsedBreadcrumbs","resizeObserver","lastParentBreadcrumb","deviceSize","DEVICE_SIZES","XL","backBreadcrumbOnly","collapsed","monochrome","theme","setBreadcrumbTheme","Array","from","el","querySelectorAll","forEach","breadcrumb","setBreadcrumbMonochrome","setBackBreadcrumb","setLastParentCollapsedBackBreadcrumb","revertLastParentCollapsedBreadcrumb","setBackBreadcrumbAttr","classList","add","setAttribute","getLastParentBreadcrumb","allBreadcrumbs","length","setCollapsed","remove","renderCollapsedBreadcrumb","splice","filter","contains","collapsedBreadcrumbWrapper","_a","insertAdjacentElement","_b","clickHandler","setTimeout","addEventListener","transitionendHandler","setFocus","collapsedBreadcrumbEl","undefined","document","createElement","ariaLabel","id","innerText","className","ariaDescribed","append","event","propertyName","target","resizeObserverCallback","currSize","isSmallDevice","S","runResizeObserver","ResizeObserver","getCurrentDeviceSize","observe","watchBackBreadcrumbHandler","watchCollapsedHandler","watchMonochromeHandler","watchThemeHandler","componentWillLoad","checkResizeObserver","disconnectedCallback","removeEventListener","render","h","Host","key","class"],"sources":["src/components/ic-breadcrumb-group/ic-breadcrumb-group.css?tag=ic-breadcrumb-group&encapsulation=shadow","src/components/ic-breadcrumb-group/ic-breadcrumb-group.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n:host ol {\n display: flex;\n list-style-type: none;\n align-items: center;\n flex-wrap: wrap;\n padding: 0;\n margin: 0;\n}\n\n:host(.ic-breadcrumb-group-back) ol ::slotted(ic-breadcrumb) {\n display: none;\n}\n\n:host(.ic-breadcrumb-group-back) ol ::slotted(ic-breadcrumb.show) {\n display: flex;\n}\n\n:host(.ic-breadcrumb-group-collapsed) ol ::slotted(ic-breadcrumb.hide) {\n display: none;\n opacity: 0;\n visibility: hidden;\n}\n\n:host(.ic-breadcrumb-group-collapsed)\n ol\n ::slotted(ic-breadcrumb.visuallyhidden) {\n display: block;\n opacity: 0;\n transition: all var(--ic-easing-transition-slow);\n}\n\n:host(.ic-breadcrumb-group-collapsed) ol ::slotted(ic-breadcrumb.fade) {\n opacity: 1;\n}\n","import { Component, Host, h, Element, Prop, State, Watch } from \"@stencil/core\";\nimport {\n checkResizeObserver,\n DEVICE_SIZES,\n getCurrentDeviceSize,\n} from \"../../utils/helpers\";\nimport { IcThemeMode } from \"../../utils/types\";\n\n@Component({\n tag: \"ic-breadcrumb-group\",\n styleUrl: \"ic-breadcrumb-group.css\",\n shadow: true,\n})\n\n// Added ResizeObserver to find out width of breadcrumbs and parents. Use side navigation long title for ref.\nexport class BreadcrumbGroup {\n private ADD_CLASS_DELAY = 50;\n private IC_BREADCRUMB = \"ic-breadcrumb\";\n private SHOW_BACK_ICON = \"show-back-icon\";\n private collapsedBreadcrumbEl?: HTMLButtonElement;\n private collapsedBreadcrumbs: HTMLIcBreadcrumbElement[] = [];\n private collapsedBreadcrumbWrapper?: HTMLIcBreadcrumbElement;\n private resizeObserver: ResizeObserver | null = null;\n private lastParentBreadcrumb: HTMLIcBreadcrumbElement | null = null;\n\n @Element() el: HTMLIcBreadcrumbGroupElement;\n\n @State() deviceSize: number = DEVICE_SIZES.XL;\n\n /**\n * If `true`, display only a single breadcrumb for the parent page with a back icon.\n */\n @Prop() backBreadcrumbOnly = false;\n @Watch(\"backBreadcrumbOnly\")\n watchBackBreadcrumbHandler(): void {\n this.setBackBreadcrumb();\n }\n\n /**\n * If `true`, all breadcrumbs between the first and last breadcrumb will be collapsed.\n */\n @Prop({ mutable: true }) collapsed = false;\n @Watch(\"collapsed\")\n watchCollapsedHandler(): void {\n this.setCollapsed();\n }\n\n /**\n * If `true`, the breadcrumb group will display as black in the light theme, and white in the dark theme.\n */\n @Prop() monochrome = false;\n @Watch(\"monochrome\")\n watchMonochromeHandler(): void {\n this.setBreadcrumbMonochrome();\n }\n\n /**\n * Sets the theme color to the dark or light theme color. \"inherit\" will set the color based on the system settings or ic-theme component.\n */\n @Prop() theme: IcThemeMode = \"inherit\";\n @Watch(\"theme\")\n watchThemeHandler(): void {\n this.setBreadcrumbTheme();\n }\n\n componentWillLoad(): void {\n this.setBreadcrumbTheme();\n this.setBreadcrumbMonochrome();\n\n if (this.backBreadcrumbOnly) {\n this.setBackBreadcrumb();\n } else {\n checkResizeObserver(this.runResizeObserver);\n }\n\n if (\n this.collapsed &&\n this.el.querySelectorAll(this.IC_BREADCRUMB).length > 2\n ) {\n if (getCurrentDeviceSize() === DEVICE_SIZES.S) {\n this.setLastParentCollapsedBackBreadcrumb();\n } else {\n this.setCollapsed();\n }\n }\n\n this.lastParentBreadcrumb = this.getLastParentBreadcrumb();\n }\n\n disconnectedCallback(): void {\n this.lastParentBreadcrumb?.removeEventListener(\n \"transitionend\",\n this.transitionendHandler\n );\n\n this.collapsedBreadcrumbEl?.removeEventListener(\"click\", this.clickHandler);\n }\n\n private setBreadcrumbTheme = () => {\n Array.from(\n this.el.querySelectorAll<HTMLIcBreadcrumbElement>(this.IC_BREADCRUMB)\n ).forEach((breadcrumb) => {\n breadcrumb.theme = this.theme;\n });\n };\n\n private setBreadcrumbMonochrome = () => {\n Array.from(\n this.el.querySelectorAll<HTMLIcBreadcrumbElement>(this.IC_BREADCRUMB)\n ).forEach((breadcrumb) => {\n breadcrumb.monochrome = this.monochrome;\n });\n };\n\n private setBackBreadcrumb = () => {\n if (this.backBreadcrumbOnly) {\n this.setLastParentCollapsedBackBreadcrumb();\n } else {\n this.revertLastParentCollapsedBreadcrumb();\n }\n };\n\n private setBackBreadcrumbAttr = () => {\n if (this.lastParentBreadcrumb) {\n this.lastParentBreadcrumb.classList.add(\"show\");\n this.lastParentBreadcrumb.setAttribute(this.SHOW_BACK_ICON, \"true\");\n }\n };\n\n private getLastParentBreadcrumb = (): HTMLIcBreadcrumbElement | null => {\n const allBreadcrumbs = this.el.querySelectorAll<HTMLIcBreadcrumbElement>(\n this.IC_BREADCRUMB\n );\n\n return allBreadcrumbs.length > 1\n ? allBreadcrumbs[allBreadcrumbs.length - 2]\n : null;\n };\n\n private setCollapsed = () => {\n this.collapsedBreadcrumbs.forEach((breadcrumb) => {\n breadcrumb.classList.remove(\"visuallyhidden\");\n breadcrumb.classList.remove(\"fade\");\n });\n\n if (this.collapsed) {\n this.renderCollapsedBreadcrumb();\n const allBreadcrumbs = Array.from(\n this.el.querySelectorAll<HTMLIcBreadcrumbElement>(this.IC_BREADCRUMB)\n );\n\n this.collapsedBreadcrumbs = allBreadcrumbs\n .splice(1, allBreadcrumbs.length - 2)\n .filter(\n (breadcrumb) =>\n !breadcrumb.classList.contains(\"collapsed-breadcrumb-wrapper\")\n );\n if (!this.backBreadcrumbOnly) {\n this.collapsedBreadcrumbs.forEach((breadcrumb) =>\n breadcrumb.classList.add(\"hide\")\n );\n }\n\n if (this.collapsedBreadcrumbWrapper) {\n allBreadcrumbs[0]?.insertAdjacentElement(\n \"afterend\",\n this.collapsedBreadcrumbWrapper\n );\n }\n } else {\n this.collapsedBreadcrumbWrapper?.remove();\n }\n };\n\n private clickHandler = () => {\n this.collapsedBreadcrumbWrapper?.remove();\n this.collapsedBreadcrumbs.forEach((breadcrumb) => {\n breadcrumb.classList.add(\"visuallyhidden\");\n breadcrumb.classList.remove(\"hide\");\n setTimeout(() => {\n breadcrumb.classList.add(\"fade\");\n }, this.ADD_CLASS_DELAY);\n\n breadcrumb.addEventListener(\"transitionend\", this.transitionendHandler);\n });\n this.collapsed = false;\n // Set focus to first unhidden breadcrumb\n this.collapsedBreadcrumbs[0].setFocus();\n };\n\n private renderCollapsedBreadcrumb = () => {\n if (this.collapsedBreadcrumbEl === undefined) {\n this.collapsedBreadcrumbWrapper = document.createElement(\"ic-breadcrumb\");\n this.collapsedBreadcrumbWrapper.classList.add(\n \"collapsed-breadcrumb-wrapper\"\n );\n this.collapsedBreadcrumbEl = document.createElement(\"button\");\n\n const ariaLabel = document.createElement(\"span\");\n ariaLabel.id = \"collapsed-button-label\";\n ariaLabel.innerText = \"Collapsed breadcrumbs\";\n ariaLabel.className = \"hide\";\n this.collapsedBreadcrumbEl.setAttribute(\"aria-labelledby\", ariaLabel.id);\n\n const ariaDescribed = document.createElement(\"span\");\n ariaDescribed.id = \"collapsed-button-described\";\n ariaDescribed.innerText = \"Select to view collapsed breadcrumbs\";\n ariaDescribed.className = \"hide\";\n this.collapsedBreadcrumbEl.setAttribute(\n \"aria-describedby\",\n ariaDescribed.id\n );\n\n this.collapsedBreadcrumbEl.id = \"collapsed-ellipsis\";\n this.collapsedBreadcrumbEl.innerText = \"...\";\n this.collapsedBreadcrumbEl.classList.add(\"collapsed-breadcrumb\");\n this.collapsedBreadcrumbEl.addEventListener(\"click\", this.clickHandler);\n\n this.collapsedBreadcrumbWrapper.append(ariaDescribed);\n this.collapsedBreadcrumbWrapper.append(ariaLabel);\n this.collapsedBreadcrumbWrapper.append(this.collapsedBreadcrumbEl);\n }\n };\n\n private transitionendHandler = (event: TransitionEvent) => {\n if (event.propertyName === \"opacity\") {\n (event.target as HTMLElement).classList.remove(\"visuallyhidden\");\n }\n };\n\n private setLastParentCollapsedBackBreadcrumb = () => {\n this.lastParentBreadcrumb = this.getLastParentBreadcrumb();\n this.setBackBreadcrumbAttr();\n if (this.lastParentBreadcrumb) {\n this.lastParentBreadcrumb.classList.remove(\"hide\");\n this.lastParentBreadcrumb.classList.add(\"show\");\n }\n };\n\n private revertLastParentCollapsedBreadcrumb = () => {\n if (this.lastParentBreadcrumb) {\n this.lastParentBreadcrumb.setAttribute(this.SHOW_BACK_ICON, \"false\");\n if (this.collapsed) {\n this.lastParentBreadcrumb.classList.add(\"hide\");\n }\n }\n };\n\n private resizeObserverCallback = (currSize: number) => {\n if (currSize !== this.deviceSize) {\n this.deviceSize = currSize;\n\n const isSmallDevice = this.deviceSize <= DEVICE_SIZES.S;\n this.el.setAttribute(\"back-breadcrumb-only\", `${isSmallDevice}`);\n\n if (isSmallDevice) {\n if (this.collapsed) {\n this.setLastParentCollapsedBackBreadcrumb();\n } else {\n this.setBackBreadcrumb();\n }\n } else {\n const allBreadcrumbs = Array.from(\n this.el.querySelectorAll(this.IC_BREADCRUMB)\n );\n\n if (this.collapsed && allBreadcrumbs.length > 2) {\n this.revertLastParentCollapsedBreadcrumb();\n this.setCollapsed();\n } else {\n allBreadcrumbs.forEach((breadcrumb) => {\n breadcrumb.setAttribute(this.SHOW_BACK_ICON, \"false\");\n });\n }\n }\n }\n };\n\n private runResizeObserver = () => {\n this.resizeObserver = new ResizeObserver(() => {\n this.resizeObserverCallback(getCurrentDeviceSize());\n });\n\n this.resizeObserver.observe(this.el);\n };\n\n render() {\n const { backBreadcrumbOnly, collapsed, theme } = this;\n\n return (\n <Host\n class={{\n \"ic-breadcrumb-group-back\": backBreadcrumbOnly,\n \"ic-breadcrumb-group-collapsed\": collapsed,\n [`ic-theme-${theme}`]: theme !== \"inherit\",\n }}\n >\n <nav aria-label=\"breadcrumbs\">\n <ol>\n <slot />\n </ol>\n </nav>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
@@ -0,0 +1,2 @@
|
|
1
|
+
import{r as t,c as i,h as e,H as s,g as a}from"./p-8e4e97b4.js";import{r as o,o as n}from"./p-6ceedfa8.js";import"./p-641c26c4.js";const h=`<svg width="8" height="10" viewBox="0 0 8 10" fill="none" xmlns="http://www.w3.org/2000/svg">\n<path d="M2.08748 0L0.912476 1.175L4.72914 5L0.912476 8.825L2.08748 10L7.08748 5L2.08748 0Z" fill="currentColor"/>\n</svg>\n`;const r=`<svg width="12" height="10" viewBox="0 0 12 10" fill="none" xmlns="http://www.w3.org/2000/svg">\n<path d="M11.1709 8.825L7.34589 5L11.1709 1.175L9.99589 0L4.99589 5L9.99589 10L11.1709 8.825ZM0.829224 0H2.49589V10H0.829224V0Z" fill="currentColour"/>\n</svg>`;const l='/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%;}body{margin:0}main{display:block}h1{font-size:2em;margin:0.67em 0}hr{box-sizing:content-box;height:0;overflow:visible;}pre{font-family:monospace, monospace;font-size:1em;}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace, monospace;font-size:1em;}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0;}button,input{overflow:visible}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:0.35em 0.75em 0.625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal;}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0;}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px;}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit;}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font-style:inherit;vertical-align:baseline}:host{box-sizing:border-box;width:100%;display:flex;justify-content:center}nav{width:100%;display:flex;flex-flow:row wrap;justify-content:flex-start;align-items:center}ic-button{cursor:pointer}ic-button.next-previous{--icon-width:var(--ic-space-xs);--icon-height:calc(var(--ic-space-xs) + var(--ic-space-xxxs));padding:0 var(--ic-space-xxs) 0 var(--ic-space-xxxs)}ic-button.first-last{--icon-width:calc(var(--ic-space-sm) + var(--ic-space-xxxs));--icon-height:calc(var(--ic-space-xs) + var(--ic-space-xxxs))}ic-button.first-last::part(button),ic-button.next-previous::part(button){color:var(--ic-pagination-chevron)}:host(.ic-pagination-monochrome) ic-button.first-last::part(button),:host(.ic-pagination-monochrome) ic-button.next-previous::part(button){color:var(--ic-pagination-chevron-monochrome)}ic-button.ic-button-disabled.first-last::part(button),ic-button.ic-button-disabled.next-previous::part(button),:host(.ic-pagination-monochrome) ic-button.ic-button-disabled.first-last::part(button),:host(.ic-pagination-monochrome) ic-button.ic-button-disabled.next-previous::part(button){color:var(--ic-pagination-chevron-disabled)}.disabled{color:var(--ic-color-text-disabled-mid);pointer-events:none;cursor:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.hide-current-page{display:none}.sr-only{position:absolute;left:-9999px}.sr-only:dir(rtl){right:-9999px}';const c=l;const d=class{constructor(s){t(this,s);this.icPageChange=i(this,"icPageChange",7);this.endEllipsis=false;this.endItems=[];this.midItems=[];this.startEllipsis=false;this.startItems=[];this.adjacentPageCount=1;this.boundaryPageCount=1;this.defaultPage=1;this.disabled=false;this.hideCurrentPage=false;this.hideFirstAndLastPageButton=false;this.label="Page";this.monochrome=false;this.theme="inherit";this.type="simple";this.currentPage=this.defaultPage;this.handleClickFirst=()=>{this.currentPage=1;this.icPageChange.emit({value:this.currentPage})};this.handleClickPrevious=()=>{this.currentPage--;this.icPageChange.emit({value:this.currentPage})};this.handleClickNext=()=>{this.currentPage++;this.icPageChange.emit({value:this.currentPage})};this.handleClickLast=()=>{this.currentPage=this.pages;this.icPageChange.emit({value:this.currentPage})};this.firstButton=()=>e("ic-button",{id:"first-page-button","aria-label":"Go to first page",theme:this.theme,onClick:this.handleClickFirst,class:"page-button first-last",disabled:this.currentPage===1||this.disabled,variant:"icon-tertiary",monochrome:this.theme=="light"||this.theme=="dark",innerHTML:r});this.previousButton=()=>e("ic-button",{id:"previous-page-button","aria-label":"Go to previous page",theme:this.theme,onClick:this.handleClickPrevious,class:"page-button next-previous flip",disabled:this.currentPage===1||this.disabled,variant:"icon-tertiary",monochrome:this.theme=="light"||this.theme=="dark",innerHTML:h});this.nextButton=()=>e("ic-button",{id:"next-page-button","aria-label":"Go to next page",theme:this.theme,onClick:this.handleClickNext,class:"page-button next-previous",disabled:this.currentPage===this.pages||this.disabled,variant:"icon-tertiary",monochrome:this.theme=="light"||this.theme=="dark",innerHTML:h});this.lastButton=()=>e("ic-button",{id:"last-page-button","aria-label":"Go to last page",theme:this.theme,onClick:this.handleClickLast,class:"page-button first-last flip",disabled:this.currentPage===this.pages||this.disabled,variant:"icon-tertiary",monochrome:this.theme=="light"||this.theme=="dark",innerHTML:r});this.renderStartEllipsis=()=>e("ic-pagination-item",{theme:this.theme,monochrome:this.monochrome,type:"ellipsis",id:"start-ellipsis",disabled:this.disabled});this.renderEndEllipsis=()=>e("ic-pagination-item",{theme:this.theme,monochrome:this.monochrome,type:"ellipsis",id:"end-ellipsis",disabled:this.disabled});this.renderStartItems=()=>this.startItems.map((t=>e("ic-pagination-item",{theme:this.theme,monochrome:this.monochrome,selected:t===this.currentPage,id:`pagination-item-${t}`,type:"page",page:t,disabled:this.disabled})));this.renderEndItems=()=>this.endItems.map((t=>e("ic-pagination-item",{theme:this.theme,monochrome:this.monochrome,selected:t===this.currentPage,id:`pagination-item-${t}`,type:"page",page:t,disabled:this.disabled})));this.renderMiddleItems=()=>this.midItems.map((t=>e("ic-pagination-item",{theme:this.theme,monochrome:this.monochrome,selected:t===this.currentPage,id:`pagination-item-${t}`,type:"page",page:t,disabled:this.disabled})))}watchAdjacentPageCountHandler(){if(this.adjacentPageCount>2){this.adjacentPageCount=2}}watchBoundaryPageCountHandler(){if(this.boundaryPageCount>2){this.boundaryPageCount=2}}watchDisabledHandler(){o(this.disabled,this.el)}watchNumberPagesHandler(){this.watchPageChangeHandler()}watchTypeHandler(){this.watchPageChangeHandler()}watchPageChangeHandler(){if(this.type==="simple"){return}this.startEllipsis=false;this.endEllipsis=false;this.startItems=[];this.endItems=[];this.midItems=[];const t=[];let i=0;const e=[];let s=this.pages;const a=[];let o;let n;let h=false;let r=false;if(this.pages<=this.boundaryPageCount*2+this.adjacentPageCount*2+3){this.startEllipsis=false;this.endEllipsis=false;for(let i=1;i<=this.pages;i++){t.push(i)}this.startItems=t;return}i=this.boundaryPageCount===0?1:this.boundaryPageCount;s=this.boundaryPageCount===0?this.pages:this.pages-this.boundaryPageCount+1;if(this.currentPage<=this.adjacentPageCount+this.boundaryPageCount+2){h=false;r=true;let t=2*this.adjacentPageCount+1;if(this.boundaryPageCount===0){t--}o=i+1;n=o+t}else{h=true;if(this.currentPage>this.pages-(this.adjacentPageCount+this.boundaryPageCount+2)){let t=2*this.adjacentPageCount+1;if(this.boundaryPageCount===0){t--}n=this.boundaryPageCount===0?this.pages-1:this.pages-this.boundaryPageCount;o=n-t}else{r=true;o=this.currentPage-this.adjacentPageCount;n=this.currentPage+this.adjacentPageCount}}if(this.boundaryPageCount>0||this.boundaryPageCount===0&&h===false){for(let e=1;e<=i;e++){t.push(e)}}if(this.boundaryPageCount>0||this.boundaryPageCount===0&&r===false){for(let t=s;t<=this.pages;t++){e.push(t)}}for(let t=o;t<=n;t++){a.push(t)}this.startEllipsis=h;this.endEllipsis=r;this.startItems=t;this.endItems=e;this.midItems=a}componentWillLoad(){this.watchPageChangeHandler();this.watchBoundaryPageCountHandler();this.watchAdjacentPageCountHandler();o(this.disabled,this.el)}componentDidLoad(){n([{prop:this.pages,propName:"pages"}],"Pagination")}paginationItemClickHandler(t){const i=t.detail.page;this.currentPage=i;this.icPageChange.emit({value:this.currentPage})}async setCurrentPage(t){if(typeof t==="number"&&t>0&&t<=this.pages){this.currentPage=t}else{console.error("Current page must be a number greater than zero but less than or equal to the total number of pages")}}render(){const{type:t,currentPage:i,hideCurrentPage:a,disabled:o,hideFirstAndLastPageButton:n,label:h,theme:r,monochrome:l}=this;return e(s,{key:"fb99bef90dd70acdcc38a49c5ead06d6d8351ed4",class:{[`ic-theme-${r}`]:r!=="inherit",["ic-pagination-monochrome"]:!!l}},t==="simple"&&e("nav",{key:"5134a43228fbd8a137fd3e34607a1139bc09c9cc",class:{["disabled"]:!!o},role:"navigation","aria-label":"Pagination Navigation"},n?null:this.firstButton(),this.previousButton(),e("ic-pagination-item",{key:"911c4ad52e99e400db64354740ebcc8f8fbed41b",theme:this.theme,monochrome:this.monochrome,type:"simple-current",page:i,label:h,class:{["hide-current-page"]:!!a},disabled:o}),this.nextButton(),n?null:this.lastButton()),t==="complex"&&e("nav",{key:"9e803dc371d2ae0a6de0bb82fca25a8d4ad2cdb1",class:{["disabled"]:!!o},role:"navigation","aria-label":"Pagination Navigation"},n?null:this.firstButton(),this.previousButton(),this.renderStartItems(),this.startEllipsis&&this.renderStartEllipsis(),this.renderMiddleItems(),this.endEllipsis&&this.renderEndEllipsis(),this.renderEndItems(),this.nextButton(),n?null:this.lastButton()),t==="complex"&&e("span",{key:"61a05ee70fe739149339df6527a8aca0613ce56f",class:"sr-only","aria-live":"polite"},"Page ",this.currentPage))}get el(){return a(this)}static get watchers(){return{adjacentPageCount:["watchAdjacentPageCountHandler"],boundaryPageCount:["watchBoundaryPageCountHandler"],disabled:["watchDisabledHandler"],pages:["watchNumberPagesHandler"],type:["watchTypeHandler"],currentPage:["watchPageChangeHandler"]}}};d.style=c;export{d as ic_pagination};
|
2
|
+
//# sourceMappingURL=p-f045f59d.entry.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["icPaginationCss","IcPaginationStyle0","Pagination","constructor","hostRef","this","endEllipsis","endItems","midItems","startEllipsis","startItems","adjacentPageCount","boundaryPageCount","defaultPage","disabled","hideCurrentPage","hideFirstAndLastPageButton","label","monochrome","theme","type","currentPage","handleClickFirst","icPageChange","emit","value","handleClickPrevious","handleClickNext","handleClickLast","pages","firstButton","h","id","onClick","class","variant","innerHTML","paginationFirstLast","previousButton","paginationNextPrevious","nextButton","lastButton","renderStartEllipsis","renderEndEllipsis","renderStartItems","map","page","selected","renderEndItems","renderMiddleItems","watchAdjacentPageCountHandler","watchBoundaryPageCountHandler","watchDisabledHandler","removeDisabledFalse","el","watchNumberPagesHandler","watchPageChangeHandler","watchTypeHandler","startItemCount","endStart","midStart","midEnd","i","push","numItems","componentWillLoad","componentDidLoad","onComponentRequiredPropUndefined","prop","propName","paginationItemClickHandler","ev","detail","setCurrentPage","console","error","render","Host","key","role"],"sources":["src/components/ic-pagination/ic-pagination.css?tag=ic-pagination&encapsulation=shadow","src/components/ic-pagination/ic-pagination.tsx"],"sourcesContent":["@import \"../../global/normalize.css\";\n\n:host {\n box-sizing: border-box;\n width: 100%;\n display: flex;\n justify-content: center;\n}\n\nnav {\n width: 100%;\n display: flex;\n flex-flow: row wrap;\n justify-content: flex-start;\n align-items: center;\n}\n\nic-button {\n cursor: pointer;\n}\n\nic-button.next-previous {\n --icon-width: var(--ic-space-xs);\n --icon-height: calc(var(--ic-space-xs) + var(--ic-space-xxxs));\n\n padding: 0 var(--ic-space-xxs) 0 var(--ic-space-xxxs);\n}\n\nic-button.first-last {\n --icon-width: calc(var(--ic-space-sm) + var(--ic-space-xxxs));\n --icon-height: calc(var(--ic-space-xs) + var(--ic-space-xxxs));\n}\n\nic-button.first-last::part(button),\nic-button.next-previous::part(button) {\n color: var(--ic-pagination-chevron);\n}\n\n:host(.ic-pagination-monochrome) ic-button.first-last::part(button),\n:host(.ic-pagination-monochrome) ic-button.next-previous::part(button) {\n color: var(--ic-pagination-chevron-monochrome);\n}\n\nic-button.ic-button-disabled.first-last::part(button),\nic-button.ic-button-disabled.next-previous::part(button),\n:host(.ic-pagination-monochrome)\n ic-button.ic-button-disabled.first-last::part(button),\n:host(.ic-pagination-monochrome)\n ic-button.ic-button-disabled.next-previous::part(button) {\n color: var(--ic-pagination-chevron-disabled);\n}\n\n.disabled {\n color: var(--ic-color-text-disabled-mid);\n pointer-events: none;\n cursor: none;\n user-select: none;\n}\n\n.hide-current-page {\n display: none;\n}\n\n.sr-only {\n position: absolute;\n left: -9999px;\n}\n\n.sr-only:dir(rtl) {\n right: -9999px;\n}\n","import {\n Component,\n Element,\n Host,\n Prop,\n h,\n Listen,\n State,\n Watch,\n Event,\n EventEmitter,\n Method,\n} from \"@stencil/core\";\nimport paginationNextPrevious from \"../../assets/pagination-next-previous.svg\";\nimport paginationFirstLast from \"../../assets/pagination-first-last.svg\";\nimport { IcThemeMode } from \"../../utils/types\";\nimport { IcPaginationTypes, IcChangeEventDetail } from \"./ic-pagination.types\";\nimport {\n onComponentRequiredPropUndefined,\n removeDisabledFalse,\n} from \"../../utils/helpers\";\n\n@Component({\n tag: \"ic-pagination\",\n styleUrl: \"ic-pagination.css\",\n shadow: true,\n})\nexport class Pagination {\n @Element() el: HTMLIcPaginationElement;\n\n @State() endEllipsis: boolean = false;\n @State() endItems: number[] = [];\n @State() midItems: number[] = [];\n @State() startEllipsis: boolean = false;\n @State() startItems: number[] = [];\n\n /**\n * The number of pages displayed adjacent to the current page when using 'complex' type pagination. Accepted values are 0, 1 & 2.\n */\n @Prop({ mutable: true }) adjacentPageCount?: number = 1;\n\n @Watch(\"adjacentPageCount\")\n watchAdjacentPageCountHandler(): void {\n if (this.adjacentPageCount! > 2) {\n this.adjacentPageCount = 2;\n }\n }\n\n /**\n * The number of pages displayed as boundary items to the current page when using 'complex' type pagination. Accepted values are 0, 1 & 2.\n */\n @Prop({ mutable: true }) boundaryPageCount?: number = 1;\n\n @Watch(\"boundaryPageCount\")\n watchBoundaryPageCountHandler(): void {\n if (this.boundaryPageCount! > 2) {\n this.boundaryPageCount = 2;\n }\n }\n\n /**\n * The default page to display.\n */\n @Prop() defaultPage?: number = 1;\n\n /**\n * If `true`, the pagination will not allow interaction.\n */\n @Prop() disabled?: boolean = false;\n @Watch(\"disabled\")\n watchDisabledHandler(): void {\n removeDisabledFalse(this.disabled, this.el);\n }\n\n /**\n * If `true`, the current page of the simple pagination will not be displayed.\n */\n @Prop() hideCurrentPage?: boolean = false;\n\n /**\n * If `true`, the first and last page buttons will not be displayed.\n */\n @Prop() hideFirstAndLastPageButton?: boolean = false;\n\n /**\n * The label for the pagination item (applicable when simple pagination is being used).\n */\n @Prop() label?: string = \"Page\";\n\n /**\n * If `true`, the pagination will display as black in the light theme, and white in dark theme.\n */\n @Prop() monochrome?: boolean = false;\n\n /**\n * The total number of pages.\n */\n @Prop() pages!: number;\n\n @Watch(\"pages\")\n watchNumberPagesHandler(): void {\n this.watchPageChangeHandler();\n }\n\n /**\n * Sets the theme color to the dark or light theme color. \"inherit\" will set the color based on the system settings or ic-theme component.\n */\n @Prop() theme?: IcThemeMode = \"inherit\";\n\n /**\n * The type of pagination to be used.\n */\n @Prop() type?: IcPaginationTypes = \"simple\";\n\n @Watch(\"type\")\n watchTypeHandler(): void {\n this.watchPageChangeHandler();\n }\n\n /**\n * The current page displayed by the pagination.\n */\n @Prop({ mutable: true }) currentPage?: number = this.defaultPage;\n\n @Watch(\"currentPage\")\n watchPageChangeHandler(): void {\n if (this.type === \"simple\") {\n return;\n }\n\n this.startEllipsis = false;\n this.endEllipsis = false;\n this.startItems = [];\n this.endItems = [];\n this.midItems = [];\n\n const startItems = [];\n let startItemCount = 0;\n const endItems = [];\n let endStart = this.pages;\n const midItems = [];\n let midStart;\n let midEnd;\n let startEllipsis = false;\n let endEllipsis = false;\n\n if (\n this.pages <=\n this.boundaryPageCount! * 2 + this.adjacentPageCount! * 2 + 3\n ) {\n this.startEllipsis = false;\n this.endEllipsis = false;\n for (let i = 1; i <= this.pages; i++) {\n startItems.push(i);\n }\n this.startItems = startItems;\n return;\n }\n\n startItemCount = this.boundaryPageCount === 0 ? 1 : this.boundaryPageCount!;\n endStart =\n this.boundaryPageCount === 0\n ? this.pages\n : this.pages - this.boundaryPageCount! + 1;\n\n if (\n this.currentPage! <=\n this.adjacentPageCount! + this.boundaryPageCount! + 2\n ) {\n startEllipsis = false;\n endEllipsis = true;\n\n let numItems = 2 * this.adjacentPageCount! + 1;\n if (this.boundaryPageCount === 0) {\n numItems--;\n }\n midStart = startItemCount + 1;\n midEnd = midStart + numItems;\n } else {\n startEllipsis = true;\n if (\n this.currentPage! >\n this.pages - (this.adjacentPageCount! + this.boundaryPageCount! + 2)\n ) {\n let numItems = 2 * this.adjacentPageCount! + 1;\n if (this.boundaryPageCount === 0) {\n numItems--;\n }\n midEnd =\n this.boundaryPageCount === 0\n ? this.pages - 1\n : this.pages - this.boundaryPageCount!;\n midStart = midEnd - numItems;\n } else {\n endEllipsis = true;\n midStart = this.currentPage! - this.adjacentPageCount!;\n midEnd = this.currentPage! + this.adjacentPageCount!;\n }\n }\n\n //create array of start items\n if (\n this.boundaryPageCount! > 0 ||\n (this.boundaryPageCount === 0 && startEllipsis === false)\n ) {\n for (let i = 1; i <= startItemCount; i++) {\n startItems.push(i);\n }\n }\n\n //create array of end items\n if (\n this.boundaryPageCount! > 0 ||\n (this.boundaryPageCount === 0 && endEllipsis === false)\n ) {\n for (let i = endStart; i <= this.pages; i++) {\n endItems.push(i);\n }\n }\n\n //create array of mid items\n for (let i = midStart; i <= midEnd; i++) {\n midItems.push(i);\n }\n\n this.startEllipsis = startEllipsis;\n this.endEllipsis = endEllipsis;\n this.startItems = startItems;\n this.endItems = endItems;\n this.midItems = midItems;\n }\n\n /**\n * Emitted when a page is selected.\n */\n @Event() icPageChange: EventEmitter<IcChangeEventDetail>;\n\n componentWillLoad(): void {\n this.watchPageChangeHandler();\n this.watchBoundaryPageCountHandler();\n this.watchAdjacentPageCountHandler();\n removeDisabledFalse(this.disabled, this.el);\n }\n\n componentDidLoad(): void {\n onComponentRequiredPropUndefined(\n [{ prop: this.pages, propName: \"pages\" }],\n \"Pagination\"\n );\n }\n\n @Listen(\"paginationItemClick\")\n paginationItemClickHandler(ev: CustomEvent): void {\n const page = ev.detail.page;\n this.currentPage = page;\n this.icPageChange.emit({ value: this.currentPage! });\n }\n\n /**\n * Sets the currently displayed page.\n * @param {number} page The page number to set as the current page\n */\n @Method()\n async setCurrentPage(page: number): Promise<void> {\n if (typeof page === \"number\" && page > 0 && page <= this.pages) {\n this.currentPage = page;\n } else {\n console.error(\n \"Current page must be a number greater than zero but less than or equal to the total number of pages\"\n );\n }\n }\n\n private handleClickFirst = () => {\n this.currentPage = 1;\n this.icPageChange.emit({ value: this.currentPage });\n };\n\n private handleClickPrevious = (): void => {\n this.currentPage!--;\n this.icPageChange.emit({ value: this.currentPage! });\n };\n\n private handleClickNext = (): void => {\n this.currentPage!++;\n this.icPageChange.emit({ value: this.currentPage! });\n };\n\n private handleClickLast = (): void => {\n this.currentPage = this.pages;\n this.icPageChange.emit({ value: this.currentPage });\n };\n\n // button rendering abstracted from component render methods for clarity\n private firstButton = () => {\n return (\n <ic-button\n id=\"first-page-button\"\n aria-label=\"Go to first page\"\n theme={this.theme}\n onClick={this.handleClickFirst}\n class=\"page-button first-last\"\n disabled={this.currentPage === 1 || this.disabled}\n variant=\"icon-tertiary\"\n monochrome={this.theme == \"light\" || this.theme == \"dark\"}\n innerHTML={paginationFirstLast}\n />\n );\n };\n\n private previousButton = () => {\n return (\n <ic-button\n id=\"previous-page-button\"\n aria-label=\"Go to previous page\"\n theme={this.theme}\n onClick={this.handleClickPrevious}\n class=\"page-button next-previous flip\"\n disabled={this.currentPage === 1 || this.disabled}\n variant=\"icon-tertiary\"\n monochrome={this.theme == \"light\" || this.theme == \"dark\"}\n innerHTML={paginationNextPrevious}\n />\n );\n };\n\n private nextButton = () => {\n return (\n <ic-button\n id=\"next-page-button\"\n aria-label=\"Go to next page\"\n theme={this.theme}\n onClick={this.handleClickNext}\n class=\"page-button next-previous\"\n disabled={this.currentPage === this.pages || this.disabled}\n variant=\"icon-tertiary\"\n monochrome={this.theme == \"light\" || this.theme == \"dark\"}\n innerHTML={paginationNextPrevious}\n />\n );\n };\n\n private lastButton = () => {\n return (\n <ic-button\n id=\"last-page-button\"\n aria-label=\"Go to last page\"\n theme={this.theme}\n onClick={this.handleClickLast}\n class=\"page-button first-last flip\"\n disabled={this.currentPage === this.pages || this.disabled}\n variant=\"icon-tertiary\"\n monochrome={this.theme == \"light\" || this.theme == \"dark\"}\n innerHTML={paginationFirstLast}\n />\n );\n };\n\n private renderStartEllipsis = () => {\n return (\n <ic-pagination-item\n theme={this.theme}\n monochrome={this.monochrome}\n type=\"ellipsis\"\n id=\"start-ellipsis\"\n disabled={this.disabled}\n />\n );\n };\n\n private renderEndEllipsis = () => {\n return (\n <ic-pagination-item\n theme={this.theme}\n monochrome={this.monochrome}\n type=\"ellipsis\"\n id=\"end-ellipsis\"\n disabled={this.disabled}\n />\n );\n };\n\n private renderStartItems = () => {\n return this.startItems.map((page: number) => {\n return (\n <ic-pagination-item\n theme={this.theme}\n monochrome={this.monochrome}\n selected={page === this.currentPage}\n id={`pagination-item-${page}`}\n type=\"page\"\n page={page}\n disabled={this.disabled}\n />\n );\n });\n };\n\n private renderEndItems = () => {\n return this.endItems.map((page: number) => {\n return (\n <ic-pagination-item\n theme={this.theme}\n monochrome={this.monochrome}\n selected={page === this.currentPage}\n id={`pagination-item-${page}`}\n type=\"page\"\n page={page}\n disabled={this.disabled}\n />\n );\n });\n };\n\n private renderMiddleItems = () => {\n return this.midItems.map((page: number) => {\n return (\n <ic-pagination-item\n theme={this.theme}\n monochrome={this.monochrome}\n selected={page === this.currentPage}\n id={`pagination-item-${page}`}\n type=\"page\"\n page={page}\n disabled={this.disabled}\n />\n );\n });\n };\n\n render() {\n const {\n type,\n currentPage,\n hideCurrentPage,\n disabled,\n hideFirstAndLastPageButton,\n label,\n theme,\n monochrome,\n } = this;\n\n return (\n <Host\n class={{\n [`ic-theme-${theme}`]: theme !== \"inherit\",\n [\"ic-pagination-monochrome\"]: !!monochrome,\n }}\n >\n {type === \"simple\" && (\n <nav\n class={{\n [\"disabled\"]: !!disabled,\n }}\n role=\"navigation\"\n aria-label=\"Pagination Navigation\"\n >\n {hideFirstAndLastPageButton ? null : this.firstButton()}\n {this.previousButton()}\n <ic-pagination-item\n theme={this.theme}\n monochrome={this.monochrome}\n type=\"simple-current\"\n page={currentPage}\n label={label}\n class={{ [\"hide-current-page\"]: !!hideCurrentPage }}\n disabled={disabled}\n />\n {this.nextButton()}\n {hideFirstAndLastPageButton ? null : this.lastButton()}\n </nav>\n )}\n {type === \"complex\" && (\n <nav\n class={{\n [\"disabled\"]: !!disabled,\n }}\n role=\"navigation\"\n aria-label=\"Pagination Navigation\"\n >\n {hideFirstAndLastPageButton ? null : this.firstButton()}\n {this.previousButton()}\n {this.renderStartItems()}\n {this.startEllipsis && this.renderStartEllipsis()}\n {this.renderMiddleItems()}\n {this.endEllipsis && this.renderEndEllipsis()}\n {this.renderEndItems()}\n {this.nextButton()}\n {hideFirstAndLastPageButton ? null : this.lastButton()}\n </nav>\n )}\n {type === \"complex\" && (\n <span class=\"sr-only\" aria-live=\"polite\">\n Page {this.currentPage}\n </span>\n )}\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"names":["icPaginationCss","IcPaginationStyle0","Pagination","constructor","hostRef","this","endEllipsis","endItems","midItems","startEllipsis","startItems","adjacentPageCount","boundaryPageCount","defaultPage","disabled","hideCurrentPage","hideFirstAndLastPageButton","label","monochrome","theme","type","currentPage","handleClickFirst","icPageChange","emit","value","handleClickPrevious","handleClickNext","handleClickLast","pages","firstButton","h","id","onClick","class","variant","innerHTML","paginationFirstLast","previousButton","paginationNextPrevious","nextButton","lastButton","renderStartEllipsis","renderEndEllipsis","renderStartItems","map","page","selected","renderEndItems","renderMiddleItems","watchAdjacentPageCountHandler","watchBoundaryPageCountHandler","watchDisabledHandler","removeDisabledFalse","el","watchNumberPagesHandler","watchPageChangeHandler","watchTypeHandler","startItemCount","endStart","midStart","midEnd","i","push","numItems","componentWillLoad","componentDidLoad","onComponentRequiredPropUndefined","prop","propName","paginationItemClickHandler","ev","detail","setCurrentPage","console","error","render","Host","key","role"],"sources":["src/components/ic-pagination/ic-pagination.css?tag=ic-pagination&encapsulation=shadow","src/components/ic-pagination/ic-pagination.tsx"],"sourcesContent":["@import \"../../global/normalize.css\";\n\n:host {\n box-sizing: border-box;\n width: 100%;\n display: flex;\n justify-content: center;\n}\n\nnav {\n width: 100%;\n display: flex;\n flex-flow: row wrap;\n justify-content: flex-start;\n align-items: center;\n}\n\nic-button {\n cursor: pointer;\n}\n\nic-button.next-previous {\n --icon-width: var(--ic-space-xs);\n --icon-height: calc(var(--ic-space-xs) + var(--ic-space-xxxs));\n\n padding: 0 var(--ic-space-xxs) 0 var(--ic-space-xxxs);\n}\n\nic-button.first-last {\n --icon-width: calc(var(--ic-space-sm) + var(--ic-space-xxxs));\n --icon-height: calc(var(--ic-space-xs) + var(--ic-space-xxxs));\n}\n\nic-button.first-last::part(button),\nic-button.next-previous::part(button) {\n color: var(--ic-pagination-chevron);\n}\n\n:host(.ic-pagination-monochrome) ic-button.first-last::part(button),\n:host(.ic-pagination-monochrome) ic-button.next-previous::part(button) {\n color: var(--ic-pagination-chevron-monochrome);\n}\n\nic-button.ic-button-disabled.first-last::part(button),\nic-button.ic-button-disabled.next-previous::part(button),\n:host(.ic-pagination-monochrome)\n ic-button.ic-button-disabled.first-last::part(button),\n:host(.ic-pagination-monochrome)\n ic-button.ic-button-disabled.next-previous::part(button) {\n color: var(--ic-pagination-chevron-disabled);\n}\n\n.disabled {\n color: var(--ic-color-text-disabled-mid);\n pointer-events: none;\n cursor: none;\n user-select: none;\n}\n\n.hide-current-page {\n display: none;\n}\n\n.sr-only {\n position: absolute;\n left: -9999px;\n}\n\n.sr-only:dir(rtl) {\n right: -9999px;\n}\n","import {\n Component,\n Element,\n Host,\n Prop,\n h,\n Listen,\n State,\n Watch,\n Event,\n EventEmitter,\n Method,\n} from \"@stencil/core\";\nimport paginationNextPrevious from \"../../assets/pagination-next-previous.svg\";\nimport paginationFirstLast from \"../../assets/pagination-first-last.svg\";\nimport { IcThemeMode } from \"../../utils/types\";\nimport { IcPaginationTypes, IcChangeEventDetail } from \"./ic-pagination.types\";\nimport {\n onComponentRequiredPropUndefined,\n removeDisabledFalse,\n} from \"../../utils/helpers\";\n\n@Component({\n tag: \"ic-pagination\",\n styleUrl: \"ic-pagination.css\",\n shadow: true,\n})\nexport class Pagination {\n @Element() el: HTMLIcPaginationElement;\n\n @State() endEllipsis: boolean = false;\n @State() endItems: number[] = [];\n @State() midItems: number[] = [];\n @State() startEllipsis: boolean = false;\n @State() startItems: number[] = [];\n\n /**\n * The number of pages displayed adjacent to the current page when using 'complex' type pagination. Accepted values are 0, 1 & 2.\n */\n @Prop({ mutable: true }) adjacentPageCount?: number = 1;\n\n @Watch(\"adjacentPageCount\")\n watchAdjacentPageCountHandler(): void {\n if (this.adjacentPageCount! > 2) {\n this.adjacentPageCount = 2;\n }\n }\n\n /**\n * The number of pages displayed as boundary items to the current page when using 'complex' type pagination. Accepted values are 0, 1 & 2.\n */\n @Prop({ mutable: true }) boundaryPageCount?: number = 1;\n\n @Watch(\"boundaryPageCount\")\n watchBoundaryPageCountHandler(): void {\n if (this.boundaryPageCount! > 2) {\n this.boundaryPageCount = 2;\n }\n }\n\n /**\n * The default page to display.\n */\n @Prop() defaultPage?: number = 1;\n\n /**\n * If `true`, the pagination will not allow interaction.\n */\n @Prop() disabled?: boolean = false;\n @Watch(\"disabled\")\n watchDisabledHandler(): void {\n removeDisabledFalse(this.disabled, this.el);\n }\n\n /**\n * If `true`, the current page of the simple pagination will not be displayed.\n */\n @Prop() hideCurrentPage?: boolean = false;\n\n /**\n * If `true`, the first and last page buttons will not be displayed.\n */\n @Prop() hideFirstAndLastPageButton?: boolean = false;\n\n /**\n * The label for the pagination item (applicable when simple pagination is being used).\n */\n @Prop() label?: string = \"Page\";\n\n /**\n * If `true`, the pagination will display as black in the light theme, and white in dark theme.\n */\n @Prop() monochrome?: boolean = false;\n\n /**\n * The total number of pages.\n */\n @Prop() pages!: number;\n\n @Watch(\"pages\")\n watchNumberPagesHandler(): void {\n this.watchPageChangeHandler();\n }\n\n /**\n * Sets the theme color to the dark or light theme color. \"inherit\" will set the color based on the system settings or ic-theme component.\n */\n @Prop() theme?: IcThemeMode = \"inherit\";\n\n /**\n * The type of pagination to be used.\n */\n @Prop() type?: IcPaginationTypes = \"simple\";\n\n @Watch(\"type\")\n watchTypeHandler(): void {\n this.watchPageChangeHandler();\n }\n\n /**\n * The current page displayed by the pagination.\n */\n @Prop({ mutable: true }) currentPage?: number = this.defaultPage;\n\n @Watch(\"currentPage\")\n watchPageChangeHandler(): void {\n if (this.type === \"simple\") {\n return;\n }\n\n this.startEllipsis = false;\n this.endEllipsis = false;\n this.startItems = [];\n this.endItems = [];\n this.midItems = [];\n\n const startItems = [];\n let startItemCount = 0;\n const endItems = [];\n let endStart = this.pages;\n const midItems = [];\n let midStart;\n let midEnd;\n let startEllipsis = false;\n let endEllipsis = false;\n\n if (\n this.pages <=\n this.boundaryPageCount! * 2 + this.adjacentPageCount! * 2 + 3\n ) {\n this.startEllipsis = false;\n this.endEllipsis = false;\n for (let i = 1; i <= this.pages; i++) {\n startItems.push(i);\n }\n this.startItems = startItems;\n return;\n }\n\n startItemCount = this.boundaryPageCount === 0 ? 1 : this.boundaryPageCount!;\n endStart =\n this.boundaryPageCount === 0\n ? this.pages\n : this.pages - this.boundaryPageCount! + 1;\n\n if (\n this.currentPage! <=\n this.adjacentPageCount! + this.boundaryPageCount! + 2\n ) {\n startEllipsis = false;\n endEllipsis = true;\n\n let numItems = 2 * this.adjacentPageCount! + 1;\n if (this.boundaryPageCount === 0) {\n numItems--;\n }\n midStart = startItemCount + 1;\n midEnd = midStart + numItems;\n } else {\n startEllipsis = true;\n if (\n this.currentPage! >\n this.pages - (this.adjacentPageCount! + this.boundaryPageCount! + 2)\n ) {\n let numItems = 2 * this.adjacentPageCount! + 1;\n if (this.boundaryPageCount === 0) {\n numItems--;\n }\n midEnd =\n this.boundaryPageCount === 0\n ? this.pages - 1\n : this.pages - this.boundaryPageCount!;\n midStart = midEnd - numItems;\n } else {\n endEllipsis = true;\n midStart = this.currentPage! - this.adjacentPageCount!;\n midEnd = this.currentPage! + this.adjacentPageCount!;\n }\n }\n\n //create array of start items\n if (\n this.boundaryPageCount! > 0 ||\n (this.boundaryPageCount === 0 && startEllipsis === false)\n ) {\n for (let i = 1; i <= startItemCount; i++) {\n startItems.push(i);\n }\n }\n\n //create array of end items\n if (\n this.boundaryPageCount! > 0 ||\n (this.boundaryPageCount === 0 && endEllipsis === false)\n ) {\n for (let i = endStart; i <= this.pages; i++) {\n endItems.push(i);\n }\n }\n\n //create array of mid items\n for (let i = midStart; i <= midEnd; i++) {\n midItems.push(i);\n }\n\n this.startEllipsis = startEllipsis;\n this.endEllipsis = endEllipsis;\n this.startItems = startItems;\n this.endItems = endItems;\n this.midItems = midItems;\n }\n\n /**\n * Emitted when a page is selected.\n */\n @Event() icPageChange: EventEmitter<IcChangeEventDetail>;\n\n componentWillLoad(): void {\n this.watchPageChangeHandler();\n this.watchBoundaryPageCountHandler();\n this.watchAdjacentPageCountHandler();\n removeDisabledFalse(this.disabled, this.el);\n }\n\n componentDidLoad(): void {\n onComponentRequiredPropUndefined(\n [{ prop: this.pages, propName: \"pages\" }],\n \"Pagination\"\n );\n }\n\n @Listen(\"paginationItemClick\")\n paginationItemClickHandler(ev: CustomEvent): void {\n const page = ev.detail.page;\n this.currentPage = page;\n this.icPageChange.emit({ value: this.currentPage! });\n }\n\n /**\n * Sets the currently displayed page.\n * @param {number} page The page number to set as the current page\n */\n @Method()\n async setCurrentPage(page: number): Promise<void> {\n if (typeof page === \"number\" && page > 0 && page <= this.pages) {\n this.currentPage = page;\n } else {\n console.error(\n \"Current page must be a number greater than zero but less than or equal to the total number of pages\"\n );\n }\n }\n\n private handleClickFirst = () => {\n this.currentPage = 1;\n this.icPageChange.emit({ value: this.currentPage });\n };\n\n private handleClickPrevious = (): void => {\n this.currentPage!--;\n this.icPageChange.emit({ value: this.currentPage! });\n };\n\n private handleClickNext = (): void => {\n this.currentPage!++;\n this.icPageChange.emit({ value: this.currentPage! });\n };\n\n private handleClickLast = (): void => {\n this.currentPage = this.pages;\n this.icPageChange.emit({ value: this.currentPage });\n };\n\n // button rendering abstracted from component render methods for clarity\n private firstButton = () => {\n return (\n <ic-button\n id=\"first-page-button\"\n aria-label=\"Go to first page\"\n theme={this.theme}\n onClick={this.handleClickFirst}\n class=\"page-button first-last\"\n disabled={this.currentPage === 1 || this.disabled}\n variant=\"icon-tertiary\"\n monochrome={this.theme == \"light\" || this.theme == \"dark\"}\n innerHTML={paginationFirstLast}\n />\n );\n };\n\n private previousButton = () => {\n return (\n <ic-button\n id=\"previous-page-button\"\n aria-label=\"Go to previous page\"\n theme={this.theme}\n onClick={this.handleClickPrevious}\n class=\"page-button next-previous flip\"\n disabled={this.currentPage === 1 || this.disabled}\n variant=\"icon-tertiary\"\n monochrome={this.theme == \"light\" || this.theme == \"dark\"}\n innerHTML={paginationNextPrevious}\n />\n );\n };\n\n private nextButton = () => {\n return (\n <ic-button\n id=\"next-page-button\"\n aria-label=\"Go to next page\"\n theme={this.theme}\n onClick={this.handleClickNext}\n class=\"page-button next-previous\"\n disabled={this.currentPage === this.pages || this.disabled}\n variant=\"icon-tertiary\"\n monochrome={this.theme == \"light\" || this.theme == \"dark\"}\n innerHTML={paginationNextPrevious}\n />\n );\n };\n\n private lastButton = () => {\n return (\n <ic-button\n id=\"last-page-button\"\n aria-label=\"Go to last page\"\n theme={this.theme}\n onClick={this.handleClickLast}\n class=\"page-button first-last flip\"\n disabled={this.currentPage === this.pages || this.disabled}\n variant=\"icon-tertiary\"\n monochrome={this.theme == \"light\" || this.theme == \"dark\"}\n innerHTML={paginationFirstLast}\n />\n );\n };\n\n private renderStartEllipsis = () => {\n return (\n <ic-pagination-item\n theme={this.theme}\n monochrome={this.monochrome}\n type=\"ellipsis\"\n id=\"start-ellipsis\"\n disabled={this.disabled}\n />\n );\n };\n\n private renderEndEllipsis = () => {\n return (\n <ic-pagination-item\n theme={this.theme}\n monochrome={this.monochrome}\n type=\"ellipsis\"\n id=\"end-ellipsis\"\n disabled={this.disabled}\n />\n );\n };\n\n private renderStartItems = () => {\n return this.startItems.map((page: number) => {\n return (\n <ic-pagination-item\n theme={this.theme}\n monochrome={this.monochrome}\n selected={page === this.currentPage}\n id={`pagination-item-${page}`}\n type=\"page\"\n page={page}\n disabled={this.disabled}\n />\n );\n });\n };\n\n private renderEndItems = () => {\n return this.endItems.map((page: number) => {\n return (\n <ic-pagination-item\n theme={this.theme}\n monochrome={this.monochrome}\n selected={page === this.currentPage}\n id={`pagination-item-${page}`}\n type=\"page\"\n page={page}\n disabled={this.disabled}\n />\n );\n });\n };\n\n private renderMiddleItems = () => {\n return this.midItems.map((page: number) => {\n return (\n <ic-pagination-item\n theme={this.theme}\n monochrome={this.monochrome}\n selected={page === this.currentPage}\n id={`pagination-item-${page}`}\n type=\"page\"\n page={page}\n disabled={this.disabled}\n />\n );\n });\n };\n\n render() {\n const {\n type,\n currentPage,\n hideCurrentPage,\n disabled,\n hideFirstAndLastPageButton,\n label,\n theme,\n monochrome,\n } = this;\n\n return (\n <Host\n class={{\n [`ic-theme-${theme}`]: theme !== \"inherit\",\n [\"ic-pagination-monochrome\"]: !!monochrome,\n }}\n >\n {type === \"simple\" && (\n <nav\n class={{\n [\"disabled\"]: !!disabled,\n }}\n role=\"navigation\"\n aria-label=\"Pagination Navigation\"\n >\n {hideFirstAndLastPageButton ? null : this.firstButton()}\n {this.previousButton()}\n <ic-pagination-item\n theme={this.theme}\n monochrome={this.monochrome}\n type=\"simple-current\"\n page={currentPage}\n label={label}\n class={{ [\"hide-current-page\"]: !!hideCurrentPage }}\n disabled={disabled}\n />\n {this.nextButton()}\n {hideFirstAndLastPageButton ? null : this.lastButton()}\n </nav>\n )}\n {type === \"complex\" && (\n <nav\n class={{\n [\"disabled\"]: !!disabled,\n }}\n role=\"navigation\"\n aria-label=\"Pagination Navigation\"\n >\n {hideFirstAndLastPageButton ? null : this.firstButton()}\n {this.previousButton()}\n {this.renderStartItems()}\n {this.startEllipsis && this.renderStartEllipsis()}\n {this.renderMiddleItems()}\n {this.endEllipsis && this.renderEndEllipsis()}\n {this.renderEndItems()}\n {this.nextButton()}\n {hideFirstAndLastPageButton ? null : this.lastButton()}\n </nav>\n )}\n {type === \"complex\" && (\n <span class=\"sr-only\" aria-live=\"polite\">\n Page {this.currentPage}\n </span>\n )}\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
@@ -0,0 +1,2 @@
|
|
1
|
+
import{r as e,c as t,h as i,H as o,g as s}from"./p-8e4e97b4.js";import{u as n,e as a}from"./p-6ceedfa8.js";import{c as r}from"./p-68a5aaff.js";import"./p-641c26c4.js";const l='/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%;}body{margin:0}main{display:block}h1{font-size:2em;margin:0.67em 0}hr{box-sizing:content-box;height:0;overflow:visible;}pre{font-family:monospace, monospace;font-size:1em;}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace, monospace;font-size:1em;}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0;}button,input{overflow:visible}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:0.35em 0.75em 0.625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal;}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0;}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px;}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit;}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font-style:inherit;vertical-align:baseline}@media (prefers-reduced-motion: no-preference){:host .opening-from-parent{animation:slide-in var(--ic-transition-duration-slow) ease-in-out}:host .opening-from-child{animation:slide-out var(--ic-transition-duration-slow) ease-in-out}}:host{border-radius:var(--ic-border-radius);color:var(--ic-popover-nav-text);--ic-typography-color:var(--ic-popover-nav-text);position:relative;z-index:var(--ic-z-index-popover);box-sizing:border-box;box-shadow:var(--ic-elevation-overlay);display:none}:host(.on-dialog){inset:auto !important}:host(.on-dialog-fix-translate){transform:translate(0, var(--ic-space-xs)) !important}:host(.on-dialog-translate-y){transform:translate(0, calc(-1 * var(--translate-y))) !important}.menu{border:var(--ic-border-default);border-color:var(--ic-popover-border);border-radius:var(--ic-border-radius);background-color:var(--ic-popover-background);visibility:hidden;height:0;display:flex;flex-direction:column}:host(:focus-within){box-shadow:var(--ic-border-focus)}.menu:focus-visible{outline:none}:host(.ic-popover-menu-open){display:block;min-width:calc(20rem - var(--ic-space-xl));width:var(--popover-width, 20rem);max-width:calc(100vw - var(--ic-space-xl))}:host(.ic-popover-menu-open) .menu{visibility:visible;height:-moz-fit-content;height:fit-content;max-height:var(--max-height, -moz-fit-content);max-height:var(--max-height, fit-content);overflow-y:auto;overflow-x:hidden}.parent-label{--ic-typography-color:var(--ic-popover-parent-label);margin:var(--ic-space-xs) var(--ic-space-xs) 0}@keyframes slide-in{from{opacity:0;transform:translateX(10rem)}to{opacity:1;transform:translateX(0)}}@keyframes slide-out{from{opacity:0;transform:translateX(-10rem)}to{opacity:1;transform:translateX(0)}}';const c=l;const d="div.menu-body";const h=class{constructor(i){e(this,i);this.icPopoverClosed=t(this,"icPopoverClosed",7);this.ARIA_LABEL="aria-label";this.popoverMenuEls=[];this.openingFromChild=false;this.openingFromParent=false;this.popperProps={};this.fixedPositioning=false;this.submenuLevel=1;this.theme="inherit";this.open=undefined;this.setButtonFocus=()=>{var e;(e=this.popoverMenuEls[this.currentFocus])===null||e===void 0?void 0:e.focus()};this.findAnchorEl=e=>{let t=null;if(!e){this.submenuId===undefined&&console.error("No anchor specified for popover component")}else{t=document.querySelector(e.indexOf("#")===0?e:"#"+e);if(t===null){console.error(`Popover anchor element '${e}' not found`)}}return t};this.isNotPopoverMenuEl=e=>{const{id:t,tagName:i}=e.target;return t!==this.anchor&&i!=="IC-MENU-ITEM"&&i!=="IC-MENU-GROUP"&&i!=="IC-POPOVER-MENU"};this.getNextItemToSelect=(e,t)=>{const i=this.popoverMenuEls.length-1;if(e<1){e=0}let o=t?e+1:e-1;if(o<0){o=i}else if(o>i){o=0}return o};this.addMenuItems=e=>{var t;for(let i=0;i<e.length;i++){const o=e[i];if(o.tagName==="IC-MENU-ITEM"){this.popoverMenuEls.push(o)}else if(o.tagName==="IC-MENU-GROUP"){const e=(t=o.shadowRoot)===null||t===void 0?void 0:t.querySelector(".menu-items-wrapper");if(e){const t=n(e);t&&this.addMenuItems(t)}}}};this.getMenuAriaLabel=()=>{const e=this.el.getAttribute(this.ARIA_LABEL);if(a(this.submenuId)){return`${e}, within nested level ${this.submenuLevel} ${this.parentLabel} submenu,`}else{return e}};this.handleBackButtonClick=()=>{var e;(e=this.parentPopover)===null||e===void 0?void 0:e.openFromChild();this.open=false};this.initPopperJS=()=>{if(this.anchorEl){this.popperInstance=r(this.anchorEl,this.el,Object.assign({strategy:this.fixedPositioning?"fixed":"absolute",placement:"bottom-start",modifiers:[{name:"offset",options:{offset:[0,4]}},{name:"flip",options:{fallbackPlacements:["top-start","top-end","bottom-end"],rootBoundary:"viewport"}}]},this.popperProps))}}}watchOpenHandler(){var e;const t=(e=this.el.parentElement)===null||e===void 0?void 0:e.querySelectorAll(`ic-popover-menu`);if(this.open){if(t.length>0){t.forEach((e=>{if(e!==this.el){e.open=false}}))}if(this.parentPopover!==undefined&&!this.popoverMenuEls.some((e=>e.id))){this.backButton&&this.popoverMenuEls.unshift(this.backButton)}this.currentFocus=0;setTimeout(this.setButtonFocus,50)}else if(this.popperInstance){if(t.length>0){t.forEach((e=>{if(e!==this.el){e.open=false}}))}this.popperInstance.destroy();this.popperInstance=null}}disconnectedCallback(){if(this.popperInstance){this.popperInstance.destroy();this.popperInstance=null}}componentDidLoad(){var e;const t=(e=this.el.shadowRoot)===null||e===void 0?void 0:e.querySelector(d);if(t){const e=n(t);if(e!==null){this.addMenuItems(e)}}if(this.submenuId===undefined&&this.el.getAttribute(this.ARIA_LABEL)===null){console.error(`No aria-label specified for popover menu component - aria-label required`)}this.watchOpenHandler()}componentWillRender(){this.anchorEl=this.findAnchorEl(this.anchor)}componentDidRender(){if(this.open&&!this.popperInstance){this.initPopperJS()}}handleMenuItemClick(e){if(!e.detail.submenuTriggerFor&&e.detail.label!=="Back"){this.closeMenu(false,e.detail)}}handleSubmenuChange(e){const t=e.target;this.open=false;const i=document.querySelector(`ic-popover-menu[submenu-id=${t.submenuTriggerFor}]`);i.parentPopover=this.el;i.anchor=this.anchor;i.ariaLabel=this.el.getAttribute(this.ARIA_LABEL);i.openFromParent();i.submenuLevel=this.submenuLevel+1;i.parentLabel=t.label}handleClick(e){if(this.open&&this.isNotPopoverMenuEl(e)){this.closeMenu()}}handleKeyDown(e){switch(e.key){case"ArrowDown":case"ArrowUp":e.preventDefault();this.currentFocus=this.getNextItemToSelect(this.currentFocus,e.key==="ArrowDown");this.setButtonFocus();break;case"Home":this.currentFocus=0;this.setButtonFocus();break;case"End":this.currentFocus=this.popoverMenuEls.length-1;this.setButtonFocus();break;case"Escape":case"Tab":e.preventDefault();if(this.open){this.closeMenu(true);this.el.blur()}break}}async openFromChild(){this.open=true;this.openingFromChild=true;setTimeout((()=>this.openingFromChild=false),1e3)}async openFromParent(){this.open=true;this.openingFromParent=true;setTimeout((()=>this.openingFromParent=false),1e3)}async closeMenu(e=false,t){var i;this.open=false;if(this.parentPopover){this.parentPopover.closeMenu(e,t)}else{if(e){(i=this.anchorEl)===null||i===void 0?void 0:i.focus()}this.icPopoverClosed.emit(t)}}async setExternalPopperProps(e){this.popperProps=e}render(){return i(o,{key:"b3b80be668dab0b1bf8e9c86a92871a2ccf7fa05",class:{["ic-popover-menu-open"]:!!this.open,[`ic-theme-${this.theme}`]:this.theme!=="inherit"}},i("div",{key:"2354b0125ce713af1824928f0f63bfc4e1a51539",id:this.parentPopover===undefined?`ic-popover-submenu-${this.submenuId}`:"",class:{menu:true}},i("span",{key:"a0fe248c348b955225eb3cbd9d4713dd4d2260f5",class:{"opening-from-parent":this.openingFromParent,"opening-from-child":this.openingFromChild}},a(this.submenuId)&&i("span",{key:"b0f4cd227ca7e89a65a05ff7e168c902d90fbd27"},i("span",{key:"2cae5777f8e07730803524dca57d2489755af132",role:"menu"},i("ic-menu-item",{key:"65be6ed2c83365bfc8888f9d1232fe34b61b9547",class:"ic-popover-submenu-back-button",ref:e=>this.backButton=e,label:"Back",onClick:this.handleBackButtonClick,id:`ic-popover-submenu-back-button-${this.submenuLevel}`},i("svg",{key:"51312621130f75922f672a78e96c5f143844fd23",slot:"icon",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",class:"submenu-back-icon"},i("path",{key:"db43490c2526d8aef7b985109b0592d6e47d97fb",d:"M20 11H7.83L13.42 5.41L12 4L4 12L12 20L13.41 18.59L7.83 13H20V11Z",fill:"currentColor"})))),i("ic-typography",{key:"d1f5dea7708ece652f7033fc879ebd2ecf9485e4",variant:"subtitle-small",class:"parent-label"},this.parentLabel)),i("div",{key:"57da0710affbfada09d7bb4f040b235bbd86bee4",class:"menu-body","aria-label":this.getMenuAriaLabel(),role:"menu"},i("slot",{key:"745f05595c859f9c6259716dc4c4635d66cd95fc"})))))}static get delegatesFocus(){return true}get el(){return s(this)}static get watchers(){return{open:["watchOpenHandler"]}}};h.style=c;export{h as ic_popover_menu};
|
2
|
+
//# sourceMappingURL=p-f086d6df.entry.js.map
|