@ukic/web-components 2.12.0 → 2.14.0
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/cjs/core.cjs.js +1 -1
- package/dist/cjs/{helpers-56e80cc9.js → helpers-d52cddc1.js} +45 -4
- package/dist/cjs/helpers-d52cddc1.js.map +1 -0
- package/dist/cjs/ic-accordion-group.cjs.entry.js +6 -2
- package/dist/cjs/ic-accordion-group.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-accordion.cjs.entry.js +1 -1
- package/dist/cjs/ic-alert.cjs.entry.js +2 -2
- package/dist/cjs/ic-alert.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-back-to-top.cjs.entry.js +1 -1
- package/dist/cjs/ic-badge.cjs.entry.js +4 -3
- package/dist/cjs/ic-badge.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-breadcrumb-group.cjs.entry.js +1 -1
- package/dist/cjs/ic-breadcrumb.cjs.entry.js +1 -1
- package/dist/cjs/ic-button_3.cjs.entry.js +34 -10
- package/dist/cjs/ic-button_3.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-card.cjs.entry.js +7 -7
- package/dist/cjs/ic-card.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-checkbox-group.cjs.entry.js +1 -1
- package/dist/cjs/ic-checkbox.cjs.entry.js +1 -1
- package/dist/cjs/ic-chip.cjs.entry.js +1 -1
- package/dist/cjs/ic-data-entity.cjs.entry.js +3 -6
- package/dist/cjs/ic-data-entity.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-data-row.cjs.entry.js +21 -35
- package/dist/cjs/ic-data-row.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-dialog.cjs.entry.js +4 -2
- package/dist/cjs/ic-dialog.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-divider.cjs.entry.js +1 -1
- package/dist/cjs/ic-empty-state.cjs.entry.js +1 -1
- package/dist/cjs/ic-footer-link-group.cjs.entry.js +1 -1
- package/dist/cjs/ic-footer-link.cjs.entry.js +1 -1
- package/dist/cjs/ic-footer.cjs.entry.js +1 -1
- package/dist/cjs/ic-hero.cjs.entry.js +1 -1
- package/dist/cjs/ic-horizontal-scroll.cjs.entry.js +1 -1
- package/dist/cjs/ic-input-component-container_3.cjs.entry.js +12 -10
- package/dist/cjs/ic-input-component-container_3.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-input-label_2.cjs.entry.js +1 -1
- package/dist/cjs/ic-link.cjs.entry.js +1 -1
- package/dist/cjs/ic-menu-group.cjs.entry.js +1 -1
- package/dist/cjs/ic-menu-item.cjs.entry.js +1 -1
- package/dist/cjs/ic-navigation-button.cjs.entry.js +1 -1
- package/dist/cjs/ic-navigation-group.cjs.entry.js +1 -1
- package/dist/cjs/ic-navigation-item.cjs.entry.js +1 -1
- package/dist/cjs/ic-navigation-menu.cjs.entry.js +1 -1
- package/dist/cjs/ic-page-header.cjs.entry.js +1 -1
- package/dist/cjs/ic-pagination-item.cjs.entry.js +1 -1
- package/dist/cjs/ic-pagination.cjs.entry.js +1 -1
- package/dist/cjs/ic-popover-menu.cjs.entry.js +1 -1
- package/dist/cjs/ic-popover-menu.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-radio-group.cjs.entry.js +1 -1
- package/dist/cjs/ic-radio-group.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-radio-option.cjs.entry.js +1 -1
- package/dist/cjs/ic-search-bar.cjs.entry.js +1 -1
- package/dist/cjs/ic-search-bar.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-select.cjs.entry.js +21 -13
- package/dist/cjs/ic-select.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-side-navigation.cjs.entry.js +1 -5
- package/dist/cjs/ic-side-navigation.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-status-tag.cjs.entry.js +1 -1
- package/dist/cjs/ic-step.cjs.entry.js +1 -1
- package/dist/cjs/ic-stepper.cjs.entry.js +1 -1
- package/dist/cjs/ic-switch.cjs.entry.js +1 -1
- package/dist/cjs/ic-tab-group.cjs.entry.js +1 -1
- package/dist/cjs/ic-tab-panel.cjs.entry.js +1 -1
- package/dist/cjs/ic-tab.cjs.entry.js +1 -1
- package/dist/cjs/ic-text-field.cjs.entry.js +1 -1
- package/dist/cjs/ic-theme.cjs.entry.js +1 -1
- package/dist/cjs/ic-toast.cjs.entry.js +1 -1
- package/dist/cjs/ic-toggle-button-group.cjs.entry.js +184 -0
- package/dist/cjs/ic-toggle-button-group.cjs.entry.js.map +1 -0
- package/dist/cjs/ic-toggle-button.cjs.entry.js +6 -3
- package/dist/cjs/ic-toggle-button.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-top-navigation.cjs.entry.js +1 -1
- package/dist/cjs/ic-typography.cjs.entry.js +1 -1
- package/dist/cjs/index-f982899d.js +4 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/types-dc22e301.js.map +1 -1
- package/dist/collection/collection-manifest.json +2 -1
- package/dist/collection/components/ic-accordion-group/ic-accordion-group.js +24 -2
- package/dist/collection/components/ic-accordion-group/ic-accordion-group.js.map +1 -1
- package/dist/collection/components/ic-alert/ic-alert.js +1 -1
- package/dist/collection/components/ic-alert/ic-alert.js.map +1 -1
- package/dist/collection/components/ic-badge/ic-badge.js +3 -2
- package/dist/collection/components/ic-badge/ic-badge.js.map +1 -1
- package/dist/collection/components/ic-badge/test/basic/ic-badge.spec.js +7 -0
- package/dist/collection/components/ic-badge/test/basic/ic-badge.spec.js.map +1 -1
- package/dist/collection/components/ic-button/ic-button.css +227 -35
- package/dist/collection/components/ic-button/ic-button.js +144 -8
- package/dist/collection/components/ic-button/ic-button.js.map +1 -1
- package/dist/collection/components/ic-button/test/basic/ic-button.spec.js +6 -5
- package/dist/collection/components/ic-button/test/basic/ic-button.spec.js.map +1 -1
- package/dist/collection/components/ic-card/ic-card.css +44 -0
- package/dist/collection/components/ic-card/ic-card.js +8 -8
- package/dist/collection/components/ic-card/ic-card.js.map +1 -1
- package/dist/collection/components/ic-data-entity/ic-data-entity.js +3 -6
- package/dist/collection/components/ic-data-entity/ic-data-entity.js.map +1 -1
- package/dist/collection/components/ic-data-row/ic-data-row.js +20 -34
- package/dist/collection/components/ic-data-row/ic-data-row.js.map +1 -1
- package/dist/collection/components/ic-dialog/ic-dialog.css +1 -1
- package/dist/collection/components/ic-dialog/ic-dialog.js +20 -0
- package/dist/collection/components/ic-dialog/ic-dialog.js.map +1 -1
- package/dist/collection/components/ic-dialog/test/basic/ic-dialog.spec.js +8 -0
- package/dist/collection/components/ic-dialog/test/basic/ic-dialog.spec.js.map +1 -1
- package/dist/collection/components/ic-input-component-container/ic-input-component-container.css +4 -0
- package/dist/collection/components/ic-input-component-container/ic-input-component-container.js +9 -8
- package/dist/collection/components/ic-input-component-container/ic-input-component-container.js.map +1 -1
- package/dist/collection/components/ic-input-component-container/test/basic/ic-input-component-container.spec.js +8 -8
- package/dist/collection/components/ic-input-component-container/test/basic/ic-input-component-container.spec.js.map +1 -1
- package/dist/collection/components/ic-loading-indicator/test/basic/ic-loading-indicator.spec.js +7 -0
- package/dist/collection/components/ic-loading-indicator/test/basic/ic-loading-indicator.spec.js.map +1 -1
- package/dist/collection/components/ic-menu/ic-menu.css +13 -7
- package/dist/collection/components/ic-menu/ic-menu.js +8 -7
- package/dist/collection/components/ic-menu/ic-menu.js.map +1 -1
- package/dist/collection/components/ic-popover-menu/ic-popover-menu.js +1 -1
- package/dist/collection/components/ic-popover-menu/ic-popover-menu.js.map +1 -1
- package/dist/collection/components/ic-radio-group/ic-radio-group.js.map +1 -1
- package/dist/collection/components/ic-search-bar/ic-search-bar.js +1 -1
- package/dist/collection/components/ic-search-bar/ic-search-bar.js.map +1 -1
- package/dist/collection/components/ic-select/ic-select.js +54 -17
- package/dist/collection/components/ic-select/ic-select.js.map +1 -1
- package/dist/collection/components/ic-select/test/basic/ic-select.spec.js +23 -1
- package/dist/collection/components/ic-select/test/basic/ic-select.spec.js.map +1 -1
- package/dist/collection/components/ic-side-navigation/ic-side-navigation.js +0 -4
- package/dist/collection/components/ic-side-navigation/ic-side-navigation.js.map +1 -1
- package/dist/collection/components/ic-toggle-button/ic-toggle-button.css +62 -2
- package/dist/collection/components/ic-toggle-button/ic-toggle-button.js +4 -1
- 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.css +516 -0
- package/dist/collection/components/ic-toggle-button-group/ic-toggle-button-group.js +431 -0
- package/dist/collection/components/ic-toggle-button-group/ic-toggle-button-group.js.map +1 -0
- package/dist/collection/components/ic-toggle-button-group/ic-toggle-button-group.types.js +2 -0
- package/dist/collection/components/ic-toggle-button-group/ic-toggle-button-group.types.js.map +1 -0
- package/dist/collection/components/ic-toggle-button-group/test/ic-toggle-button-group.spec.js +150 -0
- package/dist/collection/components/ic-toggle-button-group/test/ic-toggle-button-group.spec.js.map +1 -0
- package/dist/collection/components/ic-tooltip/ic-tooltip.js +1 -1
- package/dist/collection/components/ic-tooltip/ic-tooltip.js.map +1 -1
- package/dist/collection/utils/helpers.js +46 -3
- package/dist/collection/utils/helpers.js.map +1 -1
- package/dist/collection/utils/types.js.map +1 -1
- package/dist/components/helpers.js +44 -4
- package/dist/components/helpers.js.map +1 -1
- package/dist/components/ic-accordion-group.js +7 -2
- package/dist/components/ic-accordion-group.js.map +1 -1
- package/dist/components/ic-alert2.js +1 -1
- package/dist/components/ic-alert2.js.map +1 -1
- package/dist/components/ic-back-to-top.js +1 -1
- package/dist/components/ic-badge.js +4 -3
- package/dist/components/ic-badge.js.map +1 -1
- package/dist/components/ic-breadcrumb-group.js +1 -1
- package/dist/components/ic-breadcrumb2.js +1 -1
- package/dist/components/ic-button2.js +38 -9
- package/dist/components/ic-button2.js.map +1 -1
- package/dist/components/ic-card.js +8 -20
- package/dist/components/ic-card.js.map +1 -1
- package/dist/components/ic-checkbox-group.js +1 -1
- package/dist/components/ic-checkbox.js +1 -1
- package/dist/components/ic-chip.js +1 -1
- package/dist/components/ic-data-entity.js +3 -6
- package/dist/components/ic-data-entity.js.map +1 -1
- package/dist/components/ic-data-row.js +21 -35
- package/dist/components/ic-data-row.js.map +1 -1
- package/dist/components/ic-dialog.js +5 -2
- package/dist/components/ic-dialog.js.map +1 -1
- package/dist/components/ic-divider2.js +1 -1
- package/dist/components/ic-footer-link-group.js +1 -1
- package/dist/components/ic-footer-link.js +1 -1
- package/dist/components/ic-footer.js +1 -1
- package/dist/components/ic-hero.js +1 -1
- package/dist/components/ic-horizontal-scroll2.js +1 -1
- package/dist/components/ic-input-component-container2.js +7 -6
- package/dist/components/ic-input-component-container2.js.map +1 -1
- package/dist/components/ic-input-label2.js +1 -1
- package/dist/components/ic-input-validation2.js +1 -1
- package/dist/components/ic-loading-indicator2.js +1 -1
- package/dist/components/ic-menu-group.js +1 -1
- package/dist/components/ic-menu-item2.js +1 -1
- package/dist/components/ic-menu2.js +5 -4
- package/dist/components/ic-menu2.js.map +1 -1
- package/dist/components/ic-navigation-button.js +1 -1
- package/dist/components/ic-navigation-group.js +1 -1
- package/dist/components/ic-navigation-item.js +1 -1
- package/dist/components/ic-navigation-menu2.js +1 -1
- package/dist/components/ic-page-header.js +1 -1
- package/dist/components/ic-pagination-item2.js +1 -1
- package/dist/components/ic-pagination.js +1 -1
- package/dist/components/ic-popover-menu.js +2 -2
- package/dist/components/ic-popover-menu.js.map +1 -1
- package/dist/components/ic-radio-group.js +1 -1
- package/dist/components/ic-radio-group.js.map +1 -1
- package/dist/components/ic-radio-option.js +1 -1
- package/dist/components/ic-search-bar.js +1 -1
- package/dist/components/ic-search-bar.js.map +1 -1
- package/dist/components/ic-select.js +23 -14
- package/dist/components/ic-select.js.map +1 -1
- package/dist/components/ic-side-navigation.js +1 -5
- package/dist/components/ic-side-navigation.js.map +1 -1
- package/dist/components/ic-step.js +1 -1
- package/dist/components/ic-stepper.js +1 -1
- package/dist/components/ic-switch.js +1 -1
- package/dist/components/ic-tab-panel.js +1 -1
- package/dist/components/ic-tab.js +1 -1
- package/dist/components/ic-text-field2.js +1 -1
- package/dist/components/ic-theme.js +1 -1
- package/dist/components/ic-toast.js +1 -1
- package/dist/components/ic-toggle-button-group.d.ts +11 -0
- package/dist/components/ic-toggle-button-group.js +210 -0
- package/dist/components/ic-toggle-button-group.js.map +1 -0
- package/dist/components/ic-toggle-button.js +6 -3
- package/dist/components/ic-toggle-button.js.map +1 -1
- package/dist/components/ic-tooltip2.js +1 -1
- package/dist/components/ic-tooltip2.js.map +1 -1
- package/dist/components/ic-top-navigation.js +1 -1
- package/dist/components/types.js.map +1 -1
- package/dist/core/core.css +1 -1
- package/dist/core/core.esm.js +1 -1
- package/dist/core/core.esm.js.map +1 -1
- package/dist/core/{p-19c28c65.entry.js → p-0038a8fd.entry.js} +2 -2
- package/dist/core/{p-19c28c65.entry.js.map → p-0038a8fd.entry.js.map} +1 -1
- package/dist/core/{p-de87d585.entry.js → p-04506779.entry.js} +2 -2
- package/dist/core/p-0d0070b3.entry.js +2 -0
- package/dist/core/p-0d0070b3.entry.js.map +1 -0
- package/dist/core/{p-c786d62f.entry.js → p-0e2628eb.entry.js} +2 -2
- package/dist/core/p-0e2628eb.entry.js.map +1 -0
- package/dist/core/{p-59c4bc0a.entry.js → p-1183031f.entry.js} +2 -2
- package/dist/core/p-1183031f.entry.js.map +1 -0
- package/dist/core/{p-5e6ad4a5.entry.js → p-123b9306.entry.js} +2 -2
- package/dist/core/{p-4421203e.entry.js → p-166861e8.entry.js} +2 -2
- package/dist/core/p-166861e8.entry.js.map +1 -0
- package/dist/core/{p-8be3ec3d.entry.js → p-1ce0d16e.entry.js} +2 -2
- package/dist/core/{p-9184e385.entry.js → p-1d352487.entry.js} +2 -2
- package/dist/core/{p-c75d6022.entry.js → p-210412e4.entry.js} +2 -2
- package/dist/core/{p-42c0e318.entry.js → p-22a682e8.entry.js} +2 -2
- package/dist/core/{p-357eaebe.entry.js → p-2680b736.entry.js} +2 -2
- package/dist/core/p-2680b736.entry.js.map +1 -0
- package/dist/core/p-26b7b18f.js.map +1 -1
- package/dist/core/{p-525323ab.entry.js → p-296b7d74.entry.js} +2 -2
- package/dist/core/{p-26334b3a.entry.js → p-2f462ec5.entry.js} +2 -2
- package/dist/core/{p-8c2322a9.entry.js → p-35b8923f.entry.js} +2 -2
- package/dist/core/{p-003c44bd.entry.js → p-4641518f.entry.js} +2 -2
- package/dist/core/{p-8a66cab4.entry.js → p-46ecc4c5.entry.js} +2 -2
- package/dist/core/{p-32a480d5.entry.js → p-47a9dca9.entry.js} +2 -2
- package/dist/core/{p-32a480d5.entry.js.map → p-47a9dca9.entry.js.map} +1 -1
- package/dist/core/p-47d39ce7.entry.js +2 -0
- package/dist/core/p-47d39ce7.entry.js.map +1 -0
- package/dist/core/{p-38bf02aa.entry.js → p-4ce5abd7.entry.js} +2 -2
- package/dist/core/p-53f2fc84.js +2 -0
- package/dist/core/p-53f2fc84.js.map +1 -0
- package/dist/core/{p-b74f92b6.entry.js → p-5603eec3.entry.js} +2 -2
- package/dist/core/{p-d3e54a29.entry.js → p-5e729e99.entry.js} +2 -2
- package/dist/core/p-5e729e99.entry.js.map +1 -0
- package/dist/core/{p-bf93455b.entry.js → p-64705a03.entry.js} +2 -2
- package/dist/core/{p-783c2ced.entry.js → p-6a9ddb8a.entry.js} +2 -2
- package/dist/core/p-6fae929c.entry.js +2 -0
- package/dist/core/p-6fae929c.entry.js.map +1 -0
- package/dist/core/{p-b7a2e604.entry.js → p-7438ab1f.entry.js} +2 -2
- package/dist/core/p-7438ab1f.entry.js.map +1 -0
- package/dist/core/{p-2e7f22af.entry.js → p-7606c930.entry.js} +2 -2
- package/dist/core/p-76ee6107.entry.js +2 -0
- package/dist/core/p-76ee6107.entry.js.map +1 -0
- package/dist/core/{p-3f07c471.entry.js → p-7b0397ea.entry.js} +2 -2
- package/dist/core/{p-9808f7c9.entry.js → p-80c3424f.entry.js} +2 -2
- package/dist/core/{p-3c752bca.entry.js → p-8aa9aa25.entry.js} +2 -2
- package/dist/core/p-916f4265.entry.js +2 -0
- package/dist/core/p-916f4265.entry.js.map +1 -0
- package/dist/core/{p-8f97463f.entry.js → p-91768ddf.entry.js} +2 -2
- package/dist/core/{p-171e25c9.entry.js → p-95d6f3ed.entry.js} +2 -2
- package/dist/core/{p-0a0b748c.entry.js → p-9c18f048.entry.js} +2 -2
- package/dist/core/{p-c7a08024.entry.js → p-a4e7d123.entry.js} +2 -2
- package/dist/core/{p-049bf5e3.entry.js → p-a98f57cf.entry.js} +2 -2
- package/dist/core/{p-4f8b7aa3.entry.js → p-a9e1966f.entry.js} +2 -2
- package/dist/core/{p-bb1a0018.entry.js → p-aa878a3c.entry.js} +2 -2
- package/dist/core/{p-7c724f2c.entry.js → p-b781b691.entry.js} +2 -2
- package/dist/core/{p-6bbe0550.entry.js → p-b98ce745.entry.js} +2 -2
- package/dist/core/{p-e4d827d4.entry.js → p-bc7f99b8.entry.js} +2 -2
- package/dist/core/p-bc7f99b8.entry.js.map +1 -0
- package/dist/core/{p-23980b58.entry.js → p-c053230d.entry.js} +2 -2
- package/dist/core/p-c053230d.entry.js.map +1 -0
- package/dist/core/{p-0d2eb765.entry.js → p-c2789113.entry.js} +2 -2
- package/dist/core/{p-330e1439.entry.js → p-c7c2aa3c.entry.js} +2 -2
- package/dist/core/{p-0713230f.entry.js → p-d319ddce.entry.js} +2 -2
- package/dist/core/{p-1e809ecd.entry.js → p-d5f721ca.entry.js} +2 -2
- package/dist/core/{p-0ee13da0.entry.js → p-d9329191.entry.js} +2 -2
- package/dist/core/{p-bb41b637.entry.js → p-dbbea7fa.entry.js} +2 -2
- package/dist/core/p-dbbea7fa.entry.js.map +1 -0
- package/dist/core/{p-4f1792a6.entry.js → p-e4863c93.entry.js} +2 -2
- package/dist/core/{p-29b812c0.entry.js → p-e68e31ec.entry.js} +2 -2
- package/dist/core/{p-eb2d06c1.entry.js → p-fbcb77a3.entry.js} +2 -2
- package/dist/core/{p-9ee138e7.entry.js → p-fce3e1aa.entry.js} +2 -2
- package/dist/core/{p-8146336b.entry.js → p-fea1d095.entry.js} +2 -2
- package/dist/esm/core.js +1 -1
- package/dist/esm/{helpers-821dcdf2.js → helpers-f1ca9908.js} +45 -5
- package/dist/esm/helpers-f1ca9908.js.map +1 -0
- package/dist/esm/ic-accordion-group.entry.js +6 -2
- package/dist/esm/ic-accordion-group.entry.js.map +1 -1
- package/dist/esm/ic-accordion.entry.js +1 -1
- package/dist/esm/ic-alert.entry.js +2 -2
- package/dist/esm/ic-alert.entry.js.map +1 -1
- package/dist/esm/ic-back-to-top.entry.js +1 -1
- package/dist/esm/ic-badge.entry.js +4 -3
- package/dist/esm/ic-badge.entry.js.map +1 -1
- package/dist/esm/ic-breadcrumb-group.entry.js +1 -1
- package/dist/esm/ic-breadcrumb.entry.js +1 -1
- package/dist/esm/ic-button_3.entry.js +34 -10
- package/dist/esm/ic-button_3.entry.js.map +1 -1
- package/dist/esm/ic-card.entry.js +7 -7
- package/dist/esm/ic-card.entry.js.map +1 -1
- package/dist/esm/ic-checkbox-group.entry.js +1 -1
- package/dist/esm/ic-checkbox.entry.js +1 -1
- package/dist/esm/ic-chip.entry.js +1 -1
- package/dist/esm/ic-data-entity.entry.js +3 -6
- package/dist/esm/ic-data-entity.entry.js.map +1 -1
- package/dist/esm/ic-data-row.entry.js +21 -35
- package/dist/esm/ic-data-row.entry.js.map +1 -1
- package/dist/esm/ic-dialog.entry.js +4 -2
- package/dist/esm/ic-dialog.entry.js.map +1 -1
- package/dist/esm/ic-divider.entry.js +1 -1
- package/dist/esm/ic-empty-state.entry.js +1 -1
- package/dist/esm/ic-footer-link-group.entry.js +1 -1
- package/dist/esm/ic-footer-link.entry.js +1 -1
- package/dist/esm/ic-footer.entry.js +1 -1
- package/dist/esm/ic-hero.entry.js +1 -1
- package/dist/esm/ic-horizontal-scroll.entry.js +1 -1
- package/dist/esm/ic-input-component-container_3.entry.js +12 -10
- package/dist/esm/ic-input-component-container_3.entry.js.map +1 -1
- package/dist/esm/ic-input-label_2.entry.js +1 -1
- package/dist/esm/ic-link.entry.js +1 -1
- package/dist/esm/ic-menu-group.entry.js +1 -1
- package/dist/esm/ic-menu-item.entry.js +1 -1
- package/dist/esm/ic-navigation-button.entry.js +1 -1
- package/dist/esm/ic-navigation-group.entry.js +1 -1
- package/dist/esm/ic-navigation-item.entry.js +1 -1
- package/dist/esm/ic-navigation-menu.entry.js +1 -1
- package/dist/esm/ic-page-header.entry.js +1 -1
- package/dist/esm/ic-pagination-item.entry.js +1 -1
- package/dist/esm/ic-pagination.entry.js +1 -1
- package/dist/esm/ic-popover-menu.entry.js +1 -1
- package/dist/esm/ic-popover-menu.entry.js.map +1 -1
- package/dist/esm/ic-radio-group.entry.js +1 -1
- package/dist/esm/ic-radio-group.entry.js.map +1 -1
- package/dist/esm/ic-radio-option.entry.js +1 -1
- package/dist/esm/ic-search-bar.entry.js +1 -1
- package/dist/esm/ic-search-bar.entry.js.map +1 -1
- package/dist/esm/ic-select.entry.js +21 -13
- package/dist/esm/ic-select.entry.js.map +1 -1
- package/dist/esm/ic-side-navigation.entry.js +1 -5
- package/dist/esm/ic-side-navigation.entry.js.map +1 -1
- package/dist/esm/ic-status-tag.entry.js +1 -1
- package/dist/esm/ic-step.entry.js +1 -1
- package/dist/esm/ic-stepper.entry.js +1 -1
- package/dist/esm/ic-switch.entry.js +1 -1
- package/dist/esm/ic-tab-group.entry.js +1 -1
- package/dist/esm/ic-tab-panel.entry.js +1 -1
- package/dist/esm/ic-tab.entry.js +1 -1
- package/dist/esm/ic-text-field.entry.js +1 -1
- package/dist/esm/ic-theme.entry.js +1 -1
- package/dist/esm/ic-toast.entry.js +1 -1
- package/dist/esm/ic-toggle-button-group.entry.js +180 -0
- package/dist/esm/ic-toggle-button-group.entry.js.map +1 -0
- package/dist/esm/ic-toggle-button.entry.js +6 -3
- package/dist/esm/ic-toggle-button.entry.js.map +1 -1
- package/dist/esm/ic-top-navigation.entry.js +1 -1
- package/dist/esm/ic-typography.entry.js +1 -1
- package/dist/esm/index-d1d2c456.js +4 -0
- package/dist/esm/loader.js +1 -1
- package/dist/esm/types-6f6b41a5.js.map +1 -1
- package/dist/types/components/ic-accordion-group/ic-accordion-group.d.ts +5 -0
- package/dist/types/components/ic-button/ic-button.d.ts +28 -0
- package/dist/types/components/ic-card/ic-card.d.ts +2 -2
- package/dist/types/components/ic-data-row/ic-data-row.d.ts +1 -6
- package/dist/types/components/ic-dialog/ic-dialog.d.ts +4 -0
- package/dist/types/components/ic-input-component-container/ic-input-component-container.d.ts +2 -2
- package/dist/types/components/ic-menu/ic-menu.d.ts +2 -2
- package/dist/types/components/ic-search-bar/ic-search-bar.d.ts +1 -1
- package/dist/types/components/ic-select/ic-select.d.ts +12 -3
- package/dist/types/components/ic-toggle-button/ic-toggle-button.d.ts +1 -0
- package/dist/types/components/ic-toggle-button-group/ic-toggle-button-group.d.ts +68 -0
- package/dist/types/components/ic-toggle-button-group/ic-toggle-button-group.types.d.ts +7 -0
- package/dist/types/components.d.ts +201 -16
- package/dist/types/utils/helpers.d.ts +17 -1
- package/dist/types/utils/types.d.ts +2 -0
- package/hydrate/index.js +359 -93
- package/package.json +5 -3
- package/vscode-data.json +142 -3
- package/dist/cjs/helpers-56e80cc9.js.map +0 -1
- package/dist/collection/components/ic-loading-indicator/test/a11y/ic-loading-indicator.test.a11y.js +0 -11
- package/dist/collection/components/ic-loading-indicator/test/a11y/ic-loading-indicator.test.a11y.js.map +0 -1
- package/dist/collection/components/ic-loading-indicator/test/basic/ic-loading-indicator.e2e.js +0 -34
- package/dist/collection/components/ic-loading-indicator/test/basic/ic-loading-indicator.e2e.js.map +0 -1
- package/dist/core/p-23980b58.entry.js.map +0 -1
- package/dist/core/p-357eaebe.entry.js.map +0 -1
- package/dist/core/p-3ebe5fa3.entry.js +0 -2
- package/dist/core/p-3ebe5fa3.entry.js.map +0 -1
- package/dist/core/p-4421203e.entry.js.map +0 -1
- package/dist/core/p-59c4bc0a.entry.js.map +0 -1
- package/dist/core/p-671b7cac.js +0 -2
- package/dist/core/p-671b7cac.js.map +0 -1
- package/dist/core/p-8931210a.entry.js +0 -2
- package/dist/core/p-8931210a.entry.js.map +0 -1
- package/dist/core/p-9e4c8a09.entry.js +0 -2
- package/dist/core/p-9e4c8a09.entry.js.map +0 -1
- package/dist/core/p-b7a2e604.entry.js.map +0 -1
- package/dist/core/p-bb41b637.entry.js.map +0 -1
- package/dist/core/p-c1109ec7.entry.js +0 -2
- package/dist/core/p-c1109ec7.entry.js.map +0 -1
- package/dist/core/p-c786d62f.entry.js.map +0 -1
- package/dist/core/p-d3e54a29.entry.js.map +0 -1
- package/dist/core/p-e4d827d4.entry.js.map +0 -1
- package/dist/esm/helpers-821dcdf2.js.map +0 -1
- package/dist/types/components/ic-loading-indicator/test/a11y/ic-loading-indicator.test.a11y.d.ts +0 -1
- /package/dist/core/{p-de87d585.entry.js.map → p-04506779.entry.js.map} +0 -0
- /package/dist/core/{p-5e6ad4a5.entry.js.map → p-123b9306.entry.js.map} +0 -0
- /package/dist/core/{p-8be3ec3d.entry.js.map → p-1ce0d16e.entry.js.map} +0 -0
- /package/dist/core/{p-9184e385.entry.js.map → p-1d352487.entry.js.map} +0 -0
- /package/dist/core/{p-c75d6022.entry.js.map → p-210412e4.entry.js.map} +0 -0
- /package/dist/core/{p-42c0e318.entry.js.map → p-22a682e8.entry.js.map} +0 -0
- /package/dist/core/{p-525323ab.entry.js.map → p-296b7d74.entry.js.map} +0 -0
- /package/dist/core/{p-26334b3a.entry.js.map → p-2f462ec5.entry.js.map} +0 -0
- /package/dist/core/{p-8c2322a9.entry.js.map → p-35b8923f.entry.js.map} +0 -0
- /package/dist/core/{p-003c44bd.entry.js.map → p-4641518f.entry.js.map} +0 -0
- /package/dist/core/{p-8a66cab4.entry.js.map → p-46ecc4c5.entry.js.map} +0 -0
- /package/dist/core/{p-38bf02aa.entry.js.map → p-4ce5abd7.entry.js.map} +0 -0
- /package/dist/core/{p-b74f92b6.entry.js.map → p-5603eec3.entry.js.map} +0 -0
- /package/dist/core/{p-bf93455b.entry.js.map → p-64705a03.entry.js.map} +0 -0
- /package/dist/core/{p-783c2ced.entry.js.map → p-6a9ddb8a.entry.js.map} +0 -0
- /package/dist/core/{p-2e7f22af.entry.js.map → p-7606c930.entry.js.map} +0 -0
- /package/dist/core/{p-3f07c471.entry.js.map → p-7b0397ea.entry.js.map} +0 -0
- /package/dist/core/{p-9808f7c9.entry.js.map → p-80c3424f.entry.js.map} +0 -0
- /package/dist/core/{p-3c752bca.entry.js.map → p-8aa9aa25.entry.js.map} +0 -0
- /package/dist/core/{p-8f97463f.entry.js.map → p-91768ddf.entry.js.map} +0 -0
- /package/dist/core/{p-171e25c9.entry.js.map → p-95d6f3ed.entry.js.map} +0 -0
- /package/dist/core/{p-0a0b748c.entry.js.map → p-9c18f048.entry.js.map} +0 -0
- /package/dist/core/{p-c7a08024.entry.js.map → p-a4e7d123.entry.js.map} +0 -0
- /package/dist/core/{p-049bf5e3.entry.js.map → p-a98f57cf.entry.js.map} +0 -0
- /package/dist/core/{p-4f8b7aa3.entry.js.map → p-a9e1966f.entry.js.map} +0 -0
- /package/dist/core/{p-bb1a0018.entry.js.map → p-aa878a3c.entry.js.map} +0 -0
- /package/dist/core/{p-7c724f2c.entry.js.map → p-b781b691.entry.js.map} +0 -0
- /package/dist/core/{p-6bbe0550.entry.js.map → p-b98ce745.entry.js.map} +0 -0
- /package/dist/core/{p-0d2eb765.entry.js.map → p-c2789113.entry.js.map} +0 -0
- /package/dist/core/{p-330e1439.entry.js.map → p-c7c2aa3c.entry.js.map} +0 -0
- /package/dist/core/{p-0713230f.entry.js.map → p-d319ddce.entry.js.map} +0 -0
- /package/dist/core/{p-1e809ecd.entry.js.map → p-d5f721ca.entry.js.map} +0 -0
- /package/dist/core/{p-0ee13da0.entry.js.map → p-d9329191.entry.js.map} +0 -0
- /package/dist/core/{p-4f1792a6.entry.js.map → p-e4863c93.entry.js.map} +0 -0
- /package/dist/core/{p-29b812c0.entry.js.map → p-e68e31ec.entry.js.map} +0 -0
- /package/dist/core/{p-eb2d06c1.entry.js.map → p-fbcb77a3.entry.js.map} +0 -0
- /package/dist/core/{p-9ee138e7.entry.js.map → p-fce3e1aa.entry.js.map} +0 -0
- /package/dist/core/{p-8146336b.entry.js.map → p-fea1d095.entry.js.map} +0 -0
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["icButtonCss","buttonIds","Button","this","buttonIdNum","hasTooltip","inheritedAttributes","describedByEl","describedById","mutationObserver","hostMutationObserver","setViewBox","iconEl","hasLeftIconSlot","el","querySelector","hasRightIconSlot","handleClick","type","closest","handleHiddenFormButtonClick","onFocus","icFocus","emit","onBlur","icBlur","loadingWidth","loading","style","setProperty","getBoundingClientRect","width","mutationCallback","describedByContent","innerText","hostMutationCallback","mutationList","forceComponentUpdate","forEach","attributeName","attribute","getAttribute","title","ariaLabel","IC_INHERITED_ARIA","includes","forceUpdate","setHasTooltip","disableTooltip","variant","isTooltipSilent","disconnectedCallback","undefined","disconnect","componentWillUpdate","componentWillLoad","allInheritedAttributes","inheritAttributes","restInheritedAttributes","__rest","removeDisabledFalse","disabled","setAttribute","id","parentElement","componentDidLoad","updateTheme","MutationObserver","observe","characterData","childList","subtree","attributes","componentWillRender","_a","handleHostClick","event","stopImmediatePropagation","dropdown","dropdownExpanded","themeChangeHandler","ev","theme","detail","mode","setFocus","buttonEl","focus","hasIconSlot","hasTopIconSlot","form","hiddenFormButton","document","createElement","display","appendChild","click","remove","newTheme","foregroundColor","getThemeFromContext","IcThemeForegroundEnum","Default","appearance","render","TagType","href","buttonAttrs","formaction","formenctype","formmethod","formnovalidate","formtarget","download","rel","target","referrerpolicy","hreflang","describedBy","buttonId","ButtonContent","h","Object","assign","class","ref","part","name","Dark","Light","innerHTML","arrowDropdown","Host","size","fullWidth","isSlotUsed","transparentBackground","onClick","ariaOwnsId","ariaControlsId","label","placement","tooltipPlacement","silent","icLoadingIndicatorCss","LoadingIndicator","updateCircularProgressMeter","indeterminate","circularMeter","String","progress","getLabel","labelIndex","setLabel","Promise","interval","setInterval","labelList","length","labelDuration","getLabelVariant","outerElement","offsetWidth","setCircleLineWidth","compactStepCircularLineWidth","classList","contains","toastDismissTimerCircularLineWidth","circularLineWidth","circularDiameter","setLinearDeterminateWidth","innerElement","Math","min","max","proportion","showSecond","add","calcOuterClass","cls","updateLabel","isPropDefined","split","indicatorLabel","setCircleXY","r","x","y","nextRadius","setDashSteps","radius","dashArray","PI","watchPropHandler","watchProgressHandler","clearInterval","shadowRoot","Number","componentDidUpdate","description","innerLabel","role","viewBox","cx","cy","icTooltipCss","Tooltip","delayedHideEvents","dialogOverflow","instantHideEvents","mouseOverTool","persistTooltip","onDialog","showEvents","disableHover","disableClick","getTooltipTranslate","dialogEl","child","children","tooltipX","tooltipY","left","bottom","top","right","height","toolTip","show","icDialogEl","popperInstance","createPopper","modifiers","options","offset","element","arrow","scroll","resize","console","warn","hide","removeAttribute","checkCloseTooltip","setTimeout","mouseEnterTooltip","mouseLeaveTooltip","handleKeyDown","key","manageEventListeners","action","method","destroy","onComponentRequiredPropUndefined","prop","propName","componentDidRender","typographyEl","maxLines","displayTooltip"],"sources":["src/components/ic-button/ic-button.css?tag=ic-button&encapsulation=shadow","src/components/ic-button/ic-button.tsx","src/components/ic-loading-indicator/ic-loading-indicator.css?tag=ic-loading-indicator&encapsulation=shadow","src/components/ic-loading-indicator/ic-loading-indicator.tsx","src/components/ic-tooltip/ic-tooltip.css?tag=ic-tooltip&encapsulation=shadow","src/components/ic-tooltip/ic-tooltip.tsx"],"sourcesContent":["@import \"../../global/normalize.css\";\n\n/**\n* @prop --min-width: Minimum width of the button.\n* @prop --height: The height of the button.\n*/\n\n:host {\n display: inline-block;\n position: relative;\n\n --button-default: var(--ic-action-default);\n --button-default-hover: var(--ic-action-default-hover);\n --button-default-active: var(--ic-action-default-active);\n --button-default-background-hover: var(--ic-action-default-bg-hover);\n --button-default-background-active: var(--ic-action-default-bg-active);\n --icon-width: 100%;\n --icon-height: 100%;\n}\n\n.button {\n font-family: var(--ic-font-body-family);\n text-decoration: none;\n font-weight: 600;\n font-size: 0.875rem;\n transition: var(--ic-easing-transition-fast);\n border-radius: var(--ic-border-radius);\n min-width: var(--min-width, 6.25rem);\n display: inline-flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n background: none;\n border: none;\n box-sizing: border-box;\n white-space: nowrap;\n vertical-align: middle;\n}\n\n:host(.with-badge) .button {\n border-radius: 0.2188rem;\n}\n\n.button:hover {\n cursor: pointer;\n}\n\n.button:focus,\n:host .button:focus,\n:host(.light) .button:focus {\n box-shadow: var(--ic-border-focus);\n}\n\n.button:focus-visible {\n outline: var(--ic-hc-focus-outline);\n}\n\n:host(.dark) .button {\n --button-default: var(--ic-action-dark);\n --button-default-hover: var(--ic-action-dark);\n --button-default-active: var(--ic-action-dark);\n --button-default-background-hover: var(--ic-action-dark-bg-hover);\n --button-default-background-active: var(--ic-action-dark-bg-active);\n}\n\n:host(.light) .button {\n --button-default: var(--ic-action-light);\n --button-default-hover: var(--ic-action-light);\n --button-default-active: var(--ic-action-light);\n --button-default-background-hover: var(--ic-action-light-bg-hover);\n --button-default-background-active: var(--ic-action-light-bg-active);\n}\n\n:host(.white-background) .button {\n --button-default-background-hover: var(--ic-action-default-bg-hover-no-alpha);\n --button-default-background-active: var(\n --ic-action-default-bg-active-no-alpha\n );\n\n background-color: var(--ic-architectural-white);\n}\n\n:host(.white-background.dark) .button {\n --button-default-background-hover: var(--ic-action-dark-bg-hover-no-alpha);\n --button-default-background-active: var(--ic-action-dark-bg-active-no-alpha);\n}\n\n:host(.button-variant-primary.light) .button {\n color: var(--ic-color-primary-text);\n\n --button-default-hover: var(--ic-action-light-hover);\n --button-default-active: var(--ic-action-light-active);\n}\n\n:host(.button-variant-primary.dark) .button {\n --button-default-hover: var(--ic-action-dark-hover);\n --button-default-active: var(--ic-action-dark-active);\n}\n\n:host(.disabled),\n:host(.disabled) .button,\n:host(.loading),\n:host(.loading) .button {\n pointer-events: none;\n}\n\n:host(.top-icon) .button {\n flex-direction: column;\n --height: fit-content;\n}\n\n:host(.top-icon) .button .icon-container {\n margin-right: 0;\n}\n\n/* Variants */\n\n/* Primary */\n\n:host(.button-variant-primary) .button {\n color: var(--ic-architectural-white);\n background-color: var(--button-default);\n}\n\n:host(.button-variant-primary) .button:hover:not(:focus) {\n background-color: var(--button-default-hover);\n}\n\n:host(.button-variant-primary) .button:hover:focus {\n background-color: var(--button-default-hover);\n border-color: var(--button-default-hover);\n}\n\n:host(.button-variant-primary:not(.light)) .button:hover:focus {\n color: var(--ic-architectural-white);\n}\n\n:host(.button-variant-primary) .button:active:not(:focus),\n:host(.button-variant-primary.loading) .button {\n background-color: var(--button-default-active);\n}\n\n:host(.button-variant-primary) .button:active:focus {\n background-color: var(--button-default-active);\n}\n\n:host(.button-variant-primary) .button:active {\n background-color: var(--button-default-active);\n}\n\n:host(.button-variant-primary:not(.light)) .button:active {\n color: var(--ic-architectural-white);\n}\n\n:host(.button-variant-primary.disabled) .button {\n background: var(--ic-architectural-200);\n color: var(--ic-architectural-300);\n}\n\n:host(.button-variant-primary.light.disabled) .button {\n background: var(--ic-architectural-600);\n color: var(--ic-architectural-500);\n}\n\n/* Secondary */\n\n:host(.button-variant-secondary) .button {\n border: var(--ic-border-width) solid var(--button-default);\n color: var(--button-default);\n}\n\n:host(.button-variant-secondary) .button:hover:not(:focus),\n:host(.button-variant-secondary) .button:hover:focus {\n background-color: var(--button-default-background-hover);\n border-color: var(--button-default-hover);\n color: var(--button-default-hover);\n}\n\n:host(.button-variant-secondary) .button:active:not(:focus),\n:host(.button-variant-secondary) .button:active:focus,\n:host(.button-variant-secondary) .button:active {\n border-color: var(--button-default-active);\n background-color: var(--button-default-background-active);\n color: var(--button-default-active);\n}\n\n:host(.button-variant-secondary.loading) .button {\n border-color: var(--button-default-active);\n background-color: var(--button-default-background-active);\n color: var(--button-default-active);\n}\n\n:host(.button-variant-secondary.disabled) .button,\n:host(.button-variant-secondary.disabled) .button:hover,\n:host(.button-variant-secondary.disabled) .button:active {\n border-color: var(--ic-architectural-300);\n color: var(--ic-architectural-300);\n background: none;\n}\n\n:host(.button-variant-secondary.light.disabled) .button,\n:host(.button-variant-secondary.light.disabled) .button:hover,\n:host(.button-variant-secondary.light.disabled) .button:active {\n border-color: var(--ic-architectural-500);\n color: var(--ic-architectural-500);\n background: none;\n}\n\n/* Tertiary */\n\n:host(.button-variant-tertiary) .button {\n color: var(--button-default);\n}\n\n:host(.button-variant-tertiary) .button:hover:not(:focus),\n:host(.button-variant-tertiary) .button:hover:focus {\n background-color: var(--button-default-background-hover);\n color: var(--button-default-hover);\n}\n\n:host(.button-variant-tertiary) .button:active:not(:focus),\n:host(.button-variant-tertiary) .button:active:focus,\n:host(.button-variant-tertiary) .button:active,\n:host(.button-variant-tertiary.loading) .button {\n background-color: var(--button-default-background-active);\n color: var(--button-default-active);\n}\n\n:host(.button-variant-tertiary.disabled) .button,\n:host(.button-variant-tertiary.disabled) .button:hover,\n:host(.button-variant-tertiary.disabled) .button:active {\n border-color: var(--ic-architectural-300);\n color: var(--ic-architectural-300);\n background: none;\n}\n\n:host(.button-variant-tertiary.light.disabled) .button,\n:host(.button-variant-tertiary.light.disabled) .button:hover,\n:host(.button-variant-tertiary.light.disabled) .button:active {\n border-color: var(--ic-architectural-500);\n color: var(--ic-architectural-500);\n background: none;\n}\n\n/* Icon */\n\n:host(.button-variant-icon) .button {\n color: var(--button-default);\n min-width: 0;\n gap: var(--ic-space-xs);\n margin: var(--ic-space-1px) 0;\n}\n\n:host(.button-variant-icon) .icon-container {\n width: var(--ic-space-lg) !important;\n height: var(--ic-space-lg) !important;\n}\n\n:host(.button-variant-icon) .button:hover:not(:focus),\n:host(.button-variant-icon) .button:hover:focus {\n background-color: var(--button-default-background-hover);\n color: var(--button-default-hover);\n}\n\n:host(.button-variant-icon) .button:active:not(:focus),\n:host(.button-variant-icon.loading) .button {\n background-color: var(--button-default-background-active);\n color: var(--button-default-active);\n}\n\n:host(.button-variant-icon.disabled) .button,\n:host(.button-variant-icon.disabled) .button:hover,\n:host(.button-variant-icon.disabled) .button:active {\n color: var(--ic-architectural-300);\n background: none;\n}\n\n/* Destructive */\n\n:host(.button-variant-destructive) .button {\n color: var(--ic-architectural-white);\n background-color: var(--ic-action-destructive);\n text-transform: uppercase;\n}\n\n:host(.button-variant-destructive) .button:hover:not(:focus),\n:host(.button-variant-destructive) .button:hover:focus {\n background-color: var(--ic-action-destructive-hover);\n}\n\n:host(.button-variant-destructive) .button:active:not(:focus),\n:host(.button-variant-destructive) .button:active:focus,\n:host(.button-variant-destructive.loading) .button {\n background-color: var(--ic-action-destructive-active);\n}\n\n:host(.button-variant-destructive.disabled) .button {\n background: var(--ic-architectural-200);\n color: var(--ic-architectural-300);\n}\n\n/* Sizing */\n\n:host(.button-size-default) .button {\n height: var(--height, 2.5rem);\n padding: var(--ic-space-xs) var(--ic-space-md);\n}\n\n:host(.button-size-small) .button {\n height: var(--height, var(--ic-space-xl));\n padding: var(--ic-space-xxs) var(--ic-space-md);\n}\n\n:host(.button-size-large) .button {\n height: var(--height, var(--ic-space-xxl));\n padding: var(--ic-space-sm) var(--ic-space-md);\n}\n\n:host(.button-size-default.button-variant-icon) .button {\n height: var(--height, var(--ic-space-xl));\n width: var(--ic-space-xl);\n padding: 0.375rem;\n}\n\n:host(.button-size-small.button-variant-icon) .button {\n height: var(--height, var(--ic-space-lg));\n width: var(--ic-space-lg);\n padding: var(--ic-space-xxs);\n}\n\n:host(.button-size-large.button-variant-icon) .button {\n height: var(--height, 2.5rem);\n width: 2.5rem;\n padding: var(--ic-space-xs);\n}\n\n/* Width */\n:host(.full-width),\n:host(.full-width) .button {\n width: 100%;\n}\n\n/* Loading */\n\ndiv.loading-container {\n position: relative;\n align-items: center;\n width: 100%;\n}\n\nic-loading-indicator {\n --outer-color: transparent;\n}\n\n@keyframes loading-animation {\n 0% {\n width: 0%;\n left: 0%;\n }\n\n 25% {\n width: 0%;\n left: 0%;\n opacity: 0;\n }\n\n 50% {\n width: 100%;\n left: 0%;\n opacity: 1;\n }\n\n 75% {\n width: 0%;\n left: 100%;\n }\n\n 100% {\n width: 0%;\n left: 100%;\n opacity: 0;\n }\n}\n\n/* Icons */\n\ndiv.icon-container {\n box-sizing: border-box;\n width: var(--ic-space-lg);\n height: var(--ic-space-lg);\n display: flex;\n justify-content: center;\n align-items: center;\n margin-right: var(--ic-space-xs);\n}\n\ndiv.right-icon {\n margin-right: auto;\n margin-left: var(--ic-space-xs);\n}\n\n::slotted(:not(ic-badge)) {\n width: var(--icon-width) !important;\n height: var(--icon-height) !important;\n fill: currentcolor !important;\n pointer-events: none;\n}\n\n:host(.button-variant-icon) .button .icon-container {\n margin: 0;\n pointer-events: none;\n}\n\n/** SEARCH **/\n\n:host(.search-submit-button) ::slotted(svg) {\n --icon-height: 1.25rem;\n --icon-width: 1.25rem;\n}\n\n:host(.search-submit-button-small) ::slotted(svg) {\n --icon-height: 1rem;\n --icon-width: 1rem;\n}\n\n:host(.clear-button) {\n margin: 0 var(--ic-space-xxs);\n}\n\n:host(.clear-button) .button:focus {\n box-shadow: none;\n}\n\n:host(.search-submit-button) .button:focus {\n box-shadow: none;\n}\n\n:host(.search-submit-button) .button:not(:active):focus {\n box-shadow: none;\n background-color: var(--ic-action-default-bg-hover);\n}\n\n:host(.search-submit-button) {\n display: flex;\n align-items: center;\n margin: 0 var(--ic-space-xxs);\n}\n\n:host(.menu-close-button) ::slotted(svg) {\n --icon-height: 0.875rem;\n --icon-width: 0.875rem;\n}\n\n:host(.popout-menu-button) .button {\n height: var(--height);\n justify-content: left;\n border-radius: 0;\n white-space: pre-line;\n text-align: start;\n}\n\n:host(.popout-menu-button) div.icon-container {\n flex: none;\n}\n\n:host(.popout-menu-button) .button:focus {\n box-shadow: var(--ic-border-focus-inset);\n border-radius: var(--ic-border-radius-inset);\n}\n\n.ic-button-describedby {\n display: none;\n}\n\n:host .ic-tooltip {\n display: block;\n}\n\n/** Dropdown **/\n:host .arrow-dropdown {\n margin-top: auto;\n}\n\n:host .dropdown-expanded {\n transform: rotate(180deg);\n margin-bottom: var(--ic-space-xxxs);\n}\n\n:host(.dropdown-no-icon) .button {\n padding-right: var(--ic-space-xs);\n}\n\n/** High Contrast **/\n@media (forced-colors: active) {\n .button {\n border: 0.125rem solid transparent;\n }\n}\n\n/** Pagination **/\n\n:host(.flip) ::slotted(svg) {\n transform: scaleX(-1);\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n Host,\n Listen,\n Method,\n Prop,\n State,\n forceUpdate,\n h,\n} from \"@stencil/core\";\n\nimport {\n getThemeFromContext,\n inheritAttributes,\n isSlotUsed,\n removeDisabledFalse,\n} from \"../../utils/helpers\";\nimport { IC_INHERITED_ARIA } from \"../../utils/constants\";\nimport {\n IcButtonTypes,\n IcButtonVariants,\n IcButtonTooltipPlacement,\n} from \"./ic-button.types\";\nimport {\n IcSizes,\n IcTheme,\n IcThemeForeground,\n IcThemeForegroundEnum,\n} from \"../../utils/types\";\nimport arrowDropdown from \"../../assets/arrow-dropdown.svg\";\n\nlet buttonIds = 0;\n\n/**\n * @slot icon - Deprecated. This slot should not be used anymore. Use left-icon or right-icon slot instead.\n * @slot left-icon - Content will be placed to the left of the button label.\n * @slot right-icon - Content will be placed to the right of the button label.\n * @slot top-icon - Content will be placed above the button label.\n * @slot badge - Badge component overlaying the top right of the button.\n */\n@Component({\n tag: \"ic-button\",\n styleUrl: \"ic-button.css\",\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class Button {\n private buttonEl: HTMLElement;\n private buttonIdNum = buttonIds++;\n private hasTooltip: boolean = false;\n private id: string;\n private inheritedAttributes: { [k: string]: unknown } = {};\n private describedByEl: HTMLElement = null;\n private describedById: string = null;\n private mutationObserver: MutationObserver = null;\n private hostMutationObserver: MutationObserver = null;\n\n @Element() el: HTMLIcButtonElement;\n\n @State() ariaLabel: string = null;\n @State() describedByContent: string = null;\n @State() title: string = null;\n\n /**\n * The appearance of the button, e.g. dark, light, or the default.\n */\n @Prop({ mutable: true }) appearance?: IcThemeForeground = \"default\";\n\n /**\n * @internal Used to identify any related child component\n */\n @Prop() ariaControlsId: string | boolean;\n\n /**\n * @internal Used to identify any related child component\n */\n @Prop() ariaOwnsId: string | boolean;\n\n /**\n * If `true`, the button will be in disabled state.\n */\n @Prop() disabled?: boolean = false;\n\n /**\n * If `true`, the ic-tooltip which is shown for icon variant will be disabled. Title or aria-label must be set if this prop is not applied.\n */\n @Prop() disableTooltip?: boolean = false;\n\n /**\n * If `true`, the user can save the linked URL instead of navigating to it.\n */\n @Prop() download?: string | boolean = false;\n\n /**\n * If `true`, the button will show a dropdown icon.\n */\n @Prop() dropdown?: boolean = false;\n\n /**\n * If `true`, the aria-expanded value will be set to true. This is only applied if the dropdown prop is also true.\n */\n @Prop({ mutable: true, reflect: true }) dropdownExpanded?: boolean = false;\n\n /**\n * The <form> element to associate the button with.\n */\n @Prop() form?: string;\n\n /**\n * The URL that processes the information submitted by the button. It overrides the action attribute of the button's form owner. Does nothing if there is no form owner.\n */\n @Prop() formaction?: string;\n\n /**\n * The way the submitted form data is encoded.\n */\n @Prop() formenctype?: string;\n\n /**\n * The HTTP method used to submit the form.\n */\n @Prop() formmethod?: string;\n\n /**\n * If `true`, the form will not be validated when submitted.\n */\n @Prop() formnovalidate?: boolean;\n\n /**\n * The place to display the response from submitting the form. It overrides the target attribute of the button's form owner.\n */\n @Prop() formtarget?: string;\n\n /**\n * If `true`, the button will fill the width of the container.\n */\n @Prop() fullWidth?: boolean = false;\n\n /**\n * The URL that the link points to. This will render the button as an \"a\" tag.\n */\n @Prop() href?: string;\n\n /**\n * The human language of the linked URL.\n */\n @Prop() hreflang?: string;\n\n /**\n * If `true`, the button will be in loading state.\n */\n @Prop() loading?: boolean = false;\n\n /**\n * How much of the referrer to send when following the link.\n */\n @Prop() referrerpolicy?: ReferrerPolicy;\n\n /**\n * The relationship of the linked URL as space-separated link types.\n */\n @Prop() rel?: string;\n\n /**\n * The size of the button to be displayed.\n */\n @Prop() size?: IcSizes = \"default\";\n\n /**\n * The place to display the linked URL, as the name for a browsing context (a tab, window, or iframe).\n */\n @Prop() target?: string;\n\n /**\n * The position of the tooltip in relation to the button.\n */\n @Prop() tooltipPlacement?: IcButtonTooltipPlacement = \"bottom\";\n\n /**\n * If `true`, the secondary variant of button will have a transparent background rather than white.\n */\n @Prop() transparentBackground?: boolean = true;\n\n /**\n * The type of the button.\n */\n @Prop() type?: IcButtonTypes = \"button\";\n\n /**\n * The variant of the button to be displayed.\n */\n @Prop() variant?: IcButtonVariants = \"primary\";\n\n /**\n * Emitted when button has blur\n */\n @Event() icBlur!: EventEmitter<void>;\n\n /**\n * Emitted when button has focus\n */\n @Event() icFocus!: EventEmitter<void>;\n\n disconnectedCallback(): void {\n if (this.mutationObserver !== null && this.mutationObserver !== undefined) {\n this.mutationObserver.disconnect();\n }\n if (\n this.hostMutationObserver !== null &&\n this.hostMutationObserver !== undefined\n ) {\n this.hostMutationObserver.disconnect();\n }\n }\n\n componentWillUpdate(): void {\n this.loadingWidth();\n this.setHasTooltip();\n }\n\n componentWillLoad(): void {\n const allInheritedAttributes = inheritAttributes(this.el, [\n ...IC_INHERITED_ARIA,\n \"title\",\n ]);\n\n const {\n title,\n \"aria-label\": ariaLabel,\n ...restInheritedAttributes\n } = allInheritedAttributes;\n\n this.title = title as string;\n this.ariaLabel = ariaLabel as string;\n this.inheritedAttributes = restInheritedAttributes;\n\n removeDisabledFalse(this.disabled, this.el);\n\n this.el.setAttribute(\"exportparts\", \"button\");\n\n const id = this.el.id;\n this.id = id !== undefined ? id : null;\n this.setHasTooltip();\n\n if (!this.hasTooltip) {\n const describedById = this.inheritedAttributes[\n \"aria-describedby\"\n ] as string;\n if (describedById !== undefined) {\n this.describedById = describedById;\n const el = this.el.parentElement.querySelector(\n `#${describedById}`\n ) as HTMLElement;\n if (el !== undefined && el !== null) {\n this.describedByContent = el.innerText;\n this.describedByEl = el;\n }\n }\n }\n }\n\n componentDidLoad(): void {\n this.updateTheme();\n\n if (typeof MutationObserver !== \"undefined\") {\n if (this.describedById) {\n this.mutationObserver = new MutationObserver(this.mutationCallback);\n this.mutationObserver.observe(this.describedByEl, {\n characterData: true,\n childList: true,\n subtree: true,\n });\n }\n\n this.hostMutationObserver = new MutationObserver(\n this.hostMutationCallback\n );\n this.hostMutationObserver.observe(this.el, {\n attributes: true,\n });\n }\n }\n\n componentWillRender(): void {\n this.setViewBox()?.setAttribute(\"viewBox\", \"0 0 24 24\");\n }\n\n @Listen(\"click\", { capture: true })\n handleHostClick(event: Event): void {\n if (this.disabled || this.loading) {\n event.stopImmediatePropagation();\n }\n if (this.dropdown) {\n this.dropdownExpanded = !this.dropdownExpanded;\n }\n }\n\n @Listen(\"themeChange\", { target: \"document\" })\n themeChangeHandler(ev: CustomEvent): void {\n const theme: IcTheme = ev.detail;\n this.updateTheme(theme.mode);\n }\n\n /**\n * Sets focus on the native `button`.\n */\n @Method()\n async setFocus(): Promise<void> {\n if (this.buttonEl) {\n this.buttonEl.focus();\n }\n }\n\n private hasIconSlot(): boolean {\n const iconEl = this.el.querySelector(`[slot=\"icon\"]`);\n return iconEl !== null;\n }\n\n private hasLeftIconSlot(): boolean {\n const iconEl = this.el.querySelector(`[slot=\"left-icon\"]`);\n return iconEl !== null;\n }\n\n private hasTopIconSlot(): boolean {\n const iconEl = this.el.querySelector(`[slot=\"top-icon\"]`);\n return iconEl !== null;\n }\n\n private hasRightIconSlot(): boolean {\n const iconEl = this.el.querySelector(`[slot=\"right-icon\"]`);\n return iconEl !== null;\n }\n\n private setViewBox = () => {\n let iconEl;\n if (this.hasLeftIconSlot()) {\n iconEl = this.el.querySelector(`[slot=\"left-icon\"]`);\n } else if (this.hasRightIconSlot()) {\n iconEl = this.el.querySelector(`[slot=\"right-icon\"]`);\n } else {\n iconEl = null;\n }\n return iconEl;\n };\n\n private handleHiddenFormButtonClick(form: HTMLFormElement): void {\n const hiddenFormButton = document.createElement(\"button\");\n\n hiddenFormButton.setAttribute(\"type\", this.el.type);\n hiddenFormButton.style.display = \"none\";\n\n form.appendChild(hiddenFormButton);\n\n hiddenFormButton.click();\n hiddenFormButton.remove();\n }\n\n private handleClick = (): void => {\n if (\n (this.el.type === \"submit\" || this.el.type === \"reset\") &&\n !!this.el.closest(\"FORM\")\n ) {\n this.handleHiddenFormButtonClick(this.el.closest(\"FORM\"));\n }\n };\n\n private onFocus = () => {\n this.icFocus.emit();\n };\n\n private onBlur = () => {\n this.icBlur.emit();\n };\n\n private updateTheme(newTheme: IcThemeForeground = null): void {\n const foregroundColor = getThemeFromContext(this.el, newTheme || null);\n\n if (foregroundColor !== IcThemeForegroundEnum.Default) {\n this.appearance = foregroundColor;\n }\n }\n\n private loadingWidth = () => {\n if (this.loading) {\n this.el.style.setProperty(\n \"--min-width\",\n `${this.el.getBoundingClientRect().width}px`\n );\n }\n };\n\n // triggered when text content of sibling element in light DOM changes\n private mutationCallback = (): void => {\n this.describedByContent = this.describedByEl.innerText;\n };\n\n // triggered when attributes of host element change\n private hostMutationCallback = (mutationList: MutationRecord[]): void => {\n let forceComponentUpdate = false;\n mutationList.forEach(({ attributeName }) => {\n const attribute = this.el.getAttribute(attributeName);\n if (attributeName === \"title\") this.title = attribute;\n else if (attributeName === \"aria-label\") this.ariaLabel = attribute;\n\n if (IC_INHERITED_ARIA.includes(attributeName)) {\n this.inheritedAttributes[attributeName] = attribute;\n forceComponentUpdate = true;\n }\n });\n if (forceComponentUpdate) {\n forceUpdate(this);\n }\n };\n\n private setHasTooltip = (): void => {\n this.hasTooltip =\n !this.disableTooltip && (!!this.title || this.variant === \"icon\");\n };\n\n private isTooltipSilent = (): boolean => {\n if (this.variant === \"icon\") {\n if (this.title) return true;\n else if (this.ariaLabel) return true;\n else return false;\n } else {\n return false;\n }\n };\n\n render() {\n const TagType = (this.href && \"a\") || \"button\";\n const { title, ariaLabel, inheritedAttributes } = this;\n const buttonAttrs =\n TagType === \"button\"\n ? {\n type: this.type,\n disabled: this.disabled,\n form: this.form,\n formaction: this.formaction,\n formenctype: this.formenctype,\n formmethod: this.formmethod,\n formnovalidate: this.formnovalidate,\n formtarget: this.formtarget,\n }\n : {\n download: this.download !== false ? this.download : null,\n href: this.href,\n rel: this.rel,\n target: this.target,\n referrerpolicy: this.referrerpolicy,\n hreflang: this.hreflang,\n };\n\n let describedBy: string = null;\n let buttonId: string = null;\n if (this.hasTooltip) {\n buttonId =\n this.id !== null\n ? `ic-button-with-tooltip-${this.id}`\n : `ic-button-with-tooltip-${this.buttonIdNum}`;\n describedBy =\n this.variant === \"icon\" && !!ariaLabel\n ? null\n : `ic-tooltip-${buttonId}`;\n } else {\n describedBy = this.describedById;\n }\n\n const ButtonContent = () => {\n return (\n <TagType\n class=\"button\"\n aria-disabled={this.loading || this.disabled ? \"true\" : null}\n aria-label={this.loading ? \"Loading\" : ariaLabel}\n {...buttonAttrs}\n {...inheritedAttributes}\n onFocus={this.onFocus}\n onBlur={this.onBlur}\n ref={(el) => (this.buttonEl = el)}\n aria-describedby={describedBy}\n part=\"button\"\n >\n {this.hasIconSlot() && !this.loading && (\n <div class=\"icon-container\">\n <slot name=\"icon\" />\n </div>\n )}\n {this.hasLeftIconSlot() && !this.loading && (\n <div class=\"icon-container\">\n <slot name=\"left-icon\" />\n </div>\n )}\n {this.hasTopIconSlot() &&\n !this.hasLeftIconSlot() &&\n !this.hasRightIconSlot() &&\n !this.loading && (\n <div class=\"icon-container\">\n <slot name=\"top-icon\" />\n </div>\n )}\n {this.loading ? (\n <div class=\"loading-container\">\n <ic-loading-indicator\n type=\"linear\"\n appearance={\n this.variant === \"primary\" ||\n this.variant === \"destructive\" ||\n this.appearance === IcThemeForegroundEnum.Dark ||\n this.appearance === IcThemeForegroundEnum.Light\n ? \"light\"\n : \"dark\"\n }\n ></ic-loading-indicator>\n </div>\n ) : (\n <slot />\n )}\n {this.hasRightIconSlot() && !this.loading && !this.dropdown && (\n <div class={{ \"icon-container\": true, \"right-icon\": true }}>\n <slot name=\"right-icon\" />\n </div>\n )}\n {this.dropdown &&\n !this.loading &&\n this.variant !== \"icon\" &&\n this.variant !== \"destructive\" && (\n <span\n class={{\n [\"arrow-dropdown\"]: !this.dropdownExpanded,\n [\"dropdown-expanded\"]: this.dropdownExpanded,\n }}\n innerHTML={arrowDropdown}\n />\n )}\n </TagType>\n );\n };\n\n return (\n <Host\n class={{\n [\"disabled\"]: this.disabled && !this.loading,\n [`button-variant-${this.variant}`]: true,\n [`button-size-${this.size}`]: true,\n [\"loading\"]: this.loading,\n [\"dark\"]: this.appearance === IcThemeForegroundEnum.Dark,\n [\"light\"]: this.appearance === IcThemeForegroundEnum.Light,\n [\"full-width\"]: this.fullWidth,\n [\"with-badge\"]: isSlotUsed(this.el, \"badge\"),\n [\"dropdown-no-icon\"]:\n this.dropdown &&\n !isSlotUsed(this.el, \"icon\") &&\n !isSlotUsed(this.el, \"left-icon\"),\n [\"top-icon\"]: isSlotUsed(this.el, \"top-icon\"),\n [\"white-background\"]:\n this.variant === \"secondary\" &&\n !this.transparentBackground &&\n this.appearance !== \"light\",\n }}\n onClick={this.handleClick}\n aria-owns={this.ariaOwnsId}\n aria-controls={this.ariaControlsId}\n aria-expanded={this.dropdown && `${this.dropdownExpanded}`}\n >\n {this.hasTooltip && (\n <ic-tooltip\n id={describedBy}\n label={title || ariaLabel}\n target={buttonId}\n placement={this.tooltipPlacement}\n silent={this.isTooltipSilent()}\n >\n <ButtonContent />\n </ic-tooltip>\n )}\n {isSlotUsed(this.el, \"badge\") && <slot name=\"badge\"></slot>}\n {!this.hasTooltip && <ButtonContent />}\n {this.describedByContent && (\n <span id={describedBy} class=\"ic-button-describedby\">\n {this.describedByContent}\n </span>\n )}\n </Host>\n );\n }\n}\n","@import \"../../global/normalize.css\";\n\n:host {\n /**\n * @prop --circular-diameter: Diameter of the circular-indicator\n */\n\n display: block;\n\n --linear-border-radius: 0.25rem;\n --inner-color: var(--ic-action-default);\n --outer-color: var(--ic-architectural-100);\n --label-color: var(--ic-color-primary-text);\n --margin: none;\n --linear-line-height: var(--ic-space-xs);\n}\n\n:host(.light) {\n --inner-color: var(--ic-architectural-white);\n --outer-color: var(--ic-architectural-800);\n --label-color: var(--ic-architectural-white);\n}\n\n.ic-loading-container {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n}\n\n:host([size=\"small\"]) {\n --circular-diameter: 2.5rem;\n --linear-line-height: var(--ic-space-xxs);\n}\n\n:host([size=\"default\"]) {\n --circular-diameter: 5rem;\n}\n\n:host([size=\"large\"]) {\n --circular-diameter: 7.5rem;\n}\n\n:host([size=\"icon\"]) {\n display: inline-block;\n\n --margin: var(--ic-space-xxxs);\n --circular-diameter: 1.25rem;\n}\n\n:host(.label) {\n --margin: 0 0 var(--ic-space-xs) 0;\n}\n\n.ic-loading-label {\n white-space: nowrap;\n color: var(--label-color);\n margin-left: var(--label-margin-left);\n}\n\n.ic-loading-circular-outer {\n height: var(--circular-diameter);\n width: var(--circular-diameter);\n}\n\n.ic-loading-circular-outer.indeterminate {\n animation: circular-animation 1s linear;\n animation-iteration-count: infinite;\n}\n\n@keyframes circular-animation {\n 100% {\n transform: rotate(360deg);\n }\n}\n\n.ic-loading-circular-outer,\n.ic-loading-linear-outer {\n margin: var(--margin);\n}\n\n.ic-loading-linear-outer {\n background-color: var(--outer-color);\n height: var(--linear-line-height);\n width: 100%;\n border-radius: var(--linear-border-radius);\n overflow: hidden;\n}\n\n.ic-loading-linear-inner {\n position: relative;\n height: 100%;\n background-color: var(--inner-color);\n border-radius: var(--linear-border-radius);\n}\n\n.indeterminate > .ic-loading-linear-inner {\n animation: linear-animation 2s infinite;\n}\n\n.determinate > .ic-loading-linear-inner {\n transition: width 0.5s;\n width: var(--linear-width);\n}\n\n:host(.full-width) {\n --linear-border-radius: none;\n}\n\n@keyframes linear-animation {\n 0% {\n width: 0%;\n left: -1%;\n }\n\n 25% {\n width: 0%;\n left: -1%;\n }\n\n 50% {\n width: 101%;\n left: -1%;\n }\n\n 75% {\n width: 0%;\n left: 101%;\n }\n\n 100% {\n width: 0%;\n left: 101%;\n }\n}\n\n.ic-loading-circular-svg {\n position: relative;\n width: 100%;\n height: 100%;\n transform: rotate(-90deg);\n}\n\n.ic-loading-circular-svg circle {\n width: 100%;\n height: 100%;\n fill: none;\n stroke: var(--outer-color);\n stroke-width: var(--circular-line-width);\n stroke-linecap: round;\n}\n\n/* --stroke-dash-array calculated via dashArray method */\n.ic-loading-circular-svg circle:nth-child(2) {\n --circular-indeterminate: calc(\n (0.25 * var(--stroke-dasharray)) - var(--stroke-dasharray)\n );\n\n stroke-dasharray: var(--stroke-dasharray), var(--stroke-dasharray);\n stroke-dashoffset: var(--stroke-dashoffset, var(--circular-indeterminate));\n stroke: var(--compact-step-inner-color, var(--inner-color));\n}\n\n:host(.inner-label) .ic-loading-circular-inner {\n display: grid;\n}\n\n:host(.inner-label) .ic-loading-circular-svg,\n.inner-text {\n grid-column: 1;\n grid-row: 1;\n}\n\n:host(.not-required.compact-step-progress-indicator)\n .ic-loading-circular-svg\n circle:nth-child(2) {\n stroke: var(--ic-architectural-300);\n}\n\n.inner-text {\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--ic-space-lg);\n height: inherit;\n overflow: hidden;\n margin: auto;\n color: var(--ic-status-info);\n}\n\n:host(.not-required.compact-step-progress-indicator) .inner-text {\n color: var(--ic-color-tertiary-text);\n}\n\n/** High Contrast **/\n@media (forced-colors: active) {\n .indeterminate > .ic-loading-circular-inner {\n forced-color-adjust: none;\n }\n\n .ic-loading-linear-outer {\n border: var(--ic-hc-border);\n }\n\n .ic-loading-linear-inner {\n background-color: canvastext;\n }\n\n .ic-loading-circular-svg circle {\n stroke: Background;\n }\n\n .ic-loading-circular-svg circle:nth-child(2) {\n stroke: canvastext;\n }\n\n :host(.not-required.compact-step-progress-indicator)\n .ic-loading-circular-svg\n circle:nth-child(2) {\n stroke: GrayText;\n }\n}\n","import { Component, Element, h, Host, Prop, State, Watch } from \"@stencil/core\";\nimport {\n IcLoadingCircleXYR,\n IcLoadingSizes,\n IcLoadingTypes,\n} from \"./ic-loading-indicator.types\";\nimport {\n IcThemeForegroundEnum,\n IcThemeForegroundNoDefault,\n} from \"../../utils/types\";\nimport { isPropDefined } from \"../../utils/helpers\";\n\n@Component({\n tag: \"ic-loading-indicator\",\n styleUrl: \"ic-loading-indicator.css\",\n shadow: true,\n})\nexport class LoadingIndicator {\n private circularMeter: SVGCircleElement;\n private innerElement?: HTMLDivElement;\n private interval: ReturnType<typeof setInterval>;\n private labelList: string[];\n private outerElement?: HTMLDivElement;\n\n @Element() el: HTMLIcLoadingIndicatorElement;\n\n @State() circularDiameter: number;\n @State() circularLineWidth: number;\n @State() indeterminate: boolean;\n @State() indicatorLabel: string;\n @State() showSecond: boolean = false;\n\n /**\n * The appearance of the loading indicator, e.g. dark or light.\n */\n @Prop() appearance?: IcThemeForegroundNoDefault = \"dark\";\n\n /**\n * The description that will be set as the aria-label of the loading indicator when not using a visible label.\n */\n @Prop() description?: string = \"Loading\";\n\n /**\n * If `true`, when linear, the full-width variant (i.e. without a border radius) will be displayed.\n */\n @Prop({ reflect: true }) fullWidth?: boolean = false;\n\n /**\n * @internal The step number of a compact step, managed by ic-step.\n */\n @Prop() innerLabel?: number;\n\n /**\n * The time in milliseconds before the label changes.\n */\n @Prop() labelDuration?: number = 8000;\n\n /**\n * The maximum value that the progress value can take.\n * Used to calculate the proportional width of the progress bar.\n */\n @Prop() max?: number = 100;\n\n /**\n * The minimum value that the progress value can take.\n * Used to calculate the proportional width of the progress bar.\n */\n @Prop() min?: number = 0;\n\n /**\n * The size of the loading indicator.\n */\n @Prop({ reflect: true }) size?: IcLoadingSizes = \"default\";\n\n /**\n * The type of indicator, either linear or circular.\n */\n @Prop({ reflect: true }) type?: IcLoadingTypes = \"circular\";\n\n /**\n * The label to be displayed beneath the loading indicator.\n * Display a changing label by separating multiple messages with forward slashes.\n */\n @Prop() label?: string;\n\n @Watch(\"label\")\n watchPropHandler(): void {\n this.updateLabel();\n }\n\n /**\n * The current amount of progress made.\n * If not provided, component acts as an indeterminate loading indicator.\n */\n @Prop() progress?: number;\n\n @Watch(\"progress\")\n watchProgressHandler(): void {\n if (this.type === \"circular\") {\n this.updateCircularProgressMeter();\n }\n }\n\n disconnectedCallback(): void {\n clearInterval(this.interval);\n }\n\n componentWillLoad(): void {\n this.indeterminate = this.progress === undefined;\n this.updateLabel();\n this.el.setAttribute(\"exportparts\", \"ic-loading-container\");\n }\n\n componentDidLoad(): void {\n if (this.type === \"circular\") {\n this.setCircleLineWidth();\n this.circularMeter = this.el.shadowRoot.querySelector(\n \".ic-loading-circular-svg circle:nth-child(2)\"\n );\n this.updateCircularProgressMeter();\n }\n\n if (Number(this.progress) >= 0 && this.type === \"linear\") {\n this.setLinearDeterminateWidth();\n }\n }\n\n componentWillUpdate(): void {\n this.indeterminate = this.progress === undefined;\n }\n\n componentDidUpdate(): void {\n if (Number(this.progress) >= 0 && this.type === \"linear\") {\n this.setLinearDeterminateWidth();\n }\n }\n\n private updateCircularProgressMeter = () => {\n if (!this.indeterminate) {\n this.circularMeter.style.setProperty(\n \"--progress-value\",\n String(this.progress)\n );\n }\n };\n\n private getLabel = (\n labelIndex: number,\n setLabel: (label: string) => void\n ) => {\n return new Promise(() => {\n this.interval = setInterval(() => {\n if (labelIndex < this.labelList.length - 1) {\n labelIndex++;\n } else {\n labelIndex = 0;\n }\n setLabel(this.labelList[labelIndex]);\n }, this.labelDuration);\n });\n };\n\n private getLabelVariant = () => {\n let variant: \"label\" | \"h4\" | \"h2\" = \"h4\";\n const width = this.outerElement?.offsetWidth;\n if (this.size === \"small\" || (this.type === \"circular\" && width < 60)) {\n variant = \"label\";\n } else if (\n this.size === \"large\" ||\n (this.type === \"circular\" && width >= 120)\n ) {\n variant = \"h2\";\n }\n return variant;\n };\n\n // Sets the circular indicator line width - accounting for the circle size being altered using the CSS custom property\n private setCircleLineWidth = () => {\n const { offsetWidth: width } = this.outerElement;\n\n const compactStepCircularLineWidth = this.el.classList.contains(\n \"compact-step-progress-indicator\"\n )\n ? 40\n : 0;\n const toastDismissTimerCircularLineWidth = this.el.classList.contains(\n \"toast-dismiss-timer\"\n )\n ? 20\n : 0;\n\n if (\n width ||\n compactStepCircularLineWidth ||\n toastDismissTimerCircularLineWidth\n ) {\n this.circularLineWidth =\n (compactStepCircularLineWidth ||\n toastDismissTimerCircularLineWidth ||\n width) * 0.1;\n this.circularDiameter =\n compactStepCircularLineWidth ||\n toastDismissTimerCircularLineWidth ||\n width;\n this.outerElement.style.setProperty(\n \"--circular-line-width\",\n `${this.circularLineWidth}px`\n );\n }\n };\n\n private setLinearDeterminateWidth = () => {\n if (!this.innerElement) return;\n // Ensure progress cannot be out of bounds\n\n const progress = Math.min(this.max, Math.max(this.min, this.progress));\n const proportion = (progress - this.min) / (this.max - this.min);\n this.showSecond = proportion > 0.5;\n if (this.showSecond) {\n this.innerElement.classList.remove(\"clip\");\n } else {\n this.innerElement.classList.add(\"clip\");\n }\n this.innerElement.style.setProperty(\n \"--linear-width\",\n `${proportion * 100}%`\n );\n };\n\n private calcOuterClass = (): string => {\n let cls = `ic-loading-${this.type}-outer`;\n cls += this.indeterminate ? \" indeterminate\" : \" determinate\";\n return cls;\n };\n\n private updateLabel = (): void => {\n if (isPropDefined(this.label)) {\n this.labelList = this.label.split(\"/\");\n const labelIndex = 0;\n this.indicatorLabel = this.labelList[labelIndex];\n if (this.labelList.length > 1) {\n this.getLabel(labelIndex, (label) => {\n this.indicatorLabel = label;\n });\n }\n }\n };\n\n private setCircleXY = (): IcLoadingCircleXYR => {\n if (this.circularDiameter > 0) {\n const r = this.circularDiameter / 2;\n const x = r;\n const y = r;\n const nextRadius = r - this.circularLineWidth / 2;\n this.setDashSteps(nextRadius);\n\n return { x, y, r: nextRadius };\n }\n return { x: 0, y: 0, r: 0 };\n };\n\n private setDashSteps = (radius: number) => {\n const dashArray = 2 * Math.PI * radius;\n const progress = Math.min(Math.max(this.progress, this.min), this.max);\n const proportion = -1 - (progress - this.min) / (this.max - this.min);\n\n this.circularMeter.style.setProperty(\n \"--stroke-dasharray\",\n `${dashArray}px`\n );\n\n if (!this.indeterminate) {\n this.circularMeter.style.setProperty(\n \"--circular-steps-max\",\n String(this.max)\n );\n this.circularMeter.style.setProperty(\n \"--stroke-dashoffset\",\n `${proportion * dashArray}px`\n );\n }\n };\n\n render() {\n const { appearance, label, description, size, fullWidth, innerLabel } =\n this;\n const { x, y, r } = this.setCircleXY();\n\n return (\n <Host\n class={{\n [\"light\"]: appearance === IcThemeForegroundEnum.Light,\n [\"label\"]: !!label,\n [\"full-width\"]: fullWidth,\n [\"inner-label\"]: !!innerLabel,\n }}\n >\n <div class=\"ic-loading-container\" part=\"ic-loading-container\">\n <div\n ref={(el) => (this.outerElement = el as HTMLDivElement)}\n class={this.calcOuterClass()}\n role=\"progressbar\"\n aria-labelledby={\n this.label && this.size !== \"icon\" && \"ic-loading-label\"\n }\n aria-label={description}\n aria-valuenow={this.progress}\n aria-valuemin={this.min}\n aria-valuemax={this.max}\n >\n <div\n ref={(el) => (this.innerElement = el as HTMLDivElement)}\n class={`ic-loading-${this.type}-inner`}\n >\n {this.innerLabel &&\n this.innerLabel !== undefined &&\n this.size === \"small\" && (\n <ic-typography variant=\"subtitle-small\" class=\"inner-text\">\n {this.innerLabel}\n </ic-typography>\n )}\n {this.type === \"circular\" && (\n <svg\n class=\"ic-loading-circular-svg\"\n viewBox={`0 0 ${this.circularDiameter || 0} ${\n this.circularDiameter || 0\n }`}\n >\n <circle cx={`${x}`} cy={`${y}`} r={`${r}`}></circle>\n <circle cx={`${x}`} cy={`${y}`} r={`${r}`}></circle>\n </svg>\n )}\n </div>\n </div>\n {label && size !== \"icon\" && (\n <ic-typography\n id=\"ic-loading-label\"\n class=\"ic-loading-label\"\n role=\"status\"\n variant={this.getLabelVariant()}\n >\n <p>{this.indicatorLabel}</p>\n </ic-typography>\n )}\n </div>\n </Host>\n );\n }\n}\n","@import \"../../global/normalize.css\";\n\n/**\n * @prop --ic-z-index-tooltip: z-index of tooltip\n */\n\n:host(.ic-tooltip) .ic-tooltip-container {\n background-color: var(--ic-architectural-800);\n color: #ffff;\n text-align: center;\n padding: var(--ic-space-xxxs) var(--ic-space-xs);\n border-radius: var(--ic-border-radius);\n border: var(--ic-border-width) solid var(--ic-architectural-40);\n position: absolute;\n max-width: 20rem;\n display: none;\n z-index: var(--ic-z-index-tooltip);\n box-shadow: var(--ic-elevation-overlay);\n}\n\n:host(.tooltip-navigation-item:not(.tooltip-navigation-item-side-nav-collapsed))\n .ic-tooltip-container,\n:host(.tooltip-disabled) .ic-tooltip-container {\n display: none !important;\n}\n\n:host(.tooltip-long-label-navigation-item-side-nav-expanded)\n .ic-tooltip-container[data-show] {\n display: block !important;\n}\n\n:host(.ic-tooltip) .ic-tooltip-arrow,\n:host(.ic-tooltip) .ic-tooltip-arrow::before {\n position: absolute;\n background: inherit;\n}\n\n:host(.ic-tooltip) .ic-tooltip-arrow {\n visibility: hidden;\n width: var(--ic-space-md);\n height: var(--ic-space-md);\n}\n\n:host(.ic-tooltip) .ic-tooltip-arrow::before {\n visibility: visible;\n content: \"\";\n border: var(--ic-border-width) solid var(--ic-architectural-40);\n width: 100%;\n height: 100%;\n}\n\n:host(.ic-tooltip) .ic-tooltip-container[data-show] {\n display: block;\n}\n\n:host(.ic-tooltip)\n .ic-tooltip-container[data-popper-placement^=\"top\"]\n > .ic-tooltip-arrow {\n height: var(--ic-space-xxxs);\n}\n\n:host(.ic-tooltip)\n .ic-tooltip-container[data-popper-placement^=\"top\"]\n > .ic-tooltip-arrow::before {\n border-radius: 0 0 var(--ic-border-radius) var(--ic-border-radius);\n left: 0;\n top: var(--ic-space-xxxs);\n border-top: 0;\n transform: translateX(var(--tooltip-arrow-translate));\n}\n\n:host(.ic-tooltip)\n .ic-tooltip-container[data-popper-placement^=\"bottom\"]\n > .ic-tooltip-arrow {\n top: calc(-1 * var(--ic-space-xxs));\n height: var(--ic-space-xxxs);\n}\n\n:host(.ic-tooltip)\n .ic-tooltip-container[data-popper-placement^=\"bottom\"]\n > .ic-tooltip-arrow::before {\n border-radius: var(--ic-border-radius) var(--ic-border-radius) 0 0;\n left: 0;\n top: var(--ic-space-1px);\n border-bottom: 0;\n transform: translateX(var(--tooltip-arrow-translate));\n}\n\n:host(.ic-tooltip)\n .ic-tooltip-container[data-popper-placement^=\"left\"]\n > .ic-tooltip-arrow {\n width: var(--ic-space-xxxs);\n right: calc(-1 * var(--ic-space-1px));\n}\n\n:host(.ic-tooltip)\n .ic-tooltip-container[data-popper-placement^=\"left\"]\n > .ic-tooltip-arrow::before {\n border-radius: 0 var(--ic-border-radius) var(--ic-border-radius) 0;\n border-left: 0;\n top: calc(-1 * var(--ic-space-1px));\n}\n\n:host(.ic-tooltip)\n .ic-tooltip-container[data-popper-placement^=\"right\"]\n > .ic-tooltip-arrow {\n width: var(--ic-space-xxxs);\n left: calc(-1 * var(--ic-space-xxs));\n}\n\n:host(.ic-tooltip)\n .ic-tooltip-container[data-popper-placement^=\"right\"]\n > .ic-tooltip-arrow::before {\n border-radius: var(--ic-border-radius) 0 0 var(--ic-border-radius);\n border-right: 0;\n top: calc(-1 * var(--ic-space-1px));\n}\n\n:host(.on-dialog) .ic-tooltip-container {\n transform: translate(\n var(--tooltip-translate-x),\n var(--tooltip-translate-y)\n ) !important;\n}\n\n@media screen and (max-width: 576px) {\n :host(.ic-tooltip) .ic-tooltip-container {\n max-width: 18.875rem;\n }\n}\n\n@media (forced-colors: active) {\n :host(.ic-tooltip) .ic-tooltip-container,\n :host(.ic-tooltip) .ic-tooltip-arrow::before {\n border: var(--ic-hc-border);\n }\n}\n","import { Component, Element, Host, Prop, h, Method } from \"@stencil/core\";\nimport { Instance, createPopper } from \"@popperjs/core\";\nimport { IcTooltipPlacements } from \"./ic-tooltip.types\";\nimport { onComponentRequiredPropUndefined } from \"../../utils/helpers\";\n\n@Component({\n tag: \"ic-tooltip\",\n styleUrl: \"ic-tooltip.css\",\n shadow: true,\n})\nexport class Tooltip {\n private arrow: HTMLDivElement;\n private delayedHideEvents = [\"mouseleave\"];\n private dialogOverflow = false;\n private icDialogEl: HTMLIcDialogElement;\n private instantHideEvents = [\"focusout\"];\n private mouseOverTool: boolean = false;\n private persistTooltip = false;\n private popperInstance: Instance;\n private onDialog: boolean = false;\n private showEvents = [\n !this.disableHover && \"mouseenter\",\n !this.disableHover && \"focusin\",\n !this.disableClick && \"click\",\n ];\n private toolTip: HTMLDivElement;\n\n @Element() el: HTMLIcTooltipElement;\n\n /**\n * @internal If `true`, the tooltip will not be displayed on click, it will require hover or using the display method.\n */\n @Prop() disableClick?: boolean = false;\n\n /**\n * If `true`, the tooltip will not be displayed on hover, it will require a click.\n */\n @Prop() disableHover?: boolean = false;\n\n /**\n * The number of lines to display before truncating the text.\n */\n @Prop() maxLines?: number;\n\n /**\n * The position of the tooltip in relation to the parent element.\n */\n @Prop({ mutable: true }) placement?: IcTooltipPlacements = \"bottom\";\n\n /**\n * @internal Sets the tooltip to aria-hidden, when used as part of components that are already announced.\n */\n @Prop() silent?: boolean = false;\n\n /**\n * The ID of the element the tooltip is describing - for when aria-labelledby or aria-describedby is used.\n */\n @Prop({ reflect: true }) target?: string;\n\n /**\n * The text to display on the tooltip.\n */\n @Prop() label!: string;\n\n disconnectedCallback(): void {\n this.manageEventListeners(\"remove\");\n if (this.popperInstance !== undefined) {\n this.popperInstance.destroy();\n }\n }\n\n componentDidLoad(): void {\n this.manageEventListeners(\"add\");\n\n this.icDialogEl = this.el.closest(\"ic-dialog\");\n this.dialogOverflow =\n this.icDialogEl?.getAttribute(\"data-overflow\") === \"true\";\n\n this.onDialog = this.icDialogEl !== null;\n\n onComponentRequiredPropUndefined(\n [{ prop: this.label, propName: \"label\" }],\n \"Tooltip\"\n );\n }\n\n componentDidRender(): void {\n const typographyEl = this.el.shadowRoot.querySelector(\n \".ic-tooltip-container > ic-typography\"\n );\n this.maxLines > 0 &&\n typographyEl.setAttribute(\n \"style\",\n `--truncation-max-lines: ${this.maxLines}`\n );\n }\n /**\n * Method to programmatically show/hide the tooltip without needing to interact with an anchor element\n * @param show Whether to show or hide the tooltip\n * @param persistTooltip Whether the tooltip should stay on the screen when actions are performed that would previously dismiss the tooltip, such as on hover\n */\n @Method()\n async displayTooltip(show: boolean, persistTooltip?: boolean): Promise<void> {\n this.persistTooltip = persistTooltip;\n show ? this.show() : this.hide();\n }\n\n private getTooltipTranslate = (dialogEl: DOMRect) => {\n const child = this.el.children[0].getBoundingClientRect();\n let tooltipX;\n let tooltipY;\n switch (this.placement) {\n case \"bottom\":\n tooltipX = child.left - dialogEl.left - 0.5 * child.width;\n tooltipY = child.bottom - dialogEl.top;\n break;\n case \"bottom-start\":\n tooltipX = child.left - dialogEl.left;\n tooltipY = child.bottom - dialogEl.top;\n break;\n case \"bottom-end\":\n tooltipX = child.right - dialogEl.right;\n tooltipY = child.bottom - dialogEl.top;\n break;\n case \"top\":\n tooltipX = child.left - dialogEl.left - 0.5 * child.width;\n tooltipY = child.top - dialogEl.bottom;\n break;\n case \"top-start\":\n tooltipX = child.left - dialogEl.left;\n tooltipY = child.top - dialogEl.bottom;\n break;\n case \"top-end\":\n tooltipX = child.right - dialogEl.right;\n tooltipY = child.top - dialogEl.bottom;\n break;\n case \"left\":\n case \"left-start\":\n tooltipX = child.right - dialogEl.right - child.width;\n tooltipY = child.bottom - dialogEl.top - child.height;\n break;\n case \"left-end\":\n tooltipX = child.right - dialogEl.right - child.width;\n tooltipY = child.top - dialogEl.bottom + child.height;\n break;\n case \"right\":\n case \"right-start\":\n tooltipX = child.left - dialogEl.left + child.width;\n tooltipY = child.bottom - dialogEl.top - child.height;\n break;\n case \"right-end\":\n tooltipX = child.left - dialogEl.left + child.width;\n tooltipY = child.top - dialogEl.bottom + child.height;\n break;\n }\n if (this.dialogOverflow && tooltipX < 0) {\n if (this.placement.includes(\"top\") || this.placement.includes(\"bottom\")) {\n this.toolTip.style.setProperty(\n \"--tooltip-arrow-translate\",\n `${tooltipX}px`\n );\n tooltipX = child.left - dialogEl.left;\n }\n if (this.placement.includes(\"left\")) {\n this.placement = \"right\";\n tooltipX = child.left - dialogEl.left + child.width;\n }\n }\n\n this.toolTip.style.setProperty(\"--tooltip-translate-x\", `${tooltipX}px`);\n this.toolTip.style.setProperty(\"--tooltip-translate-y\", `${tooltipY}px`);\n };\n\n private show = () => {\n if (this.label) {\n this.toolTip.setAttribute(\"data-show\", \"\");\n\n if (this.onDialog) {\n this.el.classList.add(\"on-dialog\");\n const dialogEl = this.icDialogEl.shadowRoot\n .querySelector(\"dialog\")\n .getBoundingClientRect();\n\n this.getTooltipTranslate(dialogEl);\n }\n\n this.popperInstance = createPopper(this.el, this.toolTip, {\n placement: this.placement,\n modifiers: [\n {\n name: \"offset\",\n options: {\n offset: [0, 10],\n },\n },\n {\n name: \"arrow\",\n options: {\n element: this.arrow,\n },\n },\n {\n name: \"eventListeners\",\n options: { scroll: false, resize: false },\n },\n ],\n });\n } else {\n console.warn(`Tooltip can't display without prop 'label' set`);\n }\n };\n\n private hide = () => {\n this.toolTip.removeAttribute(\"data-show\");\n this.persistTooltip = false;\n };\n\n private checkCloseTooltip = () => {\n setTimeout(() => {\n if (!this.mouseOverTool && !this.persistTooltip) {\n this.hide();\n }\n }, 100);\n };\n\n private mouseEnterTooltip = () => {\n this.mouseOverTool = true;\n };\n\n private mouseLeaveTooltip = () => {\n this.mouseOverTool = false;\n this.checkCloseTooltip();\n };\n\n private handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\" && !this.persistTooltip) {\n this.hide();\n }\n };\n\n private manageEventListeners = (action: \"add\" | \"remove\") => {\n const method =\n action === \"add\" ? \"addEventListener\" : \"removeEventListener\";\n\n this.showEvents.forEach((event) => {\n this.el[method](event, this.show);\n if (this.toolTip !== undefined) {\n this.toolTip[method](event, this.mouseEnterTooltip);\n }\n });\n\n if (!this.persistTooltip) {\n this.instantHideEvents.forEach((event) => {\n this.el[method](event, this.hide);\n });\n }\n\n this.delayedHideEvents.forEach((event) => {\n this.el[method](event, this.checkCloseTooltip);\n if (this.toolTip !== undefined) {\n this.toolTip[method](event, this.mouseLeaveTooltip);\n }\n });\n\n document[method](\"keydown\", this.handleKeyDown);\n };\n\n render() {\n const { label, maxLines, silent } = this;\n return (\n <Host class={{ \"ic-tooltip\": true }}>\n <div\n ref={(el) => (this.toolTip = el as HTMLDivElement)}\n role=\"tooltip\"\n class=\"ic-tooltip-container\"\n aria-hidden={silent}\n >\n <ic-typography maxLines={maxLines} variant=\"caption\">\n {label}\n </ic-typography>\n <div\n ref={(el) => (this.arrow = el as HTMLDivElement)}\n class=\"ic-tooltip-arrow\"\n ></div>\n </div>\n <slot></slot>\n </Host>\n );\n }\n}\n"],"mappings":"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"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["icDataEntityCss","DataEntity","render","heading","small","size","this","children","el","i","length","setAttribute","h","Host","class","id","name","variant"],"sources":["src/components/ic-data-entity/ic-data-entity.css?tag=ic-data-entity&encapsulation=shadow","src/components/ic-data-entity/ic-data-entity.tsx"],"sourcesContent":["@import \"../../global/normalize.css\";\n\n:host {\n display: block;\n}\n\n.rows {\n display: flex;\n flex-direction: column;\n gap: var(--ic-space-md);\n}\n\n:host(.small) .rows {\n gap: var(--ic-space-xs);\n}\n\n.divider {\n margin-top: var(--ic-space-lg);\n margin-bottom: var(--ic-space-md);\n height: var(--ic-border-width);\n background-color: var(--ic-architectural-300);\n}\n\n:host(.small) .divider {\n margin-top: var(--ic-space-sm);\n margin-bottom: var(--ic-space-xs);\n}\n\n@media (forced-colors: active) {\n .divider {\n background-color: canvastext;\n }\n}\n","import { Component, Element, Host, h, Prop } from \"@stencil/core\";\nimport { IcSizesNoLarge } from \"../../utils/types\";\n\n/**\n * @slot heading - Content will be placed at the top of the data entity.\n */\n@Component({\n tag: \"ic-data-entity\",\n styleUrl: \"ic-data-entity.css\",\n shadow: true,\n})\nexport class DataEntity {\n @Element() el: HTMLIcDataEntityElement;\n\n /**\n * The title for the data entity.\n */\n @Prop() heading: string;\n\n /**\n * The size of the data entity component.\n */\n @Prop() size?: IcSizesNoLarge = \"default\";\n\n /**\n * @deprecated This prop should not be used anymore. Set prop `size` to \"small\" instead.\n */\n @Prop() small?: boolean = false;\n\n render() {\n const { heading, small, size } = this;\n\n const children = this.el.children;\n\n if (small || size === \"small\") {\n for (let i = 0; i < children.length; i++) {\n children[i].setAttribute(\"size\", \"small\");\n }\n }\n\n return (\n <Host class={{ [\"small\"]: small || size === \"small\" }}>\n <div class=\"heading\" id=\"data-entity-heading\">\n <slot name=\"heading\">\n <ic-typography variant=\"h3\">{heading}</ic-typography>\n </slot>\n </div>\n <div class=\"divider\" />\n <ul aria-labelledby=\"data-entity-heading\" class=\"rows\">\n <slot></slot>\n </ul>\n </Host>\n );\n }\n}\n"],"mappings":"yDAAA,MAAMA,EAAkB,ixF,MCWXC,EAAU,M,0DAWW,U,WAKN,K,CAE1B,MAAAC,GACE,MAAMC,QAAEA,EAAOC,MAAEA,EAAKC,KAAEA,GAASC,KAEjC,MAAMC,EAAWD,KAAKE,GAAGD,SAEzB,GAAIH,GAASC,IAAS,QAAS,CAC7B,IAAK,IAAII,EAAI,EAAGA,EAAIF,EAASG,OAAQD,IAAK,CACxCF,EAASE,GAAGE,aAAa,OAAQ,Q,EAIrC,OACEC,EAACC,EAAI,CAACC,MAAO,CAAE,CAAC,SAAUV,GAASC,IAAS,UAC1CO,EAAA,OAAKE,MAAM,UAAUC,GAAG,uBACtBH,EAAA,QAAMI,KAAK,WACTJ,EAAA,iBAAeK,QAAQ,MAAMd,KAGjCS,EAAA,OAAKE,MAAM,YACXF,EAAA,wBAAoB,sBAAsBE,MAAM,QAC9CF,EAAA,c"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["icSearchBarCss","inputIds","SearchBar","this","assistiveHintEl","hasTimedOut","inputId","menuCloseFromMenuChangeEvent","menuId","preLoad","preventSubmit","prevNoOption","retryButtonClick","truncateValue","handleClear","ev","keyboardEvent","mouseEvent","type","code","value","inputEl","loading","clearTimeout","timeoutTimer","filteredOptions","options","el","setFocus","icClear","emit","preventDefault","onInput","target","noOptions","labelField","emptyOptionListText","valueField","length","setMenuChange","disableFilter","rawFilteredOptions","getFilteredMenuOptions","showClearButton","handleShowClearButton","debounceAriaLiveUpdate","onInputBlur","nextFocus","relatedTarget","icInputBlur","onInputFocus","icInputFocus","handleClearBlur","icClearBlur","clearButtonFocused","handleSubmitSearchBlur","icSubmitSearchBlur","searchSubmitFocused","handleMouseDown","handleSubmitSearchFocus","handleSubmitSearch","highlightedValue","undefined","icSubmitSearch","form","closest","searchSubmitButton","handleHiddenFormButtonClick","handleSubmitSearchKeyDown","key","handleRetry","retryViaKeyPress","detail","keyPressed","icRetryLoad","triggerLoading","loadingOption","loadingLabel","timeout","window","setTimeout","loadingErrorLabel","timedOut","handleOptionSelect","label","icOptionSelect","handleMenuOptionHighlight","optionValue","_a","optionId","replace","ariaActiveDescendant","handleMenuChange","open","handleMenuCloseFromMenuChange","focusInput","icMenuChange","handleHostFocus","handleTruncateValue","icSearchBarFocus","handleHostBlur","menu","icSearchBarBlur","visible","handleFocusClearButton","fromEvent","truncate","renderAssistiveHintEl","input","_b","shadowRoot","querySelector","Object","keys","hasOptionsOrFilterDisabled","document","createElement","innerText","hintText","id","style","display","after","updateSearchResultAriaLive","searchResultsStatusEl","charactersUntilSuggestion","hadNoOptions","searchMode","isSubmitDisabled","valueNotSet","valueLengthLess","disabled","highlightFirstOptionAfterNoResults","handleSetFirstOption","prevNoOptionsList","find","filteredOption","loadingHandler","newValue","filteredOptionsHandler","newOptions","some","opt","watchOptionsHandler","watchValueHandler","getLabelFromValue","disconnectedCallback","remove","componentWillLoad","removeDisabledFalse","small","size","componentDidLoad","focusOnLoad","onComponentRequiredPropUndefined","prop","propName","anchorEl","componentWillRender","handleKeyDown","keyEv","event","handleKeyboardOpen","handleKeyUp","debounceAriaLive","render","name","required","placeholder","helperText","readonly","spellcheck","fullWidth","hideLabel","autofocus","autocapitalize","autocomplete","disabledMode","describedBy","getInputDescribedByText","trim","describedById","disabledText","hasSuggestedSearch","menuOpen","menuRendered","isOrHasLoaded","expanded","renderHiddenInput","h","Host","class","onFocus","onBlur","ref","ariaExpanded","role","autoFocus","inputmode","debounce","slot","innerHTML","clearIcon","onClick","onMouseDown","onKeyDown","variant","appearance","IcThemeForegroundEnum","Light","Dark","searchIcon","Default","fullwidth","activationType","autoFocusOnSelected","inputLabel","onMenuOptionSelect","onMenuStateChange","onMenuOptionId","onRetryButtonClicked","parentEl"],"sources":["src/components/ic-search-bar/ic-search-bar.css?tag=ic-search-bar&encapsulation=shadow","src/components/ic-search-bar/ic-search-bar.tsx"],"sourcesContent":["@import \"../../global/normalize.css\";\n\n/**\n * @prop --ic-z-index-menu: z-index of search bar menu\n */\n\n:host(.search) {\n --divider-height: 1.5rem;\n}\n\n:host(.search.small) {\n --divider-height: 1rem;\n}\n\n:host(.fullwidth) {\n width: 100%;\n}\n\n:host(.search) .disabled:hover {\n border-color: var(--ic-architectural-200);\n}\n\n:host(.search.disabled) .disabled svg {\n color: var(--ic-architectural-200);\n}\n\n:host(.search) .disabled svg {\n color: var(--ic-architectural-400);\n}\n\n/* CLEAR */\n\n.clear-button-container {\n align-items: center;\n margin-right: var(--ic-space-1px);\n display: none;\n visibility: hidden;\n}\n\n.clear-button {\n border-radius: var(--ic-border-radius);\n transition: box-shadow var(--ic-easing-transition),\n border-radius var(--ic-easing-transition);\n}\n\n.clear-button:focus,\n.clear-button:active {\n background-color: var(--ic-focus-blue);\n box-shadow: inset 0 0 0 0.125rem var(--ic-focus-glow);\n border-radius: 0.25rem;\n}\n\n.clear-button:focus,\n.clear-button:active * {\n fill: white;\n}\n\n.clear-button-visible {\n visibility: visible;\n display: flex;\n}\n\n.search-submit-button-container {\n display: flex;\n align-items: center;\n}\n\n.search-submit-button-disabled .ic-tooltip-container {\n display: none !important;\n}\n\n.search-submit-button:focus,\n.search-submit-button:active {\n background-color: var(--ic-focus-blue) !important;\n box-shadow: inset 0 0 0 0.125rem var(--ic-focus-glow) !important;\n border-radius: var(--ic-space-xxs);\n}\n\n.search-submit-button:focus,\n.search-submit-button:active * {\n fill: white;\n}\n\n.divider {\n width: var(--ic-border-width);\n background-color: var(--ic-action-dark-active);\n height: var(--divider-height);\n}\n\n:host(.dark) .divider {\n background-color: var(--ic-architectural-200);\n}\n\n.menu-container {\n width: var(--input-width, 20rem);\n position: relative;\n top: var(--ic-space-xxxs);\n}\n\n.menu-container.fullwidth {\n width: 100%;\n}\n\n.no-results {\n cursor: not-allowed;\n}\n\n.search-results-status {\n border: 0;\n clip: rect(0, 0, 0, 0, 0);\n height: var(--ic-space-1px);\n margin-bottom: calc(-1 * var(--ic-space-1px));\n margin-right: calc(-1 * var(--ic-space-1px));\n overflow: hidden;\n padding: 0;\n position: absolute;\n white-space: nowrap;\n width: var(--ic-space-1px);\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} from \"@stencil/core\";\n\nimport {\n IcAutocompleteTypes,\n IcAutocorrectStates,\n IcThemeForegroundEnum,\n IcMenuOption,\n IcSizesNoLarge,\n} from \"../../utils/types\";\nimport {\n getInputDescribedByText,\n renderHiddenInput,\n handleHiddenFormButtonClick,\n getLabelFromValue,\n onComponentRequiredPropUndefined,\n getFilteredMenuOptions,\n removeDisabledFalse,\n} from \"../../utils/helpers\";\nimport {\n IcSearchBarBlurEventDetail,\n IcSearchBarSearchModes,\n} from \"./ic-search-bar.types\";\nimport { IcValueEventDetail, IcBlurEventDetail } from \"../../utils/types\";\nimport {\n IcMenuChangeEventDetail,\n IcOptionSelectEventDetail,\n} from \"../ic-menu/ic-menu.types\";\n\nimport clearIcon from \"../../assets/clear-icon.svg\";\nimport searchIcon from \"../../assets/search-icon.svg\";\n\nlet inputIds = 0;\n\n@Component({\n tag: \"ic-search-bar\",\n styleUrl: \"ic-search-bar.css\",\n shadow: {\n delegatesFocus: true,\n },\n})\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport class SearchBar {\n private anchorEl: HTMLElement;\n private assistiveHintEl: HTMLSpanElement = null;\n private debounceAriaLive: number;\n private hasTimedOut = false;\n private inputEl: HTMLIcTextFieldElement;\n private inputId = `ic-search-bar-input-${inputIds++}`;\n private menu: HTMLIcMenuElement;\n private menuCloseFromMenuChangeEvent: boolean = false;\n private menuId = `${this.inputId}-menu`;\n private preLoad = true;\n private preventSubmit: boolean = false;\n private prevNoOption: boolean = false;\n private retryButtonClick: boolean = false;\n private retryViaKeyPress: boolean;\n private timeoutTimer: number;\n private truncateValue = false;\n private searchSubmitButton: HTMLIcButtonElement;\n\n @Element() el: HTMLIcSearchBarElement;\n\n @State() ariaActiveDescendant: string;\n @State() clearButtonFocused: boolean = false;\n @State() highlightedValue: string;\n @State() open: boolean = false;\n @State() searchSubmitFocused: boolean = false;\n @State() showClearButton: boolean = false;\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 * The number of characters until suggestions appear. The submit button will be disabled until the inputted value is equal to or greater than this number.\n */\n @Prop() charactersUntilSuggestion: number = 2;\n\n /**\n * If `true`, the disabled state will be set.\n */\n @Prop() disabled?: boolean = false;\n\n /**\n * Specify whether to disable the built in filtering. For example, if options will already be filtered from external source.\n * If `true`, all options provided will be displayed.\n */\n @Prop() disableFilter?: boolean = false;\n\n /**\n * The amount of time, in milliseconds, to wait to trigger the `icChange` event after each keystroke.\n */\n @Prop() debounce?: number = 0;\n\n /**\n * The text displayed when there are no options in the option list.\n */\n @Prop() emptyOptionListText = \"No results found\";\n\n /**\n * If `true`, the search bar will be focused when component loaded.\n */\n @Prop() focusOnLoad?: boolean = false;\n\n /**\n * Specify whether the search bar fills the full width of the container.\n * If `true`, this overrides the --input-width CSS variable.\n */\n @Prop() fullWidth?: boolean = false;\n\n /**\n * The helper text that will be displayed for additional field guidance.\n */\n @Prop() helperText?: string = \"\";\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?: boolean = false;\n\n /**\n * The hint text for the hidden assistive description element.\n */\n @Prop() hintText?: string =\n \"When autocomplete results are available use the up and down arrows to choose and press enter to select\";\n\n /**\n * The label for the search bar.\n */\n @Prop() label!: string;\n\n /**\n * The custom name for the label field to correspond with the IcMenuOption type.\n */\n @Prop() labelField?: string = \"label\";\n\n /**\n * Trigger loading state when fetching options asyncronously\n */\n @Prop({ mutable: true }) loading?: boolean = false;\n\n /**\n * Change the message displayed when external loading times out.\n */\n @Prop() loadingErrorLabel?: string = \"Loading Error\";\n\n /**\n * Change the message displayed whilst the options are being loaded externally.\n */\n @Prop() loadingLabel?: string = \"Loading...\";\n\n /**\n * The name of the control, which is submitted with the form data.\n */\n @Prop() name: string = this.inputId;\n\n /**\n * The placeholder value to display.\n */\n @Prop() placeholder?: string = \"Search\";\n\n /**\n * If `true`, the readonly state will be set.\n */\n @Prop() readonly?: boolean = false;\n\n /**\n * If `true`, the search bar will require a value.\n */\n @Prop() required?: boolean = false;\n\n /**\n * Specify the mode search bar uses to search. `navigation` allows for quick lookups of a set of values, `query` allows for more general searches.\n */\n @Prop() searchMode?: IcSearchBarSearchModes = \"navigation\";\n\n /**\n * The size of the search bar component.\n */\n @Prop() size?: IcSizesNoLarge = \"default\";\n\n /**\n * @deprecated This prop should not be used anymore. Set prop `size` to \"small\" instead.\n */\n @Prop() small?: boolean = false;\n\n /**\n * If `true`, the value of the search will have its spelling and grammar checked.\n */\n @Prop() spellcheck: boolean = false;\n\n /**\n * If using external filtering, set a timeout for when loading takes too long.\n */\n @Prop() timeout?: number;\n\n /**\n * The custom name for the value field to correspond with the IcMenuOption type.\n */\n @Prop() valueField?: string = \"value\";\n\n @Watch(\"loading\")\n loadingHandler(newValue: boolean): void {\n if (newValue && !this.hasTimedOut) {\n this.preLoad = false;\n this.triggerLoading();\n }\n }\n\n @State() filteredOptions: IcMenuOption[] = [];\n\n @Watch(\"filteredOptions\")\n filteredOptionsHandler(newOptions: IcMenuOption[]): void {\n this.hasTimedOut = newOptions.some((opt) => opt.timedOut);\n }\n\n /**\n * The suggested search options.\n */\n @Prop() options?: IcMenuOption[] = [];\n\n @Watch(\"options\")\n watchOptionsHandler(newOptions: IcMenuOption[]): void {\n if (this.disableFilter && !this.hasTimedOut) {\n this.loading = false;\n clearTimeout(this.timeoutTimer);\n if (newOptions.length > 0) {\n this.filteredOptions = newOptions;\n } else {\n if (this.hadNoOptions()) {\n return;\n }\n this.setMenuChange(true);\n !this.preLoad &&\n (this.filteredOptions = [\n {\n [this.labelField]: this.emptyOptionListText,\n [this.valueField]: \"\",\n },\n ]);\n this.preLoad = true;\n }\n }\n this.debounceAriaLiveUpdate();\n }\n\n /**\n * The value of the search input.\n */\n @Prop({ reflect: true, mutable: true }) value: string = \"\";\n\n @Watch(\"value\")\n watchValueHandler(newValue: string): void {\n if (\n this.inputEl &&\n this.options &&\n !!getLabelFromValue(\n newValue,\n this.options,\n this.valueField,\n this.labelField\n )\n ) {\n this.inputEl.value = getLabelFromValue(\n newValue,\n this.options,\n this.valueField,\n this.labelField\n );\n } else if (this.inputEl && this.inputEl.value !== newValue) {\n this.inputEl.value = newValue;\n }\n }\n\n // The icChange event is defined here so that it appears as an event for search bar\n // The actual event is emitted from the child ic-text-field\n /**\n * Emitted when the value has changed.\n */\n @Event() icChange: EventEmitter<IcValueEventDetail>;\n\n /**\n * Emitted when value is cleared with clear button\n */\n @Event() icClear: EventEmitter<void>;\n private handleClear = (ev: Event) => {\n const keyboardEvent = ev as KeyboardEvent;\n const mouseEvent = ev as MouseEvent;\n\n if (\n mouseEvent.type === \"click\" ||\n keyboardEvent.code === \"Enter\" ||\n keyboardEvent.code === \"Space\"\n ) {\n this.value = \"\";\n this.inputEl.value = \"\";\n this.loading = false;\n clearTimeout(this.timeoutTimer);\n this.filteredOptions = this.options;\n this.el.setFocus();\n\n this.icClear.emit();\n ev.preventDefault();\n\n this.preventSubmit = true;\n }\n };\n\n // The icInput event is defined here so that it appears as an event for search bar\n // The actual event is emitted from the child ic-text-field\n /**\n * Emitted when a keyboard input occurred.\n */\n @Event() icInput: EventEmitter<IcValueEventDetail>;\n private onInput = (ev: Event) => {\n this.value = (ev.target as HTMLInputElement).value;\n\n const noOptions = [\n { [this.labelField]: this.emptyOptionListText, [this.valueField]: \"\" },\n ];\n\n if (this.options.length > 0) {\n this.setMenuChange(true);\n\n this.preLoad = false;\n\n if (this.disableFilter === false) {\n const rawFilteredOptions = getFilteredMenuOptions(\n this.options,\n false,\n this.value,\n \"anywhere\",\n this.labelField\n );\n\n this.filteredOptions =\n rawFilteredOptions.length > 0 ? rawFilteredOptions : noOptions;\n }\n }\n\n if (!this.showClearButton) {\n this.handleShowClearButton(true);\n }\n\n this.debounceAriaLiveUpdate();\n };\n\n /**\n * @deprecated This event should not be used anymore. Use icSearchBarBlur instead.\n */\n @Event() icInputBlur: EventEmitter<IcSearchBarBlurEventDetail>;\n private onInputBlur = (ev: Event) => {\n const value = (ev.target as HTMLInputElement).value;\n const nextFocus = (ev as FocusEvent).relatedTarget;\n\n this.icInputBlur.emit({ value: value, relatedTarget: nextFocus });\n };\n\n /**\n * @deprecated This event should not be used anymore. Use icSearchBarFocus instead.\n */\n @Event() icInputFocus: EventEmitter<IcValueEventDetail>;\n private onInputFocus = (ev: Event) => {\n const value = (ev.target as HTMLInputElement).value;\n this.icInputFocus.emit({ value: value });\n\n this.handleShowClearButton(true);\n };\n\n /**\n * Emitted when option is highlighted within the menu\n */\n @Event() icOptionSelect: EventEmitter<IcOptionSelectEventDetail>;\n\n /**\n * Emitted when the state of the menu changes (i.e. open or close)\n */\n @Event() icMenuChange: EventEmitter<IcMenuChangeEventDetail>;\n /**\n * @internal - Emitted when blur is invoked from clear button\n */\n @Event() icClearBlur: EventEmitter<IcBlurEventDetail>;\n private handleClearBlur = (ev: Event) => {\n const nextFocus = (ev as FocusEvent).relatedTarget;\n\n this.icClearBlur.emit({ relatedTarget: nextFocus });\n\n this.clearButtonFocused = false;\n };\n\n /**\n * Emitted when the 'retry loading' button is clicked\n */\n @Event() icRetryLoad: EventEmitter<IcValueEventDetail>;\n\n /**\n * Emitted when the search value has been submitted\n */\n @Event() icSubmitSearch: EventEmitter<IcValueEventDetail>;\n\n /**\n * @internal - Emitted when blur is invoked from search submit button\n */\n @Event() icSubmitSearchBlur: EventEmitter<IcBlurEventDetail>;\n private handleSubmitSearchBlur = (ev: Event) => {\n const nextFocus = (ev as FocusEvent).relatedTarget;\n\n this.icSubmitSearchBlur.emit({ relatedTarget: nextFocus });\n\n this.searchSubmitFocused = false;\n };\n\n /**\n * Emitted when blur is invoked from ic-search-bar\n */\n @Event() icSearchBarBlur: EventEmitter<IcSearchBarBlurEventDetail>;\n\n /**\n * Emitted when focus is invoked from ic-search-bar\n */\n @Event() icSearchBarFocus: EventEmitter<void>;\n\n disconnectedCallback(): void {\n if (this.assistiveHintEl) {\n this.assistiveHintEl.remove();\n }\n }\n\n componentWillLoad(): void {\n this.watchValueHandler(this.value);\n\n removeDisabledFalse(this.disabled, this.el);\n\n if (this.small) {\n this.size = \"small\";\n }\n }\n\n componentDidLoad(): void {\n if (this.focusOnLoad) {\n this.el.setFocus();\n }\n\n if (this.hasOptionsOrFilterDisabled()) {\n this.renderAssistiveHintEl();\n if (this.disableFilter) {\n this.filteredOptions = this.options;\n }\n }\n\n onComponentRequiredPropUndefined(\n [{ prop: this.label, propName: \"label\" }],\n \"Search Bar\"\n );\n\n if (this.inputEl !== undefined) {\n this.anchorEl = this.inputEl.shadowRoot.querySelector(\n \"ic-input-component-container\"\n );\n }\n }\n\n componentWillRender(): void {\n this.highlightFirstOptionAfterNoResults();\n }\n\n @Listen(\"icKeydown\", {})\n handleKeyDown(ev: CustomEvent): void {\n const keyEv: KeyboardEvent = ev.detail.event;\n if (this.menu && this.open) {\n this.menu.handleKeyboardOpen(keyEv);\n }\n }\n\n @Listen(\"keyup\", {})\n handleKeyUp(ev: KeyboardEvent): void {\n if (ev.key === \"Enter\") {\n if (this.preventSubmit || this.isSubmitDisabled()) {\n return;\n }\n\n this.handleSubmitSearch();\n this.setMenuChange(false);\n }\n\n if (ev.key === \"Escape\") {\n this.setMenuChange(false);\n }\n\n if (this.preventSubmit) {\n this.preventSubmit = false;\n }\n }\n\n /**\n * Sets focus on the native `input`.\n */\n @Method()\n async setFocus(): Promise<void> {\n this.retryViaKeyPress = false;\n this.retryButtonClick = false;\n if (this.inputEl) {\n this.inputEl.setFocus();\n }\n }\n\n private handleMouseDown = (ev: Event) => {\n ev.preventDefault();\n };\n\n private handleSubmitSearchFocus = () => {\n this.searchSubmitFocused = true;\n };\n\n private handleSubmitSearch = () => {\n this.highlightedValue && (this.value = this.highlightedValue);\n this.highlightedValue = undefined;\n this.icSubmitSearch.emit({ value: this.value });\n\n const form: HTMLFormElement = this.el.closest(\"FORM\");\n\n if (this.searchSubmitButton && !!form && !this.preventSubmit) {\n handleHiddenFormButtonClick(form, this.searchSubmitButton);\n }\n };\n\n private debounceAriaLiveUpdate() {\n clearTimeout(this.debounceAriaLive);\n\n this.debounceAriaLive = window.setTimeout(() => {\n this.updateSearchResultAriaLive();\n }, 500);\n }\n\n private handleSubmitSearchKeyDown = (ev: KeyboardEvent) => {\n if (ev.key === \" \") {\n ev.preventDefault();\n this.handleSubmitSearch();\n }\n };\n\n private handleRetry = (ev: CustomEvent<IcValueEventDetail>) => {\n this.retryViaKeyPress = ev.detail.keyPressed === \"Enter\";\n this.icRetryLoad.emit({ value: ev.detail.value });\n this.triggerLoading();\n this.retryButtonClick = true;\n };\n\n private triggerLoading = () => {\n const loadingOption: IcMenuOption[] = [\n {\n [this.labelField]: this.loadingLabel,\n [this.valueField]: \"\",\n loading: true,\n },\n ];\n if (this.filteredOptions !== loadingOption)\n this.filteredOptions = loadingOption;\n if (this.timeout) {\n this.timeoutTimer = window.setTimeout(() => {\n this.filteredOptions = [\n {\n [this.labelField]: this.loadingErrorLabel,\n [this.valueField]: \"\",\n timedOut: true,\n },\n ];\n }, this.timeout);\n }\n };\n\n private handleOptionSelect = (ev: CustomEvent) => {\n if (ev.detail.label === this.emptyOptionListText) {\n this.el.setFocus();\n return;\n }\n\n this.value = ev.detail.value;\n this.icOptionSelect.emit({ value: this.value });\n };\n\n private handleMenuOptionHighlight = (ev: CustomEvent) => {\n const optionValue = ev.detail.optionId?.replace(`${this.menuId}-`, \"\");\n optionValue && (this.highlightedValue = optionValue);\n if (ev.detail.optionId) {\n this.ariaActiveDescendant = ev.detail.optionId;\n } else {\n this.ariaActiveDescendant = undefined;\n }\n };\n\n private handleMenuChange = (ev: CustomEvent) => {\n this.setMenuChange(ev.detail.open);\n if (!ev.detail.open) {\n this.handleMenuCloseFromMenuChange(true);\n if (ev.detail.focusInput === undefined || ev.detail.focusInput) {\n this.el.setFocus();\n }\n }\n };\n\n private setMenuChange = (open: boolean) => {\n if (this.open !== open) {\n this.open = open;\n this.icMenuChange.emit({ open });\n }\n };\n\n private handleHostFocus = () => {\n if (this.options && this.value && !this.menuCloseFromMenuChangeEvent) {\n this.setMenuChange(true);\n }\n this.handleTruncateValue(false);\n\n this.icSearchBarFocus.emit();\n };\n\n private handleHostBlur = (ev: Event) => {\n const nextFocus = (ev as FocusEvent).relatedTarget;\n if (\n this.open &&\n this.options &&\n nextFocus !== this.menu &&\n !this.retryViaKeyPress &&\n !this.retryButtonClick\n ) {\n this.setMenuChange(false);\n }\n\n if (this.retryButtonClick || this.retryViaKeyPress) {\n this.inputEl.setFocus();\n }\n\n this.handleShowClearButton(false);\n this.handleMenuCloseFromMenuChange(false);\n this.handleTruncateValue(true);\n this.icSearchBarBlur.emit({ relatedTarget: nextFocus, value: this.value });\n this.retryViaKeyPress = false;\n this.retryButtonClick = false;\n };\n\n private handleShowClearButton = (visible: boolean): void => {\n this.showClearButton = visible;\n };\n\n private handleFocusClearButton = (): void => {\n this.clearButtonFocused = true;\n };\n\n private handleMenuCloseFromMenuChange = (fromEvent: boolean): void => {\n this.menuCloseFromMenuChangeEvent = fromEvent;\n };\n\n private handleTruncateValue = (truncate: boolean): void => {\n this.truncateValue = truncate;\n };\n\n private renderAssistiveHintEl = (): void => {\n const input = this.el.shadowRoot\n .querySelector(\"ic-text-field\")\n ?.shadowRoot?.querySelector(`#${this.inputId}`);\n\n if (\n input &&\n Object.keys(input).length > 0 &&\n this.hasOptionsOrFilterDisabled()\n ) {\n this.assistiveHintEl = document.createElement(\"span\");\n this.assistiveHintEl.innerText = this.hintText;\n this.assistiveHintEl.id = `${this.inputId}-assistive-hint`;\n this.assistiveHintEl.style.display = \"none\";\n if (input.after !== undefined) {\n input.after(this.assistiveHintEl);\n }\n }\n };\n\n private updateSearchResultAriaLive = (): void => {\n const searchResultsStatusEl = this.el.shadowRoot.querySelector(\n \".search-results-status\"\n ) as HTMLParagraphElement;\n\n if (searchResultsStatusEl) {\n if (\n !this.open ||\n this.value === \"\" ||\n this.value.length < this.charactersUntilSuggestion\n ) {\n searchResultsStatusEl.innerText = \"\";\n } else if (\n this.hasOptionsOrFilterDisabled() &&\n this.filteredOptions.length > 0 &&\n this.open &&\n !this.filteredOptions[0].loading\n ) {\n if (this.hadNoOptions()) {\n searchResultsStatusEl.innerText = this.emptyOptionListText;\n } else {\n searchResultsStatusEl.innerText = `${\n this.filteredOptions.length\n } result${this.filteredOptions.length > 1 ? \"s\" : \"\"} available`;\n }\n }\n }\n };\n\n private hasOptionsOrFilterDisabled = (): boolean =>\n this.options.length > 0 || this.disableFilter;\n\n private hadNoOptions = (): boolean =>\n this.filteredOptions.length === 1 &&\n this.filteredOptions[0][this.labelField] === this.emptyOptionListText &&\n this.searchMode === \"navigation\";\n\n private isSubmitDisabled = (): boolean => {\n const valueNotSet =\n this.value === undefined || this.value === null || this.value === \"\";\n const valueLengthLess = this.value.length < this.charactersUntilSuggestion;\n return (\n valueNotSet ||\n valueLengthLess ||\n this.disabled ||\n this.hadNoOptions() ||\n this.hasTimedOut ||\n this.loading\n );\n };\n\n private highlightFirstOptionAfterNoResults = () => {\n if (this.prevNoOption && this.menu && !this.hasTimedOut) {\n this.menu.handleSetFirstOption();\n this.prevNoOption = false;\n }\n const prevNoOptionsList = this.filteredOptions.find(\n (filteredOption) =>\n filteredOption[this.labelField] === this.emptyOptionListText ||\n filteredOption[this.labelField] === this.loadingErrorLabel ||\n filteredOption[this.labelField] === this.loadingLabel\n );\n if (prevNoOptionsList) {\n this.prevNoOption = true;\n }\n };\n\n render() {\n const {\n inputId,\n name,\n label,\n required,\n small,\n size,\n placeholder,\n helperText,\n disabled,\n value,\n readonly,\n spellcheck,\n fullWidth,\n options,\n open,\n hideLabel,\n menuId,\n ariaActiveDescendant,\n truncateValue,\n autofocus,\n autocapitalize,\n autocomplete,\n filteredOptions,\n } = this;\n\n const disabledMode = readonly || disabled ? true : false;\n\n const describedBy = getInputDescribedByText(\n inputId,\n helperText !== \"\",\n false\n ).trim();\n\n let describedById;\n\n if (describedBy !== \"\" && this.hasOptionsOrFilterDisabled()) {\n describedById = `${describedBy} ${this.inputId}-assistive-hint`;\n } else if (this.hasOptionsOrFilterDisabled()) {\n describedById = `${this.inputId}-assistive-hint`;\n } else if (describedBy !== \"\") {\n describedById = describedBy;\n } else {\n describedById = undefined;\n }\n\n const disabledText = disabledMode && !readonly;\n const hasSuggestedSearch = value && this.hasOptionsOrFilterDisabled();\n const menuOpen = hasSuggestedSearch && open && filteredOptions.length > 0;\n const menuRendered =\n menuOpen && value.length >= this.charactersUntilSuggestion;\n const isOrHasLoaded =\n this.filteredOptions.length === 1 &&\n (this.filteredOptions[0][this.labelField] === this.loadingLabel ||\n filteredOptions[0][this.labelField] === this.loadingErrorLabel);\n\n let expanded;\n\n if (options.length > 0) {\n if (menuOpen) {\n expanded = \"true\";\n } else {\n expanded = \"false\";\n }\n } else {\n expanded = undefined;\n }\n\n renderHiddenInput(true, this.el, name, value, disabledMode);\n\n return (\n <Host\n class={{\n [\"search\"]: true,\n [\"fullwidth\"]: fullWidth,\n [\"disabled\"]: disabled,\n [\"small\"]: size === \"small\",\n }}\n onFocus={this.handleHostFocus}\n onBlur={this.handleHostBlur}\n >\n <ic-text-field\n ref={(el) => (this.inputEl = el)}\n inputId={inputId}\n label={label}\n helperText={helperText}\n required={required}\n disabled={disabledText}\n readonly={readonly}\n size={size}\n hideLabel={hideLabel}\n fullWidth={fullWidth}\n name={name}\n truncateValue={truncateValue}\n value={\n options &&\n !!getLabelFromValue(\n value,\n options,\n this.valueField,\n this.labelField\n )\n ? getLabelFromValue(\n value,\n options,\n this.valueField,\n this.labelField\n )\n : value\n }\n placeholder={placeholder}\n onInput={this.onInput}\n onBlur={this.onInputBlur}\n onFocus={this.onInputFocus}\n aria-label={hideLabel ? label : \"\"}\n aria-describedby={describedById}\n aria-owns={menuRendered ? menuId : undefined}\n aria-haspopup={options.length > 0 ? \"listbox\" : undefined}\n ariaExpanded={expanded}\n ariaActiveDescendant={ariaActiveDescendant}\n aria-autocomplete={hasSuggestedSearch ? \"list\" : undefined}\n role={hasSuggestedSearch ? \"combobox\" : undefined}\n autocomplete={autocomplete}\n autocapitalize={autocapitalize}\n autoFocus={autofocus}\n spellcheck={spellcheck}\n inputmode=\"search\"\n debounce={this.debounce}\n >\n <div\n class={{\n \"clear-button-container\": true,\n \"clear-button-visible\":\n value && !disabledMode && this.showClearButton,\n }}\n slot=\"clear-button\"\n >\n <ic-button\n id=\"clear-button\"\n class=\"clear-button\"\n aria-label=\"Clear\"\n innerHTML={clearIcon}\n onClick={this.handleClear}\n onMouseDown={this.handleMouseDown}\n size={size}\n onFocus={this.handleFocusClearButton}\n onBlur={this.handleClearBlur}\n onKeyDown={this.handleClear}\n type=\"submit\"\n variant=\"icon\"\n appearance={\n this.clearButtonFocused\n ? IcThemeForegroundEnum.Light\n : IcThemeForegroundEnum.Dark\n }\n ></ic-button>\n <div class=\"divider\"></div>\n </div>\n <div\n class={{\n \"search-submit-button-container\": true,\n \"search-submit-button-disabled\": this.isSubmitDisabled(),\n }}\n slot=\"search-submit-button\"\n >\n <ic-button\n id=\"search-submit-button\"\n aria-label=\"Search\"\n ref={(el) => (this.searchSubmitButton = el)}\n class={{\n [\"search-submit-button\"]: true,\n [\"search-submit-button-small\"]: !!small,\n }}\n disabled={this.isSubmitDisabled()}\n innerHTML={searchIcon}\n size={size}\n onClick={this.handleSubmitSearch}\n onMouseDown={this.handleMouseDown}\n onBlur={this.handleSubmitSearchBlur}\n onFocus={this.handleSubmitSearchFocus}\n onKeyDown={this.handleSubmitSearchKeyDown}\n type=\"submit\"\n variant=\"icon\"\n appearance={\n this.searchSubmitFocused\n ? IcThemeForegroundEnum.Light\n : IcThemeForegroundEnum.Default\n }\n ></ic-button>\n </div>\n <div\n class={{\n \"menu-container\": true,\n fullwidth: fullWidth,\n }}\n slot=\"menu\"\n >\n {menuRendered && (\n <ic-menu\n class={{\n \"no-results\": this.hadNoOptions() || isOrHasLoaded,\n }}\n activationType=\"manual\"\n anchorEl={this.anchorEl}\n autoFocusOnSelected={false}\n searchMode={this.searchMode}\n inputEl={this.inputEl}\n inputLabel={label}\n ref={(el) => (this.menu = el)}\n small={size === \"small\"}\n fullWidth={fullWidth}\n menuId={menuId}\n open={!!menuRendered}\n options={filteredOptions}\n onMenuOptionSelect={this.handleOptionSelect}\n onMenuStateChange={this.handleMenuChange}\n onMenuOptionId={this.handleMenuOptionHighlight}\n onRetryButtonClicked={this.handleRetry}\n parentEl={this.el}\n value={value}\n labelField={this.labelField}\n valueField={this.valueField}\n ></ic-menu>\n )}\n </div>\n </ic-text-field>\n <div\n aria-live=\"polite\"\n role=\"status\"\n class=\"search-results-status\"\n ></div>\n </Host>\n );\n }\n}\n"],"mappings":"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"}
|
@@ -1,2 +0,0 @@
|
|
1
|
-
import{r as t,c as e,h as o,H as i,g as a}from"./p-6b5e91e2.js";import{j as c,a as r,i as n}from"./p-671b7cac.js";import"./p-26b7b18f.js";const s='/*! 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(.checked) ::part(button){background-color:var(--ic-action-default);color:var(--ic-architectural-white);box-shadow:inset 0 0 0 var(--ic-space-xxxs) var(--ic-architectural-white)}:host(.checked) ::part(button):focus{box-shadow:inset 0 0 0 var(--ic-space-xxxs) var(--ic-architectural-white),\n var(--ic-border-focus)}:host(.checked) ::part(button):hover{background-color:var(--button-default-hover)}:host(.checked) ::part(button):active,:host(.icon.checked) ::part(button):active{background-color:var(--ic-action-default-active)}:host(.dark.checked) ::part(button){background-color:var(--ic-action-dark)}:host(.dark.checked) ::part(button):hover{background-color:var(--ic-action-dark-hover)}:host(.dark.checked) ::part(button):active,:host(.icon.dark.checked) ::part(button):active{background-color:var(--ic-action-dark-active)}:host(.light.checked) ::part(button){background-color:var(--ic-action-light);color:var(--ic-color-primary-text);box-shadow:inset 0 0 0 var(--ic-space-xxxs) var(--ic-architectural-black)}:host(.light.checked) ::part(button):hover{background-color:var(--ic-action-light-hover)}:host(.light.checked) ::part(button):active,:host(.icon.light.checked) ::part(button):active{background-color:var(--ic-action-light-active)}:host(.light.checked) ::part(button):focus{box-shadow:inset 0 0 0 var(--ic-space-xxxs) var(--ic-architectural-black),\n var(--ic-border-focus)}:host(.disabled) ::part(button),:host(.icon.disabled) ::part(button){border:var(--ic-border-disabled)}:host(.disabled.checked) ::part(button),:host(.icon.disabled.checked) ::part(button){background-color:transparent}:host(.disabled.checked) ::part(button),:host(.icon.disabled.checked) ::part(button)::before{background-image:radial-gradient(var(--ic-architectural-400) 95%, white 20%);background-repeat:no-repeat}:host(.icon) ::part(button){border:var(--ic-border-width) solid var(--button-default);height:calc(var(--ic-space-xl) + var(--ic-space-xs));width:calc(var(--ic-space-xl) + var(--ic-space-xs))}:host(.icon) ::part(button):active{background-color:var(--ic-action-default-bg-active)}:host(.icon.dark) ::part(button):active{background-color:var(--ic-action-dark-bg-active)}:host(.icon.light) ::part(button):active{background-color:var(--ic-action-light-bg-active)}:host(.icon.small) ::part(button){height:var(--ic-space-xl);width:var(--ic-space-xl)}:host(.icon.large) ::part(button){height:var(--ic-space-xxl);width:var(--ic-space-xxl)}:host(.checked.loading) ::part(button){background-color:var(--button-default-active)}:host(.loading) ::part(ic-loading-container){--inner-color:var(--ic-architectural-white)}:host(.checked.loading.light) ::part(button){background-color:var(--ic-action-light-active)}:host(.checked.loading.dark) ::part(button){background-color:var(--ic-action-dark-active)}';const d=class{constructor(o){t(this,o);this.icToggleChecked=e(this,"icToggleChecked",7);this.handleClick=()=>{!this.loading&&!this.disabled&&this.icToggleChecked.emit({checked:this.toggleChecked})};this.accessibleLabel=undefined;this.appearance="default";this.disabled=false;this.fullWidth=false;this.iconPlacement=undefined;this.label=undefined;this.loading=false;this.size="default";this.toggleChecked=false;this.variant="default"}componentWillLoad(){c(this.disabled,this.el)}componentDidLoad(){r([{prop:this.variant==="icon"?this.accessibleLabel:this.label,propName:this.variant==="icon"?"accessible-label":"label"}],"Toggle button")}handleHostClick(t){if(this.disabled){t.stopImmediatePropagation()}else if(!this.loading){this.toggleChecked=!this.toggleChecked}}render(){return o(i,{class:{["disabled"]:this.disabled,["checked"]:this.toggleChecked,[`${this.appearance}`]:true,["icon"]:this.variant==="icon",[`${this.size}`]:true,["loading"]:this.loading}},o("ic-button",{role:"checkbox","aria-checked":this.toggleChecked?"true":"false",variant:this.variant==="icon"?"icon":"secondary",onClick:this.handleClick,title:this.accessibleLabel,"aria-label":`${this.accessibleLabel?this.accessibleLabel:this.label}, ${this.toggleChecked?"ticked":"unticked"}`,disabled:this.disabled,appearance:this.appearance,size:this.size,fullWidth:this.fullWidth,loading:this.loading,"aria-disabled":`${this.disabled}`},this.variant!=="icon"&&this.label,o("slot",null),n(this.el,"icon")&&o("slot",{name:"icon",slot:`${this.iconPlacement?`${this.iconPlacement}-icon`:"icon"}`}),n(this.el,"badge")&&o("slot",{name:"badge",slot:"badge"})))}static get delegatesFocus(){return true}get el(){return a(this)}};d.style=s;export{d as ic_toggle_button};
|
2
|
-
//# sourceMappingURL=p-c1109ec7.entry.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["icToggleButtonCss","ToggleButton","this","handleClick","loading","disabled","icToggleChecked","emit","checked","toggleChecked","componentWillLoad","removeDisabledFalse","el","componentDidLoad","onComponentRequiredPropUndefined","prop","variant","accessibleLabel","label","propName","handleHostClick","e","stopImmediatePropagation","render","h","Host","class","appearance","size","role","onClick","title","fullWidth","isSlotUsed","name","slot","iconPlacement"],"sources":["src/components/ic-toggle-button/ic-toggle-button.css?tag=ic-toggle-button&encapsulation=shadow","src/components/ic-toggle-button/ic-toggle-button.tsx"],"sourcesContent":["@import \"../../global/normalize.css\";\n\n:host(.checked) ::part(button) {\n background-color: var(--ic-action-default);\n color: var(--ic-architectural-white);\n box-shadow: inset 0 0 0 var(--ic-space-xxxs) var(--ic-architectural-white);\n}\n\n:host(.checked) ::part(button):focus {\n box-shadow: inset 0 0 0 var(--ic-space-xxxs) var(--ic-architectural-white),\n var(--ic-border-focus);\n}\n\n:host(.checked) ::part(button):hover {\n background-color: var(--button-default-hover);\n}\n\n:host(.checked) ::part(button):active,\n:host(.icon.checked) ::part(button):active {\n background-color: var(--ic-action-default-active);\n}\n\n:host(.dark.checked) ::part(button) {\n background-color: var(--ic-action-dark);\n}\n\n:host(.dark.checked) ::part(button):hover {\n background-color: var(--ic-action-dark-hover);\n}\n\n:host(.dark.checked) ::part(button):active,\n:host(.icon.dark.checked) ::part(button):active {\n background-color: var(--ic-action-dark-active);\n}\n\n:host(.light.checked) ::part(button) {\n background-color: var(--ic-action-light);\n color: var(--ic-color-primary-text);\n box-shadow: inset 0 0 0 var(--ic-space-xxxs) var(--ic-architectural-black);\n}\n\n:host(.light.checked) ::part(button):hover {\n background-color: var(--ic-action-light-hover);\n}\n\n:host(.light.checked) ::part(button):active,\n:host(.icon.light.checked) ::part(button):active {\n background-color: var(--ic-action-light-active);\n}\n\n:host(.light.checked) ::part(button):focus {\n box-shadow: inset 0 0 0 var(--ic-space-xxxs) var(--ic-architectural-black),\n var(--ic-border-focus);\n}\n\n:host(.disabled) ::part(button),\n:host(.icon.disabled) ::part(button) {\n border: var(--ic-border-disabled);\n}\n\n:host(.disabled.checked) ::part(button),\n:host(.icon.disabled.checked) ::part(button) {\n background-color: transparent;\n}\n\n:host(.disabled.checked) ::part(button),\n:host(.icon.disabled.checked) ::part(button)::before {\n background-image: radial-gradient(var(--ic-architectural-400) 95%, white 20%);\n background-repeat: no-repeat;\n}\n\n:host(.icon) ::part(button) {\n border: var(--ic-border-width) solid var(--button-default);\n height: calc(var(--ic-space-xl) + var(--ic-space-xs));\n width: calc(var(--ic-space-xl) + var(--ic-space-xs));\n}\n\n:host(.icon) ::part(button):active {\n background-color: var(--ic-action-default-bg-active);\n}\n\n:host(.icon.dark) ::part(button):active {\n background-color: var(--ic-action-dark-bg-active);\n}\n\n:host(.icon.light) ::part(button):active {\n background-color: var(--ic-action-light-bg-active);\n}\n\n:host(.icon.small) ::part(button) {\n height: var(--ic-space-xl);\n width: var(--ic-space-xl);\n}\n\n:host(.icon.large) ::part(button) {\n height: var(--ic-space-xxl);\n width: var(--ic-space-xxl);\n}\n\n:host(.checked.loading) ::part(button) {\n background-color: var(--button-default-active);\n}\n\n:host(.loading) ::part(ic-loading-container) {\n --inner-color: var(--ic-architectural-white);\n}\n\n:host(.checked.loading.light) ::part(button) {\n background-color: var(--ic-action-light-active);\n}\n\n:host(.checked.loading.dark) ::part(button) {\n background-color: var(--ic-action-dark-active);\n}\n","import {\n Component,\n Element,\n Host,\n Prop,\n Event,\n EventEmitter,\n Listen,\n h,\n} from \"@stencil/core\";\nimport {\n isSlotUsed,\n onComponentRequiredPropUndefined,\n removeDisabledFalse,\n} from \"../../utils/helpers\";\nimport { IcSizes, IcThemeForeground } from \"../../utils/types\";\n\n/**\n * @slot icon - Content will be displayed alongside the toggle button label.\n * @slot badge - Badge component overlaying the top right of the toggle button.\n */\n\n@Component({\n tag: \"ic-toggle-button\",\n styleUrl: \"ic-toggle-button.css\",\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class ToggleButton {\n @Element() el: HTMLIcToggleButtonElement;\n\n /**\n * The accessible label that will be applied to the toggle button. This is required for the icon variant of toggle buttons.\n */\n @Prop() accessibleLabel?: string;\n\n /**\n * The appearance of the toggle button.\n */\n @Prop() appearance?: IcThemeForeground = \"default\";\n\n /**\n * If `true`, the toggle button will be in disabled state.\n */\n @Prop() disabled?: boolean = false;\n\n /**\n * If `true`, the toggle button will fill the width of the container.\n */\n @Prop() fullWidth?: boolean = false;\n\n /**\n * The placement of the icon in relation to the toggle button label.\n */\n @Prop() iconPlacement?: \"left\" | \"right\" | \"top\";\n\n /**\n * The label to display in the toggle button. This is required for the default variant of toggle buttons.\n */\n @Prop() label?: string;\n\n /**\n * If `true`, the toggle button will be in loading state.\n */\n @Prop() loading?: boolean = false;\n\n /**\n * The size of the toggle button to be displayed.\n */\n @Prop() size?: IcSizes = \"default\";\n\n /**\n * If `true`, the toggle button will be in a checked state.\n */\n @Prop({ mutable: true, reflect: true }) toggleChecked: boolean = false;\n\n /**\n * The variant of the toggle button.\n */\n @Prop({ reflect: true }) variant: \"default\" | \"icon\" = \"default\";\n\n /**\n * Emitted when the user clicks a toggle button.\n */\n @Event() icToggleChecked: EventEmitter<{\n checked: boolean;\n }>;\n\n componentWillLoad(): void {\n removeDisabledFalse(this.disabled, this.el);\n }\n\n componentDidLoad(): void {\n onComponentRequiredPropUndefined(\n [\n {\n prop: this.variant === \"icon\" ? this.accessibleLabel : this.label,\n propName: this.variant === \"icon\" ? \"accessible-label\" : \"label\",\n },\n ],\n \"Toggle button\"\n );\n }\n\n @Listen(\"click\", { capture: true })\n handleHostClick(e: Event): void {\n if (this.disabled) {\n e.stopImmediatePropagation();\n } else if (!this.loading) {\n this.toggleChecked = !this.toggleChecked;\n }\n }\n\n private handleClick = (): void => {\n !this.loading &&\n !this.disabled &&\n this.icToggleChecked.emit({\n checked: this.toggleChecked,\n });\n };\n\n render() {\n return (\n <Host\n class={{\n [\"disabled\"]: this.disabled,\n [\"checked\"]: this.toggleChecked,\n [`${this.appearance}`]: true,\n [\"icon\"]: this.variant === \"icon\",\n [`${this.size}`]: true,\n [\"loading\"]: this.loading,\n }}\n >\n <ic-button\n role=\"checkbox\"\n aria-checked={this.toggleChecked ? \"true\" : \"false\"}\n variant={this.variant === \"icon\" ? \"icon\" : \"secondary\"}\n onClick={this.handleClick}\n title={this.accessibleLabel}\n aria-label={`${\n this.accessibleLabel ? this.accessibleLabel : this.label\n }, ${this.toggleChecked ? \"ticked\" : \"unticked\"}`}\n disabled={this.disabled}\n appearance={this.appearance}\n size={this.size}\n fullWidth={this.fullWidth}\n loading={this.loading}\n aria-disabled={`${this.disabled}`}\n >\n {this.variant !== \"icon\" && this.label}\n <slot />\n {isSlotUsed(this.el, \"icon\") && (\n <slot\n name=\"icon\"\n slot={`${\n this.iconPlacement ? `${this.iconPlacement}-icon` : \"icon\"\n }`}\n ></slot>\n )}\n {isSlotUsed(this.el, \"badge\") && (\n <slot name=\"badge\" slot=\"badge\"></slot>\n )}\n </ic-button>\n </Host>\n );\n }\n}\n"],"mappings":"0IAAA,MAAMA,EAAoB,+kK,MC6BbC,EAAY,M,0EAqFfC,KAAAC,YAAc,MACnBD,KAAKE,UACHF,KAAKG,UACNH,KAAKI,gBAAgBC,KAAK,CACxBC,QAASN,KAAKO,eACd,E,+CA/EmC,U,cAKZ,M,eAKC,M,+DAeF,M,UAKH,U,mBAKwC,M,aAKV,S,CASvD,iBAAAC,GACEC,EAAoBT,KAAKG,SAAUH,KAAKU,G,CAG1C,gBAAAC,GACEC,EACE,CACE,CACEC,KAAMb,KAAKc,UAAY,OAASd,KAAKe,gBAAkBf,KAAKgB,MAC5DC,SAAUjB,KAAKc,UAAY,OAAS,mBAAqB,UAG7D,gB,CAKJ,eAAAI,CAAgBC,GACd,GAAInB,KAAKG,SAAU,CACjBgB,EAAEC,0B,MACG,IAAKpB,KAAKE,QAAS,CACxBF,KAAKO,eAAiBP,KAAKO,a,EAY/B,MAAAc,GACE,OACEC,EAACC,EAAI,CACHC,MAAO,CACL,CAAC,YAAaxB,KAAKG,SACnB,CAAC,WAAYH,KAAKO,cAClB,CAAC,GAAGP,KAAKyB,cAAe,KACxB,CAAC,QAASzB,KAAKc,UAAY,OAC3B,CAAC,GAAGd,KAAK0B,QAAS,KAClB,CAAC,WAAY1B,KAAKE,UAGpBoB,EAAA,aACEK,KAAK,WAAU,eACD3B,KAAKO,cAAgB,OAAS,QAC5CO,QAASd,KAAKc,UAAY,OAAS,OAAS,YAC5Cc,QAAS5B,KAAKC,YACd4B,MAAO7B,KAAKe,gBAAe,aACf,GACVf,KAAKe,gBAAkBf,KAAKe,gBAAkBf,KAAKgB,UAChDhB,KAAKO,cAAgB,SAAW,aACrCJ,SAAUH,KAAKG,SACfsB,WAAYzB,KAAKyB,WACjBC,KAAM1B,KAAK0B,KACXI,UAAW9B,KAAK8B,UAChB5B,QAASF,KAAKE,QAAO,gBACN,GAAGF,KAAKG,YAEtBH,KAAKc,UAAY,QAAUd,KAAKgB,MACjCM,EAAA,aACCS,EAAW/B,KAAKU,GAAI,SACnBY,EAAA,QACEU,KAAK,OACLC,KAAM,GACJjC,KAAKkC,cAAgB,GAAGlC,KAAKkC,qBAAuB,WAIzDH,EAAW/B,KAAKU,GAAI,UACnBY,EAAA,QAAMU,KAAK,QAAQC,KAAK,W"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["icBadgeCss","Badge","this","setBadgeColour","colorRGBA","customColor","firstChar","slice","hexToRgba","toLowerCase","rgbaStrToObj","customColorRGBA","el","style","backgroundColor","r","toString","g","b","a","getBadgeForeground","red","green","blue","variant","parseInt","getCssProperty","info","neutral","light","brightness","foregroundColour","IcThemeForegroundEnum","Dark","Light","getTextLabel","label","textLabel","maxNumber","Number","setAccessibleLabel","getParentElement","getParentElementType","setAttribute","ariaLabel","accessibleLabel","isAccessibleLabelDefined","isPropDefined","componentWillLoad","componentDidLoad","type","onComponentRequiredPropUndefined","prop","propName","showBadge","visible","hideBadge","render","position","size","h","Host","class","id","name"],"sources":["src/components/ic-badge/ic-badge.css?tag=ic-badge&encapsulation=shadow","src/components/ic-badge/ic-badge.tsx"],"sourcesContent":["@media (prefers-reduced-motion: no-preference) {\n :host(.show) {\n animation: expand var(--ic-transition-duration-slow);\n }\n\n :host(.hide) {\n animation: shrink var(--ic-transition-duration-slow);\n }\n}\n\n:host {\n display: flex;\n height: var(--ic-space-md);\n min-width: var(--ic-space-md);\n width: fit-content;\n border-radius: calc(2 * var(--ic-space-xxl));\n position: absolute;\n}\n\n:host(.neutral) {\n background-color: var(--ic-architectural-500);\n}\n\n:host(.light) {\n background-color: var(--ic-architectural-40);\n}\n\n:host(.info) {\n background-color: var(--ic-status-info);\n}\n\n:host(.warning) {\n background-color: var(--ic-status-warning-mid);\n}\n\n:host(.error) {\n background-color: var(--ic-status-error);\n}\n\n:host(.success) {\n background-color: var(--ic-status-success);\n}\n\n:host(.small) {\n height: var(--ic-space-sm);\n min-width: var(--ic-space-sm);\n}\n\n:host(.large) {\n height: calc(var(--ic-space-md) + var(--ic-space-xxs));\n min-width: calc(var(--ic-space-md) + var(--ic-space-xxs));\n}\n\n:host(.dot.default) {\n height: var(--ic-space-xs);\n width: var(--ic-space-xs);\n min-width: var(--ic-space-xs);\n}\n\n:host(.dot.small) {\n height: calc(var(--ic-space-xxs) + var(--ic-space-xxxs));\n width: calc(var(--ic-space-xxs) + var(--ic-space-xxxs));\n min-width: calc(var(--ic-space-xxs) + var(--ic-space-xxxs));\n}\n\n:host(.dot.large) {\n height: var(--ic-space-sm);\n width: var(--ic-space-sm);\n min-width: var(--ic-space-sm);\n}\n\n:host(.foreground-dark) ::slotted(*) {\n fill: var(--ic-color-primary-text);\n}\n\n:host(.foreground-light) ::slotted(*) {\n fill: white;\n}\n\n:host(.foreground-dark) ic-typography {\n color: var(--ic-color-primary-text);\n}\n\n:host(.foreground-light) ic-typography {\n color: white;\n}\n\n:host(.text) ic-typography {\n align-self: center;\n padding: 0 calc((var(--ic-space-xs) + var(--ic-space-1px)) / 2)\n var(--ic-space-1px);\n}\n\n:host(.text.small) ic-typography {\n padding: 0 0.2132rem;\n}\n\n:host(.text.large) ic-typography {\n padding: 0 calc((var(--ic-space-sm) + var(--ic-space-1px)) / 2)\n var(--ic-space-1px);\n}\n\n:host(.icon) ::slotted(svg) {\n width: var(--ic-space-sm);\n height: var(--ic-space-sm);\n padding: var(--ic-space-xxxs);\n}\n\n:host(.icon.small) ::slotted(svg) {\n width: var(--ic-space-xs);\n height: var(--ic-space-xs);\n}\n\n:host(.icon.large) ::slotted(svg) {\n width: calc(var(--ic-space-sm) + var(--ic-space-xxxs));\n height: calc(var(--ic-space-sm) + var(--ic-space-xxxs));\n padding: calc(var(--ic-space-xxxs) + var(--ic-space-1px));\n}\n\n:host(.far) {\n top: calc(-1 * var(--ic-space-xs));\n right: calc(-1 * var(--ic-space-xs));\n}\n\n:host(.far.small),\n:host(.dot.far.large) {\n top: calc(-1 * var(--ic-space-xxs));\n right: calc(-1 * var(--ic-space-xxs));\n}\n\n:host(.dot.far),\n:host(.dot.far.small) {\n top: calc(-1 * var(--ic-space-xxxs));\n right: calc(-1 * var(--ic-space-xxxs));\n}\n\n:host(.near) {\n top: calc(-1 * calc(var(--ic-space-xxs) + var(--ic-space-1px)));\n right: calc(-1 * calc(var(--ic-space-xxs) + var(--ic-space-1px)));\n}\n\n:host(.dot.near) {\n top: calc(-1 * var(--ic-space-1px));\n right: calc(-1 * var(--ic-space-1px));\n}\n\n:host(.inline) {\n position: static;\n}\n\n:host(.hide) {\n visibility: hidden !important;\n transition: visibility var(--ic-transition-duration-slow);\n}\n\n@keyframes expand {\n from {\n opacity: 0;\n transform: scale(0);\n }\n\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n\n@keyframes shrink {\n from {\n opacity: 1;\n transform: scale(1);\n }\n\n to {\n opacity: 0;\n transform: scale(0);\n }\n}\n","import { Component, Element, Host, Method, Prop, h } from \"@stencil/core\";\nimport {\n IcBadgePositions,\n IcBadgeTypes,\n IcBadgeVariants,\n IcColor,\n} from \"./ic-badge.types\";\nimport {\n IcColorRGBA,\n IcSizes,\n IcThemeForeground,\n IcThemeForegroundEnum,\n} from \"../../utils/types\";\nimport {\n getCssProperty,\n getParentElement,\n getParentElementType,\n hexToRgba,\n isPropDefined,\n onComponentRequiredPropUndefined,\n rgbaStrToObj,\n} from \"../../utils/helpers\";\n\n/**\n * @slot badge-icon - Icon will be rendered inside the badge if type is set to icon.\n */\n@Component({\n tag: \"ic-badge\",\n styleUrl: \"ic-badge.css\",\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class Badge {\n private customColorRGBA: IcColorRGBA;\n private foregroundColour: IcThemeForeground;\n\n @Element() el: HTMLIcBadgeElement;\n\n /**\n * The accessible label of the badge component to provide context for screen reader users.\n */\n @Prop() accessibleLabel?: string;\n\n /**\n * The custom badge colour. This will only style the badge component if variant=\"custom\".\n * Can be a hex value e.g. \"#ff0000\", RGB e.g. \"rgb(255, 0, 0)\", or RGBA e.g. \"rgba(255, 0, 0, 1)\".\n */\n @Prop() customColor?: IcColor = null;\n\n /**\n * The maximum number shown on the badge appended with a +.\n * This will only be displayed if type=\"text\" and textLabel is not empty.\n */\n @Prop() maxNumber?: number;\n\n /**\n * The positioning of the badge in reference to the parent element.\n */\n @Prop() position?: IcBadgePositions = \"far\";\n\n /**\n * The size of the badge to be displayed.\n */\n @Prop() size?: IcSizes = \"default\";\n\n /**\n * The text displayed in the badge. This will only be displayed if type=\"text\".\n */\n @Prop() textLabel?: string;\n\n /**\n * The type of badge to be displayed.\n */\n @Prop() type?: IcBadgeTypes = \"text\";\n\n /**\n * The variant of the badge to be displayed.\n */\n @Prop() variant?: IcBadgeVariants = \"neutral\";\n\n /**\n * If `true`, the badge will be displayed.\n */\n @Prop({ mutable: true }) visible: boolean = true;\n\n componentWillLoad(): void {\n this.variant === \"custom\" && this.setBadgeColour();\n\n this.getBadgeForeground();\n\n this.isAccessibleLabelDefined() && this.setAccessibleLabel();\n }\n\n componentDidLoad(): void {\n this.type === \"text\" &&\n onComponentRequiredPropUndefined(\n [{ prop: this.textLabel, propName: \"text-label\" }],\n \"Badge\"\n );\n }\n\n /**\n * @deprecated This method should not be used anymore. Use visible prop to set badge visibility.\n */\n @Method()\n async showBadge(): Promise<void> {\n this.visible = true;\n }\n\n /**\n * @deprecated This method should not be used anymore. Use visible prop to set badge visibility.\n */\n @Method()\n async hideBadge(): Promise<void> {\n this.visible = false;\n }\n\n private setBadgeColour = () => {\n let colorRGBA = null;\n if (this.customColor !== null) {\n const firstChar = this.customColor.slice(0, 1);\n if (firstChar === \"#\") {\n colorRGBA = hexToRgba(this.customColor);\n } else if (firstChar.toLowerCase() === \"r\") {\n colorRGBA = rgbaStrToObj(this.customColor);\n }\n this.customColorRGBA = colorRGBA;\n this.el.style.backgroundColor = `rgba(${colorRGBA.r.toString()}, ${colorRGBA.g.toString()}, ${colorRGBA.b.toString()}, ${colorRGBA.a.toString()})`;\n }\n };\n\n private getBadgeForeground = () => {\n let red: number;\n let green: number;\n let blue: number;\n\n switch (this.variant) {\n case \"custom\":\n red = this.customColorRGBA.r;\n green = this.customColorRGBA.g;\n blue = this.customColorRGBA.b;\n break;\n case \"error\":\n red = parseInt(getCssProperty(\"--ic-status-error-r\"));\n green = parseInt(getCssProperty(\"--ic-status-error-g\"));\n blue = parseInt(getCssProperty(\"--ic-status-error-b\"));\n break;\n case \"success\":\n red = parseInt(getCssProperty(\"--ic-status-success-r\"));\n green = parseInt(getCssProperty(\"--ic-status-success-g\"));\n blue = parseInt(getCssProperty(\"--ic-status-success-b\"));\n break;\n case \"warning\":\n red = parseInt(getCssProperty(\"--ic-status-warning-r\"));\n green = parseInt(getCssProperty(\"--ic-status-warning-g\"));\n blue = parseInt(getCssProperty(\"--ic-status-warning-b\"));\n break;\n case \"info\": {\n const info = hexToRgba(getCssProperty(\"--ic-status-info\"));\n red = info.r;\n green = info.g;\n blue = info.b;\n break;\n }\n case \"neutral\": {\n const neutral = hexToRgba(getCssProperty(\"--ic-architectural-500\"));\n red = neutral.r;\n green = neutral.g;\n blue = neutral.b;\n break;\n }\n case \"light\": {\n const light = hexToRgba(getCssProperty(\"--ic-architectural-40\"));\n red = light.r;\n green = light.g;\n blue = light.b;\n break;\n }\n }\n\n const brightness = (red * 299 + green * 587 + blue * 114) / 1000;\n this.foregroundColour =\n brightness > 133.3505\n ? IcThemeForegroundEnum.Dark\n : IcThemeForegroundEnum.Light;\n };\n\n private getTextLabel = () => {\n let label;\n if (this.textLabel !== null) {\n if (this.maxNumber !== null) {\n label =\n Number(this.textLabel) > this.maxNumber\n ? `${this.maxNumber}+`\n : this.textLabel;\n } else {\n label = this.textLabel;\n }\n }\n return label;\n };\n\n private setAccessibleLabel = () => {\n if (getParentElement(this.el) !== null) {\n if (getParentElementType(this.el) === \"IC-TAB\") {\n getParentElement(this.el).setAttribute(\"aria-describedby\", \"badge\");\n } else {\n getParentElement(\n this.el\n ).ariaLabel = `badge displaying ${this.accessibleLabel}`;\n }\n }\n };\n\n private isAccessibleLabelDefined = () => {\n return isPropDefined(this.accessibleLabel) && this.accessibleLabel !== null;\n };\n\n render() {\n const { position, size, type, variant, foregroundColour, visible } = this;\n\n return (\n <Host\n class={{\n [`${position}`]: true,\n [`${size}`]: true,\n [`${variant}`]: true,\n [`${type}`]: true,\n [`foreground-${foregroundColour}`]: foregroundColour !== null,\n [\"show\"]: visible,\n [\"hide\"]: !visible,\n }}\n id=\"badge\"\n aria-label={\n this.isAccessibleLabelDefined() &&\n `badge displaying ${this.accessibleLabel}`\n }\n >\n {type === \"icon\" && <slot name=\"badge-icon\"></slot>}\n {type === \"text\" && (\n <ic-typography variant={size === \"small\" ? \"badge-small\" : \"badge\"}>\n {this.getTextLabel()}\n </ic-typography>\n )}\n </Host>\n );\n }\n}\n"],"mappings":"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"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"names":["icSelectCss","inputIds","Select","this","hasSetDefaultValue","inheritedAttributes","initialOptionsEmpty","inputId","menuId","searchableMenuItemSelected","ungroupedOptions","handleRetry","ev","detail","keyPressed","_a","searchableSelectElement","focus","blurredBecauseButtonPressed","retryButtonClick","icRetryLoad","emit","value","hiddenInputValue","emitIcChange","searchable","clearTimeout","debounceIcChange","window","setTimeout","icChange","currDebounce","emitImmediateIcChange","deduplicateOptions","options","uniqueValues","dedupedOptions","dedupedChildren","forEach","option","children","child","includes","console","warn","label","push","modifiedParent","Object","assign","setOptionsValuesFromLabels","length","map","setUngroupedOptions","event","setTextColor","nativeSelectElement","selectedIndex","className","setMenuChange","open","getLabelFromValue","uniqueOptions","getFilteredChildMenuOptions","getFilteredMenuOptions","includeDescriptionsInSearch","searchableSelectInputValue","searchMatchPosition","pressedCharacters","newOption","handleNativeSelectChange","icOptionSelect","handleCustomSelectChange","emptyOptionListText","currValue","inputValueToFilter","getValueFromLabel","ariaActiveDescendant","optionId","handleMenuChange","handleFocusIndicatorDisplay","handleMenuKeyPress","cancelBubble","handleCharacterKeyDown","key","handleMenuValueChange","focusIndicator","el","shadowRoot","querySelector","classList","add","remove","handleMouseDown","preventDefault","isExternalFiltering","disableFilter","handleClick","menu","filteredOptions","hasTimedOut","loading","noOptions","handleClickOpen","handleExpandIconMouseDown","disabled","handleClear","stopPropagation","timeoutTimer","icClear","customSelectElement","characterKeyPressTimer","handleFilter","handleNativeSelectKeyDown","handleKeyDown","isArrowKey","handleKeyboardOpen","handleClearButtonFocus","clearButtonFocused","handleClearButtonBlur","retryButton","relatedTarget","isGrouped","newFilteredOptions","menuOptionsFiltered","includeGroupTitlesInSearch","indexOf","noChildOptionsWhenFiltered","triggerLoading","loadingLabel","timeout","loadingErrorLabel","timedOut","find","handleSearchableSelectInput","target","icInput","debounceAriaLiveUpdate","updateSearchableSelectResultAriaLive","searchableSelectResultsStatusEl","innerText","getDefaultValue","onFocus","icFocus","onBlur","tagName","isSearchableAndNoFocusedInternalElements","Array","from","querySelectorAll","clearButton","icBlur","onTimeoutBlur","handleFormReset","initialValue","debounce","loadingHandler","newValue","watchOptionsHandler","setDefaultValue","debounceChangedHandler","updateOnChangeDebounce","valueChangedHandler","disconnectedCallback","removeFormResetListener","componentWillLoad","inheritAttributes","IC_INHERITED_ARIA","removeDisabledFalse","addFormResetListener","componentDidLoad","onComponentRequiredPropUndefined","prop","propName","componentDidRender","setFocus","debounceAria","render","small","size","fullWidth","helperText","hideLabel","name","placeholder","readonly","required","showClearButton","validationStatus","validationText","renderHiddenInput","invalid","IcInformationStatus","Error","describedBy","getInputDescribedByText","hasValidationStatus","trim","h","Host","class","for","ref","anchorEl","isMobileOrTablet","onChange","id","onKeyDown","form","selected","role","autocomplete","onInput","onClick","formaction","formenctype","formmethod","formnovalidate","formtarget","innerHTML","Clear","variant","appearance","IcThemeForegroundEnum","Light","Dark","onMouseDown","Expand","undefined","inputEl","inputLabel","selectOnEnter","onMenuStateChange","onMenuOptionSelect","onMenuKeyPress","onMenuValueChange","onUngroupedOptionsSet","onRetryButtonClicked","parentEl","activationType","ariaLiveMode","status","message"],"sources":["src/components/ic-select/ic-select.css?tag=ic-select&encapsulation=shadow","src/components/ic-select/ic-select.tsx"],"sourcesContent":["@import \"../../global/normalize.css\";\n\n/**\n * @prop --input-width: Width of the input field\n * @prop --ic-z-index-menu: z-index of select menu\n */\n\n:host {\n display: block;\n position: relative;\n}\n\n:host(.full-width) {\n width: 100%;\n}\n\nic-input-component-container:hover {\n --border-color: var(--ic-action-dark-hover);\n}\n\nic-input-component-container:active {\n --border-color: var(--ic-action-dark-active);\n\n color: var(--ic-action-dark-active);\n}\n\nic-input-component-container.menu-open {\n --border-color: var(--ic-architectural-400);\n\n color: var(--ic-action-dark);\n}\n\nic-input-validation .status-icon,\nic-input-validation .statustext {\n visibility: visible;\n}\n\nic-input-validation.menu-open .status-icon,\nic-input-validation.menu-open .statustext {\n visibility: hidden;\n transition: visibility 0s;\n}\n\nic-input-label {\n margin-bottom: var(--ic-space-xs) !important;\n}\n\nselect {\n border: 0;\n border-radius: var(--ic-border-radius);\n background-color: var(--ic-architectural-white);\n color: var(--ic-color-primary-text);\n line-height: 1.5rem;\n letter-spacing: 0.005rem;\n width: 100%;\n height: 100%;\n padding-left: 0.375rem;\n appearance: none;\n background-repeat: no-repeat;\n background-position: right 0.375rem center;\n background-image: url(\"data:image/svg+xml;utf8,<svg fill='black' height='24' viewBox='0 0 24 24' width='24' xmlns='http://www.w3.org/2000/svg'><path d='M7 10l5 5 5-5z'/><path d='M0 0h24v24H0z' fill='none'/></svg>\");\n}\n\nselect option,\n.select-option-selected {\n color: var(--ic-color-primary-text);\n}\n\nselect:disabled {\n color: var(--ic-architectural-200);\n background-image: url(\"data:image/svg+xml;utf8,<svg fill='grey' height='24' viewBox='0 0 24 24' width='24' xmlns='http://www.w3.org/2000/svg'><path d='M7 10l5 5 5-5z'/><path d='M0 0h24v24H0z' fill='none'/></svg>\");\n}\n\nselect:focus {\n border: 0;\n outline: 0;\n}\n\nselect:not([disabled]) {\n cursor: pointer;\n}\n\n.select-container {\n width: 100%;\n display: flex;\n align-items: center;\n position: relative;\n}\n\n.select-input {\n width: 100%;\n height: 100%;\n padding: 0 0.375rem;\n display: flex;\n cursor: pointer;\n align-items: center;\n justify-content: space-between;\n background: none;\n border: none;\n}\n\n.select-input:focus {\n outline: var(--ic-hc-focus-outline);\n}\n\n:host(:not(.disabled)) ic-input-component-container:hover .select-input {\n background-color: var(--ic-architectural-white);\n}\n\n.select-input[disabled] {\n pointer-events: none;\n}\n\n:host(.searchable) .select-input {\n cursor: auto;\n}\n\n.searchable-select-container {\n align-items: center;\n display: flex;\n width: 100%;\n position: relative;\n}\n\n.expand-icon {\n height: var(--ic-space-lg);\n padding-left: var(--ic-space-xs);\n color: var(--ic-action-dark);\n}\n\n.expand-icon > svg {\n display: inline-block;\n width: var(--ic-space-lg);\n height: var(--ic-space-lg);\n}\n\n:host(.disabled) .expand-icon,\n:host(.disabled) .expand-icon > svg > path {\n color: var(--ic-architectural-200);\n}\n\n:host(.searchable) .expand-icon {\n padding-left: var(--ic-space-xxs);\n height: 2.25rem;\n}\n\n:host(.searchable) .expand-icon > svg {\n height: 2.25rem;\n padding: 0 0.375rem;\n}\n\n:host(.searchable:not(.disabled)) .expand-icon > svg {\n cursor: pointer;\n}\n\n.expand-icon-open {\n color: var(--ic-action-dark);\n}\n\n.expand-icon-filled {\n color: var(--ic-action-dark);\n}\n\n.expand-icon-open,\n:host(.searchable) .expand-icon-open {\n transform: rotateX(180deg);\n}\n\n:host(.disabled) .value-text,\n.placeholder {\n color: var(--ic-color-tertiary-text);\n}\n\n.select-input-end {\n display: flex;\n align-items: center;\n}\n\n.clear-button-container {\n display: flex;\n gap: var(--ic-space-xxs);\n padding-left: 2.375rem;\n align-items: center;\n}\n\n:host(.small) .clear-button-container {\n padding-left: 1.875rem;\n}\n\n.divider {\n width: var(--ic-border-width);\n background-color: var(--ic-architectural-400);\n margin: var(--ic-space-xxs) 0;\n border-radius: var(--ic-space-1px);\n height: var(--ic-space-lg);\n}\n\n:host(.small) .divider {\n height: var(--ic-space-md);\n}\n\n.clear-button {\n position: absolute;\n right: 2.75rem;\n border-radius: var(--ic-border-radius);\n transition: box-shadow var(--ic-easing-transition),\n border-radius var(--ic-easing-transition);\n}\n\n.clear-button:focus {\n background-color: var(--ic-focus-blue);\n box-shadow: inset 0 0 0 0.125rem var(--ic-focus-glow);\n border-radius: 0.25rem;\n}\n\n.clear-button:focus * {\n fill: white;\n}\n\n.searchable-select-results-status {\n border: 0;\n clip: rect(0, 0, 0, 0, 0);\n height: var(--ic-space-1px);\n overflow: hidden;\n padding: 0;\n position: absolute;\n white-space: nowrap;\n width: var(--ic-space-1px);\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n Host,\n Method,\n Prop,\n h,\n State,\n Watch,\n} from \"@stencil/core\";\n\nimport {\n getInputDescribedByText,\n getLabelFromValue,\n hasValidationStatus,\n inheritAttributes,\n onComponentRequiredPropUndefined,\n renderHiddenInput,\n isMobileOrTablet,\n getFilteredMenuOptions,\n addFormResetListener,\n removeFormResetListener,\n removeDisabledFalse,\n} from \"../../utils/helpers\";\nimport { IC_INHERITED_ARIA } from \"../../utils/constants\";\nimport {\n IcInformationStatus,\n IcInformationStatusOrEmpty,\n IcThemeForegroundEnum,\n IcMenuOption,\n IcSearchMatchPositions,\n IcValueEventDetail,\n IcSizesNoLarge,\n} from \"../../utils/types\";\nimport Expand from \"./assets/Expand.svg\";\nimport Clear from \"./assets/Clear.svg\";\nimport { IcOptionSelectEventDetail } from \"../ic-menu/ic-menu.types\";\n\nlet inputIds = 0;\n\n@Component({\n tag: \"ic-select\",\n styleUrl: \"ic-select.css\",\n shadow: {\n delegatesFocus: true,\n },\n})\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport class Select {\n private anchorEl: HTMLElement;\n private blurredBecauseButtonPressed: boolean;\n private characterKeyPressTimer: number;\n private clearButton: HTMLIcButtonElement;\n private customSelectElement: HTMLButtonElement;\n private debounceAria: number;\n private hasSetDefaultValue = false;\n private hasTimedOut: boolean;\n private inheritedAttributes: { [k: string]: unknown } = {};\n private initialOptionsEmpty = false;\n private inputId = `ic-select-input-${inputIds++}`;\n private menu: HTMLIcMenuElement;\n private menuId = `${this.inputId}-menu`;\n private nativeSelectElement: HTMLSelectElement;\n private retryButtonClick: boolean;\n private searchableMenuItemSelected: boolean = false;\n private searchableSelectElement: HTMLInputElement;\n private timeoutTimer: number;\n private ungroupedOptions: IcMenuOption[] = [];\n\n @Element() el!: HTMLIcSelectElement;\n\n @State() ariaActiveDescendant: string;\n @State() clearButtonFocused: boolean = false;\n @State() debounceIcChange: number;\n @State() hiddenInputValue: string;\n @State() noOptions: IcMenuOption[] = null;\n @State() open: boolean = false;\n @State() pressedCharacters: string = \"\";\n @State() searchableSelectInputValue: string = null;\n\n /**\n * @deprecated This prop should not be used anymore.\n */\n @Prop() charactersUntilSuggestions?: number = 0;\n\n /**\n * If `true`, the disabled state will be set.\n */\n @Prop({ reflect: true }) disabled?: boolean = false;\n\n /**\n * If `true`, the built in filtering will be disabled for a searchable variant. For example, if options will already be filtered from external source.\n */\n @Prop() disableFilter?: boolean = false;\n\n /**\n * The text displayed when there are no options in the option list.\n */\n @Prop() emptyOptionListText = \"No results found\";\n\n /**\n * The <form> element to associate the select with.\n */\n @Prop() form?: string;\n\n /**\n * The URL that processes the information submitted by the select. It overrides the action attribute of the select's form owner. Does nothing if there is no form owner.\n * This prop should only be used with searchable select and will only be applied if searchable is true.\n */\n @Prop() formaction?: string;\n\n /**\n * The way the submitted form data is encoded. This prop should only be used with searchable select and will only be applied if searchable is true.\n */\n @Prop() formenctype?: string;\n\n /**\n * The HTTP method used to submit the form. This prop should only be used with searchable select and will only be applied if searchable is true.\n */\n @Prop() formmethod?: string;\n\n /**\n * If `true`, the form will not be validated when submitted. This prop should only be used with searchable select and will only be applied if searchable is true.\n */\n @Prop() formnovalidate?: boolean;\n\n /**\n * The place to display the response from submitting the form. It overrides the target attribute of the select's form owner.\n * This prop should only be used with searchable select and will only be applied if searchable is true.\n */\n @Prop() formtarget?: string;\n\n /**\n * If `true`, the select element will fill the width of the container. This prop should only be used with searchable select and will only be applied if searchable is true.\n */\n @Prop() fullWidth: boolean = false;\n\n /**\n * The helper text that will be displayed for additional field guidance.\n */\n @Prop() helperText?: string = \"\";\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?: boolean = false;\n\n /**\n * If `true`, descriptions of options will be included when filtering options in a searchable select. Only applies to built in filtering.\n */\n @Prop() includeDescriptionsInSearch?: boolean = false;\n\n /**\n * If `true`, group titles of grouped options will be included when filtering options in a searchable select. Only applies to built in filtering.\n */\n @Prop() includeGroupTitlesInSearch?: boolean = false;\n\n /**\n * The label for the select.\n */\n @Prop() label!: string;\n\n /**\n * The message displayed when external loading times out.\n */\n @Prop() loadingErrorLabel?: string = \"Loading Error\";\n\n /**\n * The message displayed whilst the options are being loaded externally.\n */\n @Prop() loadingLabel?: string = \"Loading...\";\n\n /**\n * The name of the control, which is submitted with the form data.\n */\n @Prop() name?: string = this.inputId;\n\n /**\n * The placeholder value to be displayed.\n */\n @Prop() placeholder?: string = \"Select an option\";\n\n /**\n * If `true`, the readonly state will be set.\n */\n @Prop() readonly?: boolean = false;\n\n /**\n * If `true`, the select will require a value.\n */\n @Prop() required?: boolean = false;\n\n /**\n * If `true`, a searchable variant of the select will be displayed which can be typed in to filter options.\n */\n @Prop() searchable?: boolean = false;\n\n /**\n * Whether the search string of the searchable select should match the start of or anywhere in the options. Only applies to built in filtering.\n */\n @Prop() searchMatchPosition?: IcSearchMatchPositions = \"anywhere\";\n\n /**\n * If `true`, the icOptionSelect event will be fired on enter instead of ArrowUp and ArrowDown.\n */\n @Prop() selectOnEnter?: boolean = false;\n\n /**\n * If `true`, a button which clears the select input when clicked will be displayed. The button will always appear on the searchable select.\n */\n @Prop() showClearButton?: boolean = false;\n\n /**\n * The size of the select component.\n */\n @Prop() size?: IcSizesNoLarge = \"default\";\n\n /**\n * @deprecated This prop should not be used anymore. Set prop `size` to \"small\" instead.\n */\n @Prop() small?: boolean = false;\n\n /**\n * If using external filtering, set a timeout for when loading takes too long.\n */\n @Prop() timeout?: number;\n\n /**\n * The validation status - 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 * If `true`, the loading state will be triggered when fetching options asyncronously.\n */\n @Prop({ mutable: true }) loading?: boolean = false;\n\n @Watch(\"loading\")\n loadingHandler(newValue: boolean): void {\n newValue && this.triggerLoading();\n }\n\n /**\n * The possible selection options.\n */\n @Prop() options?: IcMenuOption[] = [];\n @State() filteredOptions: IcMenuOption[] = this.options;\n @State() uniqueOptions: IcMenuOption[] = this.options;\n\n @Watch(\"options\")\n watchOptionsHandler(): void {\n if (!this.hasTimedOut) {\n this.loading = false;\n clearTimeout(this.timeoutTimer);\n if (this.isExternalFiltering()) {\n if (this.options.length > 0) {\n this.setOptionsValuesFromLabels();\n this.noOptions = null;\n this.uniqueOptions = this.deduplicateOptions(this.options);\n this.filteredOptions = this.uniqueOptions;\n } else {\n this.noOptions = [{ label: this.emptyOptionListText, value: \"\" }];\n this.uniqueOptions = this.noOptions;\n this.filteredOptions = this.noOptions;\n }\n this.updateSearchableSelectResultAriaLive();\n this.setDefaultValue();\n } else {\n this.setOptionsValuesFromLabels();\n this.uniqueOptions = this.deduplicateOptions(this.options);\n this.filteredOptions = this.uniqueOptions;\n if (this.initialOptionsEmpty) {\n this.setDefaultValue();\n this.initialOptionsEmpty = false;\n }\n }\n } else {\n if (!this.searchable) this.options = this.noOptions;\n }\n }\n\n /**\n * The amount of time, in milliseconds, to wait to trigger the `icChange` event after each keystroke.\n */\n @Prop() debounce?: number = 0;\n @State() currDebounce = this.debounce;\n\n @Watch(\"debounce\")\n debounceChangedHandler(newValue: number): void {\n this.updateOnChangeDebounce(newValue);\n }\n\n /**\n * The value of the select, reflected by the value of the currently selected option. For the searchable variant, the value is also reflected by the user input.\n */\n @Prop({ mutable: true }) value?: string;\n @State() initialValue = this.value;\n @State() inputValueToFilter = this.value;\n @State() currValue = this.value;\n\n @Watch(\"value\")\n valueChangedHandler(): void {\n if (this.value !== this.currValue) {\n this.currValue = this.value;\n }\n\n if (this.searchable) {\n this.searchableSelectInputValue =\n this.getLabelFromValue(this.currValue) || this.currValue;\n }\n }\n\n /**\n * Emitted when the select loses focus.\n */\n @Event() icBlur!: EventEmitter<void>;\n\n /**\n * Emitted when the value changes.\n */\n @Event() icChange!: EventEmitter<IcValueEventDetail>;\n\n /**\n * Emitted when the clear button is clicked.\n */\n @Event() icClear!: EventEmitter<void>;\n\n /**\n * Emitted when the select gains focus.\n */\n @Event() icFocus!: EventEmitter<void>;\n\n /**\n * Emitted when a keyboard input occurred.\n */\n @Event() icInput: EventEmitter<IcValueEventDetail>;\n\n /**\n * Emitted when an option is highlighted within the menu.\n * Highlighting a menu item will also trigger an `icChange/onIcChange` due to the value being updated.\n */\n @Event() icOptionSelect: EventEmitter<IcOptionSelectEventDetail>;\n\n /**\n * Emitted when the 'retry loading' button is clicked for a searchable variant.\n */\n @Event() icRetryLoad: EventEmitter<IcValueEventDetail>;\n\n disconnectedCallback(): void {\n removeFormResetListener(this.el, this.handleFormReset);\n }\n\n componentWillLoad(): void {\n this.inheritedAttributes = inheritAttributes(this.el, [\n ...IC_INHERITED_ARIA,\n \"tabindex\",\n \"title\",\n ]);\n\n removeDisabledFalse(this.disabled, this.el);\n\n this.setOptionsValuesFromLabels();\n\n addFormResetListener(this.el, this.handleFormReset);\n\n if (!this.options.length) {\n this.initialOptionsEmpty = true;\n this.noOptions = [{ label: this.emptyOptionListText, value: \"\" }];\n this.uniqueOptions = this.noOptions;\n this.filteredOptions = this.noOptions;\n } else {\n this.setDefaultValue();\n this.uniqueOptions = this.deduplicateOptions(this.options);\n }\n }\n\n componentDidLoad(): void {\n onComponentRequiredPropUndefined(\n [{ prop: this.label, propName: \"label\" }],\n \"Select\"\n );\n\n if (this.loading) {\n this.triggerLoading();\n }\n this.hiddenInputValue = this.searchable && this.currValue;\n }\n\n componentDidRender(): void {\n if (this.nativeSelectElement && !this.disabled) {\n this.setTextColor();\n }\n }\n\n /**\n * Sets focus on the input box.\n */\n @Method()\n async setFocus(): Promise<void> {\n if (this.nativeSelectElement) {\n this.nativeSelectElement.focus();\n } else if (this.customSelectElement) {\n this.customSelectElement.focus();\n } else if (this.searchableSelectElement) {\n this.searchableSelectElement.focus();\n }\n }\n\n private handleRetry = (ev: CustomEvent<IcValueEventDetail>) => {\n if (ev.detail.keyPressed) this.searchableSelectElement?.focus();\n this.blurredBecauseButtonPressed = true;\n this.retryButtonClick = true;\n this.hasSetDefaultValue = true;\n this.icRetryLoad.emit({ value: this.hiddenInputValue });\n };\n\n private updateOnChangeDebounce(newValue: number) {\n if (this.currDebounce !== newValue) {\n this.currDebounce = newValue;\n }\n }\n\n private emitIcChange = (value: string) => {\n if (!this.searchable) {\n this.value = value;\n }\n\n clearTimeout(this.debounceIcChange);\n this.debounceIcChange = window.setTimeout(() => {\n this.icChange.emit({ value: value });\n }, this.currDebounce);\n };\n\n private emitImmediateIcChange = (value: string) => {\n this.value = value;\n clearTimeout(this.debounceIcChange);\n this.icChange.emit({ value: value });\n };\n\n /**\n * Processes the provided array of IcMenuOptions, removing duplicates and reporting them with a console.warn\n * @param options array of IcMenuOptions\n * @returns a new options object, with all entries possessing a duplicate 'value' field removed\n */\n private deduplicateOptions = (options: IcMenuOption[]): IcMenuOption[] => {\n const uniqueValues: string[] = [];\n const dedupedOptions: IcMenuOption[] = [];\n let dedupedChildren: IcMenuOption[];\n\n options.forEach((option: IcMenuOption) => {\n if (option.children) {\n //If an option has children, we will loop through them\n dedupedChildren = [];\n option.children.forEach((child) => {\n if (uniqueValues.includes(child.value)) {\n console.warn(\n `ic-select with label ${this.label} was populated with duplicate option (value: ${child.value}) which has been removed.`\n );\n } else {\n uniqueValues.push(child.value);\n dedupedChildren.push(child);\n }\n });\n // construct a modified option, inserting the deduplicated children alongside the original information\n const modifiedParent: IcMenuOption = {\n ...option,\n children: dedupedChildren,\n };\n dedupedOptions.push(modifiedParent);\n } else {\n // If an option does not have children, assess to see if it's value has been included already\n if (uniqueValues.includes(option.value)) {\n console.warn(\n `ic-select with label ${this.label} was populated with duplicate option (value: ${option.value}) which has been removed.`\n );\n } else {\n uniqueValues.push(option.value);\n dedupedOptions.push(option);\n }\n }\n });\n return dedupedOptions;\n };\n\n /**\n * Loop through options array and for all options with no value, infer it from the label\n */\n private setOptionsValuesFromLabels = (): void => {\n if (this.options.length > 0 && this.options.map) {\n this.options.map((option) => {\n if (!option.value) {\n option.value = option.label;\n }\n });\n }\n };\n\n private setUngroupedOptions = (event: CustomEvent): void => {\n this.ungroupedOptions = event.detail.options;\n };\n\n private setTextColor = (): void => {\n if (this.nativeSelectElement.selectedIndex === 0) {\n this.nativeSelectElement.className = \"placeholder\";\n } else {\n this.nativeSelectElement.className = \"select-option-selected\";\n }\n };\n\n private setMenuChange = (open: boolean) => {\n if (this.open !== open) {\n this.open = open;\n }\n };\n\n private getLabelFromValue = (value: string): string | undefined => {\n return getLabelFromValue(value, this.uniqueOptions);\n };\n\n private getFilteredChildMenuOptions = (option: IcMenuOption) => {\n let children = option.children;\n\n if (this.searchable) {\n children = getFilteredMenuOptions(\n option.children,\n this.includeDescriptionsInSearch,\n this.searchableSelectInputValue,\n this.searchMatchPosition\n );\n } else {\n children = getFilteredMenuOptions(\n option.children,\n false,\n this.pressedCharacters,\n \"start\"\n );\n }\n\n const newOption = { ...option };\n newOption.children = children;\n return newOption;\n };\n\n private handleNativeSelectChange = (): void => {\n this.icOptionSelect.emit({ value: this.nativeSelectElement.value });\n this.emitImmediateIcChange(this.nativeSelectElement.value);\n this.setTextColor();\n };\n\n private handleCustomSelectChange = (event: CustomEvent): void => {\n if (this.searchable && event.detail.label === this.emptyOptionListText) {\n this.searchableSelectElement.focus();\n return;\n }\n\n if (this.searchable) {\n this.value = event.detail.value;\n this.searchableMenuItemSelected = true;\n\n // After editing the input, if selecting the same option as before, set the input value to label again\n if (this.value === this.currValue) {\n this.searchableSelectInputValue = this.getLabelFromValue(this.value);\n }\n\n this.inputValueToFilter = null;\n this.hiddenInputValue = this.getValueFromLabel(\n this.searchableSelectInputValue\n );\n }\n\n this.ariaActiveDescendant = event.detail.optionId;\n this.icOptionSelect.emit({ value: event.detail.value });\n this.emitIcChange(event.detail.value);\n };\n\n private handleMenuChange = (event: CustomEvent): void => {\n this.open = event.detail.open;\n this.pressedCharacters = \"\";\n\n this.searchable && this.handleFocusIndicatorDisplay();\n };\n\n // clears the debounce delay when navigating the menu with arrow keys etc\n // to prevent delay in change event, which should only occur when typing in input\n private handleMenuKeyPress = (ev: CustomEvent): void => {\n ev.cancelBubble = true;\n this.handleCharacterKeyDown(ev.detail.key);\n };\n\n private handleMenuValueChange = (ev: CustomEvent): void => {\n this.value = ev.detail.value;\n };\n\n private handleFocusIndicatorDisplay = () => {\n const focusIndicator = this.el.shadowRoot.querySelector(\".focus-indicator\");\n\n if (this.open) {\n focusIndicator.classList.add(\"focus-indicator-enabled\");\n } else {\n focusIndicator.classList.remove(\"focus-indicator-enabled\");\n }\n };\n\n private handleMouseDown = (event: Event): void => {\n if (!this.open) {\n event.preventDefault();\n }\n };\n\n private isExternalFiltering = (): boolean =>\n this.searchable && this.disableFilter;\n\n private handleClick = (event: MouseEvent): void => {\n if (!this.open) {\n if (this.isExternalFiltering()) {\n this.menu.options = this.filteredOptions;\n } else if (\n !this.hasTimedOut &&\n !this.loading &&\n !this.noOptions?.length &&\n (!this.searchable || this.searchableMenuItemSelected)\n ) {\n this.noOptions = null;\n this.menu.options = this.uniqueOptions;\n }\n }\n\n if (event.detail !== 0) {\n this.menu.handleClickOpen();\n }\n };\n\n private handleExpandIconMouseDown = (event: MouseEvent) => {\n if (!this.disabled) {\n event.preventDefault();\n this.searchableSelectElement.focus();\n this.handleClick(event);\n }\n };\n\n private handleClear = (event: Event): void => {\n event.stopPropagation();\n this.hasTimedOut = false;\n clearTimeout(this.timeoutTimer);\n this.noOptions = null;\n this.emitImmediateIcChange(null);\n this.icClear.emit();\n\n if (this.searchable) {\n this.searchableSelectElement.value = null;\n this.searchableSelectInputValue = null;\n this.filteredOptions = this.uniqueOptions;\n this.hiddenInputValue = null;\n this.searchableSelectElement.focus();\n } else {\n this.customSelectElement.focus();\n }\n };\n\n private handleCharacterKeyDown = (key: string) => {\n // Only close menu when space is pressed if not being used alongside character keys to quickly select options\n if (\n this.open &&\n key === \" \" &&\n this.pressedCharacters.length === 0 &&\n !this.hasTimedOut &&\n !this.loading\n ) {\n this.setMenuChange(false);\n }\n\n if (key.length === 1 && !this.searchable) {\n window.clearTimeout(this.characterKeyPressTimer);\n this.characterKeyPressTimer = window.setTimeout(\n () => (this.pressedCharacters = \"\"),\n 1000\n );\n\n this.pressedCharacters += key;\n this.handleFilter();\n\n if (!this.noOptions) {\n this.emitImmediateIcChange(this.filteredOptions[0].value);\n }\n } else {\n this.pressedCharacters = \"\";\n }\n };\n\n private handleNativeSelectKeyDown = (event: KeyboardEvent) => {\n if ((event.key !== \"Escape\" && event.key !== \"Tab\") || this.open) {\n event.cancelBubble = true;\n }\n this.handleCharacterKeyDown(event.key);\n };\n\n private handleKeyDown = (event: KeyboardEvent): void => {\n if ((event.key !== \"Escape\" && event.key !== \"Tab\") || this.open) {\n event.cancelBubble = true;\n }\n const isArrowKey = event.key === \"ArrowDown\" || event.key === \"ArrowUp\";\n\n if (!this.open) {\n if (this.isExternalFiltering() && (event.key === \"Enter\" || isArrowKey)) {\n this.menu.options = this.filteredOptions;\n } else {\n if (!this.hasTimedOut) {\n this.noOptions = null;\n this.menu.options = this.uniqueOptions;\n }\n }\n }\n\n if (this.open && event.key === \"Enter\") {\n this.setMenuChange(false);\n } else {\n if (!(isArrowKey && this.noOptions !== null)) {\n if (!(event.key === \" \" && this.pressedCharacters.length > 0)) {\n // Keyboard events get passed onto ic-menu\n this.menu.handleKeyboardOpen(event);\n }\n this.handleCharacterKeyDown(event.key);\n }\n }\n };\n\n private handleClearButtonFocus = (): void => {\n this.clearButtonFocused = true;\n };\n\n private handleClearButtonBlur = (ev: FocusEvent): void => {\n const retryButton = this.menu?.querySelector(\"#retry-button\");\n if (\n !(\n this.searchableSelectElement &&\n ev.relatedTarget === this.searchableSelectElement\n ) &&\n !(retryButton && ev.relatedTarget === retryButton)\n ) {\n this.setMenuChange(false);\n this.handleFocusIndicatorDisplay();\n }\n this.clearButtonFocused = false;\n };\n\n private handleFilter = (): void => {\n const options = this.deduplicateOptions(\n this.searchable ? [...this.uniqueOptions] : this.ungroupedOptions\n );\n\n let isGrouped = false;\n let newFilteredOptions: IcMenuOption[] = [];\n\n options.map((option) => {\n if (option.children) isGrouped = true;\n });\n\n let menuOptionsFiltered: IcMenuOption[];\n\n if (this.searchable) {\n menuOptionsFiltered = getFilteredMenuOptions(\n options,\n this.includeDescriptionsInSearch,\n this.inputValueToFilter,\n this.searchMatchPosition\n );\n this.searchableMenuItemSelected = false;\n } else {\n menuOptionsFiltered = getFilteredMenuOptions(\n options,\n false,\n this.pressedCharacters,\n \"start\"\n );\n }\n\n if (\n !isGrouped &&\n menuOptionsFiltered[0]?.label !== this.emptyOptionListText\n ) {\n newFilteredOptions = menuOptionsFiltered;\n } else if (isGrouped) {\n options.map((option) => {\n if (this.includeGroupTitlesInSearch) {\n if (menuOptionsFiltered.indexOf(option) !== -1) {\n newFilteredOptions.push(option);\n } else {\n newFilteredOptions.push(this.getFilteredChildMenuOptions(option));\n }\n } else {\n newFilteredOptions.push(this.getFilteredChildMenuOptions(option));\n }\n });\n }\n\n let noChildOptionsWhenFiltered = false;\n\n if (isGrouped) {\n noChildOptionsWhenFiltered = true;\n newFilteredOptions.map((option) => {\n if (option.children.length > 0) {\n noChildOptionsWhenFiltered = false;\n }\n });\n }\n\n if (newFilteredOptions.length > 0 && !noChildOptionsWhenFiltered) {\n this.noOptions = null;\n this.filteredOptions = newFilteredOptions;\n } else {\n this.noOptions = [{ label: this.emptyOptionListText, value: \"\" }];\n this.filteredOptions = this.noOptions;\n }\n };\n\n /**\n * Put the select component into loading state.\n * Replace options with the loading message. If timeout is enabled, set the timeout and once passed, replace options with the loading error message\n */\n private triggerLoading = () => {\n this.hasTimedOut = false;\n this.noOptions = [{ label: this.loadingLabel, value: \"\", loading: true }];\n if (this.filteredOptions !== this.noOptions && this.searchable) {\n this.filteredOptions = this.noOptions;\n } else if (this.uniqueOptions !== this.noOptions && !this.searchable) {\n this.uniqueOptions = this.noOptions;\n }\n if (this.timeout) {\n this.timeoutTimer = window.setTimeout(() => {\n this.loading = false;\n this.hasTimedOut = true;\n this.noOptions = [\n { label: this.loadingErrorLabel, value: \"\", timedOut: true },\n ];\n this.filteredOptions = this.noOptions;\n if (!this.searchable) this.uniqueOptions = this.noOptions;\n }, this.timeout);\n }\n };\n\n private getValueFromLabel = (label: string): string | undefined => {\n return this.uniqueOptions.find((option) => option.label === label)?.value;\n };\n\n private handleSearchableSelectInput = (event: Event): void => {\n this.searchableSelectInputValue = (event.target as HTMLInputElement).value;\n this.icInput.emit({ value: this.searchableSelectInputValue });\n this.emitIcChange(this.searchableSelectInputValue);\n\n this.hiddenInputValue = this.searchableSelectInputValue;\n this.inputValueToFilter = this.searchableSelectInputValue;\n this.setMenuChange(true);\n\n if (!this.disableFilter) {\n this.handleFilter();\n this.debounceAriaLiveUpdate();\n }\n };\n\n private updateSearchableSelectResultAriaLive = (): void => {\n const searchableSelectResultsStatusEl = this.el.shadowRoot.querySelector(\n \".searchable-select-results-status\"\n ) as HTMLDivElement;\n\n if (searchableSelectResultsStatusEl) {\n if (this.noOptions !== null) {\n searchableSelectResultsStatusEl.innerText = this.emptyOptionListText;\n } else {\n searchableSelectResultsStatusEl.innerText = \"\";\n }\n }\n };\n\n private debounceAriaLiveUpdate() {\n clearTimeout(this.debounceAria);\n\n window.setTimeout(() => {\n this.updateSearchableSelectResultAriaLive();\n }, 800);\n }\n\n private getDefaultValue = (value: string): string | null =>\n this.getLabelFromValue(value) || value || null;\n\n private setDefaultValue() {\n if (!this.hasSetDefaultValue && this.currValue) {\n this.searchableSelectInputValue = this.getDefaultValue(this.currValue);\n this.initialValue = this.currValue;\n this.hasSetDefaultValue = true;\n }\n }\n\n private onFocus = (): void => {\n this.icFocus.emit();\n };\n\n private onBlur = (event: FocusEvent): void => {\n const target = event.relatedTarget as HTMLElement;\n if (\n target !== null &&\n target.tagName === \"UL\" &&\n target.className.includes(\"menu\")\n ) {\n return;\n }\n\n const retryButton = this.menu?.querySelector(\"#retry-button\");\n const isSearchableAndNoFocusedInternalElements =\n this.searchable &&\n event.relatedTarget !== this.menu &&\n !Array.from(this.menu.querySelectorAll(\"[role='option']\")).includes(\n event.relatedTarget as Element\n ) &&\n !(this.clearButton && event.relatedTarget === this.clearButton) &&\n !(retryButton && event.relatedTarget === retryButton);\n\n if (isSearchableAndNoFocusedInternalElements) {\n if (!this.retryButtonClick) {\n this.setMenuChange(false);\n }\n this.handleFocusIndicatorDisplay();\n }\n\n this.retryButtonClick = false;\n this.icBlur.emit();\n };\n\n private onTimeoutBlur = (ev: CustomEvent) => {\n if (\n (ev.detail.ev as FocusEvent).relatedTarget !==\n this.searchableSelectElement &&\n !this.blurredBecauseButtonPressed\n ) {\n this.setMenuChange(false);\n this.handleFocusIndicatorDisplay();\n this.icBlur.emit();\n }\n this.blurredBecauseButtonPressed = false;\n };\n\n private handleFormReset = (): void => {\n this.value = this.initialValue;\n if (this.searchable) {\n this.searchableSelectInputValue = this.getDefaultValue(this.value);\n this.hiddenInputValue = this.value;\n }\n };\n\n render() {\n const {\n small,\n size,\n disabled,\n fullWidth,\n helperText,\n hideLabel,\n label,\n menuId,\n name,\n options,\n placeholder,\n readonly,\n required,\n searchable,\n showClearButton,\n validationStatus,\n validationText,\n currValue,\n } = this;\n\n renderHiddenInput(\n true,\n this.el,\n name,\n this.searchable ? this.hiddenInputValue : currValue,\n disabled\n );\n\n const invalid =\n validationStatus === IcInformationStatus.Error ? \"true\" : \"false\";\n\n const describedBy = getInputDescribedByText(\n this.inputId,\n helperText !== \"\",\n hasValidationStatus(this.validationStatus, this.disabled)\n ).trim();\n\n return (\n <Host\n class={{\n disabled: disabled,\n searchable: searchable,\n small: small || size === \"small\",\n \"full-width\": fullWidth,\n }}\n onBlur={this.onBlur}\n >\n <ic-input-container readonly={readonly}>\n {!hideLabel && (\n <ic-input-label\n for={this.inputId}\n label={label}\n helperText={helperText}\n required={required}\n disabled={disabled}\n readonly={readonly}\n ></ic-input-label>\n )}\n <ic-input-component-container\n ref={(el) => (this.anchorEl = el)}\n class={{ \"menu-open\": this.open }}\n small={small || size === \"small\"}\n fullWidth={fullWidth}\n disabled={disabled}\n readonly={readonly}\n validationStatus={validationStatus}\n >\n {readonly ? (\n <ic-typography>\n <p>{this.getLabelFromValue(currValue)}</p>\n </ic-typography>\n ) : isMobileOrTablet() ? (\n <select\n ref={(el) => (this.nativeSelectElement = el)}\n disabled={disabled}\n onChange={this.handleNativeSelectChange}\n required={required}\n id={this.inputId}\n aria-label={label}\n aria-describedby={describedBy}\n aria-invalid={invalid}\n onBlur={this.onBlur}\n onFocus={this.onFocus}\n onKeyDown={this.handleNativeSelectKeyDown}\n form={this.form}\n {...this.inheritedAttributes}\n >\n <option value=\"\" selected disabled={!showClearButton}>\n {placeholder}\n </option>\n {options.map((option) => {\n if (option.children) {\n return (\n <optgroup label={option.label}>\n {option.children.map((option) => (\n <option\n value={option.value}\n disabled={option.disabled}\n selected={option.value === currValue}\n >\n {option.label}\n </option>\n ))}\n </optgroup>\n );\n } else {\n return (\n <option\n value={option.value}\n disabled={option.disabled}\n selected={option.value === currValue}\n >\n {option.label}\n </option>\n );\n }\n })}\n </select>\n ) : searchable ? (\n <div class=\"searchable-select-container\">\n <input\n class=\"select-input\"\n role=\"combobox\"\n autocomplete=\"off\"\n aria-label={label}\n aria-describedby={describedBy}\n aria-activedescendant={this.ariaActiveDescendant}\n aria-autocomplete=\"list\"\n aria-expanded={this.open ? \"true\" : \"false\"}\n aria-invalid={invalid}\n aria-required={required ? \"true\" : \"false\"}\n aria-controls={menuId}\n ref={(el) => (this.searchableSelectElement = el)}\n id={this.inputId}\n value={this.searchableSelectInputValue}\n placeholder={placeholder}\n disabled={disabled}\n onInput={this.handleSearchableSelectInput}\n onClick={this.handleClick}\n onKeyDown={this.handleKeyDown}\n onFocus={this.onFocus}\n onBlur={this.onBlur}\n form={this.form}\n formaction={this.formaction}\n formenctype={this.formenctype}\n formmethod={this.formmethod}\n formnovalidate={this.formnovalidate}\n formtarget={this.formtarget}\n ></input>\n {this.searchableSelectInputValue &&\n (showClearButton || searchable) && (\n <div class=\"clear-button-container\">\n <ic-button\n id=\"clear-button\"\n ref={(el) => (this.clearButton = el)}\n aria-label={\n this.searchableSelectInputValue && currValue === null\n ? \"Clear input\"\n : \"Clear selection\"\n }\n class=\"clear-button\"\n innerHTML={Clear}\n onClick={this.handleClear}\n onFocus={this.handleClearButtonFocus}\n onBlur={this.handleClearButtonBlur}\n size={size}\n variant=\"icon\"\n appearance={\n this.clearButtonFocused\n ? IcThemeForegroundEnum.Light\n : IcThemeForegroundEnum.Dark\n }\n ></ic-button>\n <div class=\"divider\"></div>\n </div>\n )}\n <span\n onMouseDown={this.handleExpandIconMouseDown}\n class={{\n \"expand-icon\": true,\n \"expand-icon-open\": this.open,\n \"expand-icon-filled\": !(\n currValue == null || currValue === \"\"\n ),\n }}\n innerHTML={Expand}\n aria-hidden=\"true\"\n />\n <div\n aria-live=\"polite\"\n role=\"status\"\n class=\"searchable-select-results-status\"\n ></div>\n </div>\n ) : (\n <div class=\"select-container\">\n <button\n class=\"select-input\"\n ref={(el) => (this.customSelectElement = el)}\n id={this.inputId}\n aria-label={`${label}, ${\n this.getLabelFromValue(currValue) || placeholder\n }${required ? \", required\" : \"\"}`}\n aria-describedby={describedBy}\n aria-invalid={invalid}\n aria-haspopup=\"listbox\"\n aria-expanded={this.open ? \"true\" : \"false\"}\n aria-owns={menuId}\n aria-controls={menuId}\n disabled={disabled}\n onBlur={this.onBlur}\n onFocus={this.onFocus}\n onClick={this.handleClick}\n onMouseDown={this.handleMouseDown}\n onKeyDown={this.handleKeyDown}\n >\n <ic-typography\n variant=\"body\"\n class={{\n \"value-text\": true,\n placeholder:\n this.getLabelFromValue(currValue) === undefined,\n }}\n >\n <p>{this.getLabelFromValue(currValue) || placeholder}</p>\n </ic-typography>\n <div class=\"select-input-end\">\n {currValue && showClearButton && (\n <div class=\"divider\"></div>\n )}\n <span\n class={{\n \"expand-icon\": true,\n \"expand-icon-open\": this.open,\n \"expand-icon-filled\": !(\n currValue == null || currValue === \"\"\n ),\n }}\n innerHTML={Expand}\n aria-hidden=\"true\"\n />\n </div>\n </button>\n {currValue && showClearButton && (\n <ic-button\n id=\"clear-button\"\n aria-label=\"Clear selection\"\n class=\"clear-button\"\n innerHTML={Clear}\n onClick={this.handleClear}\n onFocus={this.handleClearButtonFocus}\n onBlur={this.handleClearButtonBlur}\n size={size}\n variant=\"icon\"\n appearance={\n this.clearButtonFocused\n ? IcThemeForegroundEnum.Light\n : IcThemeForegroundEnum.Dark\n }\n ></ic-button>\n )}\n </div>\n )}\n </ic-input-component-container>\n {!isMobileOrTablet() && (\n <ic-menu\n class={{\n \"no-results\":\n this.loading ||\n this.hasTimedOut ||\n (this.noOptions !== null &&\n this.noOptions[0] &&\n this.noOptions[0].label === this.emptyOptionListText),\n }}\n ref={(el) => (this.menu = el)}\n inputEl={\n searchable\n ? this.searchableSelectElement\n : this.customSelectElement\n }\n inputLabel={label}\n anchorEl={this.anchorEl}\n small={small || size === \"small\"}\n menuId={menuId}\n open={this.open}\n options={searchable ? this.filteredOptions : this.uniqueOptions}\n value={currValue}\n fullWidth={fullWidth}\n selectOnEnter={this.selectOnEnter}\n onMenuStateChange={this.handleMenuChange}\n onMenuOptionSelect={this.handleCustomSelectChange}\n onMenuKeyPress={this.handleMenuKeyPress}\n onMenuValueChange={this.handleMenuValueChange}\n onUngroupedOptionsSet={this.setUngroupedOptions}\n onRetryButtonClicked={this.handleRetry}\n parentEl={this.el}\n onTimeoutBlur={this.onTimeoutBlur}\n activationType={\n this.searchable || this.selectOnEnter ? \"manual\" : \"automatic\"\n }\n ></ic-menu>\n )}\n {hasValidationStatus(this.validationStatus, this.disabled) && (\n <ic-input-validation\n class={{ \"menu-open\": this.open }}\n ariaLiveMode=\"polite\"\n status={validationStatus}\n message={validationText}\n for={this.inputId}\n ></ic-input-validation>\n )}\n </ic-input-container>\n </Host>\n );\n }\n}\n"],"mappings":"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"}
|