@ukic/web-components 3.10.0 → 3.12.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-3a9ba64a.js +191 -0
- package/dist/cjs/constants-3a9ba64a.js.map +1 -0
- package/dist/cjs/core.cjs.js +1 -1
- package/dist/cjs/{helpers-a0e78e2e.js → helpers-478d1107.js} +6 -187
- package/dist/cjs/helpers-478d1107.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 +8 -4
- 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 +7 -5
- 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 +7 -6
- package/dist/cjs/ic-horizontal-scroll.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-input-component-container_3.cjs.entry.js +1388 -12
- package/dist/cjs/ic-input-component-container_3.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-input-label_2.cjs.entry.js +27 -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 +15 -7
- package/dist/cjs/ic-radio-group.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-radio-option.cjs.entry.js +7 -6
- 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 +21 -13
- 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 +67 -54
- package/dist/cjs/ic-step.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-stepper.cjs.entry.js +21 -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 +16 -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-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.css +3 -3
- package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.js +5 -2
- package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.js.map +1 -1
- package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.stories.js +11 -28
- package/dist/collection/components/ic-chip/ic-chip.css +4 -0
- package/dist/collection/components/ic-chip/ic-chip.js +4 -3
- package/dist/collection/components/ic-chip/ic-chip.js.map +1 -1
- 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-link/ic-footer-link.js +2 -2
- package/dist/collection/components/ic-hero/ic-hero.js +4 -4
- 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 +9 -1
- package/dist/collection/components/ic-input-validation/ic-input-validation.js +27 -10
- package/dist/collection/components/ic-input-validation/ic-input-validation.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 +6 -5
- 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.css +2 -2
- package/dist/collection/components/ic-radio-group/ic-radio-group.js +40 -7
- 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 +178 -15
- package/dist/collection/components/ic-radio-option/ic-radio-option.css +37 -1
- 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-select/ic-select.js +44 -11
- package/dist/collection/components/ic-select/ic-select.js.map +1 -1
- package/dist/collection/components/ic-select/ic-select_(multi).stories.js +22 -8
- package/dist/collection/components/ic-select/ic-select_(searchable).stories.js +16 -3
- package/dist/collection/components/ic-select/ic-select_(single).stories.js +119 -10
- 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 +89 -53
- package/dist/collection/components/ic-step/ic-step.js.map +1 -1
- package/dist/collection/components/ic-step/ic-step.types.js.map +1 -1
- package/dist/collection/components/ic-stepper/ic-stepper.js +43 -2
- package/dist/collection/components/ic-stepper/ic-stepper.js.map +1 -1
- package/dist/collection/components/ic-stepper/ic-stepper.stories.js +75 -0
- 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-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/common-helpers.js +17 -0
- package/dist/collection/utils/common-helpers.js.map +1 -0
- package/dist/collection/utils/constants.js +1 -0
- package/dist/collection/utils/constants.js.map +1 -1
- package/dist/collection/utils/types.js.map +1 -1
- package/dist/components/constants.js +177 -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-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 +7 -4
- package/dist/components/ic-checkbox-group.js.map +1 -1
- package/dist/components/ic-checkbox.js +4 -4
- package/dist/components/ic-checkbox.js.map +1 -1
- package/dist/components/ic-chip.js +6 -5
- package/dist/components/ic-chip.js.map +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 +6 -6
- 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 +24 -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 +1383 -7
- 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-popover-menu.js +5 -5
- package/dist/components/ic-popover-menu.js.map +1 -1
- package/dist/components/ic-radio-group.js +15 -7
- package/dist/components/ic-radio-group.js.map +1 -1
- package/dist/components/ic-radio-option.js +6 -6
- 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 +21 -12
- package/dist/components/ic-select.js.map +1 -1
- package/dist/components/ic-side-navigation.js +5 -5
- 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-step.js +67 -54
- package/dist/components/ic-step.js.map +1 -1
- package/dist/components/ic-stepper.js +20 -2
- package/dist/components/ic-stepper.js.map +1 -1
- 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-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-0123dde7.entry.js +2 -0
- package/dist/core/p-0123dde7.entry.js.map +1 -0
- package/dist/core/p-01e018cb.entry.js +2 -0
- package/dist/core/{p-f309d3af.entry.js.map → p-01e018cb.entry.js.map} +1 -1
- package/dist/core/p-02af2b59.entry.js +2 -0
- package/dist/core/{p-ef4b5469.entry.js.map → p-02af2b59.entry.js.map} +1 -1
- package/dist/core/p-05036675.entry.js +2 -0
- package/dist/core/p-05036675.entry.js.map +1 -0
- package/dist/core/p-0c36ce84.entry.js +2 -0
- package/dist/core/{p-661ae402.entry.js.map → p-0c36ce84.entry.js.map} +1 -1
- package/dist/core/p-0ec76cff.entry.js +2 -0
- package/dist/core/{p-1d37ac1c.entry.js.map → p-0ec76cff.entry.js.map} +1 -1
- package/dist/core/p-13e093d0.entry.js +2 -0
- package/dist/core/{p-9eeb5e85.entry.js.map → p-13e093d0.entry.js.map} +1 -1
- package/dist/core/p-1423bd4a.entry.js +2 -0
- package/dist/core/{p-9f36791b.entry.js.map → p-1423bd4a.entry.js.map} +1 -1
- package/dist/core/p-2126d37b.entry.js +2 -0
- package/dist/core/{p-0c0c6a9e.entry.js.map → p-2126d37b.entry.js.map} +1 -1
- package/dist/core/p-228bc12d.entry.js +2 -0
- package/dist/core/{p-41f92698.entry.js.map → p-228bc12d.entry.js.map} +1 -1
- package/dist/core/p-25bef09d.entry.js +2 -0
- package/dist/core/{p-cf631191.entry.js.map → p-25bef09d.entry.js.map} +1 -1
- package/dist/core/p-27e67d45.entry.js +2 -0
- package/dist/core/{p-313a8a2f.entry.js.map → p-27e67d45.entry.js.map} +1 -1
- package/dist/core/p-2800fc30.entry.js +2 -0
- package/dist/core/{p-6ed0ac48.entry.js.map → p-2800fc30.entry.js.map} +1 -1
- package/dist/core/p-33582352.entry.js +2 -0
- package/dist/core/{p-317e005f.entry.js.map → p-33582352.entry.js.map} +1 -1
- package/dist/core/p-33789b23.entry.js +3 -0
- package/dist/core/p-33789b23.entry.js.map +1 -0
- 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-3e36f281.entry.js +2 -0
- package/dist/core/{p-711bfeed.entry.js.map → p-3e36f281.entry.js.map} +1 -1
- package/dist/core/p-45097448.entry.js +2 -0
- package/dist/core/{p-cbe0d1bb.entry.js.map → p-45097448.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-514daffe.entry.js +2 -0
- package/dist/core/p-514daffe.entry.js.map +1 -0
- package/dist/core/p-54803e3b.entry.js +2 -0
- package/dist/core/{p-2f4f392f.entry.js.map → p-54803e3b.entry.js.map} +1 -1
- package/dist/core/{p-6e8ef73c.entry.js → p-57721431.entry.js} +2 -2
- package/dist/core/{p-5fbc8e62.entry.js → p-5fcfcfb6.entry.js} +2 -2
- package/dist/core/p-6058d4c9.entry.js +2 -0
- package/dist/core/{p-ea778379.entry.js.map → p-6058d4c9.entry.js.map} +1 -1
- package/dist/core/p-675bb3e4.entry.js +2 -0
- package/dist/core/{p-52748d5c.entry.js.map → p-675bb3e4.entry.js.map} +1 -1
- package/dist/core/p-6dbe70f1.entry.js +2 -0
- package/dist/core/{p-4ca782eb.entry.js.map → p-6dbe70f1.entry.js.map} +1 -1
- package/dist/core/p-6e139e6e.entry.js +2 -0
- package/dist/core/{p-0d680d19.entry.js.map → p-6e139e6e.entry.js.map} +1 -1
- package/dist/core/p-80317cd1.entry.js +2 -0
- package/dist/core/{p-9c013333.entry.js.map → p-80317cd1.entry.js.map} +1 -1
- package/dist/core/p-80e0f66e.entry.js +2 -0
- package/dist/core/{p-493eaabb.entry.js.map → p-80e0f66e.entry.js.map} +1 -1
- package/dist/core/p-813ad03c.entry.js +2 -0
- package/dist/core/{p-6a576a8b.entry.js.map → p-813ad03c.entry.js.map} +1 -1
- package/dist/core/p-8558b9b7.entry.js +2 -0
- package/dist/core/{p-21cf2beb.entry.js.map → p-8558b9b7.entry.js.map} +1 -1
- package/dist/core/p-8684efeb.entry.js +2 -0
- package/dist/core/{p-fc3b1155.entry.js.map → p-8684efeb.entry.js.map} +1 -1
- package/dist/core/p-8b99a806.entry.js +2 -0
- package/dist/core/{p-8a4b12e4.entry.js.map → p-8b99a806.entry.js.map} +1 -1
- package/dist/core/p-93479c36.entry.js +2 -0
- package/dist/core/{p-19cf2327.entry.js.map → p-93479c36.entry.js.map} +1 -1
- package/dist/core/p-95d3d1a7.entry.js +2 -0
- package/dist/core/{p-6014ab64.entry.js.map → p-95d3d1a7.entry.js.map} +1 -1
- package/dist/core/p-99793b64.entry.js +2 -0
- package/dist/core/p-99793b64.entry.js.map +1 -0
- 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-a06c1e4e.entry.js +2 -0
- package/dist/core/{p-f6a02202.entry.js.map → p-a06c1e4e.entry.js.map} +1 -1
- package/dist/core/p-a1857d24.entry.js +2 -0
- package/dist/core/p-a1857d24.entry.js.map +1 -0
- package/dist/core/p-a1e2e029.entry.js +2 -0
- package/dist/core/{p-a77364f5.entry.js.map → p-a1e2e029.entry.js.map} +1 -1
- package/dist/core/p-abd88929.entry.js +2 -0
- package/dist/core/{p-af9c391d.entry.js.map → p-abd88929.entry.js.map} +1 -1
- package/dist/core/p-b0376079.entry.js +2 -0
- package/dist/core/{p-41ef74a7.entry.js.map → p-b0376079.entry.js.map} +1 -1
- package/dist/core/p-b1838ad8.entry.js +2 -0
- package/dist/core/p-b1838ad8.entry.js.map +1 -0
- package/dist/core/{p-999f0a5d.entry.js → p-b4a2f6fa.entry.js} +2 -2
- package/dist/core/p-b57e59b7.js +2 -0
- package/dist/core/p-b57e59b7.js.map +1 -0
- package/dist/core/p-b9bdd9a9.entry.js +2 -0
- package/dist/core/p-b9bdd9a9.entry.js.map +1 -0
- package/dist/core/p-bddf799a.js +2 -0
- package/dist/core/p-bddf799a.js.map +1 -0
- package/dist/core/p-c04e1fab.entry.js +2 -0
- package/dist/core/{p-1e2f40b0.entry.js.map → p-c04e1fab.entry.js.map} +1 -1
- package/dist/core/p-c2d5e301.entry.js +2 -0
- package/dist/core/p-c2d5e301.entry.js.map +1 -0
- package/dist/core/p-c975cced.entry.js +2 -0
- package/dist/core/{p-15dbccc2.entry.js.map → p-c975cced.entry.js.map} +1 -1
- package/dist/core/p-cc00cbce.entry.js +2 -0
- package/dist/core/p-cc00cbce.entry.js.map +1 -0
- package/dist/core/p-cf868a24.entry.js +2 -0
- package/dist/core/p-cf868a24.entry.js.map +1 -0
- package/dist/core/p-d58ad080.entry.js +2 -0
- package/dist/core/{p-b52000d9.entry.js.map → p-d58ad080.entry.js.map} +1 -1
- package/dist/core/p-de32a223.entry.js +2 -0
- package/dist/core/{p-43324339.entry.js.map → p-de32a223.entry.js.map} +1 -1
- package/dist/core/p-e6dacbe2.entry.js +2 -0
- package/dist/core/{p-b0d488d0.entry.js.map → p-e6dacbe2.entry.js.map} +1 -1
- package/dist/core/p-e9d28e02.entry.js +2 -0
- package/dist/core/p-e9d28e02.entry.js.map +1 -0
- package/dist/core/p-ea06792a.entry.js +2 -0
- package/dist/core/{p-72a9909c.entry.js.map → p-ea06792a.entry.js.map} +1 -1
- package/dist/core/p-eb0e7153.entry.js +2 -0
- package/dist/core/{p-3dc54847.entry.js.map → p-eb0e7153.entry.js.map} +1 -1
- package/dist/core/p-f609ca37.entry.js +2 -0
- package/dist/core/{p-9323c234.entry.js.map → p-f609ca37.entry.js.map} +1 -1
- package/dist/core/p-fb69fbc0.entry.js +2 -0
- package/dist/core/{p-7cd4f6a6.entry.js.map → p-fb69fbc0.entry.js.map} +1 -1
- package/dist/core/p-fb734a59.entry.js +2 -0
- package/dist/core/p-fb734a59.entry.js.map +1 -0
- package/dist/esm/constants-7960cba4.js +177 -0
- package/dist/esm/constants-7960cba4.js.map +1 -0
- package/dist/esm/core.js +1 -1
- package/dist/esm/{helpers-56631aa0.js → helpers-4ddac6ed.js} +3 -175
- package/dist/esm/helpers-4ddac6ed.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 +8 -4
- 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 +7 -5
- 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 +7 -6
- package/dist/esm/ic-horizontal-scroll.entry.js.map +1 -1
- package/dist/esm/ic-input-component-container_3.entry.js +1388 -12
- package/dist/esm/ic-input-component-container_3.entry.js.map +1 -1
- package/dist/esm/ic-input-label_2.entry.js +24 -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 +15 -7
- package/dist/esm/ic-radio-group.entry.js.map +1 -1
- package/dist/esm/ic-radio-option.entry.js +7 -6
- 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 +20 -12
- 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 +67 -54
- package/dist/esm/ic-step.entry.js.map +1 -1
- package/dist/esm/ic-stepper.entry.js +21 -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 +4 -3
- package/dist/types/components/ic-radio-group/ic-radio-group.d.ts +6 -2
- package/dist/types/components/ic-select/ic-select.d.ts +5 -1
- package/dist/types/components/ic-select/test/a11y/ic-select.test.a11y.d.ts +1 -0
- package/dist/types/components/ic-step/ic-step.d.ts +5 -1
- package/dist/types/components/ic-step/ic-step.types.d.ts +10 -0
- package/dist/types/components/ic-stepper/ic-stepper.d.ts +5 -1
- 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 +51 -9
- package/dist/types/index.d.ts +1 -0
- package/dist/types/interface.d.ts +0 -1
- package/dist/types/utils/common-helpers.d.ts +2 -0
- package/dist/types/utils/constants.d.ts +1 -0
- package/dist/types/utils/types.d.ts +2 -0
- package/hydrate/index.js +1721 -254
- package/hydrate/index.mjs +1721 -254
- package/package.json +5 -4
- package/vscode-data.json +51 -0
- package/dist/cjs/helpers-a0e78e2e.js.map +0 -1
- package/dist/collection/components/ic-input-validation/ic-input-validation.types.js +0 -2
- package/dist/collection/components/ic-input-validation/ic-input-validation.types.js.map +0 -1
- package/dist/core/p-0c0c6a9e.entry.js +0 -2
- 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-3e5d7a3d.entry.js.map +0 -1
- 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-47f6dac2.entry.js +0 -2
- package/dist/core/p-47f6dac2.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-4d1a3036.entry.js.map +0 -1
- package/dist/core/p-52748d5c.entry.js +0 -2
- package/dist/core/p-595a4d06.entry.js +0 -2
- package/dist/core/p-595a4d06.entry.js.map +0 -1
- 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-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-a602a8e1.entry.js.map +0 -1
- 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-b52000d9.entry.js +0 -2
- package/dist/core/p-bb4ce810.entry.js +0 -2
- package/dist/core/p-bb4ce810.entry.js.map +0 -1
- 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/types/components/ic-input-validation/ic-input-validation.types.d.ts +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
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["icCardVerticalCss","IcCardVerticalStyle0","CardVertical","constructor","hostRef","this","hostMutationObserver","areaExpanded","isFocussed","monochrome","parentEl","parentIsAnchorTag","clickable","disabled","expandable","fullWidth","hreflang","message","theme","parentFocussed","parentBlurred","toggleExpanded","watchDisabledHandler","removeDisabledFalse","el","disconnectedCallback","removeEventListener","_a","disconnect","componentWillLoad","parentElement","tagName","classList","add","addEventListener","componentDidLoad","isSlotUsed","onComponentRequiredPropUndefined","prop","heading","propName","updateTheme","MutationObserver","mutationList","renderDynamicChildSlots","observe","childList","handleHostClick","event","stopImmediatePropagation","brandChangeHandler","ev","detail","mode","setFocus","shadowRoot","querySelector","focus","_b","foregroundColor","getBrandFromContext","IcBrandForegroundEnum","Default","Light","Dark","render","href","referrerpolicy","rel","subheading","target","Component","undefined","attrs","hrefLang","referrerPolicy","h","Host","key","class","Object","assign","card","fullwidth","focussed","tabindex","name","variant","id","label","silent","onClick","innerHTML","chevronIcon"],"sources":["src/components/ic-card-vertical/ic-card-vertical.css?tag=ic-card-vertical&encapsulation=shadow","src/components/ic-card-vertical/ic-card-vertical.tsx"],"sourcesContent":["@import \"../../global/normalize.css\";\n\n:host {\n display: flex;\n}\n\na {\n text-decoration: none !important;\n color: var(--ic-card-text-primary) !important;\n}\n\na:visited {\n color: var(--ic-card-link-action-dark) !important;\n}\n\nbutton {\n border: none;\n background-color: transparent;\n outline: var(--ic-hc-focus-outline);\n}\n\n.card {\n display: flex;\n flex-direction: column;\n border: var(--ic-space-1px) solid var(--ic-card-border-primary);\n border-radius: var(--ic-border-radius);\n box-sizing: border-box;\n padding: var(--ic-space-md);\n text-align: left;\n color: var(--ic-card-text-primary);\n transition: var(--ic-easing-transition-fast);\n position: relative;\n width: inherit;\n min-width: fit-content;\n height: fit-content;\n min-height: 100%;\n\n ::slotted(svg) {\n fill: var(--ic-card-icon);\n }\n\n &.monochrome {\n border: var(--ic-border-width) solid var(--ic-card-border-monochrome);\n }\n\n &.fullwidth {\n width: 100%;\n }\n\n &.clickable {\n &:hover {\n background-color: var(--ic-card-background-hover);\n border: var(--ic-space-1px) solid var(--ic-card-hover-border-color);\n cursor: pointer;\n }\n\n &.focussed,\n &:focus {\n background-color: var(--ic-card-background-hover);\n box-shadow: var(--ic-border-focus);\n outline: var(--ic-hc-focus-outline);\n border: var(--ic-space-1px) solid var(--ic-card-pressed-border-color);\n }\n\n &:active {\n background-color: var(--ic-card-background-pressed);\n box-shadow: var(--ic-border-focus);\n\n .card-title {\n text-decoration: none;\n }\n }\n\n .card-title {\n --ic-typography-color: var(--ic-card-clickable-text);\n\n color: var(--ic-card-clickable-text);\n text-decoration: underline;\n text-decoration-thickness: var(--ic-space-1px);\n margin-bottom: var(--ic-space-xxs);\n }\n\n .interaction-button,\n .icon {\n margin-bottom: var(--ic-space-xxs);\n }\n }\n\n &.disabled {\n border: var(--ic-space-1px) dashed var(--ic-card-disabled-border-color);\n\n .card-message,\n .subheading,\n .card-title {\n --ic-typography-color: var(--ic-card-disabled-text);\n }\n\n .card-title {\n text-decoration: underline;\n text-decoration-thickness: var(--ic-space-1px);\n text-decoration-color: var(--ic-card-disabled-text);\n color: var(--ic-card-disabled-text);\n }\n\n ::slotted(svg) {\n fill: var(--ic-card-icon-disabled);\n }\n }\n}\n\n.card-header {\n display: flex;\n align-items: center;\n}\n\n.icon {\n display: flex;\n align-items: center;\n padding-right: var(--ic-space-xs);\n}\n\n.card.clickable:hover .card-title,\n.card.clickable:focus .card-title,\n.card.clickable.focussed .card-title {\n display: inline-block;\n border-bottom: 0.25rem solid !important;\n margin-bottom: 0 !important;\n text-decoration: none;\n}\n\n@supports (text-underline-offset: 25%) {\n .card.clickable:hover .card-title,\n .card.clickable:focus .card-title,\n .card.clickable.focussed .card-title {\n text-decoration-line: underline;\n text-decoration-thickness: 25%;\n text-underline-offset: 25%;\n border-bottom: 0 !important;\n margin-bottom: 0.25rem !important;\n }\n}\n\n.subheading {\n margin-top: var(--ic-space-xxs);\n}\n\n.adornment {\n margin-top: var(--ic-space-xxs);\n}\n\n.card-message {\n margin-top: var(--ic-space-md);\n align-items: left;\n}\n\n.interaction-button {\n margin-left: auto;\n}\n\n.image-top {\n margin-bottom: var(--ic-space-md);\n display: flex;\n justify-content: center;\n}\n\n.image-mid {\n margin-top: var(--ic-space-md);\n display: flex;\n justify-content: center;\n}\n\n.interaction-area {\n display: flex;\n flex-grow: 1;\n gap: var(--ic-space-md);\n margin-top: var(--ic-space-md);\n align-items: flex-end;\n}\n\n.interaction-controls {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: var(--ic-space-sm);\n}\n\n.toggle-button {\n width: 2.5rem;\n height: 2.5rem;\n padding: var(--ic-space-xs);\n margin: var(--ic-space-1px) 0;\n min-width: 0;\n cursor: pointer;\n transition: var(--ic-easing-transition-fast);\n border-radius: var(--ic-border-radius);\n display: inline-flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n background: none;\n border: none;\n box-sizing: border-box;\n white-space: nowrap;\n vertical-align: middle;\n\n &:hover {\n background-color: var(--ic-card-background-hover);\n }\n\n &:focus {\n box-shadow: var(--ic-border-focus);\n }\n\n &:active:not(:focus) {\n background-color: var(--ic-card-background-pressed);\n }\n\n svg {\n pointer-events: none;\n width: 100% !important;\n height: 100% !important;\n fill: currentcolor !important;\n }\n}\n\n#ic-tooltip-expand-button {\n margin-left: auto;\n position: relative;\n}\n\n.toggle-button-closed svg {\n transform: rotate(90deg);\n}\n\n.toggle-button-expanded svg {\n transform: rotate(-90deg);\n}\n\n.expanded-content {\n margin-top: var(--ic-space-md);\n}\n\n/** High Contrast **/\n@media (forced-colors: active) {\n .card {\n ::slotted(svg) {\n fill: currentcolor;\n }\n\n &.disabled {\n border-color: GrayText !important;\n\n ::slotted(svg) {\n fill: GrayText !important;\n }\n\n .card-message,\n .subheading,\n .card-title {\n color: GrayText;\n\n --ic-typography-color: GrayText;\n }\n }\n }\n\n .toggle-button:focus,\n .toggle-button:hover {\n outline-color: Highlight;\n }\n}\n","import {\n Component,\n Element,\n Listen,\n Prop,\n State,\n h,\n Method,\n Host,\n Watch,\n} from \"@stencil/core\";\nimport {\n onComponentRequiredPropUndefined,\n isSlotUsed,\n getBrandFromContext,\n removeDisabledFalse,\n renderDynamicChildSlots,\n} from \"../../utils/helpers\";\nimport {\n IcBrand,\n IcBrandForeground,\n IcBrandForegroundEnum,\n IcThemeMode,\n} from \"../../utils/types\";\nimport chevronIcon from \"../../assets/chevron-icon.svg\";\n\n/**\n * @slot heading - Content will be placed at the top of the card to the right of the icon.\n * @slot message - Content will be placed in the main body of the card.\n * @slot subheading - Content will be placed below the card heading.\n * @slot adornment - Content will be placed below the card subheading.\n * @slot image-top - Content will be placed at the top of the card above all other content.\n * @slot image-mid - Content will be placed below the card heading section.\n * @slot icon - Content will be placed to the left of the card heading.\n * @slot interaction-button - Content will be placed in the top right corner of the heading section.\n * @slot interaction-controls - Content will be placed below the card message.\n * @slot expanded-content - Content will be placed below the interaction controls but will not initially be rendered.\n * @slot badge - Badge component overlaying the top right of the card.\n */\n@Component({\n tag: \"ic-card-vertical\",\n styleUrl: \"ic-card-vertical.css\",\n shadow: true,\n})\nexport class CardVertical {\n private hostMutationObserver: MutationObserver | null = null;\n\n @Element() el: HTMLIcCardVerticalElement;\n\n @State() areaExpanded: boolean = false;\n @State() isFocussed: boolean = false;\n @State() monochrome: boolean = false;\n @State() parentEl: HTMLElement | null = null;\n @State() parentIsAnchorTag: boolean = false;\n\n /**\n * If `true`, the card will be a clickable variant, instead of static.\n */\n @Prop({ mutable: true }) clickable?: boolean = false;\n\n /**\n * If `true`, the card will be disabled if it is clickable.\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 card will have an expandable area and expansion toggle button.\n */\n @Prop() expandable?: boolean = false;\n\n /**\n * If `true`, the card will fill the width of the container.\n */\n @Prop() fullWidth?: boolean = false;\n\n /**\n * The heading for the card. This is required, unless a slotted heading is used.\n */\n @Prop() heading?: string;\n\n /**\n * The URL that the clickable card link points to. If set, the clickable card will render as an \"a\" tag, otherwise it will render as a button.\n */\n @Prop() href?: string;\n\n /**\n * The human language of the linked URL.\n */\n @Prop() hreflang?: string = \"\";\n\n /**\n * The main body message of the card.\n */\n @Prop() message?: string = \"\";\n\n /**\n * How much of the referrer to send when following the link.\n */\n @Prop() referrerpolicy?: ReferrerPolicy;\n\n /**\n * The relationship of the linked URL as space-separated link types.\n */\n @Prop() rel?: string;\n\n /**\n * The subheading for the card.\n */\n @Prop() subheading?: string;\n\n /**\n * The place to display the linked URL, as the name for a browsing context (a tab, window, or iframe).\n */\n @Prop() target?: string;\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({ mutable: true }) theme?: IcThemeMode = \"inherit\";\n\n disconnectedCallback(): void {\n if (this.parentEl && this.parentIsAnchorTag) {\n this.parentEl.removeEventListener(\"focus\", this.parentFocussed);\n this.parentEl.removeEventListener(\"blur\", this.parentBlurred);\n }\n\n this.hostMutationObserver?.disconnect();\n }\n\n componentWillLoad(): void {\n this.parentEl = this.el.parentElement;\n\n if (this.parentEl?.tagName === \"A\") {\n this.clickable = true;\n this.parentIsAnchorTag = true;\n this.parentEl.classList.add(\"ic-card-wrapper-link\");\n this.parentEl.addEventListener(\"focus\", this.parentFocussed);\n this.parentEl.addEventListener(\"blur\", this.parentBlurred);\n }\n removeDisabledFalse(this.disabled, this.el);\n }\n\n componentDidLoad(): void {\n !isSlotUsed(this.el, \"heading\") &&\n onComponentRequiredPropUndefined(\n [{ prop: this.heading, propName: \"heading\" }],\n \"Card\"\n );\n this.updateTheme();\n\n this.hostMutationObserver = new MutationObserver((mutationList) =>\n renderDynamicChildSlots(\n mutationList,\n [\n \"message\",\n \"adornment\",\n \"expanded-content\",\n \"image-top\",\n \"image-mid\",\n \"icon\",\n \"interaction-button\",\n \"badge\",\n \"interaction-controls\",\n ],\n this\n )\n );\n this.hostMutationObserver.observe(this.el, {\n childList: true,\n });\n }\n\n @Listen(\"click\", { capture: true })\n handleHostClick(event: Event): void {\n if (this.disabled) {\n event.stopImmediatePropagation();\n }\n }\n\n @Listen(\"brandChange\", { target: \"document\" })\n brandChangeHandler(ev: CustomEvent<IcBrand>): void {\n this.updateTheme(ev.detail.mode);\n }\n\n /**\n * Sets focus on the card.\n */\n @Method()\n async setFocus(): Promise<void> {\n const shadowRoot = this.el.shadowRoot;\n\n if (shadowRoot) {\n if (shadowRoot.querySelector(\"a\")) {\n shadowRoot.querySelector(\"a\")?.focus();\n } else if (shadowRoot.querySelector(\"button\")) {\n shadowRoot.querySelector(\"button\")?.focus();\n }\n }\n }\n\n private parentFocussed = (): void => {\n this.isFocussed = true;\n };\n\n private parentBlurred = (): void => {\n this.isFocussed = false;\n };\n\n private updateTheme(mode: IcBrandForeground | null = null): void {\n const foregroundColor = getBrandFromContext(this.el, mode);\n\n if (foregroundColor !== IcBrandForegroundEnum.Default) {\n this.monochrome = true;\n this.theme =\n foregroundColor === IcBrandForegroundEnum.Light\n ? IcBrandForegroundEnum.Dark\n : IcBrandForegroundEnum.Light;\n }\n }\n\n private toggleExpanded = (): void => {\n this.areaExpanded = !this.areaExpanded;\n };\n\n render() {\n const {\n clickable,\n disabled,\n expandable,\n fullWidth,\n heading,\n isFocussed,\n message,\n monochrome,\n href,\n hreflang,\n parentIsAnchorTag,\n referrerpolicy,\n rel,\n subheading,\n target,\n theme,\n } = this;\n\n const Component =\n parentIsAnchorTag || !clickable\n ? \"div\"\n : href === undefined\n ? \"button\"\n : \"a\";\n\n const attrs = Component == \"a\" && {\n href: href,\n hrefLang: hreflang,\n referrerPolicy: referrerpolicy,\n rel: rel,\n target: target,\n };\n\n return (\n <Host\n class={{\n [`ic-theme-${theme}`]: theme !== \"inherit\",\n }}\n >\n <Component\n class={{\n card: true,\n clickable: !!clickable && !disabled,\n disabled: !!disabled,\n fullwidth: !!fullWidth,\n focussed: isFocussed,\n monochrome: monochrome,\n }}\n tabindex={clickable && !parentIsAnchorTag ? 0 : undefined}\n aria-disabled={disabled ? \"true\" : null}\n disabled={disabled}\n {...attrs}\n >\n {isSlotUsed(this.el, \"image-top\") && (\n <div class=\"image-top\">\n <slot name=\"image-top\"></slot>\n </div>\n )}\n <div class=\"card-header\">\n {isSlotUsed(this.el, \"icon\") && (\n <div class=\"icon\">\n <slot name=\"icon\" />\n </div>\n )}\n <div class=\"card-title\">\n <slot name=\"heading\">\n <ic-typography variant=\"h4\">\n <p>{heading}</p>\n </ic-typography>\n </slot>\n </div>\n {isSlotUsed(this.el, \"interaction-button\") && (\n <div class=\"interaction-button\">\n <slot name=\"interaction-button\"></slot>\n </div>\n )}\n </div>\n {(subheading || isSlotUsed(this.el, \"subheading\")) && (\n <div class=\"subheading\">\n <slot name=\"subheading\">\n <ic-typography variant=\"subtitle-small\">\n {subheading}\n </ic-typography>\n </slot>\n </div>\n )}\n {isSlotUsed(this.el, \"adornment\") && (\n <div class=\"adornment\">\n <slot name=\"adornment\"></slot>\n </div>\n )}\n {isSlotUsed(this.el, \"image-mid\") && (\n <div class=\"image-mid\">\n <slot name=\"image-mid\"></slot>\n </div>\n )}\n {(message || isSlotUsed(this.el, \"message\")) && (\n <div class=\"card-message\">\n {message && (\n <ic-typography variant=\"body\">{message}</ic-typography>\n )}\n {isSlotUsed(this.el, \"message\") && <slot name=\"message\"></slot>}\n </div>\n )}\n {(isSlotUsed(this.el, \"interaction-controls\") || expandable) && (\n <div class=\"interaction-area\">\n <div class=\"interaction-controls\">\n <slot name=\"interaction-controls\"></slot>\n </div>\n {expandable && (\n <ic-tooltip\n id=\"ic-tooltip-expand-button\"\n label=\"Toggle expandable area\"\n silent\n >\n <button\n class={{\n \"toggle-button\": true,\n [`toggle-button-${\n this.areaExpanded ? \"expanded\" : \"closed\"\n }`]: true,\n }}\n aria-label=\"Toggle expandable area\"\n aria-expanded={`${this.areaExpanded}`}\n aria-controls={\n this.areaExpanded ? \"expanded-content-area\" : null\n }\n onClick={this.toggleExpanded}\n innerHTML={chevronIcon}\n ></button>\n </ic-tooltip>\n )}\n </div>\n )}\n {isSlotUsed(this.el, \"expanded-content\") && this.areaExpanded && (\n <div class=\"expanded-content\" id=\"expanded-content-area\">\n <slot name=\"expanded-content\"></slot>\n </div>\n )}\n {isSlotUsed(this.el, \"badge\") && <slot name=\"badge\"></slot>}\n </Component>\n </Host>\n );\n }\n}\n"],"mappings":"oKAAA,MAAMA,EAAoB,qwZAC1B,MAAAC,EAAeD,E,MC2CFE,EAAY,MALzB,WAAAC,CAAAC,G,UAMUC,KAAAC,qBAAgD,KAI/CD,KAAAE,aAAwB,MACxBF,KAAAG,WAAsB,MACtBH,KAAAI,WAAsB,MACtBJ,KAAAK,SAA+B,KAC/BL,KAAAM,kBAA6B,MAKbN,KAAAO,UAAsB,MAKvCP,KAAAQ,SAAqB,MASrBR,KAAAS,WAAuB,MAKvBT,KAAAU,UAAsB,MAetBV,KAAAW,SAAoB,GAKpBX,KAAAY,QAAmB,GAyBFZ,KAAAa,MAAsB,UAkFvCb,KAAAc,eAAiB,KACvBd,KAAKG,WAAa,IAAI,EAGhBH,KAAAe,cAAgB,KACtBf,KAAKG,WAAa,KAAK,EAejBH,KAAAgB,eAAiB,KACvBhB,KAAKE,cAAgBF,KAAKE,YAAY,C,CAhKxC,oBAAAe,GACEC,EAAoBlB,KAAKQ,SAAUR,KAAKmB,G,CA0D1C,oBAAAC,G,MACE,GAAIpB,KAAKK,UAAYL,KAAKM,kBAAmB,CAC3CN,KAAKK,SAASgB,oBAAoB,QAASrB,KAAKc,gBAChDd,KAAKK,SAASgB,oBAAoB,OAAQrB,KAAKe,c,EAGjDO,EAAAtB,KAAKC,wBAAoB,MAAAqB,SAAA,SAAAA,EAAEC,Y,CAG7B,iBAAAC,G,MACExB,KAAKK,SAAWL,KAAKmB,GAAGM,cAExB,KAAIH,EAAAtB,KAAKK,YAAQ,MAAAiB,SAAA,SAAAA,EAAEI,WAAY,IAAK,CAClC1B,KAAKO,UAAY,KACjBP,KAAKM,kBAAoB,KACzBN,KAAKK,SAASsB,UAAUC,IAAI,wBAC5B5B,KAAKK,SAASwB,iBAAiB,QAAS7B,KAAKc,gBAC7Cd,KAAKK,SAASwB,iBAAiB,OAAQ7B,KAAKe,c,CAE9CG,EAAoBlB,KAAKQ,SAAUR,KAAKmB,G,CAG1C,gBAAAW,IACGC,EAAW/B,KAAKmB,GAAI,YACnBa,EACE,CAAC,CAAEC,KAAMjC,KAAKkC,QAASC,SAAU,YACjC,QAEJnC,KAAKoC,cAELpC,KAAKC,qBAAuB,IAAIoC,kBAAkBC,GAChDC,EACED,EACA,CACE,UACA,YACA,mBACA,YACA,YACA,OACA,qBACA,QACA,wBAEFtC,QAGJA,KAAKC,qBAAqBuC,QAAQxC,KAAKmB,GAAI,CACzCsB,UAAW,M,CAKf,eAAAC,CAAgBC,GACd,GAAI3C,KAAKQ,SAAU,CACjBmC,EAAMC,0B,EAKV,kBAAAC,CAAmBC,GACjB9C,KAAKoC,YAAYU,EAAGC,OAAOC,K,CAO7B,cAAMC,G,QACJ,MAAMC,EAAalD,KAAKmB,GAAG+B,WAE3B,GAAIA,EAAY,CACd,GAAIA,EAAWC,cAAc,KAAM,EACjC7B,EAAA4B,EAAWC,cAAc,QAAI,MAAA7B,SAAA,SAAAA,EAAE8B,O,MAC1B,GAAIF,EAAWC,cAAc,UAAW,EAC7CE,EAAAH,EAAWC,cAAc,aAAS,MAAAE,SAAA,SAAAA,EAAED,O,GAalC,WAAAhB,CAAYY,EAAiC,MACnD,MAAMM,EAAkBC,EAAoBvD,KAAKmB,GAAI6B,GAErD,GAAIM,IAAoBE,EAAsBC,QAAS,CACrDzD,KAAKI,WAAa,KAClBJ,KAAKa,MACHyC,IAAoBE,EAAsBE,MACtCF,EAAsBG,KACtBH,EAAsBE,K,EAQhC,MAAAE,GACE,MAAMrD,UACJA,EAASC,SACTA,EAAQC,WACRA,EAAUC,UACVA,EAASwB,QACTA,EAAO/B,WACPA,EAAUS,QACVA,EAAOR,WACPA,EAAUyD,KACVA,EAAIlD,SACJA,EAAQL,kBACRA,EAAiBwD,eACjBA,EAAcC,IACdA,EAAGC,WACHA,EAAUC,OACVA,EAAMpD,MACNA,GACEb,KAEJ,MAAMkE,EACJ5D,IAAsBC,EAClB,MACAsD,IAASM,UACT,SACA,IAEN,MAAMC,EAAQF,GAAa,KAAO,CAChCL,KAAMA,EACNQ,SAAU1D,EACV2D,eAAgBR,EAChBC,IAAKA,EACLE,OAAQA,GAGV,OACEM,EAACC,EAAI,CAAAC,IAAA,2CACHC,MAAO,CACL,CAAC,YAAY7D,KAAUA,IAAU,YAGnC0D,EAACL,EAASS,OAAAC,OAAA,CAAAH,IAAA,2CACRC,MAAO,CACLG,KAAM,KACNtE,YAAaA,IAAcC,EAC3BA,WAAYA,EACZsE,YAAapE,EACbqE,SAAU5E,EACVC,WAAYA,GAEd4E,SAAUzE,IAAcD,EAAoB,EAAI6D,UAAS,gBAC1C3D,EAAW,OAAS,KACnCA,SAAUA,GACN4D,GAEHrC,EAAW/B,KAAKmB,GAAI,cACnBoD,EAAA,OAAAE,IAAA,2CAAKC,MAAM,aACTH,EAAA,QAAAE,IAAA,2CAAMQ,KAAK,eAGfV,EAAA,OAAAE,IAAA,2CAAKC,MAAM,eACR3C,EAAW/B,KAAKmB,GAAI,SACnBoD,EAAA,OAAAE,IAAA,2CAAKC,MAAM,QACTH,EAAA,QAAAE,IAAA,2CAAMQ,KAAK,UAGfV,EAAA,OAAAE,IAAA,2CAAKC,MAAM,cACTH,EAAA,QAAAE,IAAA,2CAAMQ,KAAK,WACTV,EAAA,iBAAAE,IAAA,2CAAeS,QAAQ,MACrBX,EAAA,KAAAE,IAAA,4CAAIvC,MAITH,EAAW/B,KAAKmB,GAAI,uBACnBoD,EAAA,OAAAE,IAAA,2CAAKC,MAAM,sBACTH,EAAA,QAAAE,IAAA,2CAAMQ,KAAK,0BAIfjB,GAAcjC,EAAW/B,KAAKmB,GAAI,gBAClCoD,EAAA,OAAAE,IAAA,2CAAKC,MAAM,cACTH,EAAA,QAAAE,IAAA,2CAAMQ,KAAK,cACTV,EAAA,iBAAAE,IAAA,2CAAeS,QAAQ,kBACpBlB,KAKRjC,EAAW/B,KAAKmB,GAAI,cACnBoD,EAAA,OAAAE,IAAA,2CAAKC,MAAM,aACTH,EAAA,QAAAE,IAAA,2CAAMQ,KAAK,eAGdlD,EAAW/B,KAAKmB,GAAI,cACnBoD,EAAA,OAAAE,IAAA,2CAAKC,MAAM,aACTH,EAAA,QAAAE,IAAA,2CAAMQ,KAAK,gBAGbrE,GAAWmB,EAAW/B,KAAKmB,GAAI,aAC/BoD,EAAA,OAAAE,IAAA,2CAAKC,MAAM,gBACR9D,GACC2D,EAAA,iBAAAE,IAAA,2CAAeS,QAAQ,QAAQtE,GAEhCmB,EAAW/B,KAAKmB,GAAI,YAAcoD,EAAA,QAAAE,IAAA,2CAAMQ,KAAK,cAGhDlD,EAAW/B,KAAKmB,GAAI,yBAA2BV,IAC/C8D,EAAA,OAAAE,IAAA,2CAAKC,MAAM,oBACTH,EAAA,OAAAE,IAAA,2CAAKC,MAAM,wBACTH,EAAA,QAAAE,IAAA,2CAAMQ,KAAK,0BAEZxE,GACC8D,EAAA,cAAAE,IAAA,2CACEU,GAAG,2BACHC,MAAM,yBACNC,OAAM,MAENd,EAAA,UAAAE,IAAA,2CACEC,MAAO,CACL,gBAAiB,KACjB,CAAC,iBACC1E,KAAKE,aAAe,WAAa,YAC9B,MACN,aACU,yBAAwB,gBACpB,GAAGF,KAAKE,eAAc,gBAEnCF,KAAKE,aAAe,wBAA0B,KAEhDoF,QAAStF,KAAKgB,eACduE,UAAWC,MAMpBzD,EAAW/B,KAAKmB,GAAI,qBAAuBnB,KAAKE,cAC/CqE,EAAA,OAAAE,IAAA,2CAAKC,MAAM,mBAAmBS,GAAG,yBAC/BZ,EAAA,QAAAE,IAAA,2CAAMQ,KAAK,sBAGdlD,EAAW/B,KAAKmB,GAAI,UAAYoD,EAAA,QAAAE,IAAA,2CAAMQ,KAAK,W","ignoreList":[]}
|
1
|
+
{"version":3,"names":["icCardVerticalCss","IcCardVerticalStyle0","CardVertical","constructor","hostRef","this","hostMutationObserver","areaExpanded","isFocussed","monochrome","parentEl","parentIsAnchorTag","clickable","disabled","expandable","fullWidth","hreflang","message","theme","parentFocussed","parentBlurred","toggleExpanded","watchDisabledHandler","removeDisabledFalse","el","disconnectedCallback","removeEventListener","_a","disconnect","componentWillLoad","parentElement","tagName","classList","add","addEventListener","componentDidLoad","isSlotUsed","onComponentRequiredPropUndefined","prop","heading","propName","updateTheme","MutationObserver","mutationList","renderDynamicChildSlots","observe","childList","handleHostClick","event","stopImmediatePropagation","brandChangeHandler","ev","detail","mode","setFocus","shadowRoot","querySelector","focus","_b","foregroundColor","getBrandFromContext","IcBrandForegroundEnum","Default","Light","Dark","render","href","referrerpolicy","rel","subheading","target","Component","undefined","attrs","hrefLang","referrerPolicy","h","Host","key","class","Object","assign","card","fullwidth","focussed","tabindex","name","variant","id","label","silent","onClick","innerHTML","chevronIcon"],"sources":["src/components/ic-card-vertical/ic-card-vertical.css?tag=ic-card-vertical&encapsulation=shadow","src/components/ic-card-vertical/ic-card-vertical.tsx"],"sourcesContent":["@import \"../../global/normalize.css\";\n\n:host {\n display: flex;\n}\n\na {\n text-decoration: none !important;\n color: var(--ic-card-text-primary) !important;\n}\n\na:visited {\n color: var(--ic-card-link-action-dark) !important;\n}\n\nbutton {\n border: none;\n background-color: transparent;\n outline: var(--ic-hc-focus-outline);\n}\n\n.card {\n display: flex;\n flex-direction: column;\n border: var(--ic-space-1px) solid var(--ic-card-border-primary);\n border-radius: var(--ic-border-radius);\n box-sizing: border-box;\n padding: var(--ic-space-md);\n text-align: left;\n color: var(--ic-card-text-primary);\n transition: var(--ic-easing-transition-fast);\n position: relative;\n width: inherit;\n min-width: fit-content;\n height: fit-content;\n min-height: 100%;\n\n ::slotted(svg) {\n fill: var(--ic-card-icon);\n }\n\n &.monochrome {\n border: var(--ic-border-width) solid var(--ic-card-border-monochrome);\n }\n\n &.fullwidth {\n width: 100%;\n }\n\n &.clickable {\n &:hover {\n background-color: var(--ic-card-background-hover);\n border: var(--ic-space-1px) solid var(--ic-card-hover-border-color);\n cursor: pointer;\n }\n\n &.focussed,\n &:focus {\n background-color: var(--ic-card-background-hover);\n box-shadow: var(--ic-border-focus);\n outline: var(--ic-hc-focus-outline);\n border: var(--ic-space-1px) solid var(--ic-card-pressed-border-color);\n }\n\n &:active {\n background-color: var(--ic-card-background-pressed);\n box-shadow: var(--ic-border-focus);\n\n .card-title {\n text-decoration: none;\n }\n }\n\n .card-title {\n --ic-typography-color: var(--ic-card-clickable-text);\n\n color: var(--ic-card-clickable-text);\n text-decoration: underline;\n text-decoration-thickness: var(--ic-space-1px);\n margin-bottom: var(--ic-space-xxs);\n }\n\n .interaction-button,\n .icon {\n margin-bottom: var(--ic-space-xxs);\n }\n }\n\n &.disabled {\n border: var(--ic-space-1px) dashed var(--ic-card-disabled-border-color);\n\n .card-message,\n .subheading,\n .card-title {\n --ic-typography-color: var(--ic-card-disabled-text);\n }\n\n .card-title {\n text-decoration: underline;\n text-decoration-thickness: var(--ic-space-1px);\n text-decoration-color: var(--ic-card-disabled-text);\n color: var(--ic-card-disabled-text);\n }\n\n ::slotted(svg) {\n fill: var(--ic-card-icon-disabled);\n }\n }\n}\n\n.card-header {\n display: flex;\n align-items: center;\n}\n\n.icon {\n display: flex;\n align-items: center;\n padding-right: var(--ic-space-xs);\n}\n\n.card.clickable:hover .card-title,\n.card.clickable:focus .card-title,\n.card.clickable.focussed .card-title {\n display: inline-block;\n border-bottom: 0.25rem solid !important;\n margin-bottom: 0 !important;\n text-decoration: none;\n}\n\n@supports (text-underline-offset: 25%) {\n .card.clickable:hover .card-title,\n .card.clickable:focus .card-title,\n .card.clickable.focussed .card-title {\n text-decoration-line: underline;\n text-decoration-thickness: 25%;\n text-underline-offset: 25%;\n border-bottom: 0 !important;\n margin-bottom: 0.25rem !important;\n }\n}\n\n.subheading {\n margin-top: var(--ic-space-xxs);\n}\n\n.adornment {\n margin-top: var(--ic-space-xxs);\n}\n\n.card-message {\n margin-top: var(--ic-space-md);\n align-items: left;\n}\n\n.interaction-button {\n margin-left: auto;\n}\n\n.image-top {\n margin-bottom: var(--ic-space-md);\n display: flex;\n justify-content: center;\n}\n\n.image-mid {\n margin-top: var(--ic-space-md);\n display: flex;\n justify-content: center;\n}\n\n.interaction-area {\n display: flex;\n flex-grow: 1;\n gap: var(--ic-space-md);\n margin-top: var(--ic-space-md);\n align-items: flex-end;\n}\n\n.interaction-controls {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: var(--ic-space-sm);\n}\n\n.toggle-button {\n width: 2.5rem;\n height: 2.5rem;\n padding: var(--ic-space-xs);\n margin: var(--ic-space-1px) 0;\n min-width: 0;\n cursor: pointer;\n transition: var(--ic-easing-transition-fast);\n border-radius: var(--ic-border-radius);\n display: inline-flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n background: none;\n border: none;\n box-sizing: border-box;\n white-space: nowrap;\n vertical-align: middle;\n\n &:hover {\n background-color: var(--ic-card-background-hover);\n }\n\n &:focus {\n box-shadow: var(--ic-border-focus);\n }\n\n &:active:not(:focus) {\n background-color: var(--ic-card-background-pressed);\n }\n\n svg {\n pointer-events: none;\n width: 100% !important;\n height: 100% !important;\n fill: currentcolor !important;\n }\n}\n\n#ic-tooltip-expand-button {\n margin-left: auto;\n position: relative;\n}\n\n.toggle-button-closed svg {\n transform: rotate(90deg);\n}\n\n.toggle-button-expanded svg {\n transform: rotate(-90deg);\n}\n\n.expanded-content {\n margin-top: var(--ic-space-md);\n}\n\n/** High Contrast **/\n@media (forced-colors: active) {\n .card {\n ::slotted(svg) {\n fill: currentcolor;\n }\n\n &.disabled {\n border-color: GrayText !important;\n\n ::slotted(svg) {\n fill: GrayText !important;\n }\n\n .card-message,\n .subheading,\n .card-title {\n color: GrayText;\n\n --ic-typography-color: GrayText;\n }\n }\n }\n\n .toggle-button:focus,\n .toggle-button:hover {\n outline-color: Highlight;\n }\n}\n","import {\n Component,\n Element,\n Listen,\n Prop,\n State,\n h,\n Method,\n Host,\n Watch,\n} from \"@stencil/core\";\nimport {\n onComponentRequiredPropUndefined,\n isSlotUsed,\n getBrandFromContext,\n removeDisabledFalse,\n renderDynamicChildSlots,\n} from \"../../utils/helpers\";\nimport {\n IcBrand,\n IcBrandForeground,\n IcBrandForegroundEnum,\n IcThemeMode,\n} from \"../../utils/types\";\nimport chevronIcon from \"../../assets/chevron-icon.svg\";\n\n/**\n * @slot heading - Content will be placed at the top of the card to the right of the icon.\n * @slot message - Content will be placed in the main body of the card.\n * @slot subheading - Content will be placed below the card heading.\n * @slot adornment - Content will be placed below the card subheading.\n * @slot image-top - Content will be placed at the top of the card above all other content.\n * @slot image-mid - Content will be placed below the card heading section.\n * @slot icon - Content will be placed to the left of the card heading.\n * @slot interaction-button - Content will be placed in the top right corner of the heading section.\n * @slot interaction-controls - Content will be placed below the card message.\n * @slot expanded-content - Content will be placed below the interaction controls but will not initially be rendered.\n * @slot badge - Badge component overlaying the top right of the card.\n */\n@Component({\n tag: \"ic-card-vertical\",\n styleUrl: \"ic-card-vertical.css\",\n shadow: true,\n})\nexport class CardVertical {\n private hostMutationObserver: MutationObserver | null = null;\n\n @Element() el: HTMLIcCardVerticalElement;\n\n @State() areaExpanded: boolean = false;\n @State() isFocussed: boolean = false;\n @State() monochrome: boolean = false;\n @State() parentEl: HTMLElement | null = null;\n @State() parentIsAnchorTag: boolean = false;\n\n /**\n * If `true`, the card will be a clickable variant, instead of static.\n */\n @Prop({ mutable: true }) clickable?: boolean = false;\n\n /**\n * If `true`, the card will be disabled if it is clickable.\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 card will have an expandable area and expansion toggle button.\n */\n @Prop() expandable?: boolean = false;\n\n /**\n * If `true`, the card will fill the width of the container.\n */\n @Prop() fullWidth?: boolean = false;\n\n /**\n * The heading for the card. This is required, unless a slotted heading is used.\n */\n @Prop() heading?: string;\n\n /**\n * The URL that the clickable card link points to. If set, the clickable card will render as an \"a\" tag, otherwise it will render as a button.\n */\n @Prop() href?: string;\n\n /**\n * The human language of the linked URL.\n */\n @Prop() hreflang?: string = \"\";\n\n /**\n * The main body message of the card.\n */\n @Prop() message?: string = \"\";\n\n /**\n * How much of the referrer to send when following the link.\n */\n @Prop() referrerpolicy?: ReferrerPolicy;\n\n /**\n * The relationship of the linked URL as space-separated link types.\n */\n @Prop() rel?: string;\n\n /**\n * The subheading for the card.\n */\n @Prop() subheading?: string;\n\n /**\n * The place to display the linked URL, as the name for a browsing context (a tab, window, or iframe).\n */\n @Prop() target?: string;\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({ mutable: true }) theme?: IcThemeMode = \"inherit\";\n\n disconnectedCallback(): void {\n if (this.parentEl && this.parentIsAnchorTag) {\n this.parentEl.removeEventListener(\"focus\", this.parentFocussed);\n this.parentEl.removeEventListener(\"blur\", this.parentBlurred);\n }\n\n this.hostMutationObserver?.disconnect();\n }\n\n componentWillLoad(): void {\n this.parentEl = this.el.parentElement;\n\n if (this.parentEl?.tagName === \"A\") {\n this.clickable = true;\n this.parentIsAnchorTag = true;\n this.parentEl.classList.add(\"ic-card-wrapper-link\");\n this.parentEl.addEventListener(\"focus\", this.parentFocussed);\n this.parentEl.addEventListener(\"blur\", this.parentBlurred);\n }\n removeDisabledFalse(this.disabled, this.el);\n }\n\n componentDidLoad(): void {\n !isSlotUsed(this.el, \"heading\") &&\n onComponentRequiredPropUndefined(\n [{ prop: this.heading, propName: \"heading\" }],\n \"Card\"\n );\n this.updateTheme();\n\n this.hostMutationObserver = new MutationObserver((mutationList) =>\n renderDynamicChildSlots(\n mutationList,\n [\n \"message\",\n \"adornment\",\n \"expanded-content\",\n \"image-top\",\n \"image-mid\",\n \"icon\",\n \"interaction-button\",\n \"badge\",\n \"interaction-controls\",\n ],\n this\n )\n );\n this.hostMutationObserver.observe(this.el, {\n childList: true,\n });\n }\n\n @Listen(\"click\", { capture: true })\n handleHostClick(event: Event): void {\n if (this.disabled) {\n event.stopImmediatePropagation();\n }\n }\n\n @Listen(\"brandChange\", { target: \"document\" })\n brandChangeHandler(ev: CustomEvent<IcBrand>): void {\n this.updateTheme(ev.detail.mode);\n }\n\n /**\n * Sets focus on the card.\n */\n @Method()\n async setFocus(): Promise<void> {\n const shadowRoot = this.el.shadowRoot;\n\n if (shadowRoot) {\n if (shadowRoot.querySelector(\"a\")) {\n shadowRoot.querySelector(\"a\")?.focus();\n } else if (shadowRoot.querySelector(\"button\")) {\n shadowRoot.querySelector(\"button\")?.focus();\n }\n }\n }\n\n private parentFocussed = (): void => {\n this.isFocussed = true;\n };\n\n private parentBlurred = (): void => {\n this.isFocussed = false;\n };\n\n private updateTheme(mode: IcBrandForeground | null = null): void {\n const foregroundColor = getBrandFromContext(this.el, mode);\n\n if (foregroundColor !== IcBrandForegroundEnum.Default) {\n this.monochrome = true;\n this.theme =\n foregroundColor === IcBrandForegroundEnum.Light\n ? IcBrandForegroundEnum.Dark\n : IcBrandForegroundEnum.Light;\n }\n }\n\n private toggleExpanded = (): void => {\n this.areaExpanded = !this.areaExpanded;\n };\n\n render() {\n const {\n clickable,\n disabled,\n expandable,\n fullWidth,\n heading,\n isFocussed,\n message,\n monochrome,\n href,\n hreflang,\n parentIsAnchorTag,\n referrerpolicy,\n rel,\n subheading,\n target,\n theme,\n } = this;\n\n const Component =\n parentIsAnchorTag || !clickable\n ? \"div\"\n : href === undefined\n ? \"button\"\n : \"a\";\n\n const attrs = Component == \"a\" && {\n href: href,\n hrefLang: hreflang,\n referrerPolicy: referrerpolicy,\n rel: rel,\n target: target,\n };\n\n return (\n <Host\n class={{\n [`ic-theme-${theme}`]: theme !== \"inherit\",\n }}\n >\n <Component\n class={{\n card: true,\n clickable: !!clickable && !disabled,\n disabled: !!disabled,\n fullwidth: !!fullWidth,\n focussed: isFocussed,\n monochrome: monochrome,\n }}\n tabindex={clickable && !parentIsAnchorTag ? 0 : undefined}\n aria-disabled={disabled ? \"true\" : null}\n disabled={disabled}\n {...attrs}\n >\n {isSlotUsed(this.el, \"image-top\") && (\n <div class=\"image-top\">\n <slot name=\"image-top\"></slot>\n </div>\n )}\n <div class=\"card-header\">\n {isSlotUsed(this.el, \"icon\") && (\n <div class=\"icon\">\n <slot name=\"icon\" />\n </div>\n )}\n <div class=\"card-title\">\n <slot name=\"heading\">\n <ic-typography variant=\"h4\">\n <p>{heading}</p>\n </ic-typography>\n </slot>\n </div>\n {isSlotUsed(this.el, \"interaction-button\") && (\n <div class=\"interaction-button\">\n <slot name=\"interaction-button\"></slot>\n </div>\n )}\n </div>\n {(subheading || isSlotUsed(this.el, \"subheading\")) && (\n <div class=\"subheading\">\n <slot name=\"subheading\">\n <ic-typography variant=\"subtitle-small\">\n {subheading}\n </ic-typography>\n </slot>\n </div>\n )}\n {isSlotUsed(this.el, \"adornment\") && (\n <div class=\"adornment\">\n <slot name=\"adornment\"></slot>\n </div>\n )}\n {isSlotUsed(this.el, \"image-mid\") && (\n <div class=\"image-mid\">\n <slot name=\"image-mid\"></slot>\n </div>\n )}\n {(message || isSlotUsed(this.el, \"message\")) && (\n <div class=\"card-message\">\n {message && (\n <ic-typography variant=\"body\">{message}</ic-typography>\n )}\n {isSlotUsed(this.el, \"message\") && <slot name=\"message\"></slot>}\n </div>\n )}\n {(isSlotUsed(this.el, \"interaction-controls\") || expandable) && (\n <div class=\"interaction-area\">\n <div class=\"interaction-controls\">\n <slot name=\"interaction-controls\"></slot>\n </div>\n {expandable && (\n <ic-tooltip\n id=\"ic-tooltip-expand-button\"\n label=\"Toggle expandable area\"\n silent\n >\n <button\n class={{\n \"toggle-button\": true,\n [`toggle-button-${\n this.areaExpanded ? \"expanded\" : \"closed\"\n }`]: true,\n }}\n aria-label=\"Toggle expandable area\"\n aria-expanded={`${this.areaExpanded}`}\n aria-controls={\n this.areaExpanded ? \"expanded-content-area\" : null\n }\n onClick={this.toggleExpanded}\n innerHTML={chevronIcon}\n ></button>\n </ic-tooltip>\n )}\n </div>\n )}\n {isSlotUsed(this.el, \"expanded-content\") && this.areaExpanded && (\n <div class=\"expanded-content\" id=\"expanded-content-area\">\n <slot name=\"expanded-content\"></slot>\n </div>\n )}\n {isSlotUsed(this.el, \"badge\") && <slot name=\"badge\"></slot>}\n </Component>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
@@ -0,0 +1,2 @@
|
|
1
|
+
import{r as t,c as e,h as o,H as i,g as a}from"./p-8e4e97b4.js";import{r as s,i as r}from"./p-b57e59b7.js";import"./p-bddf799a.js";const n='/*! 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{--indicator-initial-color:rgba(23 89 188 / 0%);--focus-indicator:var(--ic-border-focus);display:flex;align-items:center;border-radius:0;color:var(--ic-tab-label);--ic-typography-color:var(--ic-tab-label);height:2.5rem;padding:0 var(--ic-space-md);cursor:pointer;position:relative;border-bottom:var(--ic-space-xxs) solid var(--indicator-initial-color);gap:var(--ic-space-xs);transition:all var(--ic-easing-transition-fast)}::slotted([slot="icon"]){fill:var(--ic-tab-icon)}:host(.ic-tab-disabled) ::slotted([slot="icon"]){fill:var(--ic-tab-icon-disabled)}:host(:focus){box-shadow:var(--focus-indicator);border-radius:var(--ic-border-radius)}:host(:focus-visible){outline:var(--ic-hc-focus-outline)}:host(:hover){background-color:var(--ic-tab-item-hover)}:host(:active){background-color:var(--ic-tab-item-pressed)}:host(.ic-tab-selected){border-bottom:var(--ic-space-xxs) solid var(--ic-tab-item)}:host(.ic-tab-disabled){pointer-events:none;color:var(--ic-architectural-300)}:host(.ic-tab-disabled) ic-typography{--ic-typography-color:var(--ic-tab-label-disabled)}:host(.ic-tab-monochrome){color:var(--ic-tab-label-monochrome)}:host(.ic-tab-monochrome.ic-tab-disabled) ic-typography{color:var(--ic-tab-label-monochrome-disabled)}:host(.ic-tab-monochrome) ::slotted([slot="icon"]){fill:var(--ic-tab-icon-monochrome)}:host(.ic-tab-monochrome.ic-tab-disabled) ::slotted([slot="icon"]){fill:var(--ic-tab-icon-monochrome-disabled)}:host(.ic-tab-monochrome.ic-tab-selected){border-bottom:var(--ic-space-xxs) solid var(--ic-tab-item-monochrome)}:host(.ic-tab-monochrome:hover){background-color:var(--ic-tab-item-hover-monochrome)}:host(.ic-tab-monochrome:active){background-color:var(--ic-tab-item-pressed-monochrome)}@media (prefers-reduced-motion: no-preference){:host(.ic-tab-selected.with-transition){transition:all var(--ic-easing-transition-slow),\n border-color var(--ic-transition-duration-slow)}}.ic-tab-label{pointer-events:none;text-wrap:nowrap}::slotted(svg){fill:currentcolor}@media (forced-colors: active){:host{border-bottom:var(--ic-space-xxs) solid canvas}:host(.ic-tab-disabled){color:GrayText}:host(.ic-tab-disabled) ic-typography{color:GrayText;--ic-typography-color:GrayText}}';const c=n;const l=class{constructor(o){t(this,o);this.tabClick=e(this,"tabClick",7);this.tabCreated=e(this,"tabCreated",7);this.tabEnabled=e(this,"tabEnabled",7);this.tabFocus=e(this,"tabFocus",7);this.tabRemoved=e(this,"tabRemoved",7);this.focusFromClick=false;this.isInitialRender=true;this.contextId="default";this.disabled=false;this.monochrome=false;this.selected=false;this.theme="inherit";this.handleClick=()=>{this.tabClick.emit({tabId:this.tabId,contextId:this.contextId,position:this.tabPosition});if(this.focusFromClick){this.tabFocus.emit({tabId:this.tabId,contextId:this.contextId,position:this.tabPosition});this.focusFromClick=false}};this.handleFocus=()=>{if(!this.focusFromClick){this.focusTabId=this.tabId;this.tabFocus.emit({tabId:this.tabId,contextId:this.contextId,position:this.tabPosition})}};this.handleMouseDown=()=>{this.focusFromClick=true}}watchDisabledHandler(){s(this.disabled,this.el)}disabledWatchHandler(){this.tabEnabled.emit()}connectedCallback(){this.tabCreated.emit(this.el)}disconnectedCallback(){var t;(t=document.querySelector(`ic-tab-context[context-id=${this.contextId}]`))===null||t===void 0?void 0:t.tabRemovedHandler(!!this.focusTabId)}componentWillLoad(){s(this.disabled,this.el)}componentDidUpdate(){this.isInitialRender=false}async setFocus(){if(this.el){this.el.focus()}}render(){const{disabled:t,selected:e,theme:a,monochrome:s,handleClick:n,handleFocus:c,handleMouseDown:l}=this;return o(i,{key:"fe6e517a696ed23c6fb64028d617997439ebbac6",class:{["with-transition"]:!this.isInitialRender,["ic-tab-selected"]:!!e,["ic-tab-disabled"]:!!t,[`ic-theme-${a}`]:a!=="inherit",["ic-tab-monochrome"]:!!s},role:"tab","aria-selected":`${e}`,onClick:n,onFocus:c,onMouseDown:l,"aria-disabled":`${t}`,tabindex:e?0:-1},r(this.el,"icon")&&o("slot",{key:"9c2bf173facd6f4b4fa96824bb14db06a2b97c6b",name:"icon"}),o("ic-typography",{key:"f1d4732d8f5ad9f198f2da6c08c3717731dcd8da",class:"ic-tab-label",variant:"label"},o("span",{key:"9f993fe757e86acb507a58259e47e507a5feddc3"},o("slot",{key:"2bfe6c474802a62771ce58947305f0b71db1803d"}))),r(this.el,"badge")&&o("slot",{key:"23c6074e338df9e72b77b5449938f61f9ee042a0",name:"badge"}))}get el(){return a(this)}static get watchers(){return{disabled:["watchDisabledHandler","disabledWatchHandler"]}}};l.style=c;export{l as ic_tab};
|
2
|
+
//# sourceMappingURL=p-1423bd4a.entry.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["icTabCss","IcTabStyle0","Tab","constructor","hostRef","this","focusFromClick","isInitialRender","contextId","disabled","monochrome","selected","theme","handleClick","tabClick","emit","tabId","position","tabPosition","tabFocus","handleFocus","focusTabId","handleMouseDown","watchDisabledHandler","removeDisabledFalse","el","disabledWatchHandler","tabEnabled","connectedCallback","tabCreated","disconnectedCallback","_a","document","querySelector","tabRemovedHandler","componentWillLoad","componentDidUpdate","setFocus","focus","render","h","Host","key","class","role","onClick","onFocus","onMouseDown","tabindex","isSlotUsed","name","variant"],"sources":["src/components/ic-tab/ic-tab.css?tag=ic-tab&encapsulation=shadow","src/components/ic-tab/ic-tab.tsx"],"sourcesContent":["@import \"../../global/normalize.css\";\n\n:host {\n --indicator-initial-color: rgba(23 89 188 / 0%);\n --focus-indicator: var(--ic-border-focus);\n\n display: flex;\n align-items: center;\n border-radius: 0;\n color: var(--ic-tab-label);\n\n --ic-typography-color: var(--ic-tab-label);\n\n height: 2.5rem;\n padding: 0 var(--ic-space-md);\n cursor: pointer;\n position: relative;\n border-bottom: var(--ic-space-xxs) solid var(--indicator-initial-color);\n gap: var(--ic-space-xs);\n transition: all var(--ic-easing-transition-fast);\n}\n\n::slotted([slot=\"icon\"]) {\n fill: var(--ic-tab-icon);\n}\n\n:host(.ic-tab-disabled) ::slotted([slot=\"icon\"]) {\n fill: var(--ic-tab-icon-disabled);\n}\n\n:host(:focus) {\n box-shadow: var(--focus-indicator);\n border-radius: var(--ic-border-radius);\n}\n\n:host(:focus-visible) {\n outline: var(--ic-hc-focus-outline);\n}\n\n:host(:hover) {\n background-color: var(--ic-tab-item-hover);\n}\n\n:host(:active) {\n background-color: var(--ic-tab-item-pressed);\n}\n\n:host(.ic-tab-selected) {\n border-bottom: var(--ic-space-xxs) solid var(--ic-tab-item);\n}\n\n:host(.ic-tab-disabled) {\n pointer-events: none;\n color: var(--ic-architectural-300);\n}\n\n:host(.ic-tab-disabled) ic-typography {\n --ic-typography-color: var(--ic-tab-label-disabled);\n}\n\n:host(.ic-tab-monochrome) {\n color: var(--ic-tab-label-monochrome);\n}\n\n:host(.ic-tab-monochrome.ic-tab-disabled) ic-typography {\n color: var(--ic-tab-label-monochrome-disabled);\n}\n\n:host(.ic-tab-monochrome) ::slotted([slot=\"icon\"]) {\n fill: var(--ic-tab-icon-monochrome);\n}\n\n:host(.ic-tab-monochrome.ic-tab-disabled) ::slotted([slot=\"icon\"]) {\n fill: var(--ic-tab-icon-monochrome-disabled);\n}\n\n:host(.ic-tab-monochrome.ic-tab-selected) {\n border-bottom: var(--ic-space-xxs) solid var(--ic-tab-item-monochrome);\n}\n\n:host(.ic-tab-monochrome:hover) {\n background-color: var(--ic-tab-item-hover-monochrome);\n}\n\n:host(.ic-tab-monochrome:active) {\n background-color: var(--ic-tab-item-pressed-monochrome);\n}\n\n@media (prefers-reduced-motion: no-preference) {\n :host(.ic-tab-selected.with-transition) {\n transition: all var(--ic-easing-transition-slow),\n border-color var(--ic-transition-duration-slow);\n }\n}\n\n.ic-tab-label {\n pointer-events: none;\n text-wrap: nowrap;\n}\n\n::slotted(svg) {\n fill: currentcolor;\n}\n\n@media (forced-colors: active) {\n :host {\n border-bottom: var(--ic-space-xxs) solid canvas;\n }\n\n :host(.ic-tab-disabled) {\n color: GrayText;\n }\n\n :host(.ic-tab-disabled) ic-typography {\n color: GrayText;\n\n --ic-typography-color: GrayText;\n }\n}\n\n/* Add back in after storybook has the `color-scheme: light dark` code */\n\n/* @media (prefers-color-scheme: dark) and (not (forced-colors: active)) {\n :host(ic-tab) .ic-tab-label {\n color: var(--ic-architectural-white);\n }\n :host(ic-tab.ic-tab-disabled) .ic-tab-label {\n color: inherit;\n }\n} */\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n Host,\n Prop,\n h,\n Method,\n Watch,\n} from \"@stencil/core\";\n\nimport { IcTabClickEventDetail } from \"./ic-tab.types\";\nimport { IcThemeMode } from \"../../utils/types\";\nimport { isSlotUsed, removeDisabledFalse } from \"../../utils/helpers\";\n\n/**\n * @slot icon - Content will be rendered next to the tab label.\n * @slot badge - Badge component displayed inline with the tab.\n */\n@Component({\n tag: \"ic-tab\",\n styleUrl: \"ic-tab.css\",\n shadow: true,\n})\nexport class Tab {\n private focusFromClick: boolean = false;\n private focusTabId: string;\n private isInitialRender: boolean = true;\n\n @Element() el: HTMLIcTabElement;\n\n /** @internal The unique context needed if using multiple tabs inside one another i.e. rendering another tabs inside a tab panel. */\n @Prop({ reflect: true }) contextId?: string = \"default\";\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 /** @internal Determines whether black variant of the tabs should be displayed. */\n @Prop() monochrome?: boolean = false;\n\n /** @internal If `true`, the tab will display with a selected indicator and tabIndex will be set. */\n @Prop({ reflect: true }) selected?: boolean = false;\n\n /** @internal The shared ID between panel and tab. */\n @Prop({ reflect: true }) tabId!: string;\n\n /** @internal The position of the tab inside the tabs array in context. */\n @Prop() tabPosition!: number;\n\n /** @internal Determines whether the light or dark variant of the tabs should be displayed. */\n @Prop() theme?: IcThemeMode = \"inherit\";\n\n @Watch(\"disabled\")\n disabledWatchHandler(): void {\n this.tabEnabled.emit();\n }\n\n /**\n * @internal Emitted when a tab is selected.\n */\n @Event() tabClick: EventEmitter<IcTabClickEventDetail>;\n\n /**\n * @internal Emitted when a tab is dynamically created.\n */\n @Event() tabCreated: EventEmitter<HTMLIcTabElement>;\n\n /**\n * @internal Emitted when a tab's disabled prop changes\n */\n @Event() tabEnabled: EventEmitter<void>;\n\n /**\n * @internal Emitted when a tab is focussed.\n */\n @Event() tabFocus: EventEmitter<IcTabClickEventDetail>;\n\n /**\n * @internal Emitted when a tab is unmounted.\n */\n @Event() tabRemoved: EventEmitter<void>;\n\n connectedCallback(): void {\n this.tabCreated.emit(this.el);\n }\n\n disconnectedCallback(): void {\n document\n .querySelector<HTMLIcTabContextElement>(\n `ic-tab-context[context-id=${this.contextId}]`\n )\n ?.tabRemovedHandler(!!this.focusTabId);\n }\n\n componentWillLoad(): void {\n removeDisabledFalse(this.disabled, this.el);\n }\n\n componentDidUpdate(): void {\n this.isInitialRender = false;\n }\n\n /**\n * Sets focus on the tab.\n */\n @Method()\n async setFocus(): Promise<void> {\n if (this.el) {\n this.el.focus();\n }\n }\n\n private handleClick = () => {\n this.tabClick.emit({\n tabId: this.tabId,\n contextId: this.contextId!,\n position: this.tabPosition,\n });\n if (this.focusFromClick) {\n this.tabFocus.emit({\n tabId: this.tabId,\n contextId: this.contextId!,\n position: this.tabPosition,\n });\n this.focusFromClick = false;\n }\n };\n\n private handleFocus = () => {\n if (!this.focusFromClick) {\n this.focusTabId = this.tabId;\n\n this.tabFocus.emit({\n tabId: this.tabId,\n contextId: this.contextId!,\n position: this.tabPosition,\n });\n }\n };\n\n private handleMouseDown = () => {\n //set flag so that focus gets handled after click\n //there is a timing issue where a long click only causes focus to happen & not the click\n //the focus does need to be a separate event though to handle focus from keyboard\n this.focusFromClick = true;\n };\n\n render() {\n const {\n disabled,\n selected,\n theme,\n monochrome,\n handleClick,\n handleFocus,\n handleMouseDown,\n } = this;\n return (\n <Host\n class={{\n [\"with-transition\"]: !this.isInitialRender,\n [\"ic-tab-selected\"]: !!selected,\n [\"ic-tab-disabled\"]: !!disabled,\n [`ic-theme-${theme}`]: theme !== \"inherit\",\n [\"ic-tab-monochrome\"]: !!monochrome,\n }}\n role=\"tab\"\n aria-selected={`${selected}`}\n onClick={handleClick}\n onFocus={handleFocus}\n onMouseDown={handleMouseDown}\n aria-disabled={`${disabled}`}\n tabindex={selected ? 0 : -1}\n >\n {isSlotUsed(this.el, \"icon\") && <slot name=\"icon\"></slot>}\n <ic-typography class=\"ic-tab-label\" variant=\"label\">\n <span>\n <slot></slot>\n </span>\n </ic-typography>\n {isSlotUsed(this.el, \"badge\") && <slot name=\"badge\"></slot>}\n </Host>\n );\n }\n}\n"],"mappings":"2GAAA,MAAMA,EAAW,0/IACjB,MAAAC,EAAeD,E,MCwBFE,EAAG,MALhB,WAAAC,CAAAC,G,qMAMUC,KAAAC,eAA0B,MAE1BD,KAAAE,gBAA2B,KAKVF,KAAAG,UAAqB,UAKtCH,KAAAI,SAAqB,MAOrBJ,KAAAK,WAAuB,MAGNL,KAAAM,SAAqB,MAStCN,KAAAO,MAAsB,UA8DtBP,KAAAQ,YAAc,KACpBR,KAAKS,SAASC,KAAK,CACjBC,MAAOX,KAAKW,MACZR,UAAWH,KAAKG,UAChBS,SAAUZ,KAAKa,cAEjB,GAAIb,KAAKC,eAAgB,CACvBD,KAAKc,SAASJ,KAAK,CACjBC,MAAOX,KAAKW,MACZR,UAAWH,KAAKG,UAChBS,SAAUZ,KAAKa,cAEjBb,KAAKC,eAAiB,K,GAIlBD,KAAAe,YAAc,KACpB,IAAKf,KAAKC,eAAgB,CACxBD,KAAKgB,WAAahB,KAAKW,MAEvBX,KAAKc,SAASJ,KAAK,CACjBC,MAAOX,KAAKW,MACZR,UAAWH,KAAKG,UAChBS,SAAUZ,KAAKa,a,GAKbb,KAAAiB,gBAAkB,KAIxBjB,KAAKC,eAAiB,IAAI,C,CA/G5B,oBAAAiB,GACEC,EAAoBnB,KAAKI,SAAUJ,KAAKoB,G,CAmB1C,oBAAAC,GACErB,KAAKsB,WAAWZ,M,CA4BlB,iBAAAa,GACEvB,KAAKwB,WAAWd,KAAKV,KAAKoB,G,CAG5B,oBAAAK,G,OACEC,EAAAC,SACGC,cACC,6BAA6B5B,KAAKG,iBACnC,MAAAuB,SAAA,SAAAA,EACCG,oBAAoB7B,KAAKgB,W,CAG/B,iBAAAc,GACEX,EAAoBnB,KAAKI,SAAUJ,KAAKoB,G,CAG1C,kBAAAW,GACE/B,KAAKE,gBAAkB,K,CAOzB,cAAM8B,GACJ,GAAIhC,KAAKoB,GAAI,CACXpB,KAAKoB,GAAGa,O,EAuCZ,MAAAC,GACE,MAAM9B,SACJA,EAAQE,SACRA,EAAQC,MACRA,EAAKF,WACLA,EAAUG,YACVA,EAAWO,YACXA,EAAWE,gBACXA,GACEjB,KACJ,OACEmC,EAACC,EAAI,CAAAC,IAAA,2CACHC,MAAO,CACL,CAAC,oBAAqBtC,KAAKE,gBAC3B,CAAC,qBAAsBI,EACvB,CAAC,qBAAsBF,EACvB,CAAC,YAAYG,KAAUA,IAAU,UACjC,CAAC,uBAAwBF,GAE3BkC,KAAK,MAAK,gBACK,GAAGjC,IAClBkC,QAAShC,EACTiC,QAAS1B,EACT2B,YAAazB,EAAe,gBACb,GAAGb,IAClBuC,SAAUrC,EAAW,GAAK,GAEzBsC,EAAW5C,KAAKoB,GAAI,SAAWe,EAAA,QAAAE,IAAA,2CAAMQ,KAAK,SAC3CV,EAAA,iBAAAE,IAAA,2CAAeC,MAAM,eAAeQ,QAAQ,SAC1CX,EAAA,QAAAE,IAAA,4CACEF,EAAA,QAAAE,IAAA,+CAGHO,EAAW5C,KAAKoB,GAAI,UAAYe,EAAA,QAAAE,IAAA,2CAAMQ,KAAK,U","ignoreList":[]}
|
1
|
+
{"version":3,"names":["icTabCss","IcTabStyle0","Tab","constructor","hostRef","this","focusFromClick","isInitialRender","contextId","disabled","monochrome","selected","theme","handleClick","tabClick","emit","tabId","position","tabPosition","tabFocus","handleFocus","focusTabId","handleMouseDown","watchDisabledHandler","removeDisabledFalse","el","disabledWatchHandler","tabEnabled","connectedCallback","tabCreated","disconnectedCallback","_a","document","querySelector","tabRemovedHandler","componentWillLoad","componentDidUpdate","setFocus","focus","render","h","Host","key","class","role","onClick","onFocus","onMouseDown","tabindex","isSlotUsed","name","variant"],"sources":["src/components/ic-tab/ic-tab.css?tag=ic-tab&encapsulation=shadow","src/components/ic-tab/ic-tab.tsx"],"sourcesContent":["@import \"../../global/normalize.css\";\n\n:host {\n --indicator-initial-color: rgba(23 89 188 / 0%);\n --focus-indicator: var(--ic-border-focus);\n\n display: flex;\n align-items: center;\n border-radius: 0;\n color: var(--ic-tab-label);\n\n --ic-typography-color: var(--ic-tab-label);\n\n height: 2.5rem;\n padding: 0 var(--ic-space-md);\n cursor: pointer;\n position: relative;\n border-bottom: var(--ic-space-xxs) solid var(--indicator-initial-color);\n gap: var(--ic-space-xs);\n transition: all var(--ic-easing-transition-fast);\n}\n\n::slotted([slot=\"icon\"]) {\n fill: var(--ic-tab-icon);\n}\n\n:host(.ic-tab-disabled) ::slotted([slot=\"icon\"]) {\n fill: var(--ic-tab-icon-disabled);\n}\n\n:host(:focus) {\n box-shadow: var(--focus-indicator);\n border-radius: var(--ic-border-radius);\n}\n\n:host(:focus-visible) {\n outline: var(--ic-hc-focus-outline);\n}\n\n:host(:hover) {\n background-color: var(--ic-tab-item-hover);\n}\n\n:host(:active) {\n background-color: var(--ic-tab-item-pressed);\n}\n\n:host(.ic-tab-selected) {\n border-bottom: var(--ic-space-xxs) solid var(--ic-tab-item);\n}\n\n:host(.ic-tab-disabled) {\n pointer-events: none;\n color: var(--ic-architectural-300);\n}\n\n:host(.ic-tab-disabled) ic-typography {\n --ic-typography-color: var(--ic-tab-label-disabled);\n}\n\n:host(.ic-tab-monochrome) {\n color: var(--ic-tab-label-monochrome);\n}\n\n:host(.ic-tab-monochrome.ic-tab-disabled) ic-typography {\n color: var(--ic-tab-label-monochrome-disabled);\n}\n\n:host(.ic-tab-monochrome) ::slotted([slot=\"icon\"]) {\n fill: var(--ic-tab-icon-monochrome);\n}\n\n:host(.ic-tab-monochrome.ic-tab-disabled) ::slotted([slot=\"icon\"]) {\n fill: var(--ic-tab-icon-monochrome-disabled);\n}\n\n:host(.ic-tab-monochrome.ic-tab-selected) {\n border-bottom: var(--ic-space-xxs) solid var(--ic-tab-item-monochrome);\n}\n\n:host(.ic-tab-monochrome:hover) {\n background-color: var(--ic-tab-item-hover-monochrome);\n}\n\n:host(.ic-tab-monochrome:active) {\n background-color: var(--ic-tab-item-pressed-monochrome);\n}\n\n@media (prefers-reduced-motion: no-preference) {\n :host(.ic-tab-selected.with-transition) {\n transition: all var(--ic-easing-transition-slow),\n border-color var(--ic-transition-duration-slow);\n }\n}\n\n.ic-tab-label {\n pointer-events: none;\n text-wrap: nowrap;\n}\n\n::slotted(svg) {\n fill: currentcolor;\n}\n\n@media (forced-colors: active) {\n :host {\n border-bottom: var(--ic-space-xxs) solid canvas;\n }\n\n :host(.ic-tab-disabled) {\n color: GrayText;\n }\n\n :host(.ic-tab-disabled) ic-typography {\n color: GrayText;\n\n --ic-typography-color: GrayText;\n }\n}\n\n/* Add back in after storybook has the `color-scheme: light dark` code */\n\n/* @media (prefers-color-scheme: dark) and (not (forced-colors: active)) {\n :host(ic-tab) .ic-tab-label {\n color: var(--ic-architectural-white);\n }\n :host(ic-tab.ic-tab-disabled) .ic-tab-label {\n color: inherit;\n }\n} */\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n Host,\n Prop,\n h,\n Method,\n Watch,\n} from \"@stencil/core\";\n\nimport { IcTabClickEventDetail } from \"./ic-tab.types\";\nimport { IcThemeMode } from \"../../utils/types\";\nimport { isSlotUsed, removeDisabledFalse } from \"../../utils/helpers\";\n\n/**\n * @slot icon - Content will be rendered next to the tab label.\n * @slot badge - Badge component displayed inline with the tab.\n */\n@Component({\n tag: \"ic-tab\",\n styleUrl: \"ic-tab.css\",\n shadow: true,\n})\nexport class Tab {\n private focusFromClick: boolean = false;\n private focusTabId: string;\n private isInitialRender: boolean = true;\n\n @Element() el: HTMLIcTabElement;\n\n /** @internal The unique context needed if using multiple tabs inside one another i.e. rendering another tabs inside a tab panel. */\n @Prop({ reflect: true }) contextId?: string = \"default\";\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 /** @internal Determines whether black variant of the tabs should be displayed. */\n @Prop() monochrome?: boolean = false;\n\n /** @internal If `true`, the tab will display with a selected indicator and tabIndex will be set. */\n @Prop({ reflect: true }) selected?: boolean = false;\n\n /** @internal The shared ID between panel and tab. */\n @Prop({ reflect: true }) tabId!: string;\n\n /** @internal The position of the tab inside the tabs array in context. */\n @Prop() tabPosition!: number;\n\n /** @internal Determines whether the light or dark variant of the tabs should be displayed. */\n @Prop() theme?: IcThemeMode = \"inherit\";\n\n @Watch(\"disabled\")\n disabledWatchHandler(): void {\n this.tabEnabled.emit();\n }\n\n /**\n * @internal Emitted when a tab is selected.\n */\n @Event() tabClick: EventEmitter<IcTabClickEventDetail>;\n\n /**\n * @internal Emitted when a tab is dynamically created.\n */\n @Event() tabCreated: EventEmitter<HTMLIcTabElement>;\n\n /**\n * @internal Emitted when a tab's disabled prop changes\n */\n @Event() tabEnabled: EventEmitter<void>;\n\n /**\n * @internal Emitted when a tab is focussed.\n */\n @Event() tabFocus: EventEmitter<IcTabClickEventDetail>;\n\n /**\n * @internal Emitted when a tab is unmounted.\n */\n @Event() tabRemoved: EventEmitter<void>;\n\n connectedCallback(): void {\n this.tabCreated.emit(this.el);\n }\n\n disconnectedCallback(): void {\n document\n .querySelector<HTMLIcTabContextElement>(\n `ic-tab-context[context-id=${this.contextId}]`\n )\n ?.tabRemovedHandler(!!this.focusTabId);\n }\n\n componentWillLoad(): void {\n removeDisabledFalse(this.disabled, this.el);\n }\n\n componentDidUpdate(): void {\n this.isInitialRender = false;\n }\n\n /**\n * Sets focus on the tab.\n */\n @Method()\n async setFocus(): Promise<void> {\n if (this.el) {\n this.el.focus();\n }\n }\n\n private handleClick = () => {\n this.tabClick.emit({\n tabId: this.tabId,\n contextId: this.contextId!,\n position: this.tabPosition,\n });\n if (this.focusFromClick) {\n this.tabFocus.emit({\n tabId: this.tabId,\n contextId: this.contextId!,\n position: this.tabPosition,\n });\n this.focusFromClick = false;\n }\n };\n\n private handleFocus = () => {\n if (!this.focusFromClick) {\n this.focusTabId = this.tabId;\n\n this.tabFocus.emit({\n tabId: this.tabId,\n contextId: this.contextId!,\n position: this.tabPosition,\n });\n }\n };\n\n private handleMouseDown = () => {\n //set flag so that focus gets handled after click\n //there is a timing issue where a long click only causes focus to happen & not the click\n //the focus does need to be a separate event though to handle focus from keyboard\n this.focusFromClick = true;\n };\n\n render() {\n const {\n disabled,\n selected,\n theme,\n monochrome,\n handleClick,\n handleFocus,\n handleMouseDown,\n } = this;\n return (\n <Host\n class={{\n [\"with-transition\"]: !this.isInitialRender,\n [\"ic-tab-selected\"]: !!selected,\n [\"ic-tab-disabled\"]: !!disabled,\n [`ic-theme-${theme}`]: theme !== \"inherit\",\n [\"ic-tab-monochrome\"]: !!monochrome,\n }}\n role=\"tab\"\n aria-selected={`${selected}`}\n onClick={handleClick}\n onFocus={handleFocus}\n onMouseDown={handleMouseDown}\n aria-disabled={`${disabled}`}\n tabindex={selected ? 0 : -1}\n >\n {isSlotUsed(this.el, \"icon\") && <slot name=\"icon\"></slot>}\n <ic-typography class=\"ic-tab-label\" variant=\"label\">\n <span>\n <slot></slot>\n </span>\n </ic-typography>\n {isSlotUsed(this.el, \"badge\") && <slot name=\"badge\"></slot>}\n </Host>\n );\n }\n}\n"],"mappings":"mIAAA,MAAMA,EAAW,0/IACjB,MAAAC,EAAeD,E,MCwBFE,EAAG,MALhB,WAAAC,CAAAC,G,qMAMUC,KAAAC,eAA0B,MAE1BD,KAAAE,gBAA2B,KAKVF,KAAAG,UAAqB,UAKtCH,KAAAI,SAAqB,MAOrBJ,KAAAK,WAAuB,MAGNL,KAAAM,SAAqB,MAStCN,KAAAO,MAAsB,UA8DtBP,KAAAQ,YAAc,KACpBR,KAAKS,SAASC,KAAK,CACjBC,MAAOX,KAAKW,MACZR,UAAWH,KAAKG,UAChBS,SAAUZ,KAAKa,cAEjB,GAAIb,KAAKC,eAAgB,CACvBD,KAAKc,SAASJ,KAAK,CACjBC,MAAOX,KAAKW,MACZR,UAAWH,KAAKG,UAChBS,SAAUZ,KAAKa,cAEjBb,KAAKC,eAAiB,K,GAIlBD,KAAAe,YAAc,KACpB,IAAKf,KAAKC,eAAgB,CACxBD,KAAKgB,WAAahB,KAAKW,MAEvBX,KAAKc,SAASJ,KAAK,CACjBC,MAAOX,KAAKW,MACZR,UAAWH,KAAKG,UAChBS,SAAUZ,KAAKa,a,GAKbb,KAAAiB,gBAAkB,KAIxBjB,KAAKC,eAAiB,IAAI,C,CA/G5B,oBAAAiB,GACEC,EAAoBnB,KAAKI,SAAUJ,KAAKoB,G,CAmB1C,oBAAAC,GACErB,KAAKsB,WAAWZ,M,CA4BlB,iBAAAa,GACEvB,KAAKwB,WAAWd,KAAKV,KAAKoB,G,CAG5B,oBAAAK,G,OACEC,EAAAC,SACGC,cACC,6BAA6B5B,KAAKG,iBACnC,MAAAuB,SAAA,SAAAA,EACCG,oBAAoB7B,KAAKgB,W,CAG/B,iBAAAc,GACEX,EAAoBnB,KAAKI,SAAUJ,KAAKoB,G,CAG1C,kBAAAW,GACE/B,KAAKE,gBAAkB,K,CAOzB,cAAM8B,GACJ,GAAIhC,KAAKoB,GAAI,CACXpB,KAAKoB,GAAGa,O,EAuCZ,MAAAC,GACE,MAAM9B,SACJA,EAAQE,SACRA,EAAQC,MACRA,EAAKF,WACLA,EAAUG,YACVA,EAAWO,YACXA,EAAWE,gBACXA,GACEjB,KACJ,OACEmC,EAACC,EAAI,CAAAC,IAAA,2CACHC,MAAO,CACL,CAAC,oBAAqBtC,KAAKE,gBAC3B,CAAC,qBAAsBI,EACvB,CAAC,qBAAsBF,EACvB,CAAC,YAAYG,KAAUA,IAAU,UACjC,CAAC,uBAAwBF,GAE3BkC,KAAK,MAAK,gBACK,GAAGjC,IAClBkC,QAAShC,EACTiC,QAAS1B,EACT2B,YAAazB,EAAe,gBACb,GAAGb,IAClBuC,SAAUrC,EAAW,GAAK,GAEzBsC,EAAW5C,KAAKoB,GAAI,SAAWe,EAAA,QAAAE,IAAA,2CAAMQ,KAAK,SAC3CV,EAAA,iBAAAE,IAAA,2CAAeC,MAAM,eAAeQ,QAAQ,SAC1CX,EAAA,QAAAE,IAAA,4CACEF,EAAA,QAAAE,IAAA,+CAGHO,EAAW5C,KAAKoB,GAAI,UAAYe,EAAA,QAAAE,IAAA,2CAAMQ,KAAK,U","ignoreList":[]}
|
@@ -0,0 +1,2 @@
|
|
1
|
+
import{r as t,h as i,H as e,g as s}from"./p-8e4e97b4.js";import{R as o,u as r,h as a,I as l}from"./p-b57e59b7.js";import"./p-bddf799a.js";const n=`<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">\n <path d="M13.0875 6.175L11.9125 5L6.91251 10L11.9125 15L13.0875 13.825L9.27084 10L13.0875 6.175Z"/>\n</svg>`;const c=`<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">\n <path d="M8.08748 5L6.91248 6.175L10.7291 10L6.91248 13.825L8.08748 15L13.0875 10L8.08748 5Z"/>\n</svg>`;const h='/*! 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{--border-bottom-color:var(--ic-architectural-300);--splitter-color:var(--ic-architectural-100);display:flex;max-width:100%}:host(.ic-horizontal-scroll-light){--splitter-color:var(--ic-color-keyline-lighten)}:host(.ic-horizontal-scroll-light) ic-button>svg{color:var(--ic-color-text-action-monochrome-dark)}:host(.ic-horizontal-scroll-dark){--splitter-color:var(--ic-color-keyline-darken)}:host(.ic-horizontal-scroll-dark) ic-button>svg{color:var(--ic-color-text-action-monochrome-light)}::slotted(*){overflow-x:scroll;overflow-y:hidden;scroll-behavior:smooth;scrollbar-width:none;-ms-overflow-style:none;margin:calc(var(--ic-space-xs) * -1) !important;padding:var(--ic-space-xs) !important}:host(.ic-horizontal-scroll-visible) ::slotted(*){margin:calc(var(--ic-space-xs) * -1) 0 !important;padding:var(--ic-space-xs) !important}.tabs-container::-webkit-scrollbar{display:none}.scroll-container-left,.scroll-container-right{display:flex}.scroll-container-left{margin-left:var(--ic-space-xxs)}.scroll-container-right{margin-right:var(--ic-space-xxs)}.hidden{display:none}.scroll-arrow{margin:var(--ic-space-xxs) 0}.disabled .ic-tooltip-container{display:none !important}.scroll-splitter-left,.scroll-splitter-right{display:flex;height:var(--ic-space-lg);width:var(--ic-space-1px);margin-top:var(--ic-space-xs);border-radius:var(--ic-space-1px);background-color:var(--splitter-color)}.scroll-splitter-left{margin-left:calc(var(--ic-space-xxs) - var(--ic-space-1px))}.scroll-splitter-right{margin-right:calc(var(--ic-space-xxs) - var(--ic-space-1px))}.disabled .scroll-splitter-left,.disabled .scroll-splitter-right{background-color:transparent}:host(.ic-horizontal-scroll-dark) .disabled ic-button>svg,:host(.ic-horizontal-scroll-light) .disabled ic-button>svg{color:var(--splitter-color) !important}';const d=h;const p=200;const b=class{constructor(i){t(this,i);this.buttonStateSet=false;this.firstItemVisible=true;this.itemOverflow=false;this.lastItemVisible=false;this.appearance="default";this.monochrome=false;this.theme="inherit";this.focusTrigger="focus";this.focusHandler=t=>{this.itemFocusHandler(Array.from(this.items).indexOf(t.target))};this.resizeObserverCallback=()=>{if(this.el.clientWidth>=this.itemsContainerEl.scrollWidth){this.itemOverflow=false}else{this.itemOverflow=o(this.itemsContainerEl)}if(this.itemOverflow){this.lastItemVisible=this.itemsContainerEl.offsetWidth+this.itemsContainerEl.scrollLeft>=this.itemsContainerEl.scrollWidth}};this.runResizeObserver=()=>{this.resizeObserver=new ResizeObserver((()=>{this.resizeObserverCallback()}));this.resizeObserver.observe(this.itemsContainerEl)};this.scrollLeft=()=>{this.scrollItemIntoView(this.getCurrentLeftItem()-1)};this.scrollRight=()=>{this.scrollItemIntoView(this.getCurrentLeftItem()+1)};this.longScrollRight=()=>{this.scrollRight();this.scrollDelay=window.setTimeout(this.longScrollRight,p)};this.longScrollLeft=()=>{this.scrollLeft();this.scrollDelay=window.setTimeout(this.longScrollLeft,p)};this.leftArrowMouseDownHandler=t=>{t.preventDefault();this.scrollDelay=window.setTimeout(this.longScrollLeft,p)};this.rightArrowMouseDownHandler=t=>{t.preventDefault();this.scrollDelay=window.setTimeout(this.longScrollRight,p)};this.arrowMouseUpHandler=()=>{window.clearTimeout(this.scrollDelay)};this.getCurrentLeftItem=()=>{const t=this.itemOffsets.findIndex((t=>t>Math.round(this.itemsContainerEl.scrollLeft)));return t<0?0:t};this.scrollHandler=()=>{window.clearTimeout(this.isScrolling);this.isScrolling=window.setTimeout(this.scrollStopped,50)};this.scrollStopped=()=>{const t=Math.round(this.itemsContainerEl.scrollLeft);if(this.buttonStateSet===false){this.firstItemVisible=t===0;this.lastItemVisible=this.itemsContainerEl.offsetWidth+t>=this.itemsContainerEl.scrollWidth}this.buttonStateSet=false}}componentWillLoad(){this.itemsContainerEl=this.el.children[0];this.itemsContainerEl.addEventListener("scroll",this.scrollHandler);this.items=r(this.itemsContainerEl);this.items.forEach((t=>{if(t.addEventListener){t.addEventListener(this.focusTrigger,this.focusHandler)}}))}componentDidLoad(){var t;let i=0;this.itemOffsets=this.items.map((t=>{i+=t.offsetWidth;return i}));a(this.runResizeObserver);const e=Array.from(((t=this.el.shadowRoot)===null||t===void 0?void 0:t.querySelectorAll("div"))||[]);["mouseup","mouseleave"].forEach((t=>{e.forEach((i=>i.addEventListener(t,this.arrowMouseUpHandler)))}))}disconnectedCallback(){var t,i,e;if(this.resizeObserver!==undefined){this.resizeObserver.disconnect()}const s=Array.from(((t=this.el.shadowRoot)===null||t===void 0?void 0:t.querySelectorAll("div"))||[]);["mouseup","mouseleave"].forEach((t=>{s.forEach((i=>i.removeEventListener(t,this.arrowMouseUpHandler)))}));(i=this.items)===null||i===void 0?void 0:i.forEach((t=>{if(t.removeEventListener){t.removeEventListener(this.focusTrigger,this.focusHandler)}}));(e=this.itemsContainerEl)===null||e===void 0?void 0:e.removeEventListener("scroll",this.scrollHandler)}async scrollItemIntoView(t){this.firstItemVisible=t<=0;const i=t<=0?0:this.itemOffsets[t-1];this.lastItemVisible=this.itemsContainerEl.offsetWidth+i>=this.itemsContainerEl.scrollWidth;this.buttonStateSet=true;this.itemsContainerEl.scrollLeft=i}itemFocusHandler(t){if(this.itemOverflow){this.scrollItemIntoView(t)}}render(){const{firstItemVisible:t,lastItemVisible:s,itemOverflow:o}=this;return i(e,{key:"70a4e7c8a5e6e69d64d78375798498b7807ae16a",class:{["ic-horizontal-scroll-visible"]:o,["ic-horizontal-scroll-dark"]:this.appearance===l.Dark,["ic-horizontal-scroll-light"]:this.appearance===l.Light,[`ic-theme-${this.theme}`]:this.theme!=="inherit"}},i("div",{key:"586bf3284c05ffad1ebd3c61e44e992aa9d71c25","aria-hidden":"true",class:{["scroll-container-left"]:true,["hidden"]:!o,["disabled"]:t},role:"tab"},i("ic-button",{key:"0125b0d48b7ae82fb580bc890450d1fb14f71a5f",class:"scroll-arrow",variant:"icon-tertiary","aria-label":"Scroll left",theme:this.theme==="light"||this.theme==="inherit"?"dark":"light",monochrome:this.monochrome,innerHTML:n,disabled:t,tabindex:"-1",onClick:this.scrollLeft,onMouseDown:this.leftArrowMouseDownHandler}),i("span",{key:"363c0c48d85e455684573a12554afcf765c4ae95",class:"scroll-splitter-left"})),i("slot",{key:"b12cc6de29b6345e3ef5ece250f4998252d9a54b"}),i("div",{key:"47d5456630571ac7e877f791401129ec6524d52b","aria-hidden":"true",class:{["scroll-container-right"]:true,["hidden"]:!o,["disabled"]:s},role:"tab"},i("span",{key:"13b35c95c35dc6a44464996880c7f3a3fc671b42",class:"scroll-splitter-right"}),i("ic-button",{key:"95434e1cf988eaa4049bcb6926d515182a7f7072",class:"scroll-arrow",variant:"icon-tertiary","aria-label":"Scroll right",theme:this.theme==="light"||this.theme==="inherit"?"dark":"light",monochrome:this.monochrome,innerHTML:c,disabled:s,tabindex:"-1",onClick:this.scrollRight,onMouseDown:this.rightArrowMouseDownHandler})))}get el(){return s(this)}};b.style=d;export{b as ic_horizontal_scroll};
|
2
|
+
//# sourceMappingURL=p-2126d37b.entry.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["icHorizontalScrollCss","IcHorizontalScrollStyle0","SCROLL_DELAY_MS","HorizontalScroll","constructor","hostRef","this","buttonStateSet","firstItemVisible","itemOverflow","lastItemVisible","appearance","monochrome","theme","focusTrigger","focusHandler","event","itemFocusHandler","Array","from","items","indexOf","target","resizeObserverCallback","el","clientWidth","itemsContainerEl","scrollWidth","elementOverflowsX","offsetWidth","scrollLeft","runResizeObserver","resizeObserver","ResizeObserver","observe","scrollItemIntoView","getCurrentLeftItem","scrollRight","longScrollRight","scrollDelay","window","setTimeout","longScrollLeft","leftArrowMouseDownHandler","e","preventDefault","rightArrowMouseDownHandler","arrowMouseUpHandler","clearTimeout","index","itemOffsets","findIndex","Math","round","scrollHandler","isScrolling","scrollStopped","componentWillLoad","children","addEventListener","getSlotElements","forEach","item","componentDidLoad","runningTotal","map","checkResizeObserver","scrollArrows","_a","shadowRoot","querySelectorAll","arrow","disconnectedCallback","undefined","disconnect","removeEventListener","_b","_c","itemPosition","newScrollPos","render","h","Host","key","class","IcBrandForegroundEnum","Dark","Light","role","variant","innerHTML","LeftArrow","disabled","tabindex","onClick","onMouseDown","RightArrow"],"sources":["src/components/ic-horizontal-scroll/ic-horizontal-scroll.css?tag=ic-horizontal-scroll&encapsulation=shadow","src/components/ic-horizontal-scroll/ic-horizontal-scroll.tsx"],"sourcesContent":["@import \"../../global/normalize.css\";\n\n:host {\n --border-bottom-color: var(--ic-architectural-300);\n --splitter-color: var(--ic-architectural-100);\n\n display: flex;\n max-width: 100%;\n}\n\n:host(.ic-horizontal-scroll-light) {\n --splitter-color: var(--ic-color-keyline-lighten);\n}\n\n:host(.ic-horizontal-scroll-light) ic-button > svg {\n color: var(--ic-color-text-action-monochrome-dark);\n}\n\n:host(.ic-horizontal-scroll-dark) {\n --splitter-color: var(--ic-color-keyline-darken);\n}\n\n:host(.ic-horizontal-scroll-dark) ic-button > svg {\n color: var(--ic-color-text-action-monochrome-light);\n}\n\n/* Slotted items container element */\n::slotted(*) {\n overflow-x: scroll;\n overflow-y: hidden;\n scroll-behavior: smooth;\n scrollbar-width: none;\n -ms-overflow-style: none;\n margin: calc(var(--ic-space-xs) * -1) !important;\n padding: var(--ic-space-xs) !important;\n}\n\n:host(.ic-horizontal-scroll-visible) ::slotted(*) {\n margin: calc(var(--ic-space-xs) * -1) 0 !important;\n padding: var(--ic-space-xs) !important;\n}\n\n.tabs-container::-webkit-scrollbar {\n display: none;\n}\n\n.scroll-container-left,\n.scroll-container-right {\n display: flex;\n}\n\n.scroll-container-left {\n margin-left: var(--ic-space-xxs);\n}\n\n.scroll-container-right {\n margin-right: var(--ic-space-xxs);\n}\n\n.hidden {\n display: none;\n}\n\n.scroll-arrow {\n margin: var(--ic-space-xxs) 0;\n}\n\n.disabled .ic-tooltip-container {\n display: none !important;\n}\n\n.scroll-splitter-left,\n.scroll-splitter-right {\n display: flex;\n height: var(--ic-space-lg);\n width: var(--ic-space-1px);\n margin-top: var(--ic-space-xs);\n border-radius: var(--ic-space-1px);\n background-color: var(--splitter-color);\n}\n\n.scroll-splitter-left {\n margin-left: calc(var(--ic-space-xxs) - var(--ic-space-1px));\n}\n\n.scroll-splitter-right {\n margin-right: calc(var(--ic-space-xxs) - var(--ic-space-1px));\n}\n\n.disabled .scroll-splitter-left,\n.disabled .scroll-splitter-right {\n background-color: transparent;\n}\n\n:host(.ic-horizontal-scroll-dark) .disabled ic-button > svg,\n:host(.ic-horizontal-scroll-light) .disabled ic-button > svg {\n color: var(--splitter-color) !important;\n}\n","import {\n Component,\n Element,\n h,\n Host,\n State,\n Method,\n Prop,\n} from \"@stencil/core\";\n\nimport LeftArrow from \"./assets/left-arrow.svg\";\nimport RightArrow from \"./assets/right-arrow.svg\";\nimport { getSlotElements } from \"../../utils/helpers\";\n\nimport { checkResizeObserver, elementOverflowsX } from \"../../utils/helpers\";\nimport {\n IcBrandForeground,\n IcBrandForegroundEnum,\n IcThemeMode,\n} from \"../../utils/types\";\n\nconst SCROLL_DELAY_MS = 200;\n\n@Component({\n tag: \"ic-horizontal-scroll\",\n styleUrl: \"./ic-horizontal-scroll.css\",\n shadow: true,\n})\nexport class HorizontalScroll {\n private buttonStateSet: boolean = false;\n private isScrolling: number;\n private itemOffsets: number[];\n private items: HTMLElement[];\n private itemsContainerEl: HTMLElement;\n private resizeObserver: ResizeObserver;\n private scrollDelay: number;\n\n @Element() el: HTMLIcHorizontalScrollElement;\n\n @State() firstItemVisible: boolean = true;\n @State() itemOverflow: boolean = false;\n @State() lastItemVisible: boolean = false;\n\n /**\n * The appearance of the horizontal scroll, e.g. dark, light or the default.\n */\n @Prop() appearance?: IcBrandForeground = \"default\";\n\n /** @internal Determines whether black variant of the tabs should be displayed. */\n @Prop() monochrome?: boolean = false;\n\n /**\n * @internal 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 * @internal The name of the event that triggers focus handler logic.\n */\n @Prop() focusTrigger?: string = \"focus\";\n\n componentWillLoad(): void {\n this.itemsContainerEl = this.el.children[0] as HTMLElement;\n this.itemsContainerEl.addEventListener(\"scroll\", this.scrollHandler);\n this.items = getSlotElements(this.itemsContainerEl) as HTMLElement[];\n this.items.forEach((item) => {\n if (item.addEventListener) {\n item.addEventListener(\n this.focusTrigger as keyof HTMLElementEventMap,\n this.focusHandler\n );\n }\n });\n }\n\n componentDidLoad(): void {\n let runningTotal = 0;\n this.itemOffsets = this.items.map((item) => {\n runningTotal += item.offsetWidth;\n return runningTotal;\n });\n\n checkResizeObserver(this.runResizeObserver);\n\n // Add event listener to scroll containers as mouse events are not fired on disabled elements (ic-button's <button>)\n // 'mouseleave' needed in case the user moves their mouse while holding the arrow buttons\n // - 'mouseup' otherwise not detected and scrolling not stopped\n const scrollArrows = Array.from(\n this.el.shadowRoot?.querySelectorAll(\"div\") || []\n ) as HTMLElement[];\n [\"mouseup\", \"mouseleave\"].forEach((event) => {\n scrollArrows.forEach((arrow) =>\n arrow.addEventListener(event, this.arrowMouseUpHandler)\n );\n });\n }\n\n disconnectedCallback(): void {\n if (this.resizeObserver !== undefined) {\n this.resizeObserver.disconnect();\n }\n\n const scrollArrows = Array.from(\n this.el.shadowRoot?.querySelectorAll(\"div\") || []\n ) as HTMLElement[];\n [\"mouseup\", \"mouseleave\"].forEach((event) => {\n scrollArrows.forEach((arrow) =>\n arrow.removeEventListener(event, this.arrowMouseUpHandler)\n );\n });\n\n this.items?.forEach((item) => {\n if (item.removeEventListener) {\n item.removeEventListener(\n this.focusTrigger as keyof HTMLElementEventMap,\n this.focusHandler\n );\n }\n });\n\n this.itemsContainerEl?.removeEventListener(\"scroll\", this.scrollHandler);\n }\n\n /**\n * @internal if side scrolling enabled, scrolls the specified item into view.\n */\n @Method()\n async scrollItemIntoView(itemPosition: number): Promise<void> {\n this.firstItemVisible = itemPosition <= 0;\n const newScrollPos =\n itemPosition <= 0 ? 0 : this.itemOffsets[itemPosition - 1];\n this.lastItemVisible =\n this.itemsContainerEl.offsetWidth + newScrollPos >=\n this.itemsContainerEl.scrollWidth;\n this.buttonStateSet = true;\n this.itemsContainerEl.scrollLeft = newScrollPos;\n }\n\n private focusHandler = (event: Event) => {\n this.itemFocusHandler(\n Array.from(this.items).indexOf(event.target as HTMLElement)\n );\n };\n\n private itemFocusHandler(itemPosition: number): void {\n if (this.itemOverflow) {\n this.scrollItemIntoView(itemPosition);\n }\n }\n\n private resizeObserverCallback = () => {\n if (this.el.clientWidth >= this.itemsContainerEl.scrollWidth) {\n this.itemOverflow = false;\n } else {\n this.itemOverflow = elementOverflowsX(this.itemsContainerEl);\n }\n\n if (this.itemOverflow) {\n this.lastItemVisible =\n this.itemsContainerEl.offsetWidth + this.itemsContainerEl.scrollLeft >=\n this.itemsContainerEl.scrollWidth;\n }\n };\n\n private runResizeObserver = () => {\n this.resizeObserver = new ResizeObserver(() => {\n this.resizeObserverCallback();\n });\n this.resizeObserver.observe(this.itemsContainerEl);\n };\n\n private scrollLeft = () => {\n this.scrollItemIntoView(this.getCurrentLeftItem() - 1);\n };\n\n private scrollRight = () => {\n this.scrollItemIntoView(this.getCurrentLeftItem() + 1);\n };\n\n private longScrollRight = () => {\n this.scrollRight();\n this.scrollDelay = window.setTimeout(this.longScrollRight, SCROLL_DELAY_MS);\n };\n\n private longScrollLeft = () => {\n this.scrollLeft();\n this.scrollDelay = window.setTimeout(this.longScrollLeft, SCROLL_DELAY_MS);\n };\n\n private leftArrowMouseDownHandler = (e: MouseEvent) => {\n e.preventDefault();\n this.scrollDelay = window.setTimeout(this.longScrollLeft, SCROLL_DELAY_MS);\n };\n\n private rightArrowMouseDownHandler = (e: MouseEvent) => {\n e.preventDefault();\n this.scrollDelay = window.setTimeout(this.longScrollRight, SCROLL_DELAY_MS);\n };\n\n private arrowMouseUpHandler = () => {\n window.clearTimeout(this.scrollDelay);\n };\n\n private getCurrentLeftItem = (): number => {\n const index = this.itemOffsets.findIndex(\n (el) => el > Math.round(this.itemsContainerEl.scrollLeft)\n );\n return index < 0 ? 0 : index;\n };\n\n private scrollHandler = () => {\n window.clearTimeout(this.isScrolling);\n // Set a timeout to run after scrolling ends\n this.isScrolling = window.setTimeout(this.scrollStopped, 50);\n };\n\n private scrollStopped = () => {\n // If scrollItemIntoView has been called, the button states will already be set\n // Can't just handle it here as it causes strange jumping behaviour in positioning\n const scrollLeft = Math.round(this.itemsContainerEl.scrollLeft);\n if (this.buttonStateSet === false) {\n this.firstItemVisible = scrollLeft === 0;\n this.lastItemVisible =\n this.itemsContainerEl.offsetWidth + scrollLeft >=\n this.itemsContainerEl.scrollWidth;\n }\n this.buttonStateSet = false;\n };\n\n render() {\n const { firstItemVisible, lastItemVisible, itemOverflow } = this;\n\n return (\n <Host\n class={{\n [\"ic-horizontal-scroll-visible\"]: itemOverflow,\n [\"ic-horizontal-scroll-dark\"]:\n this.appearance === IcBrandForegroundEnum.Dark,\n [\"ic-horizontal-scroll-light\"]:\n this.appearance === IcBrandForegroundEnum.Light,\n [`ic-theme-${this.theme}`]: this.theme !== \"inherit\",\n }}\n >\n <div\n aria-hidden=\"true\"\n class={{\n [\"scroll-container-left\"]: true,\n [\"hidden\"]: !itemOverflow,\n [\"disabled\"]: firstItemVisible,\n }}\n role=\"tab\"\n >\n <ic-button\n class=\"scroll-arrow\"\n variant=\"icon-tertiary\"\n aria-label=\"Scroll left\"\n theme={\n this.theme === \"light\" || this.theme === \"inherit\"\n ? \"dark\"\n : \"light\"\n }\n monochrome={this.monochrome}\n innerHTML={LeftArrow}\n disabled={firstItemVisible}\n tabindex=\"-1\"\n onClick={this.scrollLeft}\n onMouseDown={this.leftArrowMouseDownHandler}\n ></ic-button>\n <span class=\"scroll-splitter-left\"></span>\n </div>\n <slot></slot>\n <div\n aria-hidden=\"true\"\n class={{\n [\"scroll-container-right\"]: true,\n [\"hidden\"]: !itemOverflow,\n [\"disabled\"]: lastItemVisible,\n }}\n role=\"tab\"\n >\n <span class=\"scroll-splitter-right\"></span>\n <ic-button\n class=\"scroll-arrow\"\n variant=\"icon-tertiary\"\n aria-label=\"Scroll right\"\n theme={\n this.theme === \"light\" || this.theme === \"inherit\"\n ? \"dark\"\n : \"light\"\n }\n monochrome={this.monochrome}\n innerHTML={RightArrow}\n disabled={lastItemVisible}\n tabindex=\"-1\"\n onClick={this.scrollRight}\n onMouseDown={this.rightArrowMouseDownHandler}\n ></ic-button>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"names":["icHorizontalScrollCss","IcHorizontalScrollStyle0","SCROLL_DELAY_MS","HorizontalScroll","constructor","hostRef","this","buttonStateSet","firstItemVisible","itemOverflow","lastItemVisible","appearance","monochrome","theme","focusTrigger","focusHandler","event","itemFocusHandler","Array","from","items","indexOf","target","resizeObserverCallback","el","clientWidth","itemsContainerEl","scrollWidth","elementOverflowsX","offsetWidth","scrollLeft","runResizeObserver","resizeObserver","ResizeObserver","observe","scrollItemIntoView","getCurrentLeftItem","scrollRight","longScrollRight","scrollDelay","window","setTimeout","longScrollLeft","leftArrowMouseDownHandler","e","preventDefault","rightArrowMouseDownHandler","arrowMouseUpHandler","clearTimeout","index","itemOffsets","findIndex","Math","round","scrollHandler","isScrolling","scrollStopped","componentWillLoad","children","addEventListener","getSlotElements","forEach","item","componentDidLoad","runningTotal","map","checkResizeObserver","scrollArrows","_a","shadowRoot","querySelectorAll","arrow","disconnectedCallback","undefined","disconnect","removeEventListener","_b","_c","itemPosition","newScrollPos","render","h","Host","key","class","IcBrandForegroundEnum","Dark","Light","role","variant","innerHTML","LeftArrow","disabled","tabindex","onClick","onMouseDown","RightArrow"],"sources":["src/components/ic-horizontal-scroll/ic-horizontal-scroll.css?tag=ic-horizontal-scroll&encapsulation=shadow","src/components/ic-horizontal-scroll/ic-horizontal-scroll.tsx"],"sourcesContent":["@import \"../../global/normalize.css\";\n\n:host {\n --border-bottom-color: var(--ic-architectural-300);\n --splitter-color: var(--ic-architectural-100);\n\n display: flex;\n max-width: 100%;\n}\n\n:host(.ic-horizontal-scroll-light) {\n --splitter-color: var(--ic-color-keyline-lighten);\n}\n\n:host(.ic-horizontal-scroll-light) ic-button > svg {\n color: var(--ic-color-text-action-monochrome-dark);\n}\n\n:host(.ic-horizontal-scroll-dark) {\n --splitter-color: var(--ic-color-keyline-darken);\n}\n\n:host(.ic-horizontal-scroll-dark) ic-button > svg {\n color: var(--ic-color-text-action-monochrome-light);\n}\n\n/* Slotted items container element */\n::slotted(*) {\n overflow-x: scroll;\n overflow-y: hidden;\n scroll-behavior: smooth;\n scrollbar-width: none;\n -ms-overflow-style: none;\n margin: calc(var(--ic-space-xs) * -1) !important;\n padding: var(--ic-space-xs) !important;\n}\n\n:host(.ic-horizontal-scroll-visible) ::slotted(*) {\n margin: calc(var(--ic-space-xs) * -1) 0 !important;\n padding: var(--ic-space-xs) !important;\n}\n\n.tabs-container::-webkit-scrollbar {\n display: none;\n}\n\n.scroll-container-left,\n.scroll-container-right {\n display: flex;\n}\n\n.scroll-container-left {\n margin-left: var(--ic-space-xxs);\n}\n\n.scroll-container-right {\n margin-right: var(--ic-space-xxs);\n}\n\n.hidden {\n display: none;\n}\n\n.scroll-arrow {\n margin: var(--ic-space-xxs) 0;\n}\n\n.disabled .ic-tooltip-container {\n display: none !important;\n}\n\n.scroll-splitter-left,\n.scroll-splitter-right {\n display: flex;\n height: var(--ic-space-lg);\n width: var(--ic-space-1px);\n margin-top: var(--ic-space-xs);\n border-radius: var(--ic-space-1px);\n background-color: var(--splitter-color);\n}\n\n.scroll-splitter-left {\n margin-left: calc(var(--ic-space-xxs) - var(--ic-space-1px));\n}\n\n.scroll-splitter-right {\n margin-right: calc(var(--ic-space-xxs) - var(--ic-space-1px));\n}\n\n.disabled .scroll-splitter-left,\n.disabled .scroll-splitter-right {\n background-color: transparent;\n}\n\n:host(.ic-horizontal-scroll-dark) .disabled ic-button > svg,\n:host(.ic-horizontal-scroll-light) .disabled ic-button > svg {\n color: var(--splitter-color) !important;\n}\n","import {\n Component,\n Element,\n h,\n Host,\n State,\n Method,\n Prop,\n} from \"@stencil/core\";\n\nimport LeftArrow from \"./assets/left-arrow.svg\";\nimport RightArrow from \"./assets/right-arrow.svg\";\nimport { getSlotElements } from \"../../utils/helpers\";\n\nimport { checkResizeObserver, elementOverflowsX } from \"../../utils/helpers\";\nimport {\n IcBrandForeground,\n IcBrandForegroundEnum,\n IcThemeMode,\n} from \"../../utils/types\";\n\nconst SCROLL_DELAY_MS = 200;\n\n@Component({\n tag: \"ic-horizontal-scroll\",\n styleUrl: \"./ic-horizontal-scroll.css\",\n shadow: true,\n})\nexport class HorizontalScroll {\n private buttonStateSet: boolean = false;\n private isScrolling: number;\n private itemOffsets: number[];\n private items: HTMLElement[];\n private itemsContainerEl: HTMLElement;\n private resizeObserver: ResizeObserver;\n private scrollDelay: number;\n\n @Element() el: HTMLIcHorizontalScrollElement;\n\n @State() firstItemVisible: boolean = true;\n @State() itemOverflow: boolean = false;\n @State() lastItemVisible: boolean = false;\n\n /**\n * The appearance of the horizontal scroll, e.g. dark, light or the default.\n */\n @Prop() appearance?: IcBrandForeground = \"default\";\n\n /** @internal Determines whether black variant of the tabs should be displayed. */\n @Prop() monochrome?: boolean = false;\n\n /**\n * @internal 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 * @internal The name of the event that triggers focus handler logic.\n */\n @Prop() focusTrigger?: string = \"focus\";\n\n componentWillLoad(): void {\n this.itemsContainerEl = this.el.children[0] as HTMLElement;\n this.itemsContainerEl.addEventListener(\"scroll\", this.scrollHandler);\n this.items = getSlotElements(this.itemsContainerEl) as HTMLElement[];\n this.items.forEach((item) => {\n if (item.addEventListener) {\n item.addEventListener(\n this.focusTrigger as keyof HTMLElementEventMap,\n this.focusHandler\n );\n }\n });\n }\n\n componentDidLoad(): void {\n let runningTotal = 0;\n this.itemOffsets = this.items.map((item) => {\n runningTotal += item.offsetWidth;\n return runningTotal;\n });\n\n checkResizeObserver(this.runResizeObserver);\n\n // Add event listener to scroll containers as mouse events are not fired on disabled elements (ic-button's <button>)\n // 'mouseleave' needed in case the user moves their mouse while holding the arrow buttons\n // - 'mouseup' otherwise not detected and scrolling not stopped\n const scrollArrows = Array.from(\n this.el.shadowRoot?.querySelectorAll(\"div\") || []\n ) as HTMLElement[];\n [\"mouseup\", \"mouseleave\"].forEach((event) => {\n scrollArrows.forEach((arrow) =>\n arrow.addEventListener(event, this.arrowMouseUpHandler)\n );\n });\n }\n\n disconnectedCallback(): void {\n if (this.resizeObserver !== undefined) {\n this.resizeObserver.disconnect();\n }\n\n const scrollArrows = Array.from(\n this.el.shadowRoot?.querySelectorAll(\"div\") || []\n ) as HTMLElement[];\n [\"mouseup\", \"mouseleave\"].forEach((event) => {\n scrollArrows.forEach((arrow) =>\n arrow.removeEventListener(event, this.arrowMouseUpHandler)\n );\n });\n\n this.items?.forEach((item) => {\n if (item.removeEventListener) {\n item.removeEventListener(\n this.focusTrigger as keyof HTMLElementEventMap,\n this.focusHandler\n );\n }\n });\n\n this.itemsContainerEl?.removeEventListener(\"scroll\", this.scrollHandler);\n }\n\n /**\n * @internal if side scrolling enabled, scrolls the specified item into view.\n */\n @Method()\n async scrollItemIntoView(itemPosition: number): Promise<void> {\n this.firstItemVisible = itemPosition <= 0;\n const newScrollPos =\n itemPosition <= 0 ? 0 : this.itemOffsets[itemPosition - 1];\n this.lastItemVisible =\n this.itemsContainerEl.offsetWidth + newScrollPos >=\n this.itemsContainerEl.scrollWidth;\n this.buttonStateSet = true;\n this.itemsContainerEl.scrollLeft = newScrollPos;\n }\n\n private focusHandler = (event: Event) => {\n this.itemFocusHandler(\n Array.from(this.items).indexOf(event.target as HTMLElement)\n );\n };\n\n private itemFocusHandler(itemPosition: number): void {\n if (this.itemOverflow) {\n this.scrollItemIntoView(itemPosition);\n }\n }\n\n private resizeObserverCallback = () => {\n if (this.el.clientWidth >= this.itemsContainerEl.scrollWidth) {\n this.itemOverflow = false;\n } else {\n this.itemOverflow = elementOverflowsX(this.itemsContainerEl);\n }\n\n if (this.itemOverflow) {\n this.lastItemVisible =\n this.itemsContainerEl.offsetWidth + this.itemsContainerEl.scrollLeft >=\n this.itemsContainerEl.scrollWidth;\n }\n };\n\n private runResizeObserver = () => {\n this.resizeObserver = new ResizeObserver(() => {\n this.resizeObserverCallback();\n });\n this.resizeObserver.observe(this.itemsContainerEl);\n };\n\n private scrollLeft = () => {\n this.scrollItemIntoView(this.getCurrentLeftItem() - 1);\n };\n\n private scrollRight = () => {\n this.scrollItemIntoView(this.getCurrentLeftItem() + 1);\n };\n\n private longScrollRight = () => {\n this.scrollRight();\n this.scrollDelay = window.setTimeout(this.longScrollRight, SCROLL_DELAY_MS);\n };\n\n private longScrollLeft = () => {\n this.scrollLeft();\n this.scrollDelay = window.setTimeout(this.longScrollLeft, SCROLL_DELAY_MS);\n };\n\n private leftArrowMouseDownHandler = (e: MouseEvent) => {\n e.preventDefault();\n this.scrollDelay = window.setTimeout(this.longScrollLeft, SCROLL_DELAY_MS);\n };\n\n private rightArrowMouseDownHandler = (e: MouseEvent) => {\n e.preventDefault();\n this.scrollDelay = window.setTimeout(this.longScrollRight, SCROLL_DELAY_MS);\n };\n\n private arrowMouseUpHandler = () => {\n window.clearTimeout(this.scrollDelay);\n };\n\n private getCurrentLeftItem = (): number => {\n const index = this.itemOffsets.findIndex(\n (el) => el > Math.round(this.itemsContainerEl.scrollLeft)\n );\n return index < 0 ? 0 : index;\n };\n\n private scrollHandler = () => {\n window.clearTimeout(this.isScrolling);\n // Set a timeout to run after scrolling ends\n this.isScrolling = window.setTimeout(this.scrollStopped, 50);\n };\n\n private scrollStopped = () => {\n // If scrollItemIntoView has been called, the button states will already be set\n // Can't just handle it here as it causes strange jumping behaviour in positioning\n const scrollLeft = Math.round(this.itemsContainerEl.scrollLeft);\n if (this.buttonStateSet === false) {\n this.firstItemVisible = scrollLeft === 0;\n this.lastItemVisible =\n this.itemsContainerEl.offsetWidth + scrollLeft >=\n this.itemsContainerEl.scrollWidth;\n }\n this.buttonStateSet = false;\n };\n\n render() {\n const { firstItemVisible, lastItemVisible, itemOverflow } = this;\n\n return (\n <Host\n class={{\n [\"ic-horizontal-scroll-visible\"]: itemOverflow,\n [\"ic-horizontal-scroll-dark\"]:\n this.appearance === IcBrandForegroundEnum.Dark,\n [\"ic-horizontal-scroll-light\"]:\n this.appearance === IcBrandForegroundEnum.Light,\n [`ic-theme-${this.theme}`]: this.theme !== \"inherit\",\n }}\n >\n <div\n aria-hidden=\"true\"\n class={{\n [\"scroll-container-left\"]: true,\n [\"hidden\"]: !itemOverflow,\n [\"disabled\"]: firstItemVisible,\n }}\n role=\"tab\"\n >\n <ic-button\n class=\"scroll-arrow\"\n variant=\"icon-tertiary\"\n aria-label=\"Scroll left\"\n theme={\n this.theme === \"light\" || this.theme === \"inherit\"\n ? \"dark\"\n : \"light\"\n }\n monochrome={this.monochrome}\n innerHTML={LeftArrow}\n disabled={firstItemVisible}\n tabindex=\"-1\"\n onClick={this.scrollLeft}\n onMouseDown={this.leftArrowMouseDownHandler}\n ></ic-button>\n <span class=\"scroll-splitter-left\"></span>\n </div>\n <slot></slot>\n <div\n aria-hidden=\"true\"\n class={{\n [\"scroll-container-right\"]: true,\n [\"hidden\"]: !itemOverflow,\n [\"disabled\"]: lastItemVisible,\n }}\n role=\"tab\"\n >\n <span class=\"scroll-splitter-right\"></span>\n <ic-button\n class=\"scroll-arrow\"\n variant=\"icon-tertiary\"\n aria-label=\"Scroll right\"\n theme={\n this.theme === \"light\" || this.theme === \"inherit\"\n ? \"dark\"\n : \"light\"\n }\n monochrome={this.monochrome}\n innerHTML={RightArrow}\n disabled={lastItemVisible}\n tabindex=\"-1\"\n onClick={this.scrollRight}\n onMouseDown={this.rightArrowMouseDownHandler}\n ></ic-button>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
@@ -0,0 +1,2 @@
|
|
1
|
+
import{r as o,c as r,h as t,H as s}from"./p-8e4e97b4.js";import{L as e,d as i,g as a}from"./p-b57e59b7.js";import{B as c,W as h}from"./p-bddf799a.js";const n=class{constructor(t){o(this,t);this.brandChange=r(this,"brandChange",7);this.icThemeChange=r(this,"icThemeChange",7);this.themeClass="";this.brandColor=null;this.theme="light";this.darkModeChangeHandler=()=>{if(this.theme==="system"){this.themeClass=window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"ic-theme-dark":"ic-theme-light"}else{this.themeClass=`ic-theme-${this.theme}`}this.icThemeChange.emit(this.theme)};this.checkBrandColorContrast=()=>{if(e()<c&&e()>h){console.warn(`The brand colour does not provide enough contrast with either of the ICDS black or white foreground colours. Consider choosing a colour with a different brightness to achieve sufficient colour contrast for good visibility. See https://www.w3.org/TR/AERT/#color-contrast for more information about colour contrast.`)}};this.setBrandColor=()=>{const o=this.brandColor?i(this.brandColor):null;if(o){const{r,g:t,b:s,a:e}=o;const{style:i}=document.documentElement;i.setProperty("--ic-brand-color-primary-r",`${r}`);i.setProperty("--ic-brand-color-primary-g",`${t}`);i.setProperty("--ic-brand-color-primary-b",`${s}`);i.setProperty("--ic-brand-color-primary-a",`${e}`);this.checkBrandColorContrast();this.brandChange.emit({mode:a(),color:o})}}}watchBrandColorPropHandler(){this.setBrandColor()}watchThemePropHandler(){this.darkModeChangeHandler()}componentWillLoad(){this.darkModeChangeHandler();this.setBrandColor();window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",this.darkModeChangeHandler)}render(){const{themeClass:o}=this;return t(s,{key:"5acfd70fc7d5cec478027487b121829ad9258623",class:o},t("slot",{key:"962d9fdd42ceb26a48c49a06aa3df3cb13bb9157"}))}static get watchers(){return{brandColor:["watchBrandColorPropHandler"],theme:["watchThemePropHandler"]}}};export{n as ic_theme};
|
2
|
+
//# sourceMappingURL=p-228bc12d.entry.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["Theme","constructor","hostRef","this","themeClass","brandColor","theme","darkModeChangeHandler","window","matchMedia","matches","icThemeChange","emit","checkBrandColorContrast","getBrandColorBrightness","BLACK_MIN_COLOR_BRIGHTNESS","WHITE_MAX_COLOR_BRIGHTNESS","console","warn","setBrandColor","colorRGBA","convertToRGBA","r","g","b","a","style","document","documentElement","setProperty","brandChange","mode","getBrandForegroundAppearance","color","watchBrandColorPropHandler","watchThemePropHandler","componentWillLoad","addEventListener","render","h","Host","key","class"],"sources":["src/components/ic-theme/ic-theme.tsx"],"sourcesContent":["import {\n Component,\n Host,\n Event,\n EventEmitter,\n h,\n Watch,\n Prop,\n State,\n} from \"@stencil/core\";\n\nimport { IcColor, IcBrand, IcThemeSettings } from \"../../utils/types\";\nimport {\n convertToRGBA,\n getBrandForegroundAppearance,\n} from \"../../utils/helpers\";\nimport { getBrandColorBrightness } from \"../../utils/helpers\";\nimport {\n BLACK_MIN_COLOR_BRIGHTNESS,\n WHITE_MAX_COLOR_BRIGHTNESS,\n} from \"../../utils/constants\";\n\n@Component({\n tag: \"ic-theme\",\n})\nexport class Theme {\n @State() themeClass: string = \"\";\n\n /**\n * The brand colour. Can be a hex value e.g. \"#ff0000\", RGB e.g. \"rgb(255, 0, 0)\", or RGBA e.g. \"rgba(255, 0, 0, 1)\".\n */\n @Prop() brandColor?: IcColor | null = null;\n\n @Watch(\"brandColor\")\n watchBrandColorPropHandler(): void {\n this.setBrandColor();\n }\n\n /**\n * The theme mode. Can be \"dark\", \"light\", or \"system\". \"system\" will use the device or browser settings.\n */\n @Prop() theme?: IcThemeSettings = \"light\";\n\n @Watch(\"theme\")\n watchThemePropHandler(): void {\n this.darkModeChangeHandler();\n }\n\n /**\n * @internal Emitted when the brand color is changed.\n */\n @Event() brandChange: EventEmitter<IcBrand>;\n\n /**\n * Emitted when the theme is changed.\n */\n @Event() icThemeChange: EventEmitter<IcThemeSettings>;\n\n componentWillLoad(): void {\n this.darkModeChangeHandler();\n this.setBrandColor();\n\n window.matchMedia &&\n window\n .matchMedia(\"(prefers-color-scheme: dark)\")\n .addEventListener(\"change\", this.darkModeChangeHandler);\n }\n\n private darkModeChangeHandler = (): void => {\n if (this.theme === \"system\") {\n this.themeClass =\n window.matchMedia &&\n window.matchMedia(\"(prefers-color-scheme: dark)\").matches\n ? \"ic-theme-dark\"\n : \"ic-theme-light\";\n } else {\n this.themeClass = `ic-theme-${this.theme}`;\n }\n\n this.icThemeChange.emit(this.theme);\n };\n\n private checkBrandColorContrast = (): void => {\n if (\n getBrandColorBrightness() < BLACK_MIN_COLOR_BRIGHTNESS &&\n getBrandColorBrightness() > WHITE_MAX_COLOR_BRIGHTNESS\n ) {\n console.warn(\n `The brand colour does not provide enough contrast with either of the ICDS black or white foreground colours. Consider choosing a colour with a different brightness to achieve sufficient colour contrast for good visibility. See https://www.w3.org/TR/AERT/#color-contrast for more information about colour contrast.`\n );\n }\n };\n\n private setBrandColor = () => {\n const colorRGBA = this.brandColor ? convertToRGBA(this.brandColor) : null;\n\n if (colorRGBA) {\n const { r, g, b, a } = colorRGBA;\n const { style } = document.documentElement;\n style.setProperty(\"--ic-brand-color-primary-r\", `${r}`);\n style.setProperty(\"--ic-brand-color-primary-g\", `${g}`);\n style.setProperty(\"--ic-brand-color-primary-b\", `${b}`);\n style.setProperty(\"--ic-brand-color-primary-a\", `${a}`);\n\n this.checkBrandColorContrast();\n\n this.brandChange.emit({\n mode: getBrandForegroundAppearance(),\n color: colorRGBA,\n });\n }\n };\n\n render() {\n const { themeClass } = this;\n\n return (\n <Host class={themeClass}>\n <slot></slot>\n </Host>\n );\n }\n}\n"],"mappings":"
|
1
|
+
{"version":3,"names":["Theme","constructor","hostRef","this","themeClass","brandColor","theme","darkModeChangeHandler","window","matchMedia","matches","icThemeChange","emit","checkBrandColorContrast","getBrandColorBrightness","BLACK_MIN_COLOR_BRIGHTNESS","WHITE_MAX_COLOR_BRIGHTNESS","console","warn","setBrandColor","colorRGBA","convertToRGBA","r","g","b","a","style","document","documentElement","setProperty","brandChange","mode","getBrandForegroundAppearance","color","watchBrandColorPropHandler","watchThemePropHandler","componentWillLoad","addEventListener","render","h","Host","key","class"],"sources":["src/components/ic-theme/ic-theme.tsx"],"sourcesContent":["import {\n Component,\n Host,\n Event,\n EventEmitter,\n h,\n Watch,\n Prop,\n State,\n} from \"@stencil/core\";\n\nimport { IcColor, IcBrand, IcThemeSettings } from \"../../utils/types\";\nimport {\n convertToRGBA,\n getBrandForegroundAppearance,\n} from \"../../utils/helpers\";\nimport { getBrandColorBrightness } from \"../../utils/helpers\";\nimport {\n BLACK_MIN_COLOR_BRIGHTNESS,\n WHITE_MAX_COLOR_BRIGHTNESS,\n} from \"../../utils/constants\";\n\n@Component({\n tag: \"ic-theme\",\n})\nexport class Theme {\n @State() themeClass: string = \"\";\n\n /**\n * The brand colour. Can be a hex value e.g. \"#ff0000\", RGB e.g. \"rgb(255, 0, 0)\", or RGBA e.g. \"rgba(255, 0, 0, 1)\".\n */\n @Prop() brandColor?: IcColor | null = null;\n\n @Watch(\"brandColor\")\n watchBrandColorPropHandler(): void {\n this.setBrandColor();\n }\n\n /**\n * The theme mode. Can be \"dark\", \"light\", or \"system\". \"system\" will use the device or browser settings.\n */\n @Prop() theme?: IcThemeSettings = \"light\";\n\n @Watch(\"theme\")\n watchThemePropHandler(): void {\n this.darkModeChangeHandler();\n }\n\n /**\n * @internal Emitted when the brand color is changed.\n */\n @Event() brandChange: EventEmitter<IcBrand>;\n\n /**\n * Emitted when the theme is changed.\n */\n @Event() icThemeChange: EventEmitter<IcThemeSettings>;\n\n componentWillLoad(): void {\n this.darkModeChangeHandler();\n this.setBrandColor();\n\n window.matchMedia &&\n window\n .matchMedia(\"(prefers-color-scheme: dark)\")\n .addEventListener(\"change\", this.darkModeChangeHandler);\n }\n\n private darkModeChangeHandler = (): void => {\n if (this.theme === \"system\") {\n this.themeClass =\n window.matchMedia &&\n window.matchMedia(\"(prefers-color-scheme: dark)\").matches\n ? \"ic-theme-dark\"\n : \"ic-theme-light\";\n } else {\n this.themeClass = `ic-theme-${this.theme}`;\n }\n\n this.icThemeChange.emit(this.theme);\n };\n\n private checkBrandColorContrast = (): void => {\n if (\n getBrandColorBrightness() < BLACK_MIN_COLOR_BRIGHTNESS &&\n getBrandColorBrightness() > WHITE_MAX_COLOR_BRIGHTNESS\n ) {\n console.warn(\n `The brand colour does not provide enough contrast with either of the ICDS black or white foreground colours. Consider choosing a colour with a different brightness to achieve sufficient colour contrast for good visibility. See https://www.w3.org/TR/AERT/#color-contrast for more information about colour contrast.`\n );\n }\n };\n\n private setBrandColor = () => {\n const colorRGBA = this.brandColor ? convertToRGBA(this.brandColor) : null;\n\n if (colorRGBA) {\n const { r, g, b, a } = colorRGBA;\n const { style } = document.documentElement;\n style.setProperty(\"--ic-brand-color-primary-r\", `${r}`);\n style.setProperty(\"--ic-brand-color-primary-g\", `${g}`);\n style.setProperty(\"--ic-brand-color-primary-b\", `${b}`);\n style.setProperty(\"--ic-brand-color-primary-a\", `${a}`);\n\n this.checkBrandColorContrast();\n\n this.brandChange.emit({\n mode: getBrandForegroundAppearance(),\n color: colorRGBA,\n });\n }\n };\n\n render() {\n const { themeClass } = this;\n\n return (\n <Host class={themeClass}>\n <slot></slot>\n </Host>\n );\n }\n}\n"],"mappings":"4JAyBaA,EAAK,MAHlB,WAAAC,CAAAC,G,gGAIWC,KAAAC,WAAqB,GAKtBD,KAAAE,WAA8B,KAU9BF,KAAAG,MAA0B,QA2B1BH,KAAAI,sBAAwB,KAC9B,GAAIJ,KAAKG,QAAU,SAAU,CAC3BH,KAAKC,WACHI,OAAOC,YACPD,OAAOC,WAAW,gCAAgCC,QAC9C,gBACA,gB,KACD,CACLP,KAAKC,WAAa,YAAYD,KAAKG,O,CAGrCH,KAAKQ,cAAcC,KAAKT,KAAKG,MAAM,EAG7BH,KAAAU,wBAA0B,KAChC,GACEC,IAA4BC,GAC5BD,IAA4BE,EAC5B,CACAC,QAAQC,KACN,4T,GAKEf,KAAAgB,cAAgB,KACtB,MAAMC,EAAYjB,KAAKE,WAAagB,EAAclB,KAAKE,YAAc,KAErE,GAAIe,EAAW,CACb,MAAME,EAAGC,EAAEA,EAACC,EAAEA,EAACC,EAAEA,GAAML,EACvB,MAAMM,MAAEA,GAAUC,SAASC,gBAC3BF,EAAMG,YAAY,6BAA8B,GAAGP,KACnDI,EAAMG,YAAY,6BAA8B,GAAGN,KACnDG,EAAMG,YAAY,6BAA8B,GAAGL,KACnDE,EAAMG,YAAY,6BAA8B,GAAGJ,KAEnDtB,KAAKU,0BAELV,KAAK2B,YAAYlB,KAAK,CACpBmB,KAAMC,IACNC,MAAOb,G,GA1Eb,0BAAAc,GACE/B,KAAKgB,e,CASP,qBAAAgB,GACEhC,KAAKI,uB,CAaP,iBAAA6B,GACEjC,KAAKI,wBACLJ,KAAKgB,gBAELX,OAAOC,YACLD,OACGC,WAAW,gCACX4B,iBAAiB,SAAUlC,KAAKI,sB,CAgDvC,MAAA+B,GACE,MAAMlC,WAAEA,GAAeD,KAEvB,OACEoC,EAACC,EAAI,CAAAC,IAAA,2CAACC,MAAOtC,GACXmC,EAAA,QAAAE,IAAA,6C","ignoreList":[]}
|
@@ -0,0 +1,2 @@
|
|
1
|
+
import{r as o,h as t,H as r}from"./p-8e4e97b4.js";import{o as e}from"./p-b57e59b7.js";import"./p-bddf799a.js";const i=":host{display:block;margin-bottom:var(--ic-space-md);border-bottom:var(--ic-space-1px) solid var(--ic-tab-bottom-border)}:host(.ic-tab-group-monochrome){border-bottom:var(--ic-space-1px) solid\n var(--ic-tab-bottom-border-monochrome)}:host(.ic-tab-group-inline){margin-bottom:0;border-bottom:none}.tabs-container{display:flex;flex-direction:row}.tabs-container::-webkit-scrollbar{display:none}:host ic-horizontal-scroll{--splitter-color:var(--ic-tab-divider)}:host(.ic-tab-group-monochrome) ic-horizontal-scroll{--splitter-color:var(--ic-tab-divider-monochrome)}";const a=i;const c=class{constructor(t){o(this,t);this.inline=false;this.monochrome=false;this.theme="inherit"}componentDidLoad(){e([{prop:this.label,propName:"label"}],"Tab Group")}render(){const{inline:o,theme:e,label:i,monochrome:a}=this;return t(r,{key:"89f78b3bc3025f9bc250fb045612f11230448011",role:"tablist","aria-label":i,class:{["ic-tab-group-inline"]:!!o,[`ic-theme-${e}`]:e!=="inherit",["ic-tab-group-monochrome"]:!!a}},t("ic-horizontal-scroll",{key:"8924e03f1928a7c726576570ca817638169be532",theme:e,"focus-trigger":"tabFocus",monochrome:a},t("div",{key:"c9534b3cb05161ee14a494925bd31ce3dc6f98f2",class:"tabs-container"},t("slot",{key:"63515a30dd40c06faf2a79f5cbb0cdf15fb726f5"}))))}static get delegatesFocus(){return true}};c.style=a;export{c as ic_tab_group};
|
2
|
+
//# sourceMappingURL=p-25bef09d.entry.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["icTabGroupCss","IcTabGroupStyle0","TabGroup","constructor","hostRef","this","inline","monochrome","theme","componentDidLoad","onComponentRequiredPropUndefined","prop","label","propName","render","h","Host","key","role","class"],"sources":["src/components/ic-tab-group/ic-tab-group.css?tag=ic-tab-group&encapsulation=shadow","src/components/ic-tab-group/ic-tab-group.tsx"],"sourcesContent":[":host {\n display: block;\n margin-bottom: var(--ic-space-md);\n border-bottom: var(--ic-space-1px) solid var(--ic-tab-bottom-border);\n}\n\n:host(.ic-tab-group-monochrome) {\n border-bottom: var(--ic-space-1px) solid\n var(--ic-tab-bottom-border-monochrome);\n}\n\n:host(.ic-tab-group-inline) {\n margin-bottom: 0;\n border-bottom: none;\n}\n\n.tabs-container {\n display: flex;\n flex-direction: row;\n}\n\n.tabs-container::-webkit-scrollbar {\n display: none;\n}\n\n:host ic-horizontal-scroll {\n --splitter-color: var(--ic-tab-divider);\n}\n\n:host(.ic-tab-group-monochrome) ic-horizontal-scroll {\n --splitter-color: var(--ic-tab-divider-monochrome);\n}\n","import { Component, Host, Prop, h } from \"@stencil/core\";\n\nimport { onComponentRequiredPropUndefined } from \"../../utils/helpers\";\nimport { IcThemeMode } from \"../../utils/types\";\n\n@Component({\n tag: \"ic-tab-group\",\n styleUrl: \"ic-tab-group.css\",\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class TabGroup {\n /**\n * If `true`, the tabs and tab panels will be positioned separately.\n */\n @Prop({ reflect: true }) inline?: boolean = false;\n\n /**\n * The label to describe the purpose of the set of tabs to screen reader users.\n */\n @Prop() label!: string;\n\n /** @internal Determines whether black variant of the tabs should be displayed. */\n @Prop() monochrome?: boolean = false;\n\n /** @internal Determines whether the light or dark variant of the tabs should be displayed. */\n @Prop() theme?: IcThemeMode = \"inherit\";\n\n componentDidLoad(): void {\n onComponentRequiredPropUndefined(\n [{ prop: this.label, propName: \"label\" }],\n \"Tab Group\"\n );\n }\n\n render() {\n const { inline, theme, label, monochrome } = this;\n\n return (\n <Host\n role=\"tablist\"\n aria-label={label}\n class={{\n [\"ic-tab-group-inline\"]: !!inline,\n [`ic-theme-${theme}`]: theme !== \"inherit\",\n [\"ic-tab-group-monochrome\"]: !!monochrome,\n }}\n >\n <ic-horizontal-scroll\n theme={theme}\n focus-trigger=\"tabFocus\"\n monochrome={monochrome}\n >\n <div class=\"tabs-container\">\n <slot></slot>\n </div>\n </ic-horizontal-scroll>\n </Host>\n );\n }\n}\n"],"mappings":"
|
1
|
+
{"version":3,"names":["icTabGroupCss","IcTabGroupStyle0","TabGroup","constructor","hostRef","this","inline","monochrome","theme","componentDidLoad","onComponentRequiredPropUndefined","prop","label","propName","render","h","Host","key","role","class"],"sources":["src/components/ic-tab-group/ic-tab-group.css?tag=ic-tab-group&encapsulation=shadow","src/components/ic-tab-group/ic-tab-group.tsx"],"sourcesContent":[":host {\n display: block;\n margin-bottom: var(--ic-space-md);\n border-bottom: var(--ic-space-1px) solid var(--ic-tab-bottom-border);\n}\n\n:host(.ic-tab-group-monochrome) {\n border-bottom: var(--ic-space-1px) solid\n var(--ic-tab-bottom-border-monochrome);\n}\n\n:host(.ic-tab-group-inline) {\n margin-bottom: 0;\n border-bottom: none;\n}\n\n.tabs-container {\n display: flex;\n flex-direction: row;\n}\n\n.tabs-container::-webkit-scrollbar {\n display: none;\n}\n\n:host ic-horizontal-scroll {\n --splitter-color: var(--ic-tab-divider);\n}\n\n:host(.ic-tab-group-monochrome) ic-horizontal-scroll {\n --splitter-color: var(--ic-tab-divider-monochrome);\n}\n","import { Component, Host, Prop, h } from \"@stencil/core\";\n\nimport { onComponentRequiredPropUndefined } from \"../../utils/helpers\";\nimport { IcThemeMode } from \"../../utils/types\";\n\n@Component({\n tag: \"ic-tab-group\",\n styleUrl: \"ic-tab-group.css\",\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class TabGroup {\n /**\n * If `true`, the tabs and tab panels will be positioned separately.\n */\n @Prop({ reflect: true }) inline?: boolean = false;\n\n /**\n * The label to describe the purpose of the set of tabs to screen reader users.\n */\n @Prop() label!: string;\n\n /** @internal Determines whether black variant of the tabs should be displayed. */\n @Prop() monochrome?: boolean = false;\n\n /** @internal Determines whether the light or dark variant of the tabs should be displayed. */\n @Prop() theme?: IcThemeMode = \"inherit\";\n\n componentDidLoad(): void {\n onComponentRequiredPropUndefined(\n [{ prop: this.label, propName: \"label\" }],\n \"Tab Group\"\n );\n }\n\n render() {\n const { inline, theme, label, monochrome } = this;\n\n return (\n <Host\n role=\"tablist\"\n aria-label={label}\n class={{\n [\"ic-tab-group-inline\"]: !!inline,\n [`ic-theme-${theme}`]: theme !== \"inherit\",\n [\"ic-tab-group-monochrome\"]: !!monochrome,\n }}\n >\n <ic-horizontal-scroll\n theme={theme}\n focus-trigger=\"tabFocus\"\n monochrome={monochrome}\n >\n <div class=\"tabs-container\">\n <slot></slot>\n </div>\n </ic-horizontal-scroll>\n </Host>\n );\n }\n}\n"],"mappings":"8GAAA,MAAMA,EAAgB,wjBACtB,MAAAC,EAAeD,E,MCWFE,EAAQ,MAPrB,WAAAC,CAAAC,G,UAW2BC,KAAAC,OAAmB,MAQpCD,KAAAE,WAAuB,MAGvBF,KAAAG,MAAsB,S,CAE9B,gBAAAC,GACEC,EACE,CAAC,CAAEC,KAAMN,KAAKO,MAAOC,SAAU,UAC/B,Y,CAIJ,MAAAC,GACE,MAAMR,OAAEA,EAAME,MAAEA,EAAKI,MAAEA,EAAKL,WAAEA,GAAeF,KAE7C,OACEU,EAACC,EAAI,CAAAC,IAAA,2CACHC,KAAK,UAAS,aACFN,EACZO,MAAO,CACL,CAAC,yBAA0Bb,EAC3B,CAAC,YAAYE,KAAUA,IAAU,UACjC,CAAC,6BAA8BD,IAGjCQ,EAAA,wBAAAE,IAAA,2CACET,MAAOA,EAAK,gBACE,WACdD,WAAYA,GAEZQ,EAAA,OAAAE,IAAA,2CAAKE,MAAM,kBACTJ,EAAA,QAAAE,IAAA,+C","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-b57e59b7.js";import"./p-bddf799a.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-27e67d45.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 e,h as t,H as i,g as n}from"./p-8e4e97b4.js";import{g as o,t as a,i as r,o as c,a as s,e as d,I as h}from"./p-b57e59b7.js";import"./p-bddf799a.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}:host{display:block;background-color:var(--ic-hero-background);--hero-heading-bottom-margin:var(--ic-space-md);--hero-keyline:var(--ic-hero-keyline)}:host(.ic-hero-dark){background-color:var(--ic-brand-color-secondary);--ic-hero-heading:var(--ic-color-text-primary-light);--ic-hero-body:var(--ic-color-text-primary-light);--ic-hero-secondary-heading:var(--ic-color-text-primary-light);--hero-keyline:var(--ic-brand-text-color)}.heading{--ic-typography-color:var(--ic-hero-heading)}.subheading{--ic-typography-color:var(--ic-hero-body)}.secondary-container{--ic-typography-color:var(--ic-hero-secondary-heading);display:flex;flex-direction:column;justify-content:center;border-left:var(--ic-space-xxxs) solid var(--hero-keyline)}:host(.has-background-image){background-repeat:no-repeat;background-position:right -6.25rem;background-size:auto calc(100% + 6.25rem);box-shadow:var(--ic-elevation-inset)}@media (prefers-reduced-motion){:host(.has-background-image){background-position:right -6.25rem !important}}ic-typography.heading-bottom-spacing{margin-bottom:var(--hero-heading-bottom-margin)}.section-container{display:flex;align-items:center;height:100%}.left-container{padding:var(--ic-space-xl) 0}.left-container:not(.left-container-full-width){flex-basis:50%}.left-container-full-width{width:100%}.right-container{flex-basis:50%}.interaction-container{display:flex;gap:var(--ic-space-md);margin-top:var(--ic-space-lg);flex-wrap:wrap}.secondary-subheading{margin-top:var(--ic-space-xxs)}:host([content-aligned="left"]) .left-container,:host([content-aligned="left"]) .interaction-container{justify-content:flex-start;text-align:left}:host([content-aligned="center"]) .left-container,:host([content-aligned="center"]) .interaction-container{justify-content:center;text-align:center}@media (min-width: 992px){.left-container-full-width{width:66.6%}}@media (min-width: 1044px){:host,.section-container{min-height:13rem}:host(.ic-hero-small),:host(.ic-hero-small) .section-container{min-height:10.813rem}.left-container:not(.left-container-full-width){flex-basis:66.6%}.left-container{min-height:9rem}.right-container{flex-basis:33.3%;margin-left:3.125rem}.secondary-container{min-height:9rem}.secondary-heading,.secondary-subheading{margin-left:3.938rem}}@media (min-width: 801px) and (max-width: 1043px){:host(.has-background-image){background-image:none !important}:host,.section-container{min-height:16rem}:host(.ic-hero-small),:host(.ic-hero-small) .section-container{min-height:15rem}:host(.secondary-heading),:host(.secondary-heading) .section-container{min-height:14rem}.left-container{min-height:10rem}.secondary-container{min-height:10rem}.secondary-heading,.secondary-subheading{margin-left:5.922rem}.right-container{margin-left:3.125rem}}@media (min-width: 641px) and (max-width: 800px){:host(.has-background-image){background-image:none !important}:host(.has-right-content) .section-container{flex-wrap:wrap}:host(.has-right-content) .left-container{flex-basis:100%}:host(.has-right-content) .right-container{flex-basis:100%;margin-bottom:2.5rem}:host,.section-container{min-height:16rem}:host(.ic-hero-small),:host(.ic-hero-small) .section-container{min-height:15rem}:host(.secondary-heading),:host(.secondary-heading) .section-container{min-height:14rem}.left-container{min-height:10rem}.secondary-container{min-height:10rem}.secondary-heading,.secondary-subheading{margin-left:2.125rem}}@media (min-width: 481px) and (max-width: 640px){:host(.has-background-image){background-image:none !important}:host,.section-container{min-height:13rem}:host(.ic-hero-small),:host(.ic-hero-small) .section-container{min-height:10.813rem}:host(.secondary-heading),:host(.secondary-heading) .section-container{min-height:17.5rem}:host(.secondary-heading) .section-container,:host(.ic-hero-small) .section-container,.section-container{flex-direction:column;align-items:flex-start}.left-container{height:-moz-fit-content;height:fit-content}.secondary-container{height:-moz-fit-content;height:fit-content;border:none}.right-container{margin-bottom:2.5rem}}@media (max-width: 480px){:host(.has-background-image){background-image:none !important}:host,.section-container{min-height:12rem}:host,.right-container{margin-bottom:var(--ic-space-md)}:host(.ic-hero-small),:host(.ic-hero-small) .section-container{min-height:10.813rem}:host(.secondary-heading),:host(.secondary-heading) .section-container{min-height:16.5rem}:host(.secondary-heading) .section-container,:host(.ic-hero-small) .section-container,.section-container{flex-direction:column;align-items:flex-start}.left-container{height:-moz-fit-content;height:fit-content}.secondary-container{height:-moz-fit-content;height:fit-content;border:none}}';const m=l;const g=class{constructor(t){e(this,t);this.hostMutationObserver=null;this.foregroundColor=o();this.rightContent=false;this.leftContentFullWidth=!this.rightContent&&this.secondaryHeading===undefined;this.scrollFactor="right -100px";this.aligned="left";this.contentAligned="left";this.disableBackgroundParallax=false;this.size="medium"}disconnectedCallback(){var e;(e=this.hostMutationObserver)===null||e===void 0?void 0:e.disconnect()}componentWillLoad(){this.rightContent=a(this.el,"secondary")}componentDidLoad(){!r(this.el,"heading")&&c([{prop:this.heading,propName:"heading"}],"Hero");this.hostMutationObserver=new MutationObserver((e=>s(e,"secondary",this)));this.hostMutationObserver.observe(this.el,{childList:true})}componentWillRender(){this.rightContent=a(this.el,"secondary")}brandChangeHandler(e){this.foregroundColor=e.detail.mode}doScroll(){var e;if(this.disableBackgroundParallax){return}const t=(e=document.scrollingElement)===null||e===void 0?void 0:e.scrollTop;if(t){const e=.4;const i=-100+t*e;this.scrollFactor="right "+i+"px"}}render(){const{aligned:e,size:n,heading:o,subheading:a,secondaryHeading:r,secondarySubheading:c,foregroundColor:s,backgroundImage:l,scrollFactor:m}=this;let g={};if(d(l)){g={"background-image":"url("+l+")","background-position":m}}return t(i,{key:"aee3d892e9e8aeda5b348da837eee5c8c1e8735a",class:{[`ic-hero-${h.Dark}`]:s===h.Dark,["has-background-image"]:l!==undefined,["has-right-content"]:this.rightContent,["ic-hero-small"]:n==="small",["secondary-heading"]:!!r},style:g},t("ic-section-container",{key:"6f588f23372a118fbf316d0c5202d17af21f4e43",aligned:e,fullHeight:true,class:"section-container"},t("div",{key:"1c34b2d8b07a045c1c801d99b4e1d707e1a99e88",class:{["left-container"]:true,["left-container-full-width"]:this.leftContentFullWidth}},t("div",{key:"72acdd6b683c699d5e799aa83546bde5b52962db",class:"heading"},t("slot",{key:"5915be3f3cd2a5329ba8beb46bc0b704693a7fec",name:"heading"},t("ic-typography",{key:"f9b16a498674c7a29e669be2b63ae3d730cbacba",variant:n==="small"?"h2":"h1",class:{["heading-bottom-spacing"]:n!=="small"}},t("h2",{key:"3ed6060a057a88fd332f8ef6b1d914702e6d3f40"},o)))),t("div",{key:"a2ed35fcf9ff99f56cf80264a6374c2dc3cbfcbe",class:"subheading"},t("slot",{key:"58027e2b2eeb3c49bd5322019435cb9de18cb77c",name:"subheading"},t("ic-typography",{key:"b04e16640e640e623142b2f5555e9a644c1a3929",variant:"body"},a))),t("div",{key:"6d87fcd8ffd64077e483471c7d28ab41c7004b98",class:"interaction-container"},t("slot",{key:"e2421373570e5cf84e093971d70a75c542a0a0ba",name:"interaction"}))),(d(r)||this.rightContent)&&t("div",{key:"ef2bdb160da3c3558f4764b85cebb01ebdfc086f",class:"right-container"},t("slot",{key:"dc5991ad4cbc856390335cece65e15400d3752ce",name:"secondary"},r&&t("div",{key:"059273f8fc66599aa67a11d0bfeaab113a7fd21d",class:"secondary-container"},t("div",{key:"966adc1a6f9c930c52766dbc2f884691a60f58ac",class:"secondary-heading"},t("ic-typography",{key:"80fd633680cc4888363567e532db41806be62c2e",variant:"h4"},t("h3",{key:"a72f5272444bbfc0941fc552a47d2e8863b8e256"},r))),t("div",{key:"60fac396776b1eaf7950675f880a1338409f0dbd",class:"secondary-subheading"},t("ic-typography",{key:"7178ff3785d3d7d5dd9b737e618a720ce64de9c8",variant:"subtitle-small"},c)))))))}get el(){return n(this)}};g.style=m;export{g as ic_hero};
|
2
|
+
//# sourceMappingURL=p-2800fc30.entry.js.map
|