@ukic/web-components 3.3.0 → 3.4.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/core.cjs.js +1 -1
- package/dist/cjs/ic-accordion.cjs.entry.js +9 -7
- package/dist/cjs/ic-accordion.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-alert.cjs.entry.js +1 -1
- package/dist/cjs/ic-alert.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-breadcrumb-group.cjs.entry.js +2 -2
- package/dist/cjs/ic-breadcrumb.cjs.entry.js +2 -2
- package/dist/cjs/ic-button_3.cjs.entry.js +8 -8
- package/dist/cjs/ic-button_3.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-card-vertical.cjs.entry.js +1 -1
- package/dist/cjs/ic-card-vertical.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-checkbox-group.cjs.entry.js +2 -2
- package/dist/cjs/ic-checkbox.cjs.entry.js +7 -12
- package/dist/cjs/ic-checkbox.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 +2 -2
- package/dist/cjs/ic-dialog.cjs.entry.js +1 -1
- package/dist/cjs/ic-empty-state.cjs.entry.js +2 -2
- package/dist/cjs/ic-footer-link.cjs.entry.js +2 -2
- 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 +5 -5
- package/dist/cjs/ic-input-component-container_3.cjs.entry.js +22 -21
- package/dist/cjs/ic-input-component-container_3.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-input-label_2.cjs.entry.js +7 -7
- package/dist/cjs/ic-link.cjs.entry.js +11 -21
- package/dist/cjs/ic-link.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-menu-group.cjs.entry.js +1 -1
- package/dist/cjs/ic-navigation-group.cjs.entry.js +115 -163
- package/dist/cjs/ic-navigation-group.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-navigation-item.cjs.entry.js +64 -61
- package/dist/cjs/ic-navigation-item.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-navigation-menu.cjs.entry.js +4 -4
- package/dist/cjs/ic-page-header.cjs.entry.js +6 -6
- package/dist/cjs/ic-pagination-item.cjs.entry.js +1 -1
- package/dist/cjs/ic-pagination.cjs.entry.js +4 -4
- package/dist/cjs/ic-popover-menu.cjs.entry.js +5 -5
- package/dist/cjs/ic-popover-menu.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-radio-group.cjs.entry.js +4 -4
- package/dist/cjs/ic-radio-option.cjs.entry.js +4 -4
- package/dist/cjs/ic-search-bar.cjs.entry.js +49 -31
- 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 +141 -217
- package/dist/cjs/ic-select.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-side-navigation.cjs.entry.js +23 -4
- 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 +2 -2
- package/dist/cjs/ic-step.cjs.entry.js +13 -13
- package/dist/cjs/ic-stepper.cjs.entry.js +2 -2
- package/dist/cjs/ic-switch.cjs.entry.js +4 -4
- package/dist/cjs/ic-tab-context.cjs.entry.js +1 -1
- package/dist/cjs/ic-tab-group.cjs.entry.js +2 -2
- package/dist/cjs/ic-tab-panel.cjs.entry.js +2 -2
- package/dist/cjs/ic-text-field.cjs.entry.js +15 -10
- package/dist/cjs/ic-text-field.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-theme.cjs.entry.js +1 -1
- package/dist/cjs/ic-toast-region.cjs.entry.js +1 -1
- package/dist/cjs/ic-toast.cjs.entry.js +3 -3
- package/dist/cjs/ic-toggle-button-group.cjs.entry.js +53 -67
- package/dist/cjs/ic-toggle-button-group.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-toggle-button.cjs.entry.js +61 -63
- package/dist/cjs/ic-toggle-button.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-top-navigation.cjs.entry.js +64 -62
- package/dist/cjs/ic-top-navigation.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-typography.cjs.entry.js +2 -2
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/components/ic-accordion/ic-accordion.js +9 -7
- package/dist/collection/components/ic-accordion/ic-accordion.js.map +1 -1
- package/dist/collection/components/ic-accordion/ic-accordion.stories.js +1 -1
- package/dist/collection/components/ic-alert/ic-alert.css +4 -0
- package/dist/collection/components/ic-breadcrumb/ic-breadcrumb.js +2 -2
- package/dist/collection/components/ic-breadcrumb-group/ic-breadcrumb-group.js +2 -2
- package/dist/collection/components/ic-button/ic-button.css +0 -8
- package/dist/collection/components/ic-button/ic-button.js +2 -2
- package/dist/collection/components/ic-button/ic-button.js.map +1 -1
- package/dist/collection/components/ic-card-vertical/ic-card-vertical.css +3 -0
- package/dist/collection/components/ic-checkbox/ic-checkbox.css +9 -1
- package/dist/collection/components/ic-checkbox/ic-checkbox.js +6 -11
- package/dist/collection/components/ic-checkbox/ic-checkbox.js.map +1 -1
- package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.js +2 -2
- package/dist/collection/components/ic-data-list/ic-data-list.js +2 -2
- package/dist/collection/components/ic-data-row/ic-data-row.js +2 -2
- package/dist/collection/components/ic-dialog/ic-dialog.js +1 -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.css +13 -4
- package/dist/collection/components/ic-hero/ic-hero.js +5 -4
- package/dist/collection/components/ic-hero/ic-hero.js.map +1 -1
- package/dist/collection/components/ic-hero/ic-hero.stories.js +1 -0
- package/dist/collection/components/ic-horizontal-scroll/ic-horizontal-scroll.js +5 -5
- package/dist/collection/components/ic-input-component-container/ic-input-component-container.js +3 -3
- package/dist/collection/components/ic-input-container/ic-input-container.js +2 -2
- package/dist/collection/components/ic-input-label/ic-input-label.js +4 -4
- package/dist/collection/components/ic-input-validation/ic-input-validation.js +3 -3
- package/dist/collection/components/ic-link/ic-link.js +12 -25
- package/dist/collection/components/ic-link/ic-link.js.map +1 -1
- package/dist/collection/components/ic-loading-indicator/ic-loading-indicator.js +3 -3
- package/dist/collection/components/ic-menu/ic-menu.js +41 -40
- 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 +119 -167
- package/dist/collection/components/ic-navigation-group/ic-navigation-group.js.map +1 -1
- package/dist/collection/components/ic-navigation-item/ic-navigation-item.css +7 -13
- package/dist/collection/components/ic-navigation-item/ic-navigation-item.js +80 -74
- package/dist/collection/components/ic-navigation-item/ic-navigation-item.js.map +1 -1
- package/dist/collection/components/ic-navigation-menu/ic-navigation-menu.js +4 -4
- 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.css +3 -0
- package/dist/collection/components/ic-popover-menu/ic-popover-menu.js +4 -4
- package/dist/collection/components/ic-radio-group/ic-radio-group.js +4 -4
- package/dist/collection/components/ic-radio-option/ic-radio-option.js +4 -4
- package/dist/collection/components/ic-search-bar/ic-search-bar.js +52 -32
- package/dist/collection/components/ic-search-bar/ic-search-bar.js.map +1 -1
- package/dist/collection/components/ic-search-bar/ic-search-bar.stories.js +9 -8
- package/dist/collection/components/ic-section-container/ic-section-container.js +2 -2
- package/dist/collection/components/ic-select/ic-select.js +196 -271
- package/dist/collection/components/ic-select/ic-select.js.map +1 -1
- package/dist/collection/components/ic-select/ic-select_(single).stories.js +30 -21
- package/dist/collection/components/ic-side-navigation/ic-side-navigation.js +43 -4
- package/dist/collection/components/ic-side-navigation/ic-side-navigation.js.map +1 -1
- package/dist/collection/components/ic-side-navigation/ic-side-navigation.stories.js +247 -0
- package/dist/collection/components/ic-skeleton/ic-skeleton.js +2 -2
- package/dist/collection/components/ic-skip-link/ic-skip-link.js +2 -2
- package/dist/collection/components/ic-status-tag/ic-status-tag.js +2 -2
- package/dist/collection/components/ic-step/ic-step.js +13 -13
- package/dist/collection/components/ic-stepper/ic-stepper.js +2 -2
- package/dist/collection/components/ic-switch/ic-switch.js +4 -4
- package/dist/collection/components/ic-tab-context/ic-tab-context.js +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.js +20 -14
- package/dist/collection/components/ic-text-field/ic-text-field.js.map +1 -1
- 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-region/ic-toast-region.js +1 -1
- package/dist/collection/components/ic-toggle-button/ic-toggle-button.css +40 -7
- package/dist/collection/components/ic-toggle-button/ic-toggle-button.js +80 -82
- 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 +79 -88
- package/dist/collection/components/ic-toggle-button-group/ic-toggle-button-group.js.map +1 -1
- package/dist/collection/components/ic-tooltip/ic-tooltip.js +2 -2
- package/dist/collection/components/ic-top-navigation/ic-top-navigation.js +81 -79
- package/dist/collection/components/ic-top-navigation/ic-top-navigation.js.map +1 -1
- package/dist/collection/components/ic-typography/ic-typography.js +2 -2
- package/dist/components/ic-accordion.js +9 -7
- package/dist/components/ic-accordion.js.map +1 -1
- package/dist/components/ic-alert.js +1 -1
- package/dist/components/ic-alert.js.map +1 -1
- package/dist/components/ic-breadcrumb-group.js +2 -2
- package/dist/components/ic-breadcrumb2.js +2 -2
- package/dist/components/ic-button2.js +3 -3
- package/dist/components/ic-button2.js.map +1 -1
- package/dist/components/ic-card-vertical.js +1 -1
- package/dist/components/ic-card-vertical.js.map +1 -1
- package/dist/components/ic-checkbox-group.js +2 -2
- package/dist/components/ic-checkbox.js +7 -12
- package/dist/components/ic-checkbox.js.map +1 -1
- package/dist/components/ic-data-list.js +2 -2
- package/dist/components/ic-data-row.js +2 -2
- package/dist/components/ic-dialog.js +1 -1
- package/dist/components/ic-empty-state.js +2 -2
- package/dist/components/ic-footer-link.js +2 -2
- package/dist/components/ic-hero.js +6 -5
- package/dist/components/ic-hero.js.map +1 -1
- package/dist/components/ic-horizontal-scroll2.js +5 -5
- package/dist/components/ic-input-component-container2.js +3 -3
- package/dist/components/ic-input-container2.js +2 -2
- package/dist/components/ic-input-label2.js +4 -4
- package/dist/components/ic-input-validation2.js +3 -3
- package/dist/components/ic-link2.js +12 -24
- package/dist/components/ic-link2.js.map +1 -1
- package/dist/components/ic-loading-indicator2.js +3 -3
- package/dist/components/ic-menu-group.js +1 -1
- package/dist/components/ic-menu2.js +17 -16
- package/dist/components/ic-menu2.js.map +1 -1
- package/dist/components/ic-navigation-group.js +115 -163
- package/dist/components/ic-navigation-group.js.map +1 -1
- package/dist/components/ic-navigation-item.js +67 -62
- package/dist/components/ic-navigation-item.js.map +1 -1
- package/dist/components/ic-navigation-menu2.js +4 -4
- package/dist/components/ic-page-header.js +6 -6
- package/dist/components/ic-pagination-item2.js +1 -1
- 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 +4 -4
- package/dist/components/ic-radio-group.js.map +1 -1
- package/dist/components/ic-radio-option.js +4 -4
- package/dist/components/ic-search-bar.js +50 -31
- 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 +141 -217
- package/dist/components/ic-select.js.map +1 -1
- package/dist/components/ic-side-navigation.js +24 -4
- package/dist/components/ic-side-navigation.js.map +1 -1
- package/dist/components/ic-skeleton.js +2 -2
- package/dist/components/ic-skip-link.js +2 -2
- package/dist/components/ic-status-tag.js +2 -2
- package/dist/components/ic-step.js +13 -13
- package/dist/components/ic-stepper.js +2 -2
- package/dist/components/ic-switch.js +4 -4
- package/dist/components/ic-tab-context.js +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 +16 -10
- package/dist/components/ic-text-field.js.map +1 -1
- package/dist/components/ic-theme.js +1 -1
- package/dist/components/ic-toast-region.js +1 -1
- package/dist/components/ic-toast.js +3 -3
- package/dist/components/ic-toggle-button-group.js +53 -67
- package/dist/components/ic-toggle-button-group.js.map +1 -1
- package/dist/components/ic-toggle-button.js +61 -63
- package/dist/components/ic-toggle-button.js.map +1 -1
- package/dist/components/ic-tooltip2.js +2 -2
- package/dist/components/ic-top-navigation.js +65 -63
- package/dist/components/ic-top-navigation.js.map +1 -1
- package/dist/components/ic-typography2.js +2 -2
- package/dist/core/core.esm.js +1 -1
- package/dist/core/core.esm.js.map +1 -1
- package/dist/core/p-0fb68b4f.entry.js +2 -0
- package/dist/core/p-0fb68b4f.entry.js.map +1 -0
- package/dist/core/{p-a0161990.entry.js → p-1d172032.entry.js} +2 -2
- package/dist/core/{p-f0388d68.entry.js → p-1d254b71.entry.js} +2 -2
- package/dist/core/p-1d254b71.entry.js.map +1 -0
- package/dist/core/{p-83764268.entry.js → p-23536595.entry.js} +2 -2
- package/dist/core/{p-ba600947.entry.js → p-3676ac4e.entry.js} +2 -2
- package/dist/core/{p-bc2ca778.entry.js → p-3cb4ecef.entry.js} +2 -2
- package/dist/core/{p-18714198.entry.js → p-432aeae0.entry.js} +2 -2
- package/dist/core/{p-2c17cc67.entry.js → p-4a2acb2e.entry.js} +2 -2
- package/dist/core/{p-c9a4fe37.entry.js → p-4dc97b03.entry.js} +2 -2
- package/dist/core/p-4dc97b03.entry.js.map +1 -0
- package/dist/core/{p-cdf56a5d.entry.js → p-4e48a671.entry.js} +2 -2
- package/dist/core/p-4e48a671.entry.js.map +1 -0
- package/dist/core/{p-1440847f.entry.js → p-51b49429.entry.js} +2 -2
- package/dist/core/p-554845c4.entry.js +2 -0
- package/dist/core/p-554845c4.entry.js.map +1 -0
- package/dist/core/{p-9479f272.entry.js → p-56e0de32.entry.js} +2 -2
- package/dist/core/{p-ebab7a9e.entry.js → p-56fb0298.entry.js} +2 -2
- package/dist/core/p-59b48450.entry.js +2 -0
- package/dist/core/p-59b48450.entry.js.map +1 -0
- package/dist/core/{p-10e1e227.entry.js → p-5aec3757.entry.js} +2 -2
- package/dist/core/{p-d45d66c0.entry.js → p-5eb2ac90.entry.js} +2 -2
- package/dist/core/{p-a4f9b5bf.entry.js → p-60aad45d.entry.js} +2 -2
- package/dist/core/p-6cd0b010.entry.js +2 -0
- package/dist/core/p-6cd0b010.entry.js.map +1 -0
- package/dist/core/{p-788c96ac.entry.js → p-6eea869b.entry.js} +2 -2
- package/dist/core/{p-70a6cff1.entry.js → p-7d2c07e2.entry.js} +2 -2
- package/dist/core/p-7d352865.entry.js +2 -0
- package/dist/core/p-7d352865.entry.js.map +1 -0
- package/dist/core/{p-b371a498.entry.js → p-7deaf128.entry.js} +2 -2
- package/dist/core/p-803f2eb8.entry.js +2 -0
- package/dist/core/p-803f2eb8.entry.js.map +1 -0
- package/dist/core/{p-16f55230.entry.js → p-87fa5add.entry.js} +2 -2
- package/dist/core/p-87fa5add.entry.js.map +1 -0
- package/dist/core/{p-b8da5c07.entry.js → p-887e00bb.entry.js} +2 -2
- package/dist/core/p-8958c60f.entry.js +2 -0
- package/dist/core/p-8958c60f.entry.js.map +1 -0
- package/dist/core/{p-1838d1e9.entry.js → p-8c77dd65.entry.js} +2 -2
- package/dist/core/{p-fbf57f0a.entry.js → p-9a6dc8b1.entry.js} +2 -2
- package/dist/core/p-9a6dc8b1.entry.js.map +1 -0
- package/dist/core/p-a140bcaa.entry.js +2 -0
- package/dist/core/p-aad2abbf.entry.js +2 -0
- package/dist/core/p-aad2abbf.entry.js.map +1 -0
- package/dist/core/p-bdcc79dd.entry.js +2 -0
- package/dist/core/p-bdcc79dd.entry.js.map +1 -0
- package/dist/core/{p-b9459ba2.entry.js → p-bf3b853e.entry.js} +2 -2
- package/dist/core/{p-9cfc2bac.entry.js → p-c59fd23e.entry.js} +2 -2
- package/dist/core/{p-72c117b6.entry.js → p-c5ffe2cf.entry.js} +2 -2
- package/dist/core/{p-c4663e1a.entry.js → p-cfa9ed7d.entry.js} +2 -2
- package/dist/core/{p-df88ff5b.entry.js → p-d4903dcd.entry.js} +2 -2
- package/dist/core/{p-8c4f7c63.entry.js → p-d82b27df.entry.js} +2 -2
- package/dist/core/{p-bdc72446.entry.js → p-d8ce39ac.entry.js} +2 -2
- package/dist/core/{p-42a7d0b6.entry.js → p-dcce0dfd.entry.js} +2 -2
- package/dist/core/{p-9ca147f3.entry.js → p-de1e04ac.entry.js} +2 -2
- package/dist/core/{p-8b5022bc.entry.js → p-dee21f6d.entry.js} +2 -2
- package/dist/core/{p-00bc353b.entry.js → p-dfc8cba6.entry.js} +2 -2
- package/dist/core/{p-1be17f22.entry.js → p-e2629bfe.entry.js} +2 -2
- package/dist/core/{p-1b2690b4.entry.js → p-e38fddbb.entry.js} +2 -2
- package/dist/core/p-e38fddbb.entry.js.map +1 -0
- package/dist/core/p-eca6e215.entry.js +2 -0
- package/dist/core/p-eca6e215.entry.js.map +1 -0
- package/dist/core/{p-0a436c47.entry.js → p-ef4b752c.entry.js} +2 -2
- package/dist/core/p-ef4b752c.entry.js.map +1 -0
- package/dist/core/{p-267a19d4.entry.js → p-fa38ad2e.entry.js} +2 -2
- package/dist/core/p-fc4f7180.entry.js +2 -0
- package/dist/core/p-fc4f7180.entry.js.map +1 -0
- package/dist/esm/core.js +1 -1
- package/dist/esm/ic-accordion.entry.js +9 -7
- package/dist/esm/ic-accordion.entry.js.map +1 -1
- package/dist/esm/ic-alert.entry.js +1 -1
- package/dist/esm/ic-alert.entry.js.map +1 -1
- package/dist/esm/ic-breadcrumb-group.entry.js +2 -2
- package/dist/esm/ic-breadcrumb.entry.js +2 -2
- package/dist/esm/ic-button_3.entry.js +8 -8
- package/dist/esm/ic-button_3.entry.js.map +1 -1
- package/dist/esm/ic-card-vertical.entry.js +1 -1
- package/dist/esm/ic-card-vertical.entry.js.map +1 -1
- package/dist/esm/ic-checkbox-group.entry.js +2 -2
- package/dist/esm/ic-checkbox.entry.js +7 -12
- package/dist/esm/ic-checkbox.entry.js.map +1 -1
- package/dist/esm/ic-data-list.entry.js +2 -2
- package/dist/esm/ic-data-row.entry.js +2 -2
- package/dist/esm/ic-dialog.entry.js +1 -1
- package/dist/esm/ic-empty-state.entry.js +2 -2
- package/dist/esm/ic-footer-link.entry.js +2 -2
- 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 +5 -5
- package/dist/esm/ic-input-component-container_3.entry.js +22 -21
- package/dist/esm/ic-input-component-container_3.entry.js.map +1 -1
- package/dist/esm/ic-input-label_2.entry.js +7 -7
- package/dist/esm/ic-link.entry.js +11 -21
- package/dist/esm/ic-link.entry.js.map +1 -1
- package/dist/esm/ic-menu-group.entry.js +1 -1
- package/dist/esm/ic-navigation-group.entry.js +115 -163
- package/dist/esm/ic-navigation-group.entry.js.map +1 -1
- package/dist/esm/ic-navigation-item.entry.js +64 -61
- package/dist/esm/ic-navigation-item.entry.js.map +1 -1
- package/dist/esm/ic-navigation-menu.entry.js +4 -4
- package/dist/esm/ic-page-header.entry.js +6 -6
- package/dist/esm/ic-pagination-item.entry.js +1 -1
- package/dist/esm/ic-pagination.entry.js +4 -4
- package/dist/esm/ic-popover-menu.entry.js +5 -5
- package/dist/esm/ic-popover-menu.entry.js.map +1 -1
- package/dist/esm/ic-radio-group.entry.js +4 -4
- package/dist/esm/ic-radio-option.entry.js +4 -4
- package/dist/esm/ic-search-bar.entry.js +49 -31
- 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 +142 -218
- package/dist/esm/ic-select.entry.js.map +1 -1
- package/dist/esm/ic-side-navigation.entry.js +23 -4
- 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 +2 -2
- package/dist/esm/ic-step.entry.js +13 -13
- package/dist/esm/ic-stepper.entry.js +2 -2
- package/dist/esm/ic-switch.entry.js +4 -4
- package/dist/esm/ic-tab-context.entry.js +1 -1
- package/dist/esm/ic-tab-group.entry.js +2 -2
- package/dist/esm/ic-tab-panel.entry.js +2 -2
- package/dist/esm/ic-text-field.entry.js +15 -10
- package/dist/esm/ic-text-field.entry.js.map +1 -1
- package/dist/esm/ic-theme.entry.js +1 -1
- package/dist/esm/ic-toast-region.entry.js +1 -1
- package/dist/esm/ic-toast.entry.js +3 -3
- package/dist/esm/ic-toggle-button-group.entry.js +53 -67
- package/dist/esm/ic-toggle-button-group.entry.js.map +1 -1
- package/dist/esm/ic-toggle-button.entry.js +61 -63
- package/dist/esm/ic-toggle-button.entry.js.map +1 -1
- package/dist/esm/ic-top-navigation.entry.js +65 -63
- package/dist/esm/ic-top-navigation.entry.js.map +1 -1
- package/dist/esm/ic-typography.entry.js +2 -2
- package/dist/esm/loader.js +1 -1
- package/dist/types/components/ic-link/ic-link.d.ts +2 -3
- package/dist/types/components/ic-menu/ic-menu.d.ts +12 -12
- package/dist/types/components/ic-navigation-group/ic-navigation-group.d.ts +4 -18
- package/dist/types/components/ic-navigation-item/ic-navigation-item.d.ts +9 -7
- package/dist/types/components/ic-search-bar/ic-search-bar.d.ts +2 -0
- package/dist/types/components/ic-select/ic-select.d.ts +36 -38
- package/dist/types/components/ic-side-navigation/ic-side-navigation.d.ts +5 -0
- package/dist/types/components/ic-text-field/ic-text-field.d.ts +3 -2
- package/dist/types/components/ic-toggle-button/ic-toggle-button.d.ts +10 -11
- package/dist/types/components/ic-toggle-button-group/ic-toggle-button-group.d.ts +10 -12
- package/dist/types/components/ic-top-navigation/ic-top-navigation.d.ts +9 -8
- package/dist/types/components.d.ts +89 -81
- package/hydrate/index.js +748 -850
- package/hydrate/index.mjs +748 -850
- package/package.json +2 -2
- package/vscode-data.json +8 -4
- package/dist/core/p-0a436c47.entry.js.map +0 -1
- package/dist/core/p-16f55230.entry.js.map +0 -1
- package/dist/core/p-1b2690b4.entry.js.map +0 -1
- package/dist/core/p-206c2a26.entry.js +0 -2
- package/dist/core/p-206c2a26.entry.js.map +0 -1
- package/dist/core/p-2e44cf53.entry.js +0 -2
- package/dist/core/p-2e44cf53.entry.js.map +0 -1
- package/dist/core/p-730d2f6e.entry.js +0 -2
- package/dist/core/p-730d2f6e.entry.js.map +0 -1
- package/dist/core/p-7fb79e87.entry.js +0 -2
- package/dist/core/p-7fb79e87.entry.js.map +0 -1
- package/dist/core/p-910f5f14.entry.js +0 -2
- package/dist/core/p-910f5f14.entry.js.map +0 -1
- package/dist/core/p-b7568944.entry.js +0 -2
- package/dist/core/p-b7568944.entry.js.map +0 -1
- package/dist/core/p-c45023b7.entry.js +0 -2
- package/dist/core/p-c45023b7.entry.js.map +0 -1
- package/dist/core/p-c9a4fe37.entry.js.map +0 -1
- package/dist/core/p-cdf56a5d.entry.js.map +0 -1
- package/dist/core/p-d6c50565.entry.js +0 -2
- package/dist/core/p-d6c50565.entry.js.map +0 -1
- package/dist/core/p-d975bf2f.entry.js +0 -2
- package/dist/core/p-d975bf2f.entry.js.map +0 -1
- package/dist/core/p-dede4974.entry.js +0 -2
- package/dist/core/p-dede4974.entry.js.map +0 -1
- package/dist/core/p-e86a6d2d.entry.js +0 -2
- package/dist/core/p-eeab3a2e.entry.js +0 -2
- package/dist/core/p-eeab3a2e.entry.js.map +0 -1
- package/dist/core/p-f0388d68.entry.js.map +0 -1
- package/dist/core/p-fbf57f0a.entry.js.map +0 -1
- /package/dist/core/{p-a0161990.entry.js.map → p-1d172032.entry.js.map} +0 -0
- /package/dist/core/{p-83764268.entry.js.map → p-23536595.entry.js.map} +0 -0
- /package/dist/core/{p-ba600947.entry.js.map → p-3676ac4e.entry.js.map} +0 -0
- /package/dist/core/{p-bc2ca778.entry.js.map → p-3cb4ecef.entry.js.map} +0 -0
- /package/dist/core/{p-18714198.entry.js.map → p-432aeae0.entry.js.map} +0 -0
- /package/dist/core/{p-2c17cc67.entry.js.map → p-4a2acb2e.entry.js.map} +0 -0
- /package/dist/core/{p-1440847f.entry.js.map → p-51b49429.entry.js.map} +0 -0
- /package/dist/core/{p-9479f272.entry.js.map → p-56e0de32.entry.js.map} +0 -0
- /package/dist/core/{p-ebab7a9e.entry.js.map → p-56fb0298.entry.js.map} +0 -0
- /package/dist/core/{p-10e1e227.entry.js.map → p-5aec3757.entry.js.map} +0 -0
- /package/dist/core/{p-d45d66c0.entry.js.map → p-5eb2ac90.entry.js.map} +0 -0
- /package/dist/core/{p-a4f9b5bf.entry.js.map → p-60aad45d.entry.js.map} +0 -0
- /package/dist/core/{p-788c96ac.entry.js.map → p-6eea869b.entry.js.map} +0 -0
- /package/dist/core/{p-70a6cff1.entry.js.map → p-7d2c07e2.entry.js.map} +0 -0
- /package/dist/core/{p-b371a498.entry.js.map → p-7deaf128.entry.js.map} +0 -0
- /package/dist/core/{p-b8da5c07.entry.js.map → p-887e00bb.entry.js.map} +0 -0
- /package/dist/core/{p-1838d1e9.entry.js.map → p-8c77dd65.entry.js.map} +0 -0
- /package/dist/core/{p-e86a6d2d.entry.js.map → p-a140bcaa.entry.js.map} +0 -0
- /package/dist/core/{p-b9459ba2.entry.js.map → p-bf3b853e.entry.js.map} +0 -0
- /package/dist/core/{p-9cfc2bac.entry.js.map → p-c59fd23e.entry.js.map} +0 -0
- /package/dist/core/{p-72c117b6.entry.js.map → p-c5ffe2cf.entry.js.map} +0 -0
- /package/dist/core/{p-c4663e1a.entry.js.map → p-cfa9ed7d.entry.js.map} +0 -0
- /package/dist/core/{p-df88ff5b.entry.js.map → p-d4903dcd.entry.js.map} +0 -0
- /package/dist/core/{p-8c4f7c63.entry.js.map → p-d82b27df.entry.js.map} +0 -0
- /package/dist/core/{p-bdc72446.entry.js.map → p-d8ce39ac.entry.js.map} +0 -0
- /package/dist/core/{p-42a7d0b6.entry.js.map → p-dcce0dfd.entry.js.map} +0 -0
- /package/dist/core/{p-9ca147f3.entry.js.map → p-de1e04ac.entry.js.map} +0 -0
- /package/dist/core/{p-8b5022bc.entry.js.map → p-dee21f6d.entry.js.map} +0 -0
- /package/dist/core/{p-00bc353b.entry.js.map → p-dfc8cba6.entry.js.map} +0 -0
- /package/dist/core/{p-1be17f22.entry.js.map → p-e2629bfe.entry.js.map} +0 -0
- /package/dist/core/{p-267a19d4.entry.js.map → p-fa38ad2e.entry.js.map} +0 -0
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["icInputComponentContainerCss","IcInputComponentContainerStyle0","InputComponentContainer","constructor","hostRef","this","disabled","fullWidth","multiLine","readonly","size","validationInline","validationStatus","watchDisabledHandler","removeDisabledFalse","el","componentWillLoad","componentDidLoad","hostMutationObserver","MutationObserver","mutationList","renderDynamicChildSlots","observe","childList","render","h","Host","key","class","slotHasContent","name","IcInformationStatus","Success","innerHTML","successIcon","icInputContainerCss","IcInputContainerStyle0","InputContainer","icMenuCss","IcMenuStyle0","Menu","ACTIVE_DESCENDANT","CLEAR_BUTTON_ID","SEARCH_BAR_TAG","disabledOptionSelected","hasPreviouslyBlurred","hasTimedOut","isLoading","isMultiSelect","isSearchBar","isSearchableSelect","lastOptionSelected","lastOptionFocused","multiOptionClicked","preventClickOpen","preventMenuFocus","shiftPressed","ungroupedOptions","focusFromSearchKeypress","initialOptionsListRender","keyboardNav","preventIncorrectTabOrder","activationType","autofocusOnSelected","closeOnSelect","labelField","searchMode","selectOnEnter","valueField","handleClearListener","optionHighlighted","handleSubmitSearch","highlightedOptionIndex","options","findIndex","option","setInputValue","handleMenuChange","open","focusInput","menuStateChange","emit","inputEl","focus","undefined","setNextOptionValue","selectedOptionIndex","menuOptionSelect","value","optionId","getOptionId","setPreviousOptionValue","length","getParentEl","parent","tagName","getAttribute","arrowBehaviour","event","preventDefault","getMenuOptions","setHighlightedOption","highlightedIndex","menuOptions","timedOut","autoSetInputValueKeyboardOpen","target","id","selectHighlightedOption","isOpen","isOptionSelected","index","includes","deselectSelectedOptions","optionsToKeepSelected","selectedOptionIndexes","map","forEach","manualSetInputValueKeyboardOpen","isKeyboardCombination","shiftKey","metaKey","ctrlKey","getOptionHighlightedIndex","clickedMultiOptionIndex","_a","Array","from","host","querySelectorAll","handleOptionSelect","handleSingleShiftSelect","menuOptionId","startOptionIndex","handleMultipleShiftSelect","endOptionIndex","stopImmediatePropagation","isMacDevice","emitSelectAllEvents","selectAllButton","focusOnSearchOrSelectInput","parentEl","setFocus","handleOptionClick","label","dataset","handleRetry","retryButtonClicked","handleRetryKeyDown","ev","keyPressed","handleBlur","relatedTarget","menu","removeAttribute","_b","contains","_c","_d","handleMouseDown","handleMenuKeyDown","autoSetValueOnMenuKeyDown","handleMenuKeyUp","handleSelectAllClick","handleSelectAllBlur","classList","remove","handleSelectAllFocus","add","handleSelectAllMouseDown","optionToSelectIndex","lastOptionInSelection","useFocusForSelection","firstOptionSelected","firstOptionInSelection","getFirstOptionInSelection","optionsToSelect","i","push","optionIndex","menuOptionSelectAll","select","icClear","emitMenuKeyPress","isNavKey","menuKeyPress","cancelBubble","menuId","getOptionAriaLabel","parentOption","ariaLabel","description","element","getSortedOptions","sorted","sort","optionA","optionB","recommended","isManualMode","scrollToSelected","selectedOption","querySelector","elTop","offsetTop","offsetHeight","scrollTop","setAttribute","loadUngroupedOptions","children","ungroupedOptionsSet","setMenuScrollbar","optionsHeight","clientHeight","handleTimeoutBlur","timeoutBlur","optionContent","selected","showCheckIcon","Fragment","loading","icon","variant","component","Check","displayOption","timeout","role","tabindex","onClick","onBlur","onMouseDown","xmlns","viewBox","fill","d","onKeyDown","watchOpenHandler","popperInstance","destroy","watchOptionsHandler","newOptions","some","opt","connectedCallback","disconnectedCallback","removeEventListener","addEventListener","disableAutoFiltering","onComponentRequiredPropUndefined","prop","propName","inputLabel","componentDidUpdate","inputValueInOptions","highlightedEl","componentDidRender","anchorEl","initPopperJs","handleClickOpen","handleKeyboardOpen","handleSetFirstOption","anchor","createPopper","placement","modifiers","offset","fallbackPlacements","rootBoundary","selectAllButtonText","hasNoResults","ref","onKeyUp","childOption","getOptionsWithoutGroupTitlesCount","onFocus"],"sources":["src/components/ic-input-component-container/ic-input-component-container.css?tag=ic-input-component-container","src/components/ic-input-component-container/ic-input-component-container.tsx","src/components/ic-input-container/ic-input-container.css?tag=ic-input-container","src/components/ic-input-container/ic-input-container.tsx","src/components/ic-menu/ic-menu.css?tag=ic-menu&encapsulation=scoped","src/components/ic-menu/ic-menu.tsx"],"sourcesContent":["ic-input-component-container {\n /**\n * @prop --border-color: Border colour of the input component container\n * @prop --border-color-hover: Border colour of the input component container on hover\n * @prop --border-color-pressed: Border colour of the input component container when pressed\n * @prop --border-color-disabled: Border colour of the input component container when disabled\n * @prop --border-color-error: Border colour of the error variant for input component container\n * @prop --border-color-error-hover: Border colour of the error hover variant for input component container\n * @prop --border-color-error-pressed: Border colour of the error pressed variant for input component container\n * @prop --border-color-warning: Border colour of the warning variant for input component container\n * @prop --border-color-warning-hover: Border colour of the warning hover variant for input component container\n * @prop --border-color-warning-pressed: Border colour of the warning pressed variant for input component container\n * @prop --border-color-success: Border colour of the success variant for input component container\n * @prop --border-color-success-hover: Border colour of the success hover variant for input component container\n * @prop --border-color-success-pressed: Border colour of the success pressed variant for input component container\n */\n\n display: flex;\n border: var(--ic-border-width) solid\n var(--border-color, var(--ic-architectural-400));\n border-radius: var(--ic-border-radius);\n transition: var(--ic-easing-transition-slow);\n height: 2.5rem;\n min-height: 2.5rem;\n width: var(--input-width, 20rem);\n padding: var(--ic-space-1px);\n background-color: var(--input-bg-color, var(--ic-color-background-primary));\n box-sizing: border-box;\n fill: var(--ic-architectural-400);\n outline: none;\n}\n\nic-input-component-container.ic-input-component-container-full-width {\n width: 100%;\n}\n\nic-input-component-container.ic-input-component-container-disabled,\nic-input-component-container.ic-input-component-container-disabled:hover {\n border: var(--ic-border-width) dashed\n var(--border-color-disabled, var(--ic-color-border-neutral-disabled));\n}\n\nic-input-component-container.ic-input-component-container-readonly,\nic-input-component-container.ic-input-component-container-small.ic-input-component-container-readonly,\nic-input-component-container.ic-input-component-container-large.ic-input-component-container-readonly {\n height: auto;\n background: transparent;\n}\n\nic-input-component-container.ic-input-component-container-readonly,\nic-input-component-container.ic-input-component-container-readonly:hover {\n border: none;\n padding: 0;\n}\n\nic-input-component-container.ic-input-component-container-error {\n border: var(--ic-space-xxxs) solid\n var(--border-color-error, var(--ic-color-border-error));\n padding: 0;\n}\n\nic-input-component-container.ic-input-component-container-error:hover {\n border: var(--ic-space-xxxs) solid\n var(--border-color-error-hover, var(--ic-color-border-error-hover));\n}\n\nic-input-component-container.ic-input-component-container-error:focus-within {\n border: var(--ic-space-xxxs) solid\n var(--border-color-error-pressed, var(--ic-color-border-error-pressed));\n}\n\nic-input-component-container.ic-input-component-container-warning {\n border: var(--ic-space-xxxs) solid\n var(--border-color-warning, var(--ic-color-border-warning));\n padding: 0;\n}\n\nic-input-component-container.ic-input-component-container-warning:hover {\n border: var(--ic-space-xxxs) solid\n var(--border-color-warning-hover, var(--ic-color-border-warning-hover));\n}\n\nic-input-component-container.ic-input-component-container-warning:focus-within {\n border: var(--ic-space-xxxs) solid\n var(--border-color-warning-pressed, var(--ic-color-border-warning-pressed));\n}\n\nic-input-component-container.ic-input-component-container-success {\n border: var(--ic-space-xxxs) solid\n var(--border-color-success, var(--ic-color-border-success));\n padding: 0;\n}\n\nic-input-component-container.ic-input-component-container-success:hover {\n border: var(--ic-space-xxxs) solid\n var(--border-color-success-hover, var(--ic-color-border-success-hover));\n}\n\nic-input-component-container.ic-input-component-container-success:focus-within {\n border: var(--ic-space-xxxs) solid\n var(--border-color-success-pressed, var(--ic-color-border-success-pressed));\n}\n\nic-input-component-container.ic-input-component-container-small {\n height: var(--ic-space-xl);\n min-height: var(--ic-space-xl);\n}\n\nic-input-component-container.ic-input-component-container-large {\n height: var(--ic-space-xxl);\n min-height: var(--ic-space-xxl);\n}\n\nic-input-component-container.ic-input-component-container-multiline {\n height: auto;\n}\n\nic-input-component-container .icon-container {\n margin-top: var(--ic-space-xxs);\n margin-left: 0.438rem;\n display: flex;\n align-items: center;\n}\n\nic-input-component-container.ic-input-component-container-multiline\n .icon-container,\nic-input-component-container.ic-input-component-container-multiline.ic-input-component-container-small\n .icon-container {\n margin-top: 0.375rem;\n display: block;\n}\n\nic-input-component-container.ic-input-component-container-readonly\n .icon-container {\n margin-left: -0.313rem;\n}\n\nic-input-component-container.ic-input-component-container-disabled\n ::placeholder {\n display: none;\n}\n\nic-input-component-container .inline-success {\n margin: var(--ic-space-xs) 0.375rem;\n display: flex;\n align-items: center;\n}\n\nic-input-component-container .inline-success > svg {\n fill: var(--ic-input-component-container-success-icon-inline-color);\n height: 1.25rem;\n width: 1.25rem;\n}\n\nic-input-component-container:hover {\n border: var(--ic-input-component-container-hover-border);\n border-color: var(--border-color-hover, var(--ic-color-border-neutral-hover));\n color: var(--ic-action-monochrome-hover-dark);\n}\n\nic-input-component-container:focus {\n border: var(--ic-border-pressed);\n border-color: var(\n --border-color-pressed,\n var(--ic-color-border-neutral-pressed)\n );\n}\n\n.focus-indicator {\n display: flex;\n width: 100%;\n margin: -0.125rem;\n padding: 0.125rem;\n border-radius: var(--ic-border-radius);\n transition: var(--ic-easing-transition-fast);\n}\n\n.focus-indicator:focus-within,\n.focus-indicator-enabled {\n box-shadow: var(--ic-border-focus);\n}\n\n.focus-indicator.ic-input-component-container-dark:focus-within {\n box-shadow: var(--ic-border-focus);\n}\n\n@media (forced-colors: active) {\n /* Styles here only apply to Forced Colors Mode */\n ic-input-component-container,\n .focus-indicator {\n transition: none;\n }\n\n ic-input-component-container:focus-within {\n border: var(--ic-border-width) solid Highlight;\n outline: 0.125rem solid Highlight;\n }\n\n ic-input-component-container.ic-input-component-container-disabled,\n ic-input-component-container.ic-input-component-container-disabled:hover {\n border: var(--ic-border-width) dashed GrayText;\n }\n}\n","import { Component, Element, Host, Prop, Watch, h } from \"@stencil/core\";\n\nimport {\n IcInformationStatus,\n IcInformationStatusOrEmpty,\n IcSizes,\n} from \"../../utils/types\";\nimport successIcon from \"../../assets/success-icon.svg\";\nimport {\n removeDisabledFalse,\n renderDynamicChildSlots,\n slotHasContent,\n} from \"../../utils/helpers\";\n\n/**\n * @slot left-icon - Content will be placed to the left of the input.\n */\n@Component({\n tag: \"ic-input-component-container\",\n styleUrl: \"ic-input-component-container.css\",\n})\nexport class InputComponentContainer {\n private hostMutationObserver: MutationObserver;\n @Element() el: HTMLIcInputComponentContainerElement;\n\n /**\n * If `true`, the disabled state will be set.\n */\n @Prop() disabled?: boolean = false;\n @Watch(\"disabled\")\n watchDisabledHandler(): void {\n removeDisabledFalse(this.disabled, this.el);\n }\n\n /**\n * If `true`, the input component container will fill the width of the container it is in.\n */\n @Prop() fullWidth?: boolean = false;\n\n /**\n * If `true`, the input component container will allow for multiple lines.\n */\n @Prop() multiLine?: boolean = false;\n\n /**\n * If `true`, the readonly state will be set.\n */\n @Prop() readonly?: boolean = false;\n\n /**\n * The size of the input component container component.\n */\n @Prop() size?: IcSizes = \"medium\";\n\n /**\n * If `true`, the validation will display inline.\n */\n @Prop() validationInline?: boolean = false;\n\n /**\n * The validation status of the input component container - e.g. 'error' | 'warning' | 'success'.\n */\n @Prop() validationStatus?: IcInformationStatusOrEmpty = \"\";\n\n componentWillLoad(): void {\n removeDisabledFalse(this.disabled, this.el);\n }\n\n componentDidLoad(): void {\n this.hostMutationObserver = new MutationObserver((mutationList) =>\n renderDynamicChildSlots(mutationList, \"left-icon\", this)\n );\n this.hostMutationObserver.observe(this.el, { childList: true });\n }\n\n render() {\n const {\n size,\n validationStatus,\n disabled,\n readonly,\n multiLine,\n fullWidth,\n validationInline,\n } = this;\n\n return (\n <Host\n class={{\n [`ic-input-component-container-${size}`]: true,\n [`ic-input-component-container-${validationStatus}`]:\n validationStatus !== \"\" && !disabled && !readonly,\n \"ic-input-component-container-disabled\": !!disabled,\n \"ic-input-component-container-readonly\": !!readonly,\n \"ic-input-component-container-multiline\": !!multiLine,\n \"ic-input-component-container-full-width\": !!fullWidth,\n }}\n aria-disabled={disabled ? \"true\" : null}\n >\n <div class=\"focus-indicator\">\n {slotHasContent(this.el, \"left-icon\") && (\n <div class=\"icon-container\">\n <slot name=\"left-icon\" />\n </div>\n )}\n <slot></slot>\n\n {validationInline &&\n validationStatus === IcInformationStatus.Success && (\n <span class=\"inline-success\" innerHTML={successIcon} />\n )}\n </div>\n </Host>\n );\n }\n}\n","ic-input-container .component-container {\n display: flex;\n flex-direction: column;\n}\n","import { Component, Host, Prop, h } from \"@stencil/core\";\n\n@Component({\n tag: \"ic-input-container\",\n styleUrl: \"ic-input-container.css\",\n})\nexport class InputContainer {\n /**\n * If `true`, the disabled state will be set.\n */\n @Prop() disabled?: boolean = false;\n\n /**\n * If `true`, the readonly state will be set.\n */\n @Prop() readonly?: boolean = false;\n\n render() {\n return (\n <Host>\n <div\n class={{\n [\"component-container\"]: true,\n [\"disabled\"]: !!this.disabled,\n [\"readonly\"]: !!this.readonly,\n }}\n >\n <slot></slot>\n </div>\n </Host>\n );\n }\n}\n","@import \"../../global/normalize.css\";\n\n/**\n * @prop --ic-z-index-menu: z-index of menu\n */\n\n@media (prefers-reduced-motion: no-preference) {\n :host(.ic-menu-open) .menu {\n transition: max-height var(--ic-transition-duration-slow);\n }\n}\n\n:host {\n max-height: 0;\n width: var(--menu-width, var(--input-width, 20rem));\n color: var(--menu-item-text-color, var(--ic-menu-list-option-text-color));\n\n --ic-typography-color: var(\n --menu-item-text-color,\n var(--ic-menu-list-option-text-color)\n );\n\n background-color: var(\n --menu-bg-color,\n var(--ic-menu-list-option-background-color)\n );\n position: relative;\n z-index: var(--ic-z-index-menu);\n box-sizing: border-box;\n box-shadow: var(--ic-elevation-overlay);\n border-radius: var(--ic-border-radius);\n}\n\n:host(.ic-menu-open:not(.ic-menu-no-focus):focus-within) {\n box-shadow: var(--ic-border-focus);\n outline: var(--ic-hc-focus-outline);\n}\n\n:host(.ic-select-select-all-focused) {\n box-shadow: var(--ic-elevation-overlay) !important;\n}\n\n#retry-button::part(button) {\n height: var(--ic-space-lg);\n}\n\n.small #retry-button::part(button) {\n height: var(--ic-space-md);\n}\n\n:host(.on-dialog) {\n inset: auto !important;\n}\n\n.menu {\n text-decoration: none;\n list-style-type: none;\n border-radius: 1px;\n background-color: var(\n --menu-bg-color,\n var(--ic-menu-list-option-background-color)\n );\n visibility: hidden;\n max-height: 0;\n overflow-y: hidden;\n}\n\n.menu:has(+ .option-bar) {\n border-radius: 0 0 1px 1px;\n}\n\n.menu-scroll {\n overflow-y: auto;\n}\n\n.menu:focus-visible {\n outline: none;\n}\n\n:host(.ic-menu-open) {\n max-height: none;\n display: flex;\n flex-direction: column-reverse;\n border: var(--ic-border-width) solid\n var(--menu-border-color, var(--ic-menu-border-color));\n transition: box-shadow var(--ic-easing-transition-fast);\n}\n\n:host(.ic-menu-open) .menu {\n visibility: visible;\n max-height: calc(var(--ic-space-xl) * 10 + var(--ic-space-xxxs));\n}\n\n:host(.ic-menu-open) .option-bar {\n visibility: visible;\n}\n\n:host(.ic-menu-open) .select-all-button {\n display: block;\n}\n\n:host(.ic-menu-full-width) {\n width: 100%;\n}\n\n.option {\n padding: var(--ic-space-xs) calc(var(--ic-space-xs) - var(--ic-space-1px));\n cursor: pointer;\n display: flex;\n align-items: center;\n}\n\n.loading-option p {\n margin-bottom: 0 !important;\n}\n\n.option:not(.loading-option) {\n justify-content: space-between;\n}\n\n:host(.ic-menu-small) .option {\n padding: var(--ic-space-xxs) calc(var(--ic-space-xs) - var(--ic-space-1px));\n}\n\n:host(.ic-menu-large) .option {\n padding: var(--ic-space-sm) calc(var(--ic-space-xs) - var(--ic-space-1px));\n}\n\n.option:last-child {\n border-radius: 0 0 1px 1px;\n}\n\n:not(.menu:has(+ .option-bar)) .option:first-child {\n border-radius: 1px 1px 0 0;\n}\n\n.option:not(.disabled-option):hover {\n background-color: var(--ic-menu-list-option-hover-background-color);\n}\n\n.option:not(.disabled-option):active {\n background-color: var(--ic-menu-list-option-pressed-background-color);\n}\n\n.option:focus-visible {\n outline: var(--ic-hc-focus-outline);\n}\n\n.option:not(.disabled-option) .option-description {\n --ic-typography-color: var(\n --menu-item-desc-text-color,\n var(--ic-menu-list-option-description-text-color)\n );\n}\n\n.option .option-label {\n display: flex;\n flex-direction: row;\n align-items: top;\n}\n\n.option .option-label ic-typography {\n max-width: 100%;\n word-wrap: break-word;\n}\n\n.option .option-element {\n margin-top: var(--ic-space-xxs);\n}\n\n.option .option-icon {\n height: var(--ic-space-md);\n width: var(--ic-space-md);\n margin-top: var(--ic-space-xxs);\n margin-right: var(--ic-space-xxxs);\n}\n\n.option-text-container {\n pointer-events: none;\n width: 100%;\n}\n\n.option-text-container.show-check-icon {\n width: calc(var(--ic-space-lg) * 10 + var(--ic-space-xl));\n}\n\n.option.loading-option .option-text-container {\n margin-left: calc(var(--ic-space-xs) + var(--ic-space-xxxs));\n color: var(--ic-menu-loading-list-option-text-color);\n\n --ic-typography-color: var(--ic-menu-loading-list-option-text-color);\n}\n\n.error-icon-svg {\n height: var(--ic-space-md);\n width: var(--ic-space-md);\n fill: var(--ic-atoms-status-icon-error);\n align-self: center;\n display: flex;\n margin-right: calc(var(--ic-space-xxs) * 1.2);\n}\n\n.loading-error-info {\n display: flex;\n}\n\n.check-icon {\n height: var(--ic-space-lg);\n min-width: var(--ic-space-lg);\n width: var(--ic-space-lg);\n margin-left: var(--ic-space-xs);\n pointer-events: none;\n}\n\n.focused-option .check-icon * {\n fill: currentcolor;\n}\n\n.option-group-title {\n padding: var(--ic-space-lg) calc(var(--ic-space-xs) - var(--ic-space-1px))\n var(--ic-space-xs);\n\n --ic-typography-color: var(--ic-menu-option-group-label-text-color);\n}\n\n:host(.ic-menu-small) .option-group-title {\n padding: var(--ic-space-sm) calc(var(--ic-space-xs) - var(--ic-space-1px))\n var(--ic-space-xxs);\n}\n\n.last-recommended-option {\n border-bottom: var(--ic-menu-last-recommended-option-border);\n}\n\n.disabled-option {\n color: var(--ic-atoms-list-option-text-disabled-light);\n\n --ic-typography-color: var(--ic-atoms-list-option-text-disabled-light);\n\n cursor: default;\n pointer-events: none;\n}\n\n.focused-option,\n.focused-option .option-description {\n background-color: var(--ic-color-focus-inner) !important;\n color: var(--ic-atoms-list-option-text-focused-light) !important;\n\n --ic-typography-color: var(\n --ic-atoms-list-option-text-focused-light\n ) !important;\n}\n\n:host(.no-results) li {\n cursor: no-drop;\n}\n\n:host(.no-results) li:hover {\n background-color: transparent;\n}\n\n.option-bar {\n padding: var(--ic-space-xxs) var(--ic-space-xs);\n display: flex;\n align-items: center;\n justify-content: space-between;\n background-color: var(--ic-menu-option-bar-background-color);\n visibility: hidden;\n border-bottom: var(--ic-border-width) solid\n var(--ic-menu-option-bar-divider-color);\n border-radius: 1px 1px 0 0;\n}\n\n.option-bar p {\n margin-bottom: 0 !important;\n}\n\n:host(.ic-menu-large) .option-bar {\n padding: var(--ic-space-xs);\n}\n\n.select-all-button {\n display: none;\n}\n\n.select-all-button:focus {\n z-index: calc(var(--ic-z-index-menu) + 1);\n}\n\n@media (forced-colors: active) {\n .focused-option:focus {\n outline: none;\n border: 0.125rem solid transparent;\n }\n\n .disabled-option {\n color: GrayText;\n\n --ic-typography-color: GrayText;\n }\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Prop,\n Method,\n State,\n Watch,\n Fragment,\n} from \"@stencil/core\";\nimport { createPopper, Instance as PopperInstance } from \"@popperjs/core\";\n\nimport {\n IcActivationTypes,\n IcMenuOption,\n IcSizes,\n IcMultiValueEventDetail,\n} from \"../../utils/types\";\nimport Check from \"../../assets/check-icon.svg\";\nimport {\n getOptionsWithoutGroupTitlesCount,\n isMacDevice,\n onComponentRequiredPropUndefined,\n} from \"../../utils/helpers\";\nimport {\n IcOptionSelectEventDetail,\n IcMenuChangeEventDetail,\n IcMenuOptionIdEventDetail,\n} from \"./ic-menu.types\";\nimport { IcSearchBarSearchModes } from \"../ic-search-bar/ic-search-bar.types\";\n\n@Component({\n tag: \"ic-menu\",\n styleUrl: \"ic-menu.css\",\n scoped: true,\n})\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport class Menu {\n private ACTIVE_DESCENDANT = \"aria-activedescendant\";\n private CLEAR_BUTTON_ID = \"clear-button\";\n private SEARCH_BAR_TAG = \"IC-SEARCH-BAR\";\n private disabledOptionSelected: boolean = false;\n private hasPreviouslyBlurred: boolean = false;\n private hasTimedOut: boolean = false;\n private isLoading: boolean = false;\n private isMultiSelect: boolean = false;\n private isSearchBar: boolean = false;\n private isSearchableSelect: boolean = false;\n private lastOptionSelected: number | null = null; // Index of last option selected\n private lastOptionFocused: number | null = null; // Index of last option focused\n private menu?: HTMLUListElement;\n private multiOptionClicked: string | null = null;\n private popperInstance: PopperInstance | null;\n private preventClickOpen: boolean = false; // Prevents menu re-opening immediately after it is closed on blur when clicking input.\n private preventMenuFocus: boolean = false; // (When multiple) ensures focus moves straight to select all button from menu.\n private selectAllButton?: HTMLIcButtonElement;\n private shiftPressed: boolean = false;\n private ungroupedOptions: IcMenuOption[] = [];\n\n @Element() host: HTMLIcMenuElement;\n\n @State() focusFromSearchKeypress: boolean = false;\n @State() initialOptionsListRender: boolean = false;\n @State() keyboardNav: boolean = false;\n @State() optionHighlighted: string | undefined;\n @State() preventIncorrectTabOrder: boolean = false;\n @State() menuOptions: IcMenuOption[];\n\n /**\n * Determines whether options manually set as values (by pressing 'Enter') when they receive focus using keyboard navigation.\n */\n @Prop() activationType?: IcActivationTypes = \"automatic\";\n\n /**\n * The reference to an anchor element the menu will position itself from when rendered.\n */\n @Prop() anchorEl!: HTMLElement;\n\n /**\n * @internal If `true`, autofocus will be applied on selected item when menu is open.\n */\n @Prop() autofocusOnSelected?: boolean = true;\n\n /**\n * If `true`, the menu will close when an option is selected.\n */\n @Prop() closeOnSelect?: boolean = true;\n\n /**\n * If `true`, the menu will fill the width of the container.\n */\n @Prop() fullWidth?: boolean = false;\n\n /**\n * The reference to the input element.\n */\n @Prop() inputEl!: HTMLElement;\n\n /**\n * The label for the input element.\n */\n @Prop() inputLabel!: string;\n\n /**\n * The custom name for the label field for IcMenuOption.\n */\n @Prop() labelField?: string = \"label\";\n\n /**\n * The ID of the menu.\n */\n @Prop() menuId!: string;\n\n /**\n * If `true`, the menu will be displayed open.\n */\n @Prop({ reflect: true }) open!: boolean;\n\n @Watch(\"open\")\n watchOpenHandler(): void {\n if (!this.open && this.popperInstance) {\n this.popperInstance.destroy();\n this.popperInstance = null;\n }\n }\n\n /**\n * @internal - The parent element if ic-menu is nested inside another component.\n */\n @Prop() parentEl?: HTMLElement;\n\n /**\n * Specify the mode search bar uses to search. `navigation` allows for quick lookups of a set of values, `query` allows for more general searches.\n */\n @Prop() searchMode?: IcSearchBarSearchModes = \"navigation\";\n\n /**\n * @internal If `true`, the icOptionSelect event will be fired on enter instead of ArrowUp and ArrowDown.\n */\n @Prop() selectOnEnter?: boolean = false;\n\n /**\n * The size of the menu.\n */\n @Prop() size?: IcSizes = \"medium\";\n\n /**\n * The possible menu selection options.\n */\n @Prop() options!: IcMenuOption[];\n\n @Watch(\"options\")\n watchOptionsHandler(newOptions: IcMenuOption[]): void {\n this.hasTimedOut = newOptions.some((opt) => opt.timedOut);\n this.isLoading = newOptions.some((opt) => opt.loading);\n this.ungroupedOptions = [];\n this.loadUngroupedOptions();\n }\n\n /**\n * The value of the currently selected option - or array of values (if multiple options allowed).\n */\n @Prop() value!: string | string[];\n\n /**\n * The custom name for the value field for IcMenuOption.\n */\n @Prop() valueField?: string = \"value\";\n\n /**\n * Emitted when the clear all button is clicked.\n */\n @Event() icClear: EventEmitter<void>;\n\n /**\n * @internal Emitted when key is pressed while menu is open.\n */\n @Event() menuKeyPress: EventEmitter<{ isNavKey: boolean; key: string }>;\n\n /**\n * @internal Emitted when an option has been highlighted.\n */\n @Event() menuOptionId: EventEmitter<IcMenuOptionIdEventDetail>;\n\n /**\n * @internal Emitted when an option is selected.\n */\n @Event() menuOptionSelect!: EventEmitter<IcOptionSelectEventDetail>;\n\n /**\n * @internal Emitted when all options are selected or deselected.\n */\n @Event() menuOptionSelectAll!: EventEmitter<{ select: boolean }>;\n\n /**\n * @internal Emitted when state of menu changes (i.e. open or closed).\n */\n @Event() menuStateChange!: EventEmitter<IcMenuChangeEventDetail>;\n\n /**\n * @internal Emitted when the retry button is clicked.\n */\n @Event() retryButtonClicked: EventEmitter<IcMultiValueEventDetail>;\n\n /**\n * @internal Emitted when the timeout menu loses focus.\n */\n @Event() timeoutBlur: EventEmitter<{ ev: FocusEvent }>;\n\n /**\n * @internal Emitted when the ungrouped options have been set.\n */\n @Event() ungroupedOptionsSet: EventEmitter<{ options: IcMenuOption[] }>;\n\n connectedCallback(): void {\n this.parentEl && this.getParentEl(this.parentEl);\n\n if (this.isSearchBar) {\n if (this.searchMode === \"navigation\") this.setHighlightedOption(0);\n this.initialOptionsListRender = true;\n }\n }\n\n disconnectedCallback(): void {\n if (this.popperInstance) {\n this.popperInstance.destroy();\n }\n this.parentEl?.removeEventListener(\"icClear\", this.handleClearListener);\n this.parentEl?.removeEventListener(\n \"icSubmitSearch\",\n this.handleSubmitSearch\n );\n }\n\n componentWillLoad(): void {\n this.loadUngroupedOptions();\n this.parentEl?.addEventListener(\"icClear\", this.handleClearListener);\n this.parentEl?.addEventListener(\"icSubmitSearch\", this.handleSubmitSearch);\n this.hasTimedOut = this.options?.some((opt) => opt.timedOut);\n this.isLoading = this.options?.some((opt) => opt.loading);\n }\n\n componentDidLoad(): void {\n if (\n this.isSearchBar &&\n (this.parentEl as HTMLIcSearchBarElement).disableAutoFiltering\n ) {\n this.focusFromSearchKeypress = true;\n }\n\n onComponentRequiredPropUndefined(\n [\n { prop: this.open, propName: \"open\" },\n { prop: this.options, propName: \"options\" },\n { prop: this.menuId, propName: \"menu-id\" },\n { prop: this.inputLabel, propName: \"input-label\" },\n //NOTE: no check for value, input-el or anchor-el as otherwise get console errors on first load of select component\n ],\n \"Menu\"\n );\n }\n\n componentDidUpdate(): void {\n const inputValueInOptions = this.options.some(\n (option) => option[this.valueField!] === this.value\n );\n\n if (\n this.menu &&\n this.open &&\n this.options.length !== 0 &&\n !this.preventMenuFocus\n ) {\n if (\n this.value &&\n this.keyboardNav &&\n inputValueInOptions &&\n this.autofocusOnSelected &&\n !this.isSearchableSelect\n ) {\n this.scrollToSelected(this.menu);\n } else if (this.selectOnEnter) {\n this.menu.focus();\n } else if (\n !!this.optionHighlighted &&\n !this.focusFromSearchKeypress &&\n !this.preventIncorrectTabOrder\n ) {\n const highlightedEl = this.host.querySelector(\n `li[data-value=\"${this.optionHighlighted}\"]`\n ) as HTMLElement;\n\n if (highlightedEl) {\n this.menu.setAttribute(this.ACTIVE_DESCENDANT, highlightedEl.id);\n highlightedEl.focus();\n }\n } else if (this.inputEl.tagName !== \"INPUT\") {\n this.menu.focus();\n }\n }\n\n if (this.menu && this.open && !this.value && this.selectOnEnter) {\n this.scrollToSelected(this.menu);\n }\n\n this.preventMenuFocus = false;\n }\n\n componentDidRender(): void {\n if (this.open && !this.popperInstance && this.anchorEl) {\n this.initPopperJs(this.anchorEl);\n }\n\n if (this.open && !!this.options.length) {\n this.setMenuScrollbar();\n }\n }\n\n /**\n * @internal If menu is opened with the mouse, emit menuStateChange custom event.\n */\n @Method()\n async handleClickOpen(): Promise<void> {\n if (!this.preventClickOpen) {\n this.menuStateChange.emit({ open: !this.open });\n this.keyboardNav = false;\n }\n this.preventClickOpen = false;\n }\n\n /**\n * Used alongside activationType\n * If menu is opened via keyboard navigation (i.e. Enter, ArrowUp or ArrowDown), emit optionSelect custom event.\n * @param {KeyboardEvent} event The keyboard event which is available when handleKeyboardOpen is invoked.\n */\n @Method()\n async handleKeyboardOpen(event: KeyboardEvent): Promise<void> {\n if (this.activationType === \"automatic\") {\n this.autoSetInputValueKeyboardOpen(event);\n } else {\n this.manualSetInputValueKeyboardOpen(event);\n }\n }\n\n /**\n * @internal Used to highlight the first option in the menu.\n */\n @Method()\n async handleSetFirstOption(): Promise<void> {\n this.setHighlightedOption(0);\n }\n\n /**\n * @internal Used to initialize popperJS with an anchor element.\n * 5/12/2023: Tested with Floating UI, however, discovered inconsistent\n * boundary behaviour so sticking with PopperJS.\n */\n @Method()\n async initPopperJs(anchor: HTMLElement): Promise<void> {\n // Placements set to \"-start\" to accommodate for custom menu width - menu should always be aligned to the left\n this.popperInstance = createPopper(anchor, this.host, {\n placement: \"bottom-start\",\n modifiers: [\n {\n name: \"offset\",\n options: {\n offset: [0, 7],\n },\n },\n {\n name: \"flip\",\n options: {\n fallbackPlacements: [\"top-start\"],\n rootBoundary: \"viewport\",\n },\n },\n ],\n });\n }\n\n private handleClearListener = (): void => {\n this.optionHighlighted = \"\";\n };\n\n private handleSubmitSearch = (): void => {\n const highlightedOptionIndex = this.options.findIndex(\n (option) => option[this.valueField!] === this.optionHighlighted\n );\n\n this.setInputValue(highlightedOptionIndex);\n };\n\n private handleMenuChange = (open: boolean, focusInput?: boolean): void => {\n this.menuStateChange.emit({ open, focusInput });\n\n if (!open) {\n if (focusInput !== false) {\n this.inputEl.focus();\n this.preventClickOpen = false;\n }\n\n // Reset optionHighlighted so previously highlighted option doesn't get reselected when Enter pressed\n if (this.isMultiSelect) {\n this.optionHighlighted = undefined;\n this.multiOptionClicked = null;\n }\n }\n };\n\n private setNextOptionValue = (selectedOptionIndex: number): void => {\n if (this.ungroupedOptions[selectedOptionIndex + 1]) {\n this.menuOptionSelect.emit({\n value: this.ungroupedOptions[selectedOptionIndex + 1][this.valueField!],\n optionId: this.getOptionId(\n this.ungroupedOptions[selectedOptionIndex + 1][this.valueField!]\n ),\n });\n } else {\n this.menuOptionSelect.emit({\n value: this.ungroupedOptions[0][this.valueField!],\n optionId: this.getOptionId(this.ungroupedOptions[0][this.valueField!]),\n });\n }\n };\n\n private setPreviousOptionValue = (selectedOptionIndex: number): void => {\n if (this.ungroupedOptions[selectedOptionIndex - 1]) {\n this.menuOptionSelect.emit({\n value: this.ungroupedOptions[selectedOptionIndex - 1][this.valueField!],\n optionId: this.getOptionId(\n this.ungroupedOptions[selectedOptionIndex - 1][this.valueField!]\n ),\n });\n } else {\n this.menuOptionSelect.emit({\n value:\n this.ungroupedOptions[this.ungroupedOptions.length - 1][\n this.valueField!\n ],\n optionId: this.getOptionId(\n this.ungroupedOptions[this.ungroupedOptions.length - 1][\n this.valueField!\n ]\n ),\n });\n }\n };\n\n private getParentEl = (parent: HTMLElement) => {\n if (parent.tagName === this.SEARCH_BAR_TAG) {\n this.isSearchBar = true;\n } else if (parent.tagName === \"IC-SELECT\") {\n if (\n parent.getAttribute(\"searchable\") !== null &&\n parent.getAttribute(\"searchable\") !== undefined\n ) {\n this.isSearchableSelect = true;\n } else if (\n parent.getAttribute(\"multiple\") !== null &&\n parent.getAttribute(\"multiple\") !== undefined\n ) {\n this.isMultiSelect = true;\n }\n }\n };\n\n // Open menu when up or down arrow keys are pressed\n private arrowBehaviour = (event: KeyboardEvent): void => {\n event.preventDefault();\n this.handleMenuChange(true);\n };\n\n private getMenuOptions = () =>\n this.isSearchBar ? this.options : this.ungroupedOptions;\n\n // Set option that is focused and so should show focus state\n private setHighlightedOption = (highlightedIndex: number): void => {\n const menuOptions = this.getMenuOptions();\n\n menuOptions[highlightedIndex] &&\n !menuOptions[highlightedIndex].timedOut &&\n (this.optionHighlighted =\n menuOptions[highlightedIndex][this.valueField!] || undefined);\n };\n\n // Determines keyboard behaviour when selection is automatic\n // (i.e. you don't have to press Enter select an option - just focus on it)\n // and menu is closed\n private autoSetInputValueKeyboardOpen = (event: KeyboardEvent) => {\n const selectedOptionIndex = this.ungroupedOptions.findIndex(\n (option) => option[this.valueField!] === this.value\n );\n\n this.keyboardNav = false;\n\n switch (event.key) {\n case \"ArrowDown\":\n this.keyboardNav = true;\n this.arrowBehaviour(event);\n this.setNextOptionValue(selectedOptionIndex);\n break;\n case \"ArrowUp\":\n this.keyboardNav = true;\n this.arrowBehaviour(event);\n this.setPreviousOptionValue(selectedOptionIndex);\n break;\n case \" \":\n case \"Enter\":\n if ((event.target as HTMLElement).id !== this.CLEAR_BUTTON_ID) {\n this.handleMenuChange(true);\n }\n break;\n }\n };\n\n private selectHighlightedOption = (\n options: IcMenuOption[],\n highlightedOptionIndex: number\n ) => {\n if (!this.isLoading && !this.hasTimedOut) {\n this.keyboardNav = true;\n }\n\n const isOpen: boolean =\n this.isSearchBar || this.isSearchableSelect || this.open;\n\n if (isOpen) {\n if (highlightedOptionIndex >= 0) {\n if (options[highlightedOptionIndex] !== undefined) {\n if (\n this.isSearchBar &&\n options[highlightedOptionIndex].disabled === true\n ) {\n this.disabledOptionSelected = true;\n } else {\n this.setInputValue(highlightedOptionIndex);\n }\n }\n } else {\n this.setInputValue(highlightedOptionIndex);\n }\n } else {\n this.handleMenuChange(true);\n }\n };\n\n // Check if option is selected based on the index of the option\n private isOptionSelected = (index: number) => {\n const menuOptions = this.getMenuOptions();\n\n return this.value\n ? this.value.includes(menuOptions[index][this.valueField!])\n : false;\n };\n\n // Deselect currently selected options when shift pressed, but keep certain options selected\n private deselectSelectedOptions = (optionsToKeepSelected: number[]) => {\n const menuOptions = this.getMenuOptions();\n\n if (this.value) {\n const selectedOptionIndexes = (this.value as string[]).map((value) => {\n return menuOptions.findIndex(\n (option) => option[this.valueField!] === value\n );\n });\n\n // Call setInputValue (which toggles the selected state) on options that need to be deselected\n selectedOptionIndexes.forEach(\n (index) =>\n !optionsToKeepSelected.includes(index) && this.setInputValue(index)\n );\n }\n };\n\n // Determines keyboard behaviour when selection is manual (i.e. when you have to press Enter to select an option)\n private manualSetInputValueKeyboardOpen = (event: KeyboardEvent) => {\n const menuOptions = this.getMenuOptions();\n\n // For preventing focus disappearing on currently focused option when Shift / Cmd / Ctrl pressed\n // (i.e. when user is likely in the middle of executing a keyboard combination to select options)\n const isKeyboardCombination =\n event.shiftKey || event.metaKey || event.ctrlKey;\n\n const highlightedOptionIndex = this.getOptionHighlightedIndex();\n\n const clickedMultiOptionIndex = menuOptions.findIndex(\n (option) => option[this.valueField!] === this.multiOptionClicked\n );\n\n const getOptionId = (index: number): string =>\n Array.from(this.host.querySelectorAll(\"li\"))[index]?.id;\n\n // Space press should be equivalent to Enter when multi-select\n if (event.key === \" \" && this.isMultiSelect) {\n this.handleOptionSelect(event, highlightedOptionIndex);\n } else {\n switch (event.key) {\n case \"ArrowDown\":\n this.keyboardNav = true;\n this.arrowBehaviour(event);\n if (this.multiOptionClicked) {\n // Set focus to option last clicked\n // Prevents it resetting to the top of the menu when user switches to using keyboard\n this.setHighlightedOption(clickedMultiOptionIndex);\n this.multiOptionClicked = null;\n } else {\n this.handleSingleShiftSelect(\n event,\n highlightedOptionIndex,\n menuOptions\n );\n\n if (highlightedOptionIndex < menuOptions.length - 1) {\n this.setHighlightedOption(highlightedOptionIndex + 1);\n this.menuOptionId.emit({\n optionId: getOptionId(highlightedOptionIndex + 1),\n });\n\n this.handleSingleShiftSelect(\n event,\n highlightedOptionIndex + 1,\n menuOptions\n );\n } else {\n this.setHighlightedOption(0);\n this.menuOptionId.emit({\n optionId: getOptionId(0),\n });\n\n this.handleSingleShiftSelect(event, 0, menuOptions);\n }\n\n // Deselect currently selected options if arrow was pressed for first time after shift is held\n if (this.isMultiSelect && this.shiftPressed) {\n this.deselectSelectedOptions([\n highlightedOptionIndex,\n this.getOptionHighlightedIndex(),\n ]);\n this.shiftPressed = false;\n }\n }\n this.lastOptionFocused = this.getOptionHighlightedIndex();\n this.preventIncorrectTabOrder = false;\n this.focusFromSearchKeypress = false;\n break;\n case \"ArrowUp\":\n this.keyboardNav = true;\n this.arrowBehaviour(event);\n if (this.multiOptionClicked) {\n // Set focus to option last clicked\n // Prevents it resetting to the bottom of the menu when user switches to using keyboard\n this.setHighlightedOption(clickedMultiOptionIndex);\n this.multiOptionClicked = null;\n } else {\n this.handleSingleShiftSelect(\n event,\n highlightedOptionIndex,\n menuOptions\n );\n\n if (\n highlightedOptionIndex <= 0 ||\n highlightedOptionIndex > menuOptions.length + 1\n ) {\n this.setHighlightedOption(menuOptions.length - 1);\n this.menuOptionId.emit({\n optionId: getOptionId(menuOptions.length - 1),\n });\n\n this.handleSingleShiftSelect(\n event,\n menuOptions.length - 1,\n menuOptions\n );\n } else {\n this.setHighlightedOption(highlightedOptionIndex - 1);\n this.menuOptionId.emit({\n optionId: getOptionId(highlightedOptionIndex - 1),\n });\n\n this.handleSingleShiftSelect(\n event,\n highlightedOptionIndex - 1,\n menuOptions\n );\n }\n\n // Deselect currently selected options if arrow was pressed for first time after shift is held\n if (this.isMultiSelect && this.shiftPressed) {\n this.deselectSelectedOptions([\n highlightedOptionIndex,\n this.getOptionHighlightedIndex(),\n ]);\n this.shiftPressed = false;\n }\n }\n\n this.lastOptionFocused = this.getOptionHighlightedIndex();\n this.preventIncorrectTabOrder = false;\n this.focusFromSearchKeypress = false;\n break;\n case \"Home\": {\n const startOptionIndex = 0;\n\n this.keyboardNav = true;\n event.preventDefault();\n this.arrowBehaviour(event);\n this.setHighlightedOption(startOptionIndex);\n this.menuOptionId.emit({\n optionId: getOptionId(startOptionIndex),\n });\n\n if (event.shiftKey && event.ctrlKey) {\n this.handleMultipleShiftSelect(startOptionIndex);\n }\n\n this.lastOptionFocused = startOptionIndex;\n this.lastOptionSelected = startOptionIndex;\n break;\n }\n case \"End\": {\n const endOptionIndex = menuOptions.length - 1;\n\n this.keyboardNav = true;\n event.preventDefault();\n this.arrowBehaviour(event);\n this.setHighlightedOption(endOptionIndex);\n this.menuOptionId.emit({\n optionId: getOptionId(endOptionIndex),\n });\n\n if (event.shiftKey && event.ctrlKey) {\n this.handleMultipleShiftSelect(endOptionIndex);\n }\n\n this.lastOptionFocused = endOptionIndex;\n this.lastOptionSelected = endOptionIndex;\n break;\n }\n case \" \":\n if (!isKeyboardCombination) {\n this.keyboardNav = false;\n }\n if (this.isSearchBar || this.isSearchableSelect) {\n break;\n } else {\n if ((event.target as HTMLElement).id !== this.CLEAR_BUTTON_ID) {\n this.handleMenuChange(true);\n }\n }\n break;\n case \"Enter\":\n event.preventDefault();\n if (!isKeyboardCombination) {\n this.keyboardNav = false;\n }\n this.handleOptionSelect(event, highlightedOptionIndex);\n break;\n case \"Escape\":\n if (this.open) {\n event.stopImmediatePropagation();\n }\n this.handleMenuChange(false);\n this.menuOptionId.emit({ optionId: undefined });\n break;\n case \"a\":\n // Checks if Cmd (meta) key is pressed if Mac device (while excluding meta key on Windows)\n // Otherwise, if a different OS, checks Ctrl key\n if (\n (isMacDevice() && event.metaKey) ||\n (!isMacDevice() && event.ctrlKey)\n ) {\n this.emitSelectAllEvents();\n this.lastOptionFocused = null;\n this.lastOptionSelected = null;\n }\n break;\n case \"Shift\":\n case \"Tab\":\n if (event.key === \"Shift\") {\n this.shiftPressed = true;\n }\n if (this.isSearchBar) {\n this.keyboardNav = true;\n }\n if (this.isMultiSelect) {\n if (this.open && !event.shiftKey && this.selectAllButton) {\n event.preventDefault();\n this.selectAllButton.focus(); // Move focus to select all button instead of focused option\n this.preventMenuFocus = true;\n this.preventClickOpen = true;\n this.optionHighlighted = undefined; // Stop any option focus states showing when focus moved to select all button\n }\n } else {\n this.preventIncorrectTabOrder = true;\n }\n break;\n default:\n if (!isKeyboardCombination) {\n this.keyboardNav = false;\n }\n this.focusOnSearchOrSelectInput(menuOptions, highlightedOptionIndex);\n }\n }\n };\n\n private setInputValue = (highlightedOptionIndex: number) => {\n const menuOptions = this.getMenuOptions();\n\n if (menuOptions[highlightedOptionIndex] !== undefined) {\n this.menuOptionSelect.emit({\n value: menuOptions[highlightedOptionIndex][this.valueField!],\n });\n\n if (this.closeOnSelect) {\n this.optionHighlighted = undefined;\n this.menuOptionId.emit({ optionId: undefined });\n }\n }\n\n if (this.closeOnSelect) {\n if (!this.hasTimedOut) {\n this.handleMenuChange(false);\n } else {\n (this.parentEl as HTMLIcSearchBarElement).setFocus();\n }\n }\n };\n\n private handleOptionClick = (event: MouseEvent): void => {\n const { value, label } = (event.target as HTMLLIElement).dataset;\n\n if (this.isMultiSelect) {\n const menuOptions = this.getMenuOptions();\n const selectedOptionIndex = menuOptions.findIndex(\n (option) => option.value === value\n );\n\n this.handleOptionSelect(event, selectedOptionIndex, true);\n this.multiOptionClicked = value || null;\n } else {\n this.menuOptionSelect.emit({ value, label });\n this.handleMenuChange(false);\n }\n\n this.optionHighlighted = undefined;\n };\n\n private handleRetry = (): void => {\n this.retryButtonClicked.emit({ value: this.value });\n };\n\n private handleRetryKeyDown = (ev: KeyboardEvent): void => {\n if (ev.key === \"Enter\" || ev.key === \" \") {\n ev.preventDefault();\n this.retryButtonClicked.emit({ value: this.value, keyPressed: ev.key });\n }\n };\n\n private handleBlur = (event: FocusEvent): void => {\n if (event.relatedTarget !== this.inputEl) {\n if (event.relatedTarget === this.selectAllButton) {\n this.menu?.removeAttribute(this.ACTIVE_DESCENDANT);\n }\n\n if (\n !(\n this.menu?.contains(event.relatedTarget as HTMLElement) ||\n event.relatedTarget === this.selectAllButton\n )\n ) {\n this.handleMenuChange(false, this.hasPreviouslyBlurred);\n this.menu?.removeAttribute(this.ACTIVE_DESCENDANT);\n this.lastOptionFocused = null;\n this.lastOptionSelected = null;\n }\n } else {\n this.handleMenuChange(false);\n this.preventClickOpen = true;\n this.menu?.removeAttribute(this.ACTIVE_DESCENDANT);\n this.lastOptionFocused = null;\n this.lastOptionSelected = null;\n }\n if (!this.isSearchBar) this.hasPreviouslyBlurred = !!event.relatedTarget;\n };\n\n private handleMouseDown = (event: Event): void => {\n event.preventDefault();\n };\n\n private handleMenuKeyDown = (event: KeyboardEvent) => {\n if (this.activationType === \"automatic\") {\n this.autoSetValueOnMenuKeyDown(event);\n } else if (this.activationType === \"manual\" && !this.isSearchBar) {\n this.manualSetInputValueKeyboardOpen(event);\n }\n };\n\n private handleMenuKeyUp = (event: KeyboardEvent): void => {\n if (event.key === \"Tab\" && event.shiftKey) {\n this.preventClickOpen = false;\n }\n if (event.key === \"Enter\" && this.disabledOptionSelected) {\n this.disabledOptionSelected = false;\n event.stopImmediatePropagation();\n }\n\n if (event.key === \"Shift\") {\n this.shiftPressed = false;\n }\n };\n\n private handleSelectAllClick = () => {\n this.keyboardNav = false;\n this.menu?.focus();\n this.emitSelectAllEvents();\n this.lastOptionFocused = null;\n this.lastOptionSelected = null;\n };\n\n private handleSelectAllBlur = (event: FocusEvent) => {\n this.host.classList.remove(\"ic-select-select-all-focused\");\n if (!this.menu?.contains(event.relatedTarget as HTMLElement)) {\n this.handleMenuChange(false, false);\n }\n };\n\n private handleSelectAllFocus = () => {\n this.host.classList.add(\"ic-select-select-all-focused\");\n this.lastOptionFocused = null;\n this.lastOptionSelected = null;\n };\n\n // Fix for Safari - select all button click was causing menu to close\n private handleSelectAllMouseDown = (event: Event) => {\n event.preventDefault();\n };\n\n // When shift key is being used to select contiguous options one by one on a multi-select\n // I.e. holding shift and pressing up and down arrow keys\n private handleSingleShiftSelect = (\n event: KeyboardEvent,\n optionToSelectIndex: number,\n options: IcMenuOption[]\n ) => {\n if (\n this.isMultiSelect &&\n event.shiftKey &&\n !this.isOptionSelected(optionToSelectIndex)\n ) {\n this.selectHighlightedOption(options, optionToSelectIndex);\n this.lastOptionSelected = optionToSelectIndex;\n }\n };\n\n // When shift key is being used to select multiple options at once on a multi-select\n // I.e. holding shift when selecting another option\n private handleMultipleShiftSelect = (\n lastOptionInSelection: number,\n useFocusForSelection = false,\n firstOptionSelected: number | null = null\n ) => {\n this.shiftPressed = false;\n\n const firstOptionInSelection =\n firstOptionSelected === null\n ? this.getFirstOptionInSelection(useFocusForSelection)\n : firstOptionSelected;\n if (firstOptionInSelection !== null) {\n const optionsToSelect = [];\n\n if (firstOptionInSelection < lastOptionInSelection) {\n for (\n let i = firstOptionInSelection;\n i < lastOptionInSelection + 1;\n i++\n ) {\n optionsToSelect.push(i);\n }\n } else {\n for (\n let i = firstOptionInSelection;\n i > lastOptionInSelection - 1;\n i--\n ) {\n optionsToSelect.push(i);\n }\n }\n\n optionsToSelect.forEach(\n (optionIndex) =>\n !this.isOptionSelected(optionIndex) && this.setInputValue(optionIndex)\n );\n this.deselectSelectedOptions(optionsToSelect);\n }\n };\n\n private handleOptionSelect = (\n event: KeyboardEvent | MouseEvent,\n optionIndex: number,\n useFocusForSelection = false\n ) => {\n const menuOptions = this.getMenuOptions();\n const firstOptionInSelection =\n this.getFirstOptionInSelection(useFocusForSelection);\n if (event.shiftKey && firstOptionInSelection !== null) {\n this.handleMultipleShiftSelect(\n optionIndex,\n useFocusForSelection,\n firstOptionInSelection\n );\n } else {\n this.selectHighlightedOption(menuOptions, optionIndex);\n }\n\n this.lastOptionFocused = optionIndex;\n this.lastOptionSelected = optionIndex;\n };\n\n private getFirstOptionInSelection = (\n useFocusForSelection: boolean\n ): number | null => {\n return useFocusForSelection && this.lastOptionFocused !== null\n ? this.lastOptionFocused\n : this.lastOptionSelected !== null\n ? this.lastOptionSelected\n : null;\n };\n\n private emitSelectAllEvents = () => {\n // Select all if there is either no value or not all options are selected\n // 'true' means select all, 'false' means clear all\n this.menuOptionSelectAll.emit({\n select:\n !this.value || !(this.value?.length === this.ungroupedOptions.length),\n });\n // Emit clear event if all options are selected\n if (this.value?.length === this.ungroupedOptions.length) {\n this.icClear.emit();\n }\n };\n\n private emitMenuKeyPress = (isNavKey: boolean, key: string) => {\n this.menuKeyPress.emit({ isNavKey: isNavKey, key: key });\n };\n\n // Determines keyboard behaviour when selection is automatic\n // (i.e. you don't have to press Enter select an option - just focus on it)\n // and menu is focused\n private autoSetValueOnMenuKeyDown = (event: KeyboardEvent): void => {\n event.cancelBubble = true;\n const selectedOptionIndex = this.ungroupedOptions.findIndex(\n (option) => option[this.valueField!] === this.value\n );\n\n const isSearchableSelect = this.inputEl.tagName === \"INPUT\";\n\n this.keyboardNav = false;\n\n switch (event.key) {\n case \" \":\n event.preventDefault();\n break;\n case \"ArrowUp\":\n if (!this.hasTimedOut) {\n event.preventDefault();\n this.setPreviousOptionValue(selectedOptionIndex);\n this.keyboardNav = true;\n }\n break;\n case \"ArrowDown\":\n if (!this.hasTimedOut) {\n event.preventDefault();\n this.setNextOptionValue(selectedOptionIndex);\n this.keyboardNav = true;\n }\n break;\n case \"Home\":\n this.menuOptionSelect.emit({\n value: this.ungroupedOptions[0][this.valueField!],\n });\n this.keyboardNav = true;\n break;\n case \"End\":\n this.menuOptionSelect.emit({\n value:\n this.ungroupedOptions[this.ungroupedOptions.length - 1][\n this.valueField!\n ],\n });\n this.keyboardNav = true;\n break;\n case \"Enter\":\n !this.hasTimedOut && this.handleMenuChange(false);\n break;\n case \"Escape\":\n this.handleMenuChange(false);\n break;\n case \"Backspace\":\n if (isSearchableSelect) {\n this.inputEl.focus();\n }\n break;\n case \"Shift\":\n break;\n default:\n if (isSearchableSelect && event.key !== \"Tab\" && !this.hasTimedOut) {\n this.inputEl.focus();\n }\n if (event.key.length === 1) {\n this.keyboardNav = true;\n }\n break;\n }\n this.emitMenuKeyPress(this.keyboardNav, event.key);\n };\n\n private getOptionId = (value: string): string => {\n return `${this.menuId}-${value}`;\n };\n\n private getOptionAriaLabel = (\n option: IcMenuOption,\n parentOption?: IcMenuOption\n ): string => {\n let ariaLabel = option[this.labelField!];\n\n if (option.description) {\n ariaLabel = `${ariaLabel}, ${option.description}`;\n }\n\n if (option.element) {\n ariaLabel = `${ariaLabel}, ${option.element.ariaLabel}`;\n }\n\n if (parentOption) {\n return `${ariaLabel}, ${parentOption[this.labelField!]} group`;\n } else {\n return ariaLabel;\n }\n };\n\n private getSortedOptions = (options: IcMenuOption[]): IcMenuOption[] => {\n let sorted: IcMenuOption[] = [];\n if (options.sort) {\n sorted = options.sort((optionA, optionB) =>\n optionA.recommended && !optionB.recommended ? -1 : 0\n );\n }\n return sorted;\n };\n\n private getOptionHighlightedIndex = () => {\n const menuOptions = this.getMenuOptions();\n\n return menuOptions.findIndex(\n (option) => option[this.valueField!] === this.optionHighlighted\n );\n };\n\n private isManualMode = this.activationType === \"manual\";\n\n private scrollToSelected = (menu: HTMLUListElement) => {\n const selectedOption = this.selectOnEnter\n ? (this.host.querySelector(\n `li[data-value=\"${this.optionHighlighted}\"]`\n ) as HTMLElement)\n : (menu.querySelector(\".option[aria-selected='true']\") as HTMLElement);\n\n if (selectedOption) {\n const elTop = selectedOption.offsetTop + selectedOption.offsetHeight;\n if (\n elTop > menu.scrollTop + menu.offsetHeight ||\n elTop < menu.scrollTop + menu.offsetHeight\n ) {\n menu.scrollTop = selectedOption.offsetTop;\n }\n // 'aria-activedescendant' affects screen reader focus\n // https://www.w3.org/TR/2017/WD-wai-aria-practices-1.1-20170628/#kbd_focus_activedescendant\n this.menu?.setAttribute(this.ACTIVE_DESCENDANT, selectedOption.id);\n selectedOption.focus();\n }\n };\n\n // Set 'ungroupedOptions' variable and emit its value\n // - this is all the options with disabled options and group titles removed\n private loadUngroupedOptions = () => {\n if (this.options.length > 0 && this.options.map) {\n this.options.map((option) => {\n if (option.children) {\n option.children.map(\n (option) => !option.disabled && this.ungroupedOptions.push(option)\n );\n } else if (!option.disabled) {\n this.ungroupedOptions.push(option);\n }\n });\n }\n this.ungroupedOptions = this.getSortedOptions(this.ungroupedOptions);\n this.ungroupedOptionsSet.emit({ options: this.ungroupedOptions });\n };\n\n private setMenuScrollbar = () => {\n let optionsHeight = 0;\n this.host\n .querySelectorAll(\".option\")\n .forEach((option) => (optionsHeight += option.clientHeight));\n\n if (optionsHeight >= 320) {\n this.menu?.classList.add(\"menu-scroll\");\n }\n };\n\n private handleTimeoutBlur = (ev: FocusEvent) => {\n this.timeoutBlur.emit({ ev });\n };\n\n private focusOnSearchOrSelectInput(\n menuOptions: IcMenuOption[],\n highlightedOptionIndex: number\n ) {\n if (!menuOptions[highlightedOptionIndex]) return;\n\n if (this.isSearchBar) {\n (this.parentEl as HTMLIcSearchBarElement).setFocus();\n if (this.searchMode === \"navigation\") this.setHighlightedOption(0);\n }\n\n if (this.isSearchableSelect) {\n (this.parentEl as HTMLIcSelectElement).setFocus();\n }\n\n this.focusFromSearchKeypress = true;\n }\n\n private optionContent = (option: IcMenuOption, selected: boolean) => {\n const showCheckIcon =\n !!option[this.valueField!] &&\n !!this.value &&\n selected &&\n this.parentEl?.tagName !== this.SEARCH_BAR_TAG;\n\n return (\n <Fragment>\n {option.loading && <ic-loading-indicator size=\"icon\" />}\n <div\n class={{\n \"option-text-container\": true,\n \"show-check-icon\": showCheckIcon,\n }}\n >\n <div class=\"option-label\">\n {option.icon && (\n <div\n class=\"option-icon\"\n innerHTML={option.icon}\n aria-hidden=\"true\"\n ></div>\n )}\n <ic-typography variant=\"body\" aria-hidden=\"true\">\n {option[this.labelField!]}\n </ic-typography>\n </div>\n {option.description && (\n <ic-typography\n id={`${this.getOptionId(option[this.valueField!])}-description`}\n class=\"option-description\"\n variant=\"caption\"\n aria-hidden=\"true\"\n >\n <p>{option.description}</p>\n </ic-typography>\n )}\n {option.element && (\n <div\n class=\"option-element\"\n innerHTML={option.element.component}\n aria-hidden=\"true\"\n ></div>\n )}\n </div>\n {showCheckIcon && <span class=\"check-icon\" innerHTML={Check} />}\n </Fragment>\n );\n };\n\n private displayOption = (\n option: IcMenuOption,\n selected: boolean,\n index: number,\n parentOption?: IcMenuOption\n ): HTMLLIElement => {\n const {\n open,\n keyboardNav,\n isManualMode,\n initialOptionsListRender,\n optionHighlighted,\n options,\n } = this;\n\n return (\n <li\n id={this.getOptionId(option[this.valueField!])}\n class={{\n option: true,\n \"focused-option\": isManualMode\n ? (keyboardNav || initialOptionsListRender) &&\n option[this.valueField!] === optionHighlighted\n : keyboardNav && selected,\n \"last-recommended-option\": !!(\n option.recommended &&\n options[index + 1] &&\n !options[index + 1].recommended\n ),\n \"disabled-option\": !!option.disabled,\n \"loading-option\": !!option.loading,\n timeout: !!option.timedOut,\n }}\n role=\"option\"\n tabindex={\n open &&\n (selected || option[this.valueField!] === optionHighlighted) &&\n keyboardNav\n ? \"0\"\n : \"-1\"\n }\n aria-label={this.getOptionAriaLabel(option, parentOption)}\n aria-selected={selected ? \"true\" : \"false\"}\n aria-disabled={option.disabled ? \"true\" : \"false\"}\n onClick={\n !option.timedOut && !option.loading\n ? this.handleOptionClick\n : undefined\n }\n onBlur={this.handleBlur}\n onMouseDown={this.handleMouseDown}\n data-value={option[this.valueField!]}\n data-label={option[this.labelField!]}\n >\n {option.timedOut ? (\n <Fragment>\n <div class=\"loading-error-info\">\n <svg\n class=\"error-icon-svg\"\n aria-labelledby=\"error-title\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"#000000\"\n >\n <title id=\"error-title\">Error</title>\n <g id=\"close-octagon\">\n <path\n id=\"Vector\"\n d=\"M8.77 3L3.5 8.27V15.73L8.77 21H16.23L21.5 15.73V8.27L16.23 3M8.91 7L12.5 10.59L16.09 7L17.5 8.41L13.91 12L17.5 15.59L16.09 17L12.5 13.41L8.91 17L7.5 15.59L11.09 12L7.5 8.41\"\n />\n </g>\n </svg>\n <ic-typography variant=\"label\">\n {option[this.labelField!]}\n </ic-typography>\n </div>\n <ic-button\n size=\"small\"\n variant=\"tertiary\"\n onClick={this.handleRetry}\n onKeyDown={this.handleRetryKeyDown}\n onBlur={this.handleTimeoutBlur}\n id=\"retry-button\"\n >\n Retry\n </ic-button>\n </Fragment>\n ) : (\n this.optionContent(option, selected)\n )}\n </li>\n );\n };\n\n render() {\n const {\n inputLabel,\n options,\n menuId,\n value,\n fullWidth,\n hasTimedOut,\n isLoading,\n size,\n open,\n inputEl,\n keyboardNav,\n parentEl,\n SEARCH_BAR_TAG,\n } = this;\n\n const selectAllButtonText = `${\n value?.length === this.ungroupedOptions.length ? \"Clear\" : \"Select\"\n } all`;\n\n const hasNoResults = this.host.classList.contains(\"no-results\");\n\n return (\n <Host\n class={{\n \"ic-menu-full-width\": !!fullWidth,\n \"ic-menu-no-focus\":\n (inputEl?.tagName === \"INPUT\" &&\n parentEl?.tagName !== SEARCH_BAR_TAG) ||\n hasTimedOut ||\n isLoading,\n [`ic-menu-${size}`]: true,\n \"ic-menu-open\": open && options.length !== 0,\n \"ic-menu-multiple\": this.isMultiSelect,\n }}\n >\n {options.length !== 0 && (\n <ul\n id={menuId}\n class=\"menu\"\n role=\"listbox\"\n aria-label={`${inputLabel} pop-up`}\n aria-multiselectable={this.isMultiSelect ? \"true\" : \"false\"}\n tabindex={\n open &&\n !keyboardNav &&\n (inputEl?.tagName !== \"INPUT\" ||\n parentEl?.tagName === SEARCH_BAR_TAG)\n ? \"0\"\n : \"-1\"\n }\n ref={(el) => (this.menu = el)}\n onKeyDown={this.handleMenuKeyDown}\n onKeyUp={this.handleMenuKeyUp}\n onBlur={this.handleBlur}\n >\n {this.getSortedOptions(options).map((option, index) => {\n if (option.children) {\n if (option.children.length > 0) {\n return (\n <div>\n <ic-typography\n class=\"option-group-title\"\n role=\"presentation\"\n variant=\"subtitle-small\"\n >\n <p>{option[this.labelField!]}</p>\n </ic-typography>\n {option.children.map(\n (childOption) =>\n childOption.label &&\n this.displayOption(\n childOption,\n this.isMultiSelect\n ? value?.includes(childOption[this.valueField!])\n : childOption[this.valueField!] === value,\n index,\n option\n )\n )}\n </div>\n );\n } else {\n return null;\n }\n } else {\n // Display option only if it has a label (rather than displaying an empty space)\n return (\n option.label &&\n this.displayOption(\n option,\n this.isMultiSelect\n ? value?.includes(option[this.valueField!])\n : option[this.valueField!] === value,\n index\n )\n );\n }\n })}\n </ul>\n )}\n {options.length !== 0 &&\n this.isMultiSelect &&\n !isLoading &&\n !hasTimedOut &&\n !hasNoResults && (\n <div class=\"option-bar\">\n <ic-typography>\n <p>{`${\n value ? value.length : 0\n }/${getOptionsWithoutGroupTitlesCount(\n this.options\n )} selected`}</p>\n </ic-typography>\n <ic-button\n class=\"select-all-button\"\n aria-label={`${selectAllButtonText} options for ${inputLabel}`}\n ref={(el) => (this.selectAllButton = el)}\n variant=\"tertiary\"\n onClick={this.handleSelectAllClick}\n onMouseDown={this.handleSelectAllMouseDown}\n onBlur={this.handleSelectAllBlur}\n onFocus={this.handleSelectAllFocus}\n size={size === \"small\" ? \"small\" : \"medium\"}\n >\n {selectAllButtonText}\n </ic-button>\n </div>\n )}\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
@@ -1,2 +0,0 @@
|
|
1
|
-
import{r as t,c as e,h as o,H as i,g as n}from"./p-8e4e97b4.js";import{r as s}from"./p-8242c24f.js";const r='/*! 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}:root{display:block}:host{display:flex;flex-direction:row;width:-moz-fit-content;width:fit-content;min-width:-moz-min-content;min-width:min-content;border:var(--ic-border-width) solid var(--ic-toggle-button-unselected-border);border-radius:var(--ic-border-radius)}:host(.ic-toggle-button-group-full-width){width:100%;max-width:100%}:host(.ic-toggle-button-group-loading){min-width:-moz-max-content;min-width:max-content}:host(:focus){box-shadow:var(--ic-border-focus);border-radius:var(--ic-border-radius);transition:var(--ic-transition-duration-fast);outline:none}::slotted(ic-toggle-button){flex-grow:1;width:-moz-min-content;width:min-content;--toggle-button-border:none !important;--toggle-button-border-hover:none !important;--toggle-button-border-active:none !important}::slotted(ic-toggle-button:not(:last-of-type)){border-right:var(--ic-border-width) solid\n var(--ic-toggle-button-unselected-border)}:host(.ic-toggle-button-group-disabled){border:var(--ic-space-1px) dashed\n var(--ic-toggle-button-unselected-border-disabled);pointer-events:none}:host(.ic-toggle-button-group-disabled) ::slotted(ic-toggle-button:not(:last-of-type)){border-right:var(--ic-space-1px) dashed\n var(--ic-toggle-button-unselected-border-disabled)}:host(.ic-toggle-button-group-monochrome){border:var(--ic-border-width) solid\n var(--ic-toggle-button-unselected-border-monochrome)}:host(.ic-toggle-button-group-monochrome) ::slotted(ic-toggle-button:not(:last-of-type)){border-right:var(--ic-border-width) solid\n var(--ic-toggle-button-unselected-border-monochrome)}:host(.ic-toggle-button-group-disabled.ic-toggle-button-group-monochrome){border:var(--ic-border-width) dashed\n var(--ic-toggle-button-unselected-border-disabled-monochrome)}:host(.ic-toggle-button-group-disabled.ic-toggle-button-group-monochrome) ::slotted(ic-toggle-button:not(:last-of-type)){border-right:var(--ic-border-width) solid\n var(--ic-toggle-button-unselected-border-disabled-monochrome)}';const a=r;const l="IC-TOGGLE-BUTTON-GROUP";const d=class{constructor(o){t(this,o);this.icChange=e(this,"icChange",7);this.lastKeyPressed={key:null,shift:false};this.accessibleLabel="Toggle button group";this.disabled=false;this.fullWidth=false;this.loading=false;this.monochrome=false;this.selectMethod="manual";this.selectType="single";this.size="medium";this.theme="inherit";this.tooltipPlacement="bottom";this.variant="default";this.keyListener=t=>{this.lastKeyPressed={key:t.key,shift:t.shiftKey}};this.setSlottedAria=t=>{var e,o,i;const n=(i=(o=(e=t.shadowRoot)===null||e===void 0?void 0:e.querySelector("ic-button"))===null||o===void 0?void 0:o.shadowRoot)===null||i===void 0?void 0:i.querySelector("button");let s=n.getAttribute("aria-label")||"";s+=", ";s+=this.accessibleLabel;n.setAttribute("aria-label",s)};this.handleHostFocus=t=>{if(this.loading||this.disabled){return null}const e=t.target;const o=t.relatedTarget;const i=Array.from(e.querySelectorAll("ic-toggle-button"));if((i.every((t=>!t.checked))||this.selectType!=="single")&&this.lastKeyPressed.shift===false||i.every((t=>!t.checked))&&this.lastKeyPressed.shift===true&&o.tagName==l){i[0].focus()}else if(this.lastKeyPressed.shift===false||this.lastKeyPressed.shift===true&&o.tagName==l){const t=i.filter((t=>t.checked));t[0].focus()}};this.handleKeyDown=t=>{const e=this.getAllToggleButtons();const o=e.indexOf(e.filter((t=>t===document.activeElement))[0]);switch(t.key){case"ArrowDown":case"ArrowRight":this.selectMethod==="auto"?this.proxySelectHandler(e[this.getNextItemToSelect(o,true)]):e[this.getNextItemToSelect(o,true)].focus();break;case"ArrowUp":case"ArrowLeft":this.selectMethod==="auto"?this.proxySelectHandler(e[this.getNextItemToSelect(o,false)]):e[this.getNextItemToSelect(o,false)].focus();break}};this.getNextItemToSelect=(t,e)=>{const o=this.getAllToggleButtons();const i=o.length-1;if(t<1){t=0}let n=e?t+1:t-1;if(n<0){n=i}else if(n>i){n=0}if(o[n].disabled){n=this.getNextItemToSelect(n,e)}return n}}watchDisabledHandler(){this.getAllToggleButtons().forEach((t=>{t.disabled=this.disabled}));s(this.disabled,this.el)}watchFullWidthHandler(){this.getAllToggleButtons().forEach((t=>{t.fullWidth=this.fullWidth}))}watchLoadingHandler(){this.getAllToggleButtons().forEach((t=>{t.loading=this.loading}))}watchMonochromeHandler(){this.getAllToggleButtons().forEach((t=>{t.monochrome=this.monochrome}))}watchSizeHandler(){this.getAllToggleButtons().forEach((t=>{t.size=this.size}))}watchThemeHandler(){this.getAllToggleButtons().forEach((t=>{t.theme=this.theme}))}watchTooltipPlacementHandler(){this.getAllToggleButtons().forEach((t=>{t.tooltipPlacement=this.tooltipPlacement}))}watchVariantHandler(){this.getAllToggleButtons().forEach((t=>{t.variant=this.variant}))}selectHandler(t,e){const o=this.getAllToggleButtons();let i=t.target;e&&e.focus();if(this.selectType==="single"){if(!i&&e){i=e}o.forEach((t=>{if(t.id!==i.id&&t.checked){t.checked=false}}));this.icChange.emit({checked:t.detail.checked,selectedOption:i})}else{const t=this.getAllToggleButtons().filter((t=>t.checked&&!t.disabled));this.icChange.emit({checked:t.map((t=>t.checked)),toggledOptions:t.map((t=>({toggleButton:t}))),selectedOption:i})}}componentWillLoad(){this.selectType==="multi"&&(this.selectMethod="manual");document.addEventListener("keydown",this.keyListener);s(this.disabled,this.el)}componentDidLoad(){this.getAllToggleButtons().forEach(((t,e)=>{this.setSlottedAria(t);t.id=e.toString();t.tabIndex=-1;t.addEventListener("keydown",(t=>{this.handleKeyDown(t)}));t.classList.add("expand-toggle-group-child")}))}disconnectedCallback(){document===null||document===void 0?void 0:document.removeEventListener("keydown",this.keyListener)}proxySelectHandler(t){t.checked=true;const e=new CustomEvent("icToggleChecked",{detail:{checked:t.checked}});this.selectHandler(e,t)}getAllToggleButtons(){return Array.from(this.el.querySelectorAll("ic-toggle-button"))}render(){return o(i,{key:"5ff90397f901e294f15f3f560eac22d575b61c62",role:"group","aria-label":this.accessibleLabel,tabindex:0,class:{[`ic-theme-${this.theme}`]:this.theme!=="inherit",["ic-toggle-button-group-full-width"]:!!this.fullWidth,["ic-toggle-button-group-loading"]:!!this.loading,["ic-toggle-button-group-disabled"]:this.disabled,[`ic-toggle-button-group-monochrome`]:!!this.monochrome,[`ic-theme-${this.theme}`]:this.theme!=="inherit"},onFocus:this.handleHostFocus},o("slot",{key:"c30679fee25ec96c7d28123d9758173737922e18"}))}get el(){return n(this)}static get watchers(){return{disabled:["watchDisabledHandler"],fullWidth:["watchFullWidthHandler"],loading:["watchLoadingHandler"],monochrome:["watchMonochromeHandler"],size:["watchSizeHandler"],theme:["watchThemeHandler"],tooltipPlacement:["watchTooltipPlacementHandler"],variant:["watchVariantHandler"]}}};d.style=a;export{d as ic_toggle_button_group};
|
2
|
-
//# sourceMappingURL=p-910f5f14.entry.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["icToggleButtonGroupCss","IcToggleButtonGroupStyle0","TOGGLE_GROUP","ToggleButtonGroup","constructor","hostRef","this","lastKeyPressed","key","shift","accessibleLabel","disabled","fullWidth","loading","monochrome","selectMethod","selectType","size","theme","tooltipPlacement","variant","keyListener","ev","shiftKey","setSlottedAria","el","btn","_c","_b","_a","shadowRoot","querySelector","aria","getAttribute","setAttribute","handleHostFocus","target","relEl","relatedTarget","toggleButtons","Array","from","querySelectorAll","every","checked","tagName","focus","toggledButton","filter","handleKeyDown","event","toggleButtonOptions","getAllToggleButtons","focussedChild","indexOf","document","activeElement","proxySelectHandler","getNextItemToSelect","currentItem","movingDown","numToggles","length","nextItem","watchDisabledHandler","forEach","removeDisabledFalse","watchFullWidthHandler","watchLoadingHandler","watchMonochromeHandler","watchSizeHandler","watchThemeHandler","watchTooltipPlacementHandler","watchVariantHandler","selectHandler","tabTarget","allToggles","clickedToggle","id","icChange","emit","detail","selectedOption","toggledOptions","map","opt","toggleButton","componentWillLoad","addEventListener","componentDidLoad","i","toString","tabIndex","classList","add","disconnectedCallback","removeEventListener","toggle","customEv","CustomEvent","render","h","Host","role","tabindex","class","onFocus"],"sources":["src/components/ic-toggle-button-group/ic-toggle-button-group.css?tag=ic-toggle-button-group&encapsulation=shadow","src/components/ic-toggle-button-group/ic-toggle-button-group.tsx"],"sourcesContent":["@import \"../../global/normalize.css\";\n\n/* PARENT HOST */\n\n:root {\n display: block;\n}\n\n:host {\n display: flex;\n flex-direction: row;\n width: fit-content;\n min-width: min-content;\n border: var(--ic-border-width) solid var(--ic-toggle-button-unselected-border);\n border-radius: var(--ic-border-radius);\n}\n\n:host(.ic-toggle-button-group-full-width) {\n width: 100%;\n max-width: 100%;\n}\n\n:host(.ic-toggle-button-group-loading) {\n min-width: max-content;\n}\n\n:host(:focus) {\n box-shadow: var(--ic-border-focus);\n border-radius: var(--ic-border-radius);\n transition: var(--ic-transition-duration-fast);\n outline: none;\n}\n\n/* CHILDREN SLOTTED */\n\n::slotted(ic-toggle-button) {\n flex-grow: 1;\n width: min-content;\n\n --toggle-button-border: none !important;\n --toggle-button-border-hover: none !important;\n --toggle-button-border-active: none !important;\n}\n\n::slotted(ic-toggle-button:not(:last-of-type)) {\n border-right: var(--ic-border-width) solid\n var(--ic-toggle-button-unselected-border);\n}\n\n/* DISABLED */\n:host(.ic-toggle-button-group-disabled) {\n border: var(--ic-space-1px) dashed\n var(--ic-toggle-button-unselected-border-disabled);\n pointer-events: none;\n}\n\n:host(.ic-toggle-button-group-disabled)\n ::slotted(ic-toggle-button:not(:last-of-type)) {\n border-right: var(--ic-space-1px) dashed\n var(--ic-toggle-button-unselected-border-disabled);\n}\n\n:host(.ic-toggle-button-group-monochrome) {\n border: var(--ic-border-width) solid\n var(--ic-toggle-button-unselected-border-monochrome);\n}\n\n:host(.ic-toggle-button-group-monochrome)\n ::slotted(ic-toggle-button:not(:last-of-type)) {\n border-right: var(--ic-border-width) solid\n var(--ic-toggle-button-unselected-border-monochrome);\n}\n\n:host(.ic-toggle-button-group-disabled.ic-toggle-button-group-monochrome) {\n border: var(--ic-border-width) dashed\n var(--ic-toggle-button-unselected-border-disabled-monochrome);\n}\n\n:host(.ic-toggle-button-group-disabled.ic-toggle-button-group-monochrome)\n ::slotted(ic-toggle-button:not(:last-of-type)) {\n border-right: var(--ic-border-width) solid\n var(--ic-toggle-button-unselected-border-disabled-monochrome);\n}\n","import {\n Component,\n Host,\n h,\n Prop,\n Listen,\n Element,\n Event,\n EventEmitter,\n State,\n Watch,\n} from \"@stencil/core\";\nimport {\n IcSizes,\n IcSelectTypes,\n IcSelectMethodTypes,\n IcThemeMode,\n IcButtonTooltipPlacement,\n} from \"../../utils/types\";\nimport { IcChangeEventDetail } from \"./ic-toggle-button-group.types\";\nimport { removeDisabledFalse } from \"../../utils/helpers\";\n\ninterface lastKey {\n key: string | null;\n shift: boolean;\n}\n\nconst TOGGLE_GROUP = \"IC-TOGGLE-BUTTON-GROUP\";\n\n@Component({\n tag: \"ic-toggle-button-group\",\n styleUrl: \"ic-toggle-button-group.css\",\n shadow: true,\n})\nexport class ToggleButtonGroup {\n @Element() el: HTMLIcToggleButtonGroupElement;\n\n @State() lastKeyPressed: lastKey = {\n key: null,\n shift: false,\n };\n\n /**\n * The accessible label of the toggle button group component to provide context for screen reader users.\n */\n @Prop() accessibleLabel?: string = \"Toggle button group\";\n\n /**\n * If `true`, the toggle button group will be set to the disabled state.\n */\n @Prop() disabled: boolean = false;\n @Watch(\"disabled\")\n watchDisabledHandler(): void {\n this.getAllToggleButtons().forEach((el) => {\n el.disabled = this.disabled;\n });\n removeDisabledFalse(this.disabled, this.el);\n }\n\n /**\n * If `true`, the toggle button group will fill the width of the container.\n */\n @Prop() fullWidth?: boolean = false;\n @Watch(\"fullWidth\")\n watchFullWidthHandler(): void {\n this.getAllToggleButtons().forEach((el) => {\n el.fullWidth = this.fullWidth;\n });\n }\n\n /**\n * The placement of the icons in relation to the toggle button labels.\n */\n @Prop() iconPlacement?: \"left\" | \"right\" | \"top\";\n\n /**\n * If `true`, the toggle button group will be in loading state.\n */\n @Prop() loading?: boolean = false;\n @Watch(\"loading\")\n watchLoadingHandler(): void {\n this.getAllToggleButtons().forEach((el) => {\n el.loading = this.loading;\n });\n }\n\n /**\n * If `true`, the toggle button group will display as black in the light theme, and white in dark theme.\n */\n @Prop() monochrome?: boolean = false;\n @Watch(\"monochrome\")\n watchMonochromeHandler(): void {\n this.getAllToggleButtons().forEach((el) => {\n el.monochrome = this.monochrome;\n });\n }\n\n /**\n * If `auto`, controls are toggled automatically when navigated to. If `manual`, the controls must be actioned to change their toggled state. The value of this prop is ignored if `selectType` is set to`multi`.\n */\n @Prop({ mutable: true }) selectMethod?: IcSelectMethodTypes = \"manual\";\n\n /**\n * Sets whether single or multiple options can be toggled. If `multi`, then the `selectMethod` is always `manual`.\n */\n @Prop() selectType?: IcSelectTypes = \"single\";\n\n /**\n * The size of the toggle buttons to be displayed. This does not affect the font size of the accessible label.\n */\n @Prop() size?: IcSizes = \"medium\";\n @Watch(\"size\")\n watchSizeHandler(): void {\n this.getAllToggleButtons().forEach((el) => {\n el.size = this.size;\n });\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.getAllToggleButtons().forEach((el) => {\n el.theme = this.theme;\n });\n }\n\n /**\n * The position of the tooltip in relation to the toggle buttons.\n */\n @Prop() tooltipPlacement: IcButtonTooltipPlacement = \"bottom\";\n @Watch(\"tooltipPlacement\")\n watchTooltipPlacementHandler(): void {\n this.getAllToggleButtons().forEach((el) => {\n el.tooltipPlacement = this.tooltipPlacement;\n });\n }\n\n /**\n * The variant of the toggle button.\n */\n @Prop({ reflect: true }) variant: \"default\" | \"icon\" = \"default\";\n @Watch(\"variant\")\n watchVariantHandler(): void {\n this.getAllToggleButtons().forEach((el) => {\n el.variant = this.variant;\n });\n }\n\n /**\n * Emitted when a toggle button is selected.\n */\n @Event() icChange: EventEmitter<IcChangeEventDetail>;\n\n @Listen(\"icToggleChecked\")\n selectHandler(ev: CustomEvent, tabTarget?: HTMLIcToggleButtonElement): void {\n const allToggles = this.getAllToggleButtons();\n let clickedToggle = ev.target as HTMLIcToggleButtonElement;\n // tabTarget used in proxySelectHandler\n tabTarget && tabTarget.focus();\n if (this.selectType === \"single\") {\n if (!clickedToggle && tabTarget) {\n clickedToggle = tabTarget;\n }\n allToggles.forEach((el) => {\n if (el.id !== clickedToggle.id && el.checked) {\n el.checked = false;\n }\n });\n\n this.icChange.emit({\n checked: ev.detail.checked,\n selectedOption: clickedToggle,\n });\n } else {\n const toggledOptions = this.getAllToggleButtons().filter(\n (el) => el.checked && !el.disabled\n );\n\n this.icChange.emit({\n checked: toggledOptions.map((opt) => opt.checked!),\n toggledOptions: toggledOptions.map((opt) => ({\n toggleButton: opt,\n })),\n selectedOption: clickedToggle,\n });\n }\n }\n\n componentWillLoad(): void {\n this.selectType === \"multi\" && (this.selectMethod = \"manual\");\n this.selectMethod === \"auto\" && this.selectType === \"single\";\n document.addEventListener(\"keydown\", this.keyListener);\n removeDisabledFalse(this.disabled, this.el);\n }\n\n componentDidLoad(): void {\n this.getAllToggleButtons().forEach((el, i) => {\n this.setSlottedAria(el);\n el.id = i.toString();\n el.tabIndex = -1;\n el.addEventListener(\"keydown\", (ev) => {\n this.handleKeyDown(ev);\n });\n el.classList.add(\"expand-toggle-group-child\");\n });\n }\n\n disconnectedCallback(): void {\n document?.removeEventListener(\"keydown\", this.keyListener);\n }\n\n private keyListener = (ev: KeyboardEvent) => {\n this.lastKeyPressed = {\n key: ev.key,\n shift: ev.shiftKey,\n };\n };\n\n private setSlottedAria = (el: HTMLIcToggleButtonElement) => {\n const btn = el.shadowRoot\n ?.querySelector(\"ic-button\")\n ?.shadowRoot?.querySelector(\"button\") as HTMLButtonElement;\n let aria = btn.getAttribute(\"aria-label\") || \"\";\n aria += \", \";\n aria += this.accessibleLabel;\n btn.setAttribute(\"aria-label\", aria);\n };\n\n private handleHostFocus = (ev: FocusEvent): void | null => {\n if (this.loading || this.disabled) {\n return null;\n }\n const el = ev.target as HTMLIcToggleButtonGroupElement;\n const relEl = ev.relatedTarget as HTMLIcToggleButtonElement;\n const toggleButtons = Array.from(el.querySelectorAll(\"ic-toggle-button\"));\n if (\n ((toggleButtons.every((el) => !el.checked) ||\n this.selectType !== \"single\") &&\n this.lastKeyPressed.shift === false) ||\n (toggleButtons.every((el) => !el.checked) &&\n this.lastKeyPressed.shift === true &&\n relEl.tagName == TOGGLE_GROUP)\n ) {\n toggleButtons[0].focus();\n } else if (\n this.lastKeyPressed.shift === false ||\n (this.lastKeyPressed.shift === true && relEl.tagName == TOGGLE_GROUP)\n ) {\n // if checked is true and selectMethod is \"single\", focus that toggle\n const toggledButton = toggleButtons.filter((el) => el.checked);\n toggledButton[0].focus();\n }\n };\n\n // trigger selectHandler when unable to add 'target'\n private proxySelectHandler(toggle: HTMLIcToggleButtonElement): void {\n toggle.checked = true;\n const customEv = new CustomEvent(\"icToggleChecked\", {\n detail: {\n checked: toggle.checked,\n },\n });\n this.selectHandler(customEv, toggle);\n }\n\n private handleKeyDown = (event: KeyboardEvent): void => {\n const toggleButtonOptions = this.getAllToggleButtons();\n const focussedChild = toggleButtonOptions.indexOf(\n toggleButtonOptions.filter((el) => el === document.activeElement)[0]\n );\n switch (event.key) {\n case \"ArrowDown\":\n case \"ArrowRight\":\n this.selectMethod === \"auto\"\n ? this.proxySelectHandler(\n toggleButtonOptions[this.getNextItemToSelect(focussedChild, true)]\n )\n : toggleButtonOptions[\n this.getNextItemToSelect(focussedChild, true)\n ].focus();\n break;\n case \"ArrowUp\":\n case \"ArrowLeft\":\n this.selectMethod === \"auto\"\n ? this.proxySelectHandler(\n toggleButtonOptions[\n this.getNextItemToSelect(focussedChild, false)\n ]\n )\n : toggleButtonOptions[\n this.getNextItemToSelect(focussedChild, false)\n ].focus();\n break;\n case \"Tab\":\n break;\n }\n };\n\n private getNextItemToSelect = (\n currentItem: number,\n movingDown: boolean\n ): number => {\n const toggleButtonOptions = this.getAllToggleButtons();\n const numToggles = toggleButtonOptions.length - 1;\n\n if (currentItem < 1) {\n currentItem = 0;\n }\n\n let nextItem = movingDown ? currentItem + 1 : currentItem - 1;\n if (nextItem < 0) {\n nextItem = numToggles;\n } else if (nextItem > numToggles) {\n nextItem = 0;\n }\n\n if (toggleButtonOptions[nextItem].disabled) {\n nextItem = this.getNextItemToSelect(nextItem, movingDown);\n }\n\n return nextItem;\n };\n\n private getAllToggleButtons(): HTMLIcToggleButtonElement[] {\n return Array.from(this.el.querySelectorAll(\"ic-toggle-button\"));\n }\n\n render() {\n return (\n <Host\n role=\"group\"\n aria-label={this.accessibleLabel}\n tabindex={0}\n class={{\n [`ic-theme-${this.theme}`]: this.theme !== \"inherit\",\n [\"ic-toggle-button-group-full-width\"]: !!this.fullWidth,\n [\"ic-toggle-button-group-loading\"]: !!this.loading,\n [\"ic-toggle-button-group-disabled\"]: this.disabled,\n [`ic-toggle-button-group-monochrome`]: !!this.monochrome,\n [`ic-theme-${this.theme}`]: this.theme !== \"inherit\",\n }}\n onFocus={this.handleHostFocus}\n >\n <slot></slot>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
@@ -1,2 +0,0 @@
|
|
1
|
-
import{r as e,c as t,f as i,h as a,H as s,g as r}from"./p-8e4e97b4.js";import{G as o,r as n,F as l,k as c,x as d,j as h,b as u,M as b,K as p,n as f,l as m,m as x,i as v,L as g,y}from"./p-8242c24f.js";const w='/*! 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;--ic-input-label-helpertext-padding:var(--ic-space-xxs);--border-color:var(--ic-text-field-border-neutral);--border-color-hover:var(--ic-text-field-border-neutral-hover);--border-color-pressed:var(--ic-text-field-border-neutral-pressed);--border-color-disabled:var(--ic-text-field-border-disabled);--border-color-error:var(--ic-text-field-border-error);--border-color-error-hover:var(--ic-text-field-border-error-hover);--border-color-error-pressed:var(--ic-text-field-border-error-pressed);--border-color-success:var(--ic-text-field-border-success);--border-color-success-hover:var(--ic-text-field-border-success-hover);--border-color-success-pressed:var(--ic-text-field-border-success-pressed);--border-color-warning:var(--ic-text-field-border-warning);--border-color-warning-hover:var(--ic-text-field-border-warning-hover);--border-color-warning-pressed:var(--ic-text-field-border-warning-pressed);--ic-input-label-text-color:var(--ic-text-field-label);--ic-input-label-helper-text-color:var(--ic-text-field-subtitle);--ic-input-validation-status-text-color:var(--ic-text-field-state-text);--ic-input-validation-error:var(--ic-text-field-state-icon-error);--ic-input-validation-warning-icon-color:var(\n --ic-text-field-state-icon-warning\n );--ic-input-validation-success-icon-color:var(\n --ic-text-field-state-icon-success\n );--ic-input-component-container-success-icon-inline-color:var(\n --ic-text-field-state-icon-success\n )}:host(.ic-text-field-disabled){--ic-input-label-text-color:var(--ic-text-field-label-disabled);--ic-input-label-helper-text-color:var(--ic-text-field-subtitle-disabled);--text-field-placeholder-color:var(\n --ic-text-field-text-area-placeholder-text-disabled\n )}:host(.ic-text-field-full-width){width:100%}::-moz-placeholder{color:var(\n --text-field-placeholder-color,\n var(--ic-text-field-placeholder-text)\n );opacity:1}::placeholder{color:var(\n --text-field-placeholder-color,\n var(--ic-text-field-placeholder-text)\n );opacity:1}input,textarea{border:0;border-radius:var(--ic-border-radius);color:var(--text-field-text-color, var(--ic-text-field-text));background-color:var(--input-bg-color, var(--ic-text-field-background));line-height:1.5rem;letter-spacing:0.005rem;width:100%;padding-right:var(--ic-space-xs);padding-left:var(--ic-space-xs);caret-color:var(\n --text-field-typing-cursor,\n var(--ic-text-field-typing-cursor)\n )}textarea{min-height:var(--ic-space-lg);resize:vertical;padding-top:0.375rem}input:focus,textarea:focus{border:0;outline:0}input:disabled,textarea:disabled{color:var(\n --text-field-disabled-text-color,\n var(--ic-text-field-text-disabled)\n )}input.readonly,textarea.readonly{color:var(--ic-text-field-read-only-input-text-internal);background:transparent}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type="number"]{-moz-appearance:textfield}textarea.no-resize{resize:none}.char-count-text{--ic-typography-color:var(--ic-text-field-character-limit);padding-right:var(--ic-space-xxxs)}:host(.ic-text-field-disabled) .char-count-text{--ic-typography-color:var(--ic-text-field-character-limit-disabled)}.no-left-pad{padding-left:0}::slotted([slot="icon"]){fill:var(--ic-text-field-text-disabled)}.has-value ::slotted([slot="icon"]){fill:var(--ic-text-field-input-internal-icon)}.char-count{margin-right:calc(-1 * var(--ic-space-xxxs))}.remaining-char-count-desc{position:absolute;left:-9999px}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-results-button,input[type="search"]::-webkit-search-results-decoration{display:none}input[type="search"].truncate-value{width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}@media (forced-colors: active){input.readonly,textarea.readonly{color:canvastext}.has-value ::slotted([slot="icon"]){fill:currentcolor}}';const k=w;let z=0;const C=[...y,"title"];const I=class{constructor(a){e(this,a);this.getValidationText=t(this,"getValidationText",7);this.icBlur=t(this,"icBlur",7);this.icChange=t(this,"icChange",7);this.icFocus=t(this,"icFocus",7);this.icInput=t(this,"icInput",7);this.icKeydown=t(this,"icKeydown",7);this.icScroll=t(this,"icScroll",7);this.inheritedAttributes={};this.hostMutationObserver=null;this.numChars=0;this.maxCharactersReached=false;this.maxCharactersWarning=false;this.minCharactersUnattained=false;this.maxValueExceeded=false;this.minValueUnattained=false;this.autocapitalize="off";this.autocomplete="off";this.autocorrect="off";this.autofocus=false;this.disabled=false;this.fullWidth=false;this.helperText="";this.hideCharCount=false;this.hideLabel=false;this.hiddenInput=true;this.inputId=`ic-text-field-input-${z++}`;this.inputmode="text";this.maxCharacters=0;this.maxCharactersMessage=`Maximum input is ${this.maxCharacters} characters`;this.maxMessage=`Maximum value of ${this.max} exceeded`;this.minCharacters=0;this.minCharactersMessage=`Minimum input is ${this.minCharacters} characters`;this.minMessage=`Minimum value of ${this.min} not met`;this.name=this.inputId;this.placeholder="";this.readonly=false;this.required=false;this.resize=false;this.rows=1;this.size="medium";this.spellcheck=false;this.theme="inherit";this.truncateValue=false;this.type="text";this.validationInline=false;this.validationInlineInternal=false;this.validationStatus="";this.validationText="";this.debounce=0;this.value="";this.initialValue=this.value;this.checkChildHydration=()=>{var e,t;if(this.hideLabel||((t=(e=this.el.shadowRoot)===null||e===void 0?void 0:e.querySelector("ic-typography"))===null||t===void 0?void 0:t.classList.contains("hydrated"))){this.setFocus();clearInterval(this.interval)}};this.getNumberOfCharacters=e=>e!==null&&e!==undefined?e.length:0;this.getMaxValueExceeded=e=>{this.numChars=this.getNumberOfCharacters(e);if(this.type==="number"){this.minValueUnattained=!!e&&Number(e)<Number(this.min);this.maxValueExceeded=Number(e)>Number(this.max)}};this.getMaxCharactersReached=e=>{this.numChars=this.getNumberOfCharacters(e);this.maxCharactersReached=this.maxCharacters>0&&this.numChars>=this.maxCharacters;if(this.maxCharactersWarning&&!this.maxCharactersReached){this.maxCharactersWarning=false}};this.onInput=e=>{this.value=e.target.value;this.icInput.emit({value:this.value})};this.onBlur=e=>{const t=e.target;t.removeEventListener("wheel",this.onWheel);const{value:i}=t;this.numChars=i.length;this.minCharactersUnattained=this.minCharacters>0&&this.numChars<this.minCharacters;this.icBlur.emit({value:i})};this.onFocus=e=>{const t=e.target;t.addEventListener("wheel",this.onWheel);this.icFocus.emit({value:t.value})};this.onTextAreaScroll=()=>{this.icScroll.emit()};this.onWheel=e=>{const t=e.target;if(t.type==="number"){t.blur();setTimeout((()=>{t.focus()}),0)}};this.hasStatus=e=>e!==""&&!this.disabled;this.handleFormReset=()=>{this.value=this.initialValue};this.hostMutationCallback=e=>{let t=false;e.forEach((({attributeName:e,type:i,addedNodes:a,removedNodes:s})=>{if(e&&C.includes(e)){const i=this.el.getAttribute(e);if(i){this.inheritedAttributes[e]=i}t=true}else if(i==="childList"){t=o(a,s,"icon")}}));if(t){i(this)}}}watchDisabledHandler(){n(this.disabled,this.el)}debounceChanged(){this.icChange=l(this.icChange,this.debounce)}watchValueHandler(e){let t;if(this.maxCharacters>0){t=e.substring(0,this.maxCharacters);if(t.length<e.length){this.maxCharactersWarning=true}this.value=t}else{t=e}if(this.inputEl&&this.inputEl.value!==t){this.inputEl.value=t}this.getMaxValueExceeded(t);this.getMaxCharactersReached(t);this.icChange.emit({value:t})}connectedCallback(){this.debounceChanged()}disconnectedCallback(){var e;c(this.el,this.handleFormReset);(e=this.hostMutationObserver)===null||e===void 0?void 0:e.disconnect()}componentWillLoad(){if(this.value!==this.initialValue){this.watchValueHandler(this.value)}else if(this.maxCharacters>0){this.value=this.value.substring(0,this.maxCharacters)}this.getMaxValueExceeded(this.value);this.getMaxCharactersReached(this.value);this.inheritedAttributes=d(this.el,C);if(this.readonly){this.maxValueExceeded=false;this.minValueUnattained=false}h(this.el,this.handleFormReset);n(this.disabled,this.el)}componentDidLoad(){u([{prop:this.label,propName:"label"}],"Text Field");if(this.validationInlineInternal){this.getValidationText.emit({value:this.validationText})}this.hostMutationObserver=new MutationObserver(this.hostMutationCallback);this.hostMutationObserver.observe(this.el,{attributes:true,childList:true});if(this.autofocus&&!this.disabled&&!this.readonly){this.interval=setInterval(this.checkChildHydration,50)}}handleKeyDown(e){this.icKeydown.emit({event:e});if(!e.ctrlKey&&!b.includes(e.key)){this.maxCharactersWarning=this.maxCharactersReached}}async setFocus(){var e;(e=this.inputEl)===null||e===void 0?void 0:e.focus()}render(){const{inputId:e,name:t,label:i,required:r,size:o,placeholder:n,helperText:l,hideCharCount:c,rows:d,resize:h,disabled:u,value:b,min:y,max:w,numChars:k,readonly:z,maxCharacters:C,maxCharactersMessage:I,maxCharactersWarning:M,maxCharactersReached:$,maxMessage:L,minCharacters:N,minCharactersMessage:T,minCharactersUnattained:j,minMessage:F,minValueUnattained:q,maxValueExceeded:V,validationStatus:D,validationText:H,validationInline:W,validationInlineInternal:B,spellcheck:O,inputmode:S,fullWidth:K,truncateValue:A,hiddenInput:E,theme:U,hideLabel:_,type:G,autocapitalize:R,ariaActiveDescendant:J,inheritedAttributes:P,ariaExpanded:Q,ariaOwns:X,autocomplete:Y,role:Z}=this;const ee=this.el;const te=z||u;const ie=V||q||j||M?M?p.Warning:p.Error:D;const ae=M?I:V?L:q?F:j?T:H;const se=z?0:C;const re=M||V||q||ie===p.Error?"assertive":"polite";const oe=this.hasStatus(ie)&&!(ie==p.Success&&W)&&!B;const ne=d>1;const le=se-k;const ce=C>0?`${e}-char-count-desc`:"";const de=`${ce} ${f(e,l!=="",oe)}`.trim();const he=te&&!z;const ue=!!this.el.querySelector(`[slot="icon"]`)&&!he;const be=`${ie===p.Error}`;E?m(this.el,b,t,te):x(this.el);return a(s,{key:"392b43ac248502539bc00717694c10a24818551e",class:{"ic-text-field-full-width":K,"ic-text-field-disabled":te,[`ic-theme-${U}`]:U!=="inherit"}},a("ic-input-container",{key:"59ec38e8e8e934cf48123303f68a7ca863badd83",readonly:z,disabled:te},!_&&a("ic-input-label",{key:"fa61768dd93e6d7a1ead043792b15b78b8d3fd26",for:e,label:i,helperText:l,required:r,disabled:he,readonly:z}),a("ic-input-component-container",{key:"c6ac9c16b6c565671575ec2217e62176d7bc1359",size:o,validationStatus:ie,multiLine:ne,disabled:te,readonly:z,validationInline:W,fullWidth:K},ue&&a("span",{key:"353b7a992bbce4060dc5fe29b05f96aedd0cf32a",class:{readonly:z,"has-value":this.getNumberOfCharacters(b)>0},slot:"left-icon"},a("slot",{key:"8a5cbec45bedc43908caaae9ff74bc4101f995f8",name:"icon"})),!ne?a("input",Object.assign({id:e,name:t,ref:e=>this.inputEl=e,type:G,min:y,max:w,value:b,class:{"no-left-pad":!ue&&z,readonly:z,"truncate-value":A},placeholder:n?n:"",required:r,disabled:te,readonly:z,onInput:this.onInput,onBlur:this.onBlur,onFocus:this.onFocus,"aria-label":i,"aria-describedby":de,"aria-invalid":be,"aria-activedescendant":J,"aria-expanded":Q,"aria-owns":X,autocomplete:Y,autocapitalize:R,spellcheck:O,inputmode:S,role:Z,maxlength:$?C:undefined,minlength:j?N:undefined},P)):a("textarea",Object.assign({id:e,class:{"no-resize":h===false||!!z,"no-left-pad":!ue&&!!z,readonly:!!z},name:t,ref:e=>this.inputEl=e,value:b,rows:d,required:r,disabled:te,placeholder:n,readonly:z,onInput:this.onInput,onBlur:this.onBlur,onFocus:this.onFocus,onScroll:this.onTextAreaScroll,"aria-label":i,"aria-describedby":de,"aria-invalid":be,autocapitalize:R,spellcheck:O,inputmode:S,maxlength:$?C:undefined,minlength:j?N:undefined},P)),v(ee,"clear-button")&&a("slot",{key:"05d080fafd37f3c5e2894968705fe2802cd24f8a",name:"clear-button"}),v(ee,"search-submit-button")&&a("slot",{key:"b4ef1fb8db068a9c547d20147e31ac798cb838b5",name:"search-submit-button"})),v(ee,"menu")&&a("slot",{key:"2f708851077d7cc70c6a90d2dae3f817ffdf469b",name:"menu"}),(!g(D)||!g(H)||se>0||V||M||j||q)&&!B&&a("ic-input-validation",{key:"d7c7b40ed97ab62e31fe09e78bf55c796948e33a",status:this.hasStatus(ie)===false||ie===p.Success&&W||B?"":ie,message:oe?ae:"",ariaLiveMode:re,for:e,fullWidth:K},!z&&se>0&&a("div",{key:"6b6d4c6b40f66756ceafc51c6ba7a336863ce030",slot:"validation-message-adornment"},!c&&a("ic-typography",{key:"5cb893f7e84654a848bd7ec14a0820583ed5d043",variant:"caption",class:"char-count-text"},a("span",{key:"b93ac422dbea08cf3d1f139feea1fd5ee37c6755",class:"char-count"},k,"/",se)),a("span",{key:"e3b8a947bf1e4b1dc3bd93e04bb50ffaa55ac6a0",class:"remaining-char-count-desc","aria-live":"polite"},`${le} character${le===1?"":"s"} remaining.`),a("span",{key:"41353bf51d4e7264cc054f524b404519a953bec9",hidden:true,id:ce},"Field can contain a maximum of ",se," characters.")))))}get el(){return r(this)}static get watchers(){return{disabled:["watchDisabledHandler"],debounce:["debounceChanged"],value:["watchValueHandler"]}}};I.style=k;export{I as ic_text_field};
|
2
|
-
//# sourceMappingURL=p-b7568944.entry.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["icTextFieldCss","IcTextFieldStyle0","inputIds","MUTABLE_ATTRIBUTES","IC_INHERITED_ARIA","TextField","constructor","hostRef","this","inheritedAttributes","hostMutationObserver","numChars","maxCharactersReached","maxCharactersWarning","minCharactersUnattained","maxValueExceeded","minValueUnattained","autocapitalize","autocomplete","autocorrect","autofocus","disabled","fullWidth","helperText","hideCharCount","hideLabel","hiddenInput","inputId","inputmode","maxCharacters","maxCharactersMessage","maxMessage","max","minCharacters","minCharactersMessage","minMessage","min","name","placeholder","readonly","required","resize","rows","size","spellcheck","theme","truncateValue","type","validationInline","validationInlineInternal","validationStatus","validationText","debounce","value","initialValue","checkChildHydration","_b","_a","el","shadowRoot","querySelector","classList","contains","setFocus","clearInterval","interval","getNumberOfCharacters","undefined","length","getMaxValueExceeded","Number","getMaxCharactersReached","onInput","ev","target","icInput","emit","onBlur","removeEventListener","onWheel","icBlur","onFocus","addEventListener","icFocus","onTextAreaScroll","icScroll","blur","setTimeout","focus","hasStatus","status","handleFormReset","hostMutationCallback","mutationList","forceComponentUpdate","forEach","attributeName","addedNodes","removedNodes","includes","attribute","getAttribute","checkSlotInChildMutations","forceUpdate","watchDisabledHandler","removeDisabledFalse","debounceChanged","icChange","debounceEvent","watchValueHandler","newValue","substring","inputEl","connectedCallback","disconnectedCallback","removeFormResetListener","disconnect","componentWillLoad","inheritAttributes","addFormResetListener","componentDidLoad","onComponentRequiredPropUndefined","prop","label","propName","getValidationText","MutationObserver","observe","attributes","childList","setInterval","handleKeyDown","icKeydown","event","ctrlKey","IGNORED_KEYBOARD_CHARACTERS","key","render","ariaActiveDescendant","ariaExpanded","ariaOwns","role","disabledMode","currentStatus","IcInformationStatus","Warning","Error","currentValidationText","maxNumChars","messageAriaLive","showStatusText","Success","multiline","charsRemaining","hiddenCharCountDescId","describedBy","getInputDescribedByText","trim","disabledText","showLeftIcon","invalid","renderHiddenInput","removeHiddenInput","h","Host","class","for","multiLine","slot","Object","assign","id","ref","maxlength","minlength","onScroll","isSlotUsed","isEmptyString","message","ariaLiveMode","variant","hidden"],"sources":["src/components/ic-text-field/ic-text-field.css?tag=ic-text-field&encapsulation=shadow","src/components/ic-text-field/ic-text-field.tsx"],"sourcesContent":["@import \"../../global/normalize.css\";\n\n:host {\n /**\n * @prop --input-width: Width of the input field\n */\n display: block;\n\n --ic-input-label-helpertext-padding: var(--ic-space-xxs);\n --border-color: var(--ic-text-field-border-neutral);\n --border-color-hover: var(--ic-text-field-border-neutral-hover);\n --border-color-pressed: var(--ic-text-field-border-neutral-pressed);\n --border-color-disabled: var(--ic-text-field-border-disabled);\n --border-color-error: var(--ic-text-field-border-error);\n --border-color-error-hover: var(--ic-text-field-border-error-hover);\n --border-color-error-pressed: var(--ic-text-field-border-error-pressed);\n --border-color-success: var(--ic-text-field-border-success);\n --border-color-success-hover: var(--ic-text-field-border-success-hover);\n --border-color-success-pressed: var(--ic-text-field-border-success-pressed);\n --border-color-warning: var(--ic-text-field-border-warning);\n --border-color-warning-hover: var(--ic-text-field-border-warning-hover);\n --border-color-warning-pressed: var(--ic-text-field-border-warning-pressed);\n --ic-input-label-text-color: var(--ic-text-field-label);\n --ic-input-label-helper-text-color: var(--ic-text-field-subtitle);\n --ic-input-validation-status-text-color: var(--ic-text-field-state-text);\n --ic-input-validation-error: var(--ic-text-field-state-icon-error);\n --ic-input-validation-warning-icon-color: var(\n --ic-text-field-state-icon-warning\n );\n --ic-input-validation-success-icon-color: var(\n --ic-text-field-state-icon-success\n );\n --ic-input-component-container-success-icon-inline-color: var(\n --ic-text-field-state-icon-success\n );\n}\n\n:host(.ic-text-field-disabled) {\n --ic-input-label-text-color: var(--ic-text-field-label-disabled);\n --ic-input-label-helper-text-color: var(--ic-text-field-subtitle-disabled);\n --text-field-placeholder-color: var(\n --ic-text-field-text-area-placeholder-text-disabled\n );\n}\n\n:host(.ic-text-field-full-width) {\n width: 100%;\n}\n\n::placeholder {\n color: var(\n --text-field-placeholder-color,\n var(--ic-text-field-placeholder-text)\n );\n opacity: 1;\n}\n\ninput,\ntextarea {\n border: 0;\n border-radius: var(--ic-border-radius);\n color: var(--text-field-text-color, var(--ic-text-field-text));\n background-color: var(--input-bg-color, var(--ic-text-field-background));\n line-height: 1.5rem;\n letter-spacing: 0.005rem;\n width: 100%;\n padding-right: var(--ic-space-xs);\n padding-left: var(--ic-space-xs);\n caret-color: var(\n --text-field-typing-cursor,\n var(--ic-text-field-typing-cursor)\n );\n}\n\ntextarea {\n min-height: var(--ic-space-lg);\n resize: vertical;\n padding-top: 0.375rem;\n}\n\ninput:focus,\ntextarea:focus {\n border: 0;\n outline: 0;\n}\n\ninput:disabled,\ntextarea:disabled {\n color: var(\n --text-field-disabled-text-color,\n var(--ic-text-field-text-disabled)\n );\n}\n\ninput.readonly,\ntextarea.readonly {\n color: var(--ic-text-field-read-only-input-text-internal);\n background: transparent;\n}\n\n/* Chrome, Safari, Edge */\ninput::-webkit-outer-spin-button,\ninput::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n}\n\n/* Firefox */\ninput[type=\"number\"] {\n -moz-appearance: textfield;\n}\n\ntextarea.no-resize {\n resize: none;\n}\n\n.char-count-text {\n --ic-typography-color: var(--ic-text-field-character-limit);\n\n padding-right: var(--ic-space-xxxs);\n}\n\n:host(.ic-text-field-disabled) .char-count-text {\n --ic-typography-color: var(--ic-text-field-character-limit-disabled);\n}\n\n.no-left-pad {\n padding-left: 0;\n}\n\n::slotted([slot=\"icon\"]) {\n fill: var(--ic-text-field-text-disabled);\n}\n\n.has-value ::slotted([slot=\"icon\"]) {\n fill: var(--ic-text-field-input-internal-icon);\n}\n\n.char-count {\n margin-right: calc(-1 * var(--ic-space-xxxs));\n}\n\n.remaining-char-count-desc {\n position: absolute;\n left: -9999px;\n}\n\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration,\ninput[type=\"search\"]::-webkit-search-results-button,\ninput[type=\"search\"]::-webkit-search-results-decoration {\n display: none;\n}\n\ninput[type=\"search\"].truncate-value {\n width: 100%;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n\n@media (forced-colors: active) {\n input.readonly,\n textarea.readonly {\n color: canvastext;\n }\n\n .has-value ::slotted([slot=\"icon\"]) {\n fill: currentcolor;\n }\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n Host,\n Listen,\n Prop,\n State,\n Watch,\n Method,\n h,\n forceUpdate,\n} from \"@stencil/core\";\nimport {\n IcInformationStatus,\n IcAutocompleteTypes,\n IcAutocorrectStates,\n IcInformationStatusOrEmpty,\n IcValueEventDetail,\n IcSizesNoLarge,\n IcThemeMode,\n} from \"../../utils/types\";\nimport {\n inheritAttributes,\n debounceEvent,\n getInputDescribedByText,\n renderHiddenInput,\n isEmptyString,\n onComponentRequiredPropUndefined,\n addFormResetListener,\n removeFormResetListener,\n isSlotUsed,\n removeDisabledFalse,\n checkSlotInChildMutations,\n removeHiddenInput,\n} from \"../../utils/helpers\";\nimport {\n IC_INHERITED_ARIA,\n IGNORED_KEYBOARD_CHARACTERS,\n} from \"../../utils/constants\";\nimport {\n IcAriaAutocompleteTypes,\n IcTextFieldInputModes,\n IcTextFieldTypes,\n} from \"./ic-text-field.types\";\n\nlet inputIds = 0;\nconst MUTABLE_ATTRIBUTES = [...IC_INHERITED_ARIA, \"title\"];\n\n/**\n * @slot icon - Content will be placed to the left of the text input.\n */\n@Component({\n tag: \"ic-text-field\",\n styleUrl: \"ic-text-field.css\",\n shadow: true,\n})\nexport class TextField {\n private inheritedAttributes: { [k: string]: string } = {};\n private inputEl: HTMLInputElement | HTMLTextAreaElement;\n private hostMutationObserver: MutationObserver | null = null;\n private interval: ReturnType<typeof setInterval>;\n\n @Element() el: HTMLIcTextFieldElement;\n\n @State() numChars: number = 0;\n @State() maxCharactersReached: boolean = false;\n @State() maxCharactersWarning: boolean = false;\n @State() minCharactersUnattained: boolean = false;\n @State() maxValueExceeded: boolean = false;\n @State() minValueUnattained: boolean = false;\n\n /**\n * @slot clear-button - an ic-button clear component will render as an end adornment to the input.\n * @slot search-submit-button - an ic-button search submit component will render as an end adornment to the input.\n * @slot menu - an ic-menu component will appear below the input.\n */\n\n /**\n * @internal The active element when focus is on the ic-menu items.\n */\n @Prop() ariaActiveDescendant?: string;\n\n /**\n * @internal Used to identify whether inputting any text triggers more predictions\n */\n @Prop() ariaAutocomplete?: IcAriaAutocompleteTypes;\n\n /**\n * @internal Used to identify if the slotted menu is rendered\n */\n @Prop() ariaExpanded: string | undefined;\n\n /**\n * @internal Used to identify any related child component\n */\n @Prop() ariaOwns?: string;\n\n /**\n * The automatic capitalisation of the text value as it is entered/edited by the user.\n * Available options: \"off\", \"none\", \"on\", \"sentences\", \"words\", \"characters\".\n */\n @Prop() autocapitalize = \"off\";\n\n /**\n * The state of autocompletion the browser can apply on the text value.\n */\n @Prop() autocomplete?: IcAutocompleteTypes = \"off\";\n\n /**\n * The state of autocorrection the browser can apply when the user is entering/editing the text value.\n */\n @Prop() autocorrect?: IcAutocorrectStates = \"off\";\n\n /**\n * If `true`, the form control will have input focus when the page loads.\n */\n @Prop() autofocus = false;\n\n /**\n * If `true`, the disabled state will be set.\n */\n @Prop() disabled = false;\n @Watch(\"disabled\")\n watchDisabledHandler(): void {\n removeDisabledFalse(this.disabled, this.el as HTMLElement);\n }\n\n /**\n * Specify whether the text field fills the full width of the container.\n * If `true`, this overrides the --input-width CSS variable.\n */\n @Prop() fullWidth = false;\n\n /**\n * The helper text that will be displayed for additional field guidance.\n */\n @Prop() helperText = \"\";\n\n /**\n * If `true`, the character count which is displayed when `maxCharacters` is set will be visually hidden.\n */\n @Prop() hideCharCount = false;\n\n /**\n * If `true`, the label will be hidden and the required label value will be applied as an aria-label.\n */\n @Prop() hideLabel = false;\n\n /**\n * @internal If `true`, the hidden form input will stop rendering for form submission.\n */\n @Prop() hiddenInput = true;\n\n /**\n * The ID for the input.\n */\n @Prop() inputId = `ic-text-field-input-${inputIds++}`;\n\n /**\n * A hint to the browser for which keyboard to display.\n * Possible values: `\"none\"`, `\"text\"`, `\"tel\"`, `\"url\"`,\n * `\"email\"`, `\"numeric\"`, `\"decimal\"`, and `\"search\"`.\n */\n @Prop() inputmode: IcTextFieldInputModes = \"text\";\n\n /**\n * The label for the input.\n */\n @Prop() label!: string;\n\n /**\n * The maximum number that can be accepted as a value, when `type` is `number` and `rows` is `1`. (NOTE: Ensure to include visual indication of max value in `helperText` or `label`)\n */\n @Prop() max?: string | number;\n\n /**\n * The count of characters in the field. Will display a warning if the bound is reached. (NOTE: If the value of the text field has been set using the `value` prop, it will be truncated to this number of characters)\n */\n @Prop() maxCharacters = 0;\n\n /**\n * The text to display as the warning message when the maximum number of characters (the `maxCharacters` prop value) is reached.\n */\n // prettier-ignore\n @Prop() maxCharactersMessage = `Maximum input is ${this.maxCharacters} characters`;\n\n /**\n * The text to display as the error message when the maximum value (the `max` prop value) has been exceeded.\n */\n @Prop() maxMessage = `Maximum value of ${this.max} exceeded`;\n\n /**\n * The minimum number that can be accepted as a value, when `type` is `number` and `rows` is `1`. (NOTE: Ensure to include visual indication of min value in `helperText` or `label`)\n */\n @Prop() min?: string | number;\n\n /**\n * The minimum number of characters that can be entered in the field.\n */\n @Prop() minCharacters = 0;\n\n /**\n * The text to display as the error message when the minimum number of characters (the `minCharacters` prop value) has not been met.\n */\n // prettier-ignore\n @Prop() minCharactersMessage = `Minimum input is ${this.minCharacters} characters`;\n\n /**\n * The text to display as the error message when the minimum value (the `min` prop value) has not been met.\n */\n @Prop() minMessage = `Minimum value of ${this.min} not met`;\n\n /**\n * The name of the control, which is submitted with the form data.\n */\n @Prop() name = this.inputId;\n\n /**\n * The placeholder value to be displayed.\n */\n @Prop() placeholder = \"\";\n\n /**\n * If `true`, the read only state will be set.\n */\n @Prop({ reflect: true }) readonly = false;\n\n /**\n * If `true`, the input will require a value.\n */\n @Prop() required = false;\n\n /**\n * If `true`, the multiline text area will be resizeable.\n */\n @Prop() resize = false;\n\n /**\n * @internal Used to set the role if not default textbox;\n */\n @Prop() role: string | undefined;\n\n /**\n * The number of rows to transform the text field into a text area with a specific height.\n */\n @Prop() rows = 1;\n\n /**\n * The size of the text field component.\n */\n @Prop() size: IcSizesNoLarge = \"medium\";\n\n /**\n * If `true`, the value of the text field will have its spelling and grammar checked.\n */\n @Prop() spellcheck = false;\n\n /**\n * Sets the theme color to the dark or light theme color. \"inherit\" will set the color based on the system settings or ic-theme component.\n */\n @Prop() theme: IcThemeMode = \"inherit\";\n\n /**\n * @internal If `true`, an ellipsis will be displayed at the end of the value if the value is longer than the container.\n */\n @Prop() truncateValue = false;\n\n /**\n * The type of control to display. The default type is text.\n */\n @Prop() type: IcTextFieldTypes = \"text\";\n\n /**\n * If `true`, the icon in input control will be displayed - only applies when validationStatus ='success'.\n */\n @Prop() validationInline = false;\n\n /**\n * @internal If `true`, the validation will display inline.\n */\n @Prop() validationInlineInternal = false;\n\n /**\n * The validation state - e.g. 'error' | 'warning' | 'success'.\n */\n @Prop() validationStatus: IcInformationStatusOrEmpty = \"\";\n\n /**\n * The text to display as the validation message.\n */\n @Prop() validationText: string = \"\";\n\n /**\n * The amount of time, in milliseconds, to wait to trigger the `icChange` event after each keystroke.\n */\n @Prop() debounce = 0;\n @Watch(\"debounce\")\n private debounceChanged() {\n this.icChange = debounceEvent(this.icChange, this.debounce);\n }\n\n /**\n * The value of the text field.\n */\n @Prop({ reflect: true, mutable: true }) value = \"\";\n @State() initialValue = this.value;\n @Watch(\"value\")\n private watchValueHandler(newValue: string): void {\n let value;\n\n if (this.maxCharacters > 0) {\n value = newValue.substring(0, this.maxCharacters);\n if (value.length < newValue.length) {\n this.maxCharactersWarning = true;\n }\n this.value = value;\n } else {\n value = newValue;\n }\n\n if (this.inputEl && this.inputEl.value !== value) {\n this.inputEl.value = value;\n }\n\n this.getMaxValueExceeded(value);\n\n this.getMaxCharactersReached(value);\n\n this.icChange.emit({ value });\n }\n\n /**\n * @internal Emitted when the validationInlineInternal is `true`\n */\n @Event() getValidationText: EventEmitter<IcValueEventDetail>;\n\n /**\n * Emitted when input loses focus.\n */\n @Event() icBlur: EventEmitter<IcValueEventDetail>;\n\n /**\n * Emitted when the value has changed.\n */\n @Event() icChange: EventEmitter<IcValueEventDetail>;\n\n /**\n * Emitted when input gains focus.\n */\n @Event() icFocus: EventEmitter<IcValueEventDetail>;\n\n /**\n * Emitted when a keyboard input occurred.\n */\n @Event() icInput: EventEmitter<IcValueEventDetail>;\n\n /**\n * Emitted when a keydown event occurred.\n */\n @Event() icKeydown: EventEmitter<{ event: KeyboardEvent }>;\n\n /**\n * Emitted when the textarea variant is scrolled.\n */\n @Event() icScroll: EventEmitter;\n\n connectedCallback(): void {\n this.debounceChanged();\n }\n\n disconnectedCallback(): void {\n removeFormResetListener(this.el as HTMLElement, this.handleFormReset);\n this.hostMutationObserver?.disconnect();\n }\n\n componentWillLoad(): void {\n if (this.value !== this.initialValue) {\n this.watchValueHandler(this.value);\n } else if (this.maxCharacters > 0) {\n this.value = this.value.substring(0, this.maxCharacters);\n }\n\n this.getMaxValueExceeded(this.value);\n this.getMaxCharactersReached(this.value);\n\n this.inheritedAttributes = inheritAttributes(\n this.el as HTMLElement,\n MUTABLE_ATTRIBUTES\n );\n\n if (this.readonly) {\n this.maxValueExceeded = false;\n this.minValueUnattained = false;\n }\n\n addFormResetListener(this.el as HTMLElement, this.handleFormReset);\n\n removeDisabledFalse(this.disabled, this.el as HTMLElement);\n }\n\n componentDidLoad(): void {\n onComponentRequiredPropUndefined(\n [{ prop: this.label, propName: \"label\" }],\n \"Text Field\"\n );\n if (this.validationInlineInternal) {\n this.getValidationText.emit({ value: this.validationText });\n }\n\n this.hostMutationObserver = new MutationObserver(this.hostMutationCallback);\n this.hostMutationObserver.observe(this.el, {\n attributes: true,\n childList: true,\n });\n\n if (this.autofocus && !this.disabled && !this.readonly) {\n this.interval = setInterval(this.checkChildHydration, 50);\n }\n }\n\n private checkChildHydration = () => {\n if (\n this.hideLabel ||\n this.el.shadowRoot\n ?.querySelector(\"ic-typography\")\n ?.classList.contains(\"hydrated\")\n ) {\n this.setFocus();\n clearInterval(this.interval);\n }\n };\n\n @Listen(\"keydown\", {})\n handleKeyDown(ev: KeyboardEvent): void {\n this.icKeydown.emit({ event: ev });\n\n if (!ev.ctrlKey && !IGNORED_KEYBOARD_CHARACTERS.includes(ev.key)) {\n this.maxCharactersWarning = this.maxCharactersReached;\n }\n }\n\n /**\n * Sets focus on the native `input`.\n */\n\n @Method()\n async setFocus(): Promise<void> {\n this.inputEl?.focus();\n }\n\n private getNumberOfCharacters = (value: string) =>\n value !== null && value !== undefined ? value.length : 0;\n\n private getMaxValueExceeded = (value: string) => {\n this.numChars = this.getNumberOfCharacters(value);\n\n if (this.type === \"number\") {\n this.minValueUnattained = !!value && Number(value) < Number(this.min);\n this.maxValueExceeded = Number(value) > Number(this.max);\n }\n };\n\n private getMaxCharactersReached = (value: string) => {\n this.numChars = this.getNumberOfCharacters(value);\n\n this.maxCharactersReached =\n this.maxCharacters > 0 && this.numChars >= this.maxCharacters;\n\n if (this.maxCharactersWarning && !this.maxCharactersReached) {\n this.maxCharactersWarning = false;\n }\n };\n\n private onInput = (ev: Event) => {\n this.value = (ev.target as HTMLInputElement).value;\n this.icInput.emit({ value: this.value });\n };\n\n private onBlur = (ev: Event) => {\n const target = ev.target as HTMLInputElement;\n target.removeEventListener(\"wheel\", this.onWheel);\n const { value } = target;\n this.numChars = value.length;\n this.minCharactersUnattained =\n this.minCharacters > 0 && this.numChars < this.minCharacters;\n this.icBlur.emit({ value });\n };\n\n private onFocus = (ev: Event) => {\n const target = ev.target as HTMLInputElement;\n target.addEventListener(\"wheel\", this.onWheel);\n this.icFocus.emit({ value: target.value });\n };\n\n private onTextAreaScroll = () => {\n this.icScroll.emit();\n };\n\n private onWheel = (ev: WheelEvent) => {\n const target = ev.target as HTMLInputElement;\n if (target.type === \"number\") {\n target.blur();\n setTimeout(() => {\n target.focus();\n }, 0);\n }\n };\n\n private hasStatus = (status: IcInformationStatusOrEmpty) =>\n status !== \"\" && !this.disabled;\n\n private handleFormReset = (): void => {\n this.value = this.initialValue;\n };\n\n // triggered when attributes of host element change\n private hostMutationCallback = (mutationList: MutationRecord[]): void => {\n let forceComponentUpdate = false;\n mutationList.forEach(\n ({ attributeName, type, addedNodes, removedNodes }) => {\n if (attributeName && MUTABLE_ATTRIBUTES.includes(attributeName)) {\n const attribute = this.el.getAttribute(attributeName);\n if (attribute) {\n this.inheritedAttributes[attributeName] = attribute;\n }\n forceComponentUpdate = true;\n } else if (type === \"childList\") {\n forceComponentUpdate = checkSlotInChildMutations(\n addedNodes,\n removedNodes,\n \"icon\"\n );\n }\n }\n );\n if (forceComponentUpdate) {\n forceUpdate(this);\n }\n };\n\n render() {\n const {\n inputId,\n name,\n label,\n required,\n size,\n placeholder,\n helperText,\n hideCharCount,\n rows,\n resize,\n disabled,\n value,\n min,\n max,\n numChars,\n readonly,\n maxCharacters,\n maxCharactersMessage,\n maxCharactersWarning,\n maxCharactersReached,\n maxMessage,\n minCharacters,\n minCharactersMessage,\n minCharactersUnattained,\n minMessage,\n minValueUnattained,\n maxValueExceeded,\n validationStatus,\n validationText,\n validationInline,\n validationInlineInternal,\n spellcheck,\n inputmode,\n fullWidth,\n truncateValue,\n hiddenInput,\n theme,\n hideLabel,\n type,\n autocapitalize,\n ariaActiveDescendant,\n inheritedAttributes,\n ariaExpanded,\n ariaOwns,\n autocomplete,\n role,\n } = this;\n\n const el = this.el as HTMLElement;\n\n const disabledMode = readonly || disabled;\n\n const currentStatus =\n maxValueExceeded ||\n minValueUnattained ||\n minCharactersUnattained ||\n maxCharactersWarning\n ? maxCharactersWarning\n ? IcInformationStatus.Warning\n : IcInformationStatus.Error\n : validationStatus;\n\n const currentValidationText = maxCharactersWarning\n ? maxCharactersMessage\n : maxValueExceeded\n ? maxMessage\n : minValueUnattained\n ? minMessage\n : minCharactersUnattained\n ? minCharactersMessage\n : validationText;\n\n const maxNumChars = readonly ? 0 : maxCharacters;\n const messageAriaLive =\n maxCharactersWarning ||\n maxValueExceeded ||\n minValueUnattained ||\n currentStatus === IcInformationStatus.Error\n ? \"assertive\"\n : \"polite\";\n\n const showStatusText =\n this.hasStatus(currentStatus) &&\n !(currentStatus == IcInformationStatus.Success && validationInline) &&\n !validationInlineInternal;\n\n const multiline = rows > 1;\n\n const charsRemaining = maxNumChars - numChars;\n const hiddenCharCountDescId =\n maxCharacters > 0 ? `${inputId}-char-count-desc` : \"\";\n\n const describedBy = `${hiddenCharCountDescId} ${getInputDescribedByText(\n inputId,\n helperText !== \"\",\n showStatusText\n )}`.trim();\n\n const disabledText = disabledMode && !readonly;\n const showLeftIcon =\n !!this.el.querySelector(`[slot=\"icon\"]`) && !disabledText;\n\n const invalid = `${currentStatus === IcInformationStatus.Error}`;\n\n hiddenInput\n ? renderHiddenInput(this.el as HTMLElement, value, name, disabledMode)\n : removeHiddenInput(this.el as HTMLElement);\n\n return (\n <Host\n class={{\n \"ic-text-field-full-width\": fullWidth,\n \"ic-text-field-disabled\": disabledMode,\n [`ic-theme-${theme}`]: theme !== \"inherit\",\n }}\n >\n <ic-input-container readonly={readonly} disabled={disabledMode}>\n {!hideLabel && (\n <ic-input-label\n for={inputId}\n label={label}\n helperText={helperText}\n required={required}\n disabled={disabledText}\n readonly={readonly}\n ></ic-input-label>\n )}\n\n <ic-input-component-container\n size={size}\n validationStatus={currentStatus}\n multiLine={multiline}\n disabled={disabledMode}\n readonly={readonly}\n validationInline={validationInline}\n fullWidth={fullWidth}\n >\n {showLeftIcon && (\n <span\n class={{\n readonly,\n \"has-value\": this.getNumberOfCharacters(value) > 0,\n }}\n slot=\"left-icon\"\n >\n <slot name=\"icon\" />\n </span>\n )}\n\n {!multiline ? (\n <input\n id={inputId}\n name={name}\n ref={(el) => (this.inputEl = el as HTMLInputElement)}\n type={type}\n min={min}\n max={max}\n value={value}\n class={{\n \"no-left-pad\": !showLeftIcon && readonly,\n readonly,\n \"truncate-value\": truncateValue,\n }}\n placeholder={placeholder ? placeholder : \"\"}\n required={required}\n disabled={disabledMode}\n readonly={readonly}\n onInput={this.onInput}\n onBlur={this.onBlur}\n onFocus={this.onFocus}\n aria-label={label}\n aria-describedby={describedBy}\n aria-invalid={invalid}\n aria-activedescendant={ariaActiveDescendant}\n aria-expanded={ariaExpanded}\n aria-owns={ariaOwns}\n autocomplete={autocomplete}\n autocapitalize={autocapitalize}\n spellcheck={spellcheck}\n inputmode={inputmode}\n role={role}\n maxlength={maxCharactersReached ? maxCharacters : undefined}\n minlength={minCharactersUnattained ? minCharacters : undefined}\n {...inheritedAttributes}\n ></input>\n ) : (\n <textarea\n id={inputId}\n class={{\n \"no-resize\": resize === false || !!readonly,\n \"no-left-pad\": !showLeftIcon && !!readonly,\n readonly: !!readonly,\n }}\n name={name}\n ref={(el) => (this.inputEl = el as HTMLTextAreaElement)}\n value={value}\n rows={rows}\n required={required}\n disabled={disabledMode}\n placeholder={placeholder}\n readonly={readonly}\n onInput={this.onInput}\n onBlur={this.onBlur}\n onFocus={this.onFocus}\n onScroll={this.onTextAreaScroll}\n aria-label={label}\n aria-describedby={describedBy}\n aria-invalid={invalid}\n autocapitalize={autocapitalize}\n spellcheck={spellcheck}\n inputmode={inputmode}\n maxlength={maxCharactersReached ? maxCharacters : undefined}\n minlength={minCharactersUnattained ? minCharacters : undefined}\n {...inheritedAttributes}\n ></textarea>\n )}\n {isSlotUsed(el, \"clear-button\") && (\n <slot name=\"clear-button\"></slot>\n )}\n {isSlotUsed(el, \"search-submit-button\") && (\n <slot name=\"search-submit-button\"></slot>\n )}\n </ic-input-component-container>\n {isSlotUsed(el, \"menu\") && <slot name=\"menu\"></slot>}\n {(!isEmptyString(validationStatus) ||\n !isEmptyString(validationText) ||\n maxNumChars > 0 ||\n maxValueExceeded ||\n maxCharactersWarning ||\n minCharactersUnattained ||\n minValueUnattained) &&\n !validationInlineInternal && (\n <ic-input-validation\n status={\n this.hasStatus(currentStatus) === false ||\n (currentStatus === IcInformationStatus.Success &&\n validationInline) ||\n validationInlineInternal\n ? \"\"\n : currentStatus\n }\n message={showStatusText ? currentValidationText : \"\"}\n ariaLiveMode={messageAriaLive}\n for={inputId}\n fullWidth={fullWidth}\n >\n {!readonly && maxNumChars > 0 && (\n <div slot=\"validation-message-adornment\">\n {!hideCharCount && (\n <ic-typography variant=\"caption\" class=\"char-count-text\">\n <span class=\"char-count\">\n {numChars}/{maxNumChars}\n </span>\n </ic-typography>\n )}\n <span class=\"remaining-char-count-desc\" aria-live=\"polite\">\n {`${charsRemaining} character${\n charsRemaining === 1 ? \"\" : \"s\"\n } remaining.`}\n </span>\n <span hidden={true} id={hiddenCharCountDescId}>\n Field can contain a maximum of {maxNumChars} characters.\n </span>\n </div>\n )}\n </ic-input-validation>\n )}\n </ic-input-container>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
@@ -1,2 +0,0 @@
|
|
1
|
-
import{r as i,c as t,h as e,f as a,H as o,g as n}from"./p-8e4e97b4.js";import{A as s,D as r,g as d,e as l,z as c}from"./p-8242c24f.js";import{C as v}from"./p-3b185c32.js";import{O as h}from"./p-426ec638.js";const g='/*! 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;--navigation-link-colour:var(--ic-brand-text-color)}:host(:focus-within){z-index:var(--ic-z-index-navigation-item)}svg{width:var(--ic-space-xl);fill:var(--ic-brand-text-color)}.svg{margin-left:auto}.chevron-container svg,.chevron-container .svg{width:var(--ic-space-lg);height:var(--ic-space-lg)}.chevron-container{flex-grow:1}:host(.expandable.navigation-item) .link,:host(.expandable.navigation-item) ::slotted(a){padding-right:0}:host(.navigation-item) .link,:host(.navigation-item) ::slotted(a){height:calc(100% - var(--ic-space-xxs));width:-moz-fit-content;width:fit-content;color:var(--navigation-link-colour);display:flex;align-items:center;justify-content:center;padding:0 var(--ic-space-md) var(--ic-space-xxs);text-decoration:none;transition:var(--ic-easing-transition-fast);position:relative;white-space:nowrap}:host(.navigation-item) ::slotted(a){height:100%;font:var(--ic-font-label) !important;letter-spacing:var(--ic-font-letter-spacing-0pt025) !important;padding:0 var(--ic-space-md) !important}:host(.navigation-item-selected) .link::after,:host(.navigation-item-selected) ::slotted(a.active)::after,:host(.navigation-item-top-nav) ::slotted(a.active)::after{content:"";height:0.25rem;width:100%;position:absolute;bottom:0;background-color:var(--ic-top-navigation-theme)}:host(.navigation-item-selected.navigation-item-page-header) ::slotted(a.active)::after,:host(.navigation-item-selected.navigation-item-page-header) .link::after,:host(.navigation-item.navigation-item-page-header) ::slotted(a.active)::after,:host(.navigation-item-top-nav-child) ::slotted(a.active)::after{content:none}:host(.navigation-item-side-menu-selected) .link,:host(.navigation-item-side-menu) ::slotted(a.active),:host(.navigation-item-top-nav-child) ::slotted(a.active){box-shadow:none}:host(.navigation-item) .link:hover:not(:focus){background-color:var(--ic-brand-hover);cursor:pointer}:host(.navigation-item:not(.navigation-item-page-header,.navigation-item-side-menu)) ::slotted(a:hover:not(:focus)){background-color:var(--ic-brand-hover) !important}:host(.navigation-item:not(.navigation-item-top-nav-child,.navigation-item-side-menu,.navigation-item-top-nav-child-selected .navigation-item-side-menu-selected)) .focus-indicator:focus-within{box-shadow:var(--ic-border-focus);border-radius:var(--ic-border-radius)}:host(.navigation-item) .link:focus,:host(.navigation-item) ::slotted(a:focus){box-shadow:var(--ic-border-focus);border-radius:var(--ic-border-radius);outline:var(--ic-hc-focus-outline)}:host(.navigation-item-selected) .link:focus,:host(.navigation-item) ::slotted(a.active:focus){box-shadow:var(--ic-border-focus);border-radius:var(--ic-border-radius);outline:var(--ic-hc-focus-outline)}:host(.navigation-item) .link:active:not(:focus),:host(.navigation-item) ::slotted(a:active:not(:focus)){background-color:var(--ic-brand-active)}:host(.navigation-item-side-menu) .link,:host(.navigation-item-side-menu) ::slotted(a){min-height:2.5rem;height:auto;width:100%;box-sizing:border-box;color:var(--ic-top-navigation-nav-item);--ic-typography-color:var(--ic-top-navigation-nav-item);display:flex;align-items:center;justify-content:flex-start;text-decoration:none;text-wrap:wrap;white-space:normal;transition:box-shadow var(--ic-transition-duration-fast),\n border-radius var(--ic-transition-duration-fast)}:host(.navigation-item-top-nav-child) ::slotted(svg),:host(.navigation-item-side-menu) ::slotted(svg),:host(.navigation-item-page-header) ::slotted(svg){fill:var(--ic-color-text-primary)}:host(.navigation-item-side-menu) ::slotted(a){font:var(--ic-font-body) !important;letter-spacing:var(--ic-font-letter-spacing-0pt005) !important;transition:box-shadow var(--ic-easing-transition-fast),\n background-color var(--ic-easing-transition-fast)}:host(.navigation-item-side-menu) .link:hover:not(:focus){background-color:var(--ic-top-navigation-nav-item-hover)}:host(.navigation-item-side-menu) ::slotted(a:hover:not(:focus)){background-color:var(--ic-top-navigation-nav-item-hover) !important}:host(.navigation-item-side-menu) .focus-indicator:focus-within{box-shadow:none}:host(.navigation-item-side-menu) .link:focus,:host(.navigation-item-side-menu) ::slotted(a:focus){box-shadow:var(--ic-border-focus-inset) !important;width:auto;border-radius:var(--ic-border-radius-inset) !important}:host(.navigation-item-side-menu-selected) .link,:host(.navigation-item-side-menu-selected) ::slotted(a){transition:box-shadow var(--ic-easing-transition-slow),\n background-color var(--ic-easing-transition-slow)}:host(.navigation-item-side-menu-selected) .link:focus,:host(.navigation-item-side-menu) ::slotted(a.active:focus),:host(.navigation-item-top-nav-child) ::slotted(a.active:focus){margin-left:var(--ic-space-xs) !important;padding-left:var(--ic-space-xs) !important}:host(.navigation-item-top-nav-child) .link,:host(.navigation-item-top-nav-child) ::slotted(a){height:2.5rem;width:-moz-fit-content;width:fit-content;min-width:9.063rem;color:var(--ic-top-navigation-nav-item);display:flex;align-items:center;justify-content:flex-start;padding:0 var(--ic-space-md) !important;text-decoration:none;position:relative;transition:box-shadow var(--ic-transition-duration-fast),\n border-radius var(--ic-transition-duration-slow)}:host(.navigation-item-top-nav-child) ::slotted(a){font:var(--ic-font-body) !important;letter-spacing:var(--ic-font-letter-spacing-0pt005) !important}:host(.navigation-item-top-nav-child) .link:hover:not(:focus){background-color:var(--ic-top-navigation-nav-item-hover) !important}:host(.navigation-item-top-nav-child) ::slotted(a:hover):not(:focus){background-color:var(--ic-top-navigation-nav-item-hover) !important}:host(.navigation-item-top-nav-child) .link:focus,:host(.navigation-item-top-nav-child) ::slotted(a:focus){z-index:1;outline:var(--ic-hc-focus-outline);border-radius:var(--ic-border-radius-inset);box-shadow:var(--ic-border-focus-inset);transition:border-radius 0s, box-shadow var(--ic-transition-duration-fast)}:host(.navigation-item-top-nav-child) ::slotted(a.active:focus){box-shadow:var(--ic-border-focus-inset);border-radius:var(--ic-border-radius-inset)}:host(.navigation-item-side-menu) .link:active:not(:focus){background-color:var(--ic-top-navigation-nav-item-pressed)}:host(.navigation-item-top-nav-child) .link:active:not(:focus),:host(.navigation-item-top-nav-child) ::slotted(a:active):not(:focus){outline:var(--ic-hc-focus-outline);background-color:var(--ic-top-navigation-nav-item-pressed)}:host(.navigation-item-top-nav-child) ::slotted(a:active):not(:focus),:host(.navigation-item-side-menu) ::slotted(a:active):not(:focus){background-color:var(--ic-top-navigation-nav-item-pressed) !important}:host(.navigation-item-side-menu-selected) *,:host(.navigation-item-top-nav-child-selected) *,:host(.navigation-item-side-menu) ::slotted(a.active),:host(.navigation-item-top-nav-child) ::slotted(a.active){font-weight:700 !important}:host(.navigation-item-top-nav-child) ::slotted(a.active)::before,:host(.navigation-item-top-nav-child-selected) .link::before,:host(.navigation-item-side-menu-selected) .link::before,:host(.navigation-item-side-menu) ::slotted(a.active)::before,:host(.navigation-item-side-menu-selected) .link:focus::before,:host(.navigation-item-side-menu) ::slotted(a.active:focus)::before{content:"";position:absolute;left:0;width:var(--ic-space-xs);height:inherit;min-height:2.5rem;background-color:var(--ic-top-navigation-nav-item-banner);transition:left 0s}:host(.navigation-item-side-menu-selected) .link::before,:host(.navigation-item-side-menu-selected) .link:focus::before{margin-top:var(--ic-space-xxs)}:host(.navigation-item-top-nav-child-selected) .link:focus{margin-left:var(--ic-space-xs);margin-right:calc(-1 * var(--ic-space-xs));padding-left:var(--ic-space-xs) !important}:host(.navigation-item-top-nav-child-selected) .link:focus::before{left:calc(-1 * var(--ic-space-xs));z-index:1}:host(.navigation-item-side-menu-selected) .link::before,:host(.navigation-item-side-menu) ::slotted(a.active)::before,:host(.navigation-item-side-menu-selected) .link:focus::before,:host(.navigation-item-side-menu) ::slotted(a.active:focus)::before{z-index:1}:host(.navigation-item-side-menu-selected) .link:focus::before,:host(.navigation-item-side-menu) ::slotted(a.active:focus)::before,:host(.navigation-item-top-nav-child) ::slotted(a.active:focus)::before{left:calc(-1 * var(--ic-space-xs))}:host(.navigation-item-side-menu-selected) .link::after{display:none}:host(.navigation-item-side-nav-collapsed) .link{height:100%}:host(.navigation-item-side-nav-collapsed) ::slotted(svg),:host(.navigation-item-side-nav-collapsed-with-label) ::slotted(svg){margin:auto;pointer-events:none}:host(.navigation-item-side-nav-collapsed) .icon,:host(.navigation-item-side-nav-collapsed-with-label) .icon,:host(.navigation-item-side-nav-collapsed-with-label) ic-typography{align-items:center;padding:0;margin:auto 0;width:-moz-fit-content;width:fit-content;pointer-events:none}:host(.navigation-item-side-nav-collapsed-with-label) ic-typography{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:100%;text-align:center}:host(.navigation-item-side-nav-collapsed-with-label) .link,:host(.navigation-item-side-nav-collapsed-with-label) ::slotted(a){display:flex;flex-direction:column;height:-moz-fit-content;height:fit-content;padding:var(--ic-space-xs) !important;gap:var(--ic-space-xxs)}:host(.navigation-item-side-nav.navigation-item-side-nav-collapsed-with-label) .link,:host(.navigation-item-side-nav.navigation-item-side-nav-collapsed-with-label) ::slotted(a){height:auto !important;gap:0;width:auto;padding:var(--ic-space-xs) !important}:host(.navigation-item-side-nav.navigation-item-side-nav-collapsed-with-label) ::slotted(a){display:block;text-align:center}:host(.navigation-item-side-nav.navigation-item-side-nav-collapsed-with-label) .link ic-typography{opacity:1;min-width:-moz-min-content;min-width:min-content}:host(.navigation-item-side-nav-collapsed) svg,:host(.navigation-item-side-nav-collapsed-with-label) svg{display:none}::slotted(svg){fill:var(--ic-brand-text-color);height:var(--ic-space-lg);width:var(--ic-space-lg);margin-left:var(--ic-space-md)}.icon{height:1.5rem;width:var(--ic-space-xxl);margin-left:calc(-1 * var(--ic-space-md));flex:0 1 0%;position:relative}.icon>::slotted(*){margin-left:var(--ic-space-md) !important;margin-right:var(--ic-space-xs)}.inline-badge{margin-left:var(--ic-space-xs)}.badge{margin-left:0}:host(.navigation-item-side-nav-collapsed) .icon>::slotted(*){margin:auto !important}:host(.navigation-item-side-nav) .icon>::slotted(*){margin-right:0}:host(.navigation-item-side-nav) .link,:host(.navigation-item-side-nav) ::slotted(a){height:var(--navigation-item-height, 4rem);min-height:var(--navigation-item-min-height);width:var(--navigation-item-width, auto);justify-content:var(--navigation-item-justify-content);display:flex;gap:var(--ic-space-xs);box-sizing:border-box;color:var(--navigation-item-child-color) !important;text-decoration:none !important;white-space:nowrap;padding:0 var(--ic-space-md);text-wrap:wrap}:host(.navigation-item-side-nav.navigation-item-top-nav-child) .link,:host(.navigation-item-side-nav.navigation-item-top-nav-child) ::slotted(a){height:var(--navigation-item-child-height);width:var(--navigation-group-width);color:var(--navigation-item-child-color) !important;display:flex;gap:0.625rem;box-sizing:border-box;min-width:0;transition:box-shadow var(--ic-easing-transition-fast);text-decoration:none !important;white-space:nowrap}:host(.navigation-item-side-nav.navigation-item-top-nav-child) .link:focus,:host(.navigation-item-side-nav.navigation-item-top-nav-child) ::slotted(a:focus){box-shadow:var(--ic-border-focus-dark)}:host(.navigation-item-side-nav.navigation-item-side-menu) .link:active{background-color:var(--navigation-item-child-active)}:host(.navigation-item-side-nav.navigation-item-top-nav-child) .link:active,:host(.navigation-item-side-nav.navigation-item-top-nav-child) ::slotted(a:active){background-color:var(--navigation-item-child-active)}:host(.navigation-item-side-nav) a.link ic-typography,:host(.navigation-item-side-nav.navigation-item-top-nav-child) a.link ic-typography,:host(.navigation-item-side-nav) div.link ic-typography,:host(.navigation-item-side-nav.navigation-item-top-nav-child) div.link ic-typography,.navigation-item-side-nav-slotted-text{opacity:var(--navigation-item-label-opacity);transition:opacity var(--ic-easing-transition-slow);white-space:wrap;text-overflow:ellipsis;overflow:hidden}:host(.navigation-item-side-nav.navigation-item-selected) .link,:host(.navigation-item-side-nav.navigation-item) ::slotted(a.active){box-shadow:inset 0.313rem 0 0 var(--ic-brand-text-color)}:host(.navigation-item-side-nav.navigation-item-selected) .link::before,:host(.navigation-item-side-nav) ::slotted(a.active)::before{content:"";display:block;position:absolute;inset:0 0 0 0.313rem;border-radius:0.688rem !important;transition:var(--ic-easing-transition-slow)}:host(.navigation-item-side-nav.navigation-item-selected) .link:focus::before,:host(.navigation-item-side-nav) ::slotted(a.active:focus)::before{box-shadow:var(--ic-border-focus-inset)}:host(:not(.navigation-item-side-nav-collapsed).navigation-item-side-nav.navigation-item-side-nav-collapsed-with-label) .link{opacity:var(--navigation-item-label-opacity);height:auto}:host(.navigation-item-top-nav-child.navigation-item-side-nav-collapsed-with-label) .link,:host(.navigation-item-top-nav-child.navigation-item-side-nav-collapsed-with-label) ::slotted(a){min-width:var(--navigation-group-item-min-width);padding:var(--ic-space-xs) !important;height:auto;gap:0}:host(.navigation-item-top-nav-child.navigation-item-side-nav-collapsed-with-label) ::slotted(a){display:block}:host(.navigation-item-side-nav.navigation-item-selected) .link::after,:host(.navigation-item-side-nav) ::slotted(a.active)::after{display:none}:host(.navigation-item-side-nav.navigation-item) .link:focus,:host(.navigation-item-side-nav.navigation-item) ::slotted(a:focus){box-shadow:var(--ic-border-focus-inset);border-radius:var(--ic-border-radius-inset);background-color:transparent}:host(.navigation-item-side-nav.navigation-item-selected) .link:focus,:host(.navigation-item-side-nav) ::slotted(a.active:focus){margin:0 auto;box-shadow:inset 0.313rem 0 0 var(--ic-brand-text-color);border-radius:0}:host(.navigation-item-side-nav.navigation-item) .link:hover:not(:focus){background-color:var(--ic-brand-hover) !important}:host(.navigation-item-page-header).link,:host(.navigation-item-page-header) a,:host(.navigation-item-page-header) ::slotted(a){height:2.5rem !important;color:var(--ic-color-text-primary) !important;transition:all var(--ic-easing-transition-fast) !important;box-shadow:rgba(23 89 188 / 0%) !important}:host(.navigation-item-page-header.navigation-item-selected) .link::after,:host(.navigation-item-page-header) ::slotted(a.active)::after{content:" " !important;position:absolute;bottom:0;left:0;right:0;height:var(--ic-space-xxs);background-color:var(--ic-action-default) !important}:host(.navigation-item-page-header) .link:hover,:host(.navigation-item-page-header) ::slotted(.link:hover),:host(.navigation-item-page-header) ::slotted(a:hover),:host(.navigation-item-page-header) .link:hover:not(:focus){background-color:var(--ic-action-default-bg-hover) !important;cursor:pointer}:host(.navigation-item-page-header) .link:focus,:host(.navigation-item-page-header) ::slotted(a:focus){box-shadow:var(--ic-border-focus)}:host(.navigation-item-page-header) .link:active,:host(.navigation-item-page-header) ::slotted(a:active){background-color:var(--ic-action-default-bg-pressed) !important}:host(.navigation-item-page-header.navigation-item-selected) .link:focus::after,:host(.navigation-item-page-header) ::slotted(a.active:focus)::after{border-bottom-left-radius:var(--ic-border-radius);border-bottom-right-radius:var(--ic-border-radius)}:host(.navigation-item-page-header.navigation-item-selected.with-transition) .link,:host(.navigation-item-page-header.navigation-item-selected.with-transition) ::slotted(a.active){transition:all var(--ic-easing-transition-fast),\n border-color var(--ic-transition-duration-fast)}:host(.navigation-item-page-header) ::slotted(a.active)::before,:host(.navigation-item-page-header) ::slotted(a.active:focus)::before,:host(.navigation-item-page-header.navigation-item-selected) .link:focus::before{display:none}.open-in-new-icon{flex:1}.open-in-new-icon svg{margin-top:var(--ic-space-xxs);padding-left:var(--ic-space-xs)}:host(.navigation-item-side-nav) .open-in-new-icon{margin-left:calc(-1 * var(--ic-space-xs))}:host(.navigation-item-top-nav) .open-in-new-icon svg,:host(.navigation-item-page-header) .open-in-new-icon svg,:host(.navigation-item-side-nav) .open-in-new-icon svg{height:0.875rem;width:0.875rem}:host(.navigation-item-side-menu) .open-in-new-icon svg,:host(.navigation-item-top-nav-child) .open-in-new-icon svg{height:var(--ic-space-md);width:var(--ic-space-md)}:host(.navigation-item-page-header) .open-in-new-icon svg,:host(.navigation-item-top-nav-child) .open-in-new-icon svg,:host(.navigation-item-side-menu) .open-in-new-icon svg{fill:var(--ic-color-text-primary)}@media (forced-colors: active){.open-in-new-icon svg{fill:currentcolor}}';const m=g;const p=class{constructor(o){i(this,o);this.childBlur=t(this,"childBlur",7);this.navItemClicked=t(this,"navItemClicked",7);this.isInitialRender=true;this.hostMutationObserver=null;this.ANIMATION_DURATION=parseInt(s("--ic-transition-duration-slow"))||0;this.ARIA_LABEL_STRING="aria-label";this.deviceSize=r.XL;this.focusStyle=d();this.inTopNavSideMenu=false;this.isSideNavMobile=false;this.isTopNavChild=false;this.sideNavExpanded=false;this.ariaLabel="";this.collapsedIconLabel=false;this.displayNavigationTooltip=false;this.download=false;this.expandable=false;this.href="";this.selected=false;this.theme="inherit";this.displayDefaultNavigationItem=(i,t,a,o,n,s,r)=>{const d=this.isTopNavChild||this.inTopNavSideMenu?"body":"label";const l=this.expandable&&e("div",{class:{svg:true},innerHTML:v});const c=this.el.querySelector('[slot="badge"]');const g=c&&e("div",{class:c.getAttribute("position")==="inline"||this.inTopNavSideMenu?"inline-badge":"badge"},e("slot",{name:"badge"}));const m=this.el.querySelector('[slot="icon"]')&&e("div",{class:"icon"},e("slot",{name:"icon"}),this.navigationType==="side"&&g);if(i!==""){return e("a",{href:i,target:a,rel:o,hreflang:t,referrerPolicy:n,download:s!==false?s:null,class:"link",ref:i=>this.itemEl=i,part:"link","aria-label":this.ariaLabel?this.ariaLabel:null},m,e("ic-typography",{variant:d},r),a==="_blank"&&e("span",{class:"open-in-new-icon",innerHTML:h}),g,e("div",{class:"chevron-container"},l))}return e("div",{tabindex:"0",class:"link",ref:i=>this.itemEl=i},m,e("ic-typography",{variant:d},r),l,g)};this.topNavResizedHandler=({detail:i})=>{var t;const{size:e}=i;if(e!==this.deviceSize){this.deviceSize=e;this.inTopNavSideMenu=e<=(((t=this.parentEl)===null||t===void 0?void 0:t.customMobileBreakpoint)||r.L)}};this.sideNavExpandHandler=({detail:i})=>{const{sideNavExpanded:t,sideNavMobile:e}=i;this.sideNavExpanded=t;this.isSideNavMobile=e;this.sideNavToggleTooltip(!(t||e))};this.handleBlur=({relatedTarget:i})=>{if(i===null||i.tagName!=="IC-NAVIGATION-ITEM"){this.childBlur.emit()}};this.handleClick=()=>{this.navItemClicked.emit()};this.hostMutationCallback=i=>{let t=false;i.forEach((({attributeName:i})=>{if(i){const e=this.el.getAttribute(i);if(e&&i===this.ARIA_LABEL_STRING){this.ariaLabel=e;t=true}}}));if(t){a(this)}};this.generateTooltipLabel=()=>{if(this.label){return this.label}if(this.navigationSlot){return this.navigationSlot.textContent}if(this.el.children[0]){return this.el.children[0].textContent}return""};this.renderNavigationItemContent=()=>{if(this.label){return this.displayDefaultNavigationItem(this.href,this.hreflang,this.target,this.rel,this.referrerpolicy,this.download,this.label)}if(this.navigationSlot){return e("slot",{name:"navigation-item"})}return e("slot",null)};this.sideNavToggleTooltip=i=>{var t;const e=(t=this.el.shadowRoot)===null||t===void 0?void 0:t.querySelector("ic-tooltip");const a="tooltip-navigation-item-side-nav-collapsed";let o;if(e){if(i){e.displayTooltip(false);o=setTimeout((()=>{e.classList.add(a)}),this.ANIMATION_DURATION)}else{clearTimeout(o);e.classList.remove(a)}}}}disconnectedCallback(){var i,t,e;if(this.navigationType==="side"){(i=this.parentEl)===null||i===void 0?void 0:i.removeEventListener("icSideNavExpanded",this.sideNavExpandHandler)}else if(this.navigationType==="top"){(t=this.parentEl)===null||t===void 0?void 0:t.removeEventListener("icTopNavResized",this.topNavResizedHandler)}(e=this.hostMutationObserver)===null||e===void 0?void 0:e.disconnect()}componentWillLoad(){var i,t,e,a,o,n;const{navType:s,parent:r}=c(this.el);this.navigationType=s;this.parentEl=r;this.deviceSize=l();this.sideNavExpanded=((i=this.parentEl)===null||i===void 0?void 0:i.classList.contains("sm-expanded"))||((t=this.parentEl)===null||t===void 0?void 0:t.classList.contains("xs-menu-open"))||false;if(this.navigationType==="side"){(e=this.parentEl)===null||e===void 0?void 0:e.addEventListener("icSideNavExpanded",this.sideNavExpandHandler)}else if(this.navigationType==="top"){(a=this.parentEl)===null||a===void 0?void 0:a.addEventListener("icTopNavResized",this.topNavResizedHandler);if(((o=this.el.parentElement)===null||o===void 0?void 0:o.tagName)==="IC-NAVIGATION-GROUP")this.isTopNavChild=true;if(this.deviceSize<=this.parentEl.customMobileBreakpoint)this.inTopNavSideMenu=true}this.navigationSlot=this.el.querySelector('[slot="navigation-item"]');if(this.navigationSlot){this.navigationSlot.ariaLabel=((n=this.navigationSlot.textContent)===null||n===void 0?void 0:n.trim())||null}if(this.el.hasAttribute(this.ARIA_LABEL_STRING)){this.ariaLabel=this.el.getAttribute(this.ARIA_LABEL_STRING)||""}}componentDidLoad(){this.hostMutationObserver=new MutationObserver(this.hostMutationCallback);this.hostMutationObserver.observe(this.el,{attributes:true})}componentDidUpdate(){this.isInitialRender=false}brandChangeHandler({detail:i}){this.focusStyle=i.mode}async setFocus(){var i;this.itemEl?this.itemEl.focus():(i=this.el.querySelector("a"))===null||i===void 0?void 0:i.focus()}render(){const{inTopNavSideMenu:i,isTopNavChild:t,selected:a}=this;return e(o,{key:"f20ee76495a75e8794e451e27b92f5545d06212c",class:{["navigation-item"]:true,["navigation-item-top-nav"]:!i&&this.navigationType==="top",["navigation-item-top-nav-child-selected"]:t&&!i&&!!a,[this.focusStyle]:!i&&!t||this.navigationType==="side"&&t,["navigation-item-selected"]:!t&&!!a,["navigation-item-side-menu"]:i,["navigation-item-side-menu-selected"]:i&&!!a,["navigation-item-top-nav-child"]:t&&!i,["navigation-item-page-header"]:this.navigationType==="page-header",["with-transition"]:!this.isInitialRender,["navigation-item-side-nav"]:this.navigationType==="side",["navigation-item-side-nav-collapsed"]:(!this.sideNavExpanded||!!this.displayNavigationTooltip)&&this.navigationType==="side",["navigation-item-side-nav-collapsed-with-label"]:!this.sideNavExpanded&&this.navigationType==="side"&&!!this.collapsedIconLabel&&!this.isSideNavMobile,["expandable"]:!!this.expandable,[`ic-theme-${this.theme}`]:this.theme!=="inherit"},onBlur:t&&!i?this.handleBlur:null,onClick:this.handleClick,"aria-current":a?"page":null,role:"listitem"},e("ic-tooltip",{key:"6b1e5e2b20aa01cfea5dde82a27e93bf1c19cd3a",label:this.generateTooltipLabel()||"",target:"navigation-item",placement:"right",class:{["tooltip-navigation-item"]:true,["tooltip-navigation-item-side-nav-collapsed"]:!!this.displayNavigationTooltip&&this.navigationType==="side",["tooltip-long-label-navigation-item-side-nav-expanded"]:this.el.hasAttribute("[display-navigation-tooltip = 'true']")}},this.renderNavigationItemContent()))}static get delegatesFocus(){return true}get el(){return n(this)}};p.style=m;export{p as ic_navigation_item};
|
2
|
-
//# sourceMappingURL=p-c45023b7.entry.js.map
|