@ukic/web-components 3.23.0 → 3.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/core.cjs.js +1 -1
- package/dist/cjs/{helpers-81cd6930.js → helpers-51bab4b5.js} +9 -68
- package/dist/cjs/helpers-51bab4b5.js.map +1 -0
- package/dist/cjs/ic-accordion-group.cjs.entry.js +1 -1
- package/dist/cjs/ic-accordion.cjs.entry.js +1 -1
- package/dist/cjs/ic-action-chip.cjs.entry.js +1 -1
- package/dist/cjs/ic-alert.cjs.entry.js +1 -1
- package/dist/cjs/ic-back-to-top.cjs.entry.js +1 -1
- package/dist/cjs/ic-badge.cjs.entry.js +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 +17 -9
- package/dist/cjs/ic-button_3.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-card-horizontal.cjs.entry.js +6 -6
- package/dist/cjs/ic-card-vertical.cjs.entry.js +1 -1
- package/dist/cjs/ic-checkbox-group.cjs.entry.js +3 -3
- package/dist/cjs/ic-checkbox.cjs.entry.js +5 -5
- package/dist/cjs/ic-chip.cjs.entry.js +1 -1
- package/dist/cjs/ic-data-list.cjs.entry.js +2 -2
- package/dist/cjs/ic-data-row.cjs.entry.js +3 -3
- package/dist/cjs/ic-dialog.cjs.entry.js +41 -29
- 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 +3 -3
- package/dist/cjs/ic-footer-link-group.cjs.entry.js +1 -1
- package/dist/cjs/ic-footer-link.cjs.entry.js +3 -3
- package/dist/cjs/ic-footer.cjs.entry.js +1 -1
- package/dist/cjs/ic-hero.cjs.entry.js +5 -5
- package/dist/cjs/ic-horizontal-scroll.cjs.entry.js +6 -6
- package/dist/cjs/ic-horizontal-scroll.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-input-component-container_3.cjs.entry.js +35 -34
- package/dist/cjs/ic-input-component-container_3.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-input-label_2.cjs.entry.js +6 -6
- package/dist/cjs/ic-layout-grid-item.cjs.entry.js +2 -2
- package/dist/cjs/ic-layout-grid.cjs.entry.js +2 -2
- package/dist/cjs/ic-link.cjs.entry.js +2 -2
- package/dist/cjs/ic-menu-group.cjs.entry.js +2 -2
- 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 +2 -2
- package/dist/cjs/ic-navigation-item.cjs.entry.js +1 -1
- package/dist/cjs/ic-navigation-menu.cjs.entry.js +5 -5
- package/dist/cjs/ic-page-header.cjs.entry.js +7 -7
- package/dist/cjs/ic-pagination-bar.cjs.entry.js +6 -6
- package/dist/cjs/ic-pagination-item.cjs.entry.js +2 -2
- package/dist/cjs/ic-pagination_3.cjs.entry.js +28 -26
- package/dist/cjs/ic-pagination_3.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-popover-menu.cjs.entry.js +5 -5
- package/dist/cjs/ic-radio-group.cjs.entry.js +7 -7
- package/dist/cjs/ic-radio-group.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-radio-option.cjs.entry.js +9 -7
- package/dist/cjs/ic-radio-option.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-search-bar.cjs.entry.js +10 -10
- package/dist/cjs/ic-section-container.cjs.entry.js +2 -2
- package/dist/cjs/ic-side-navigation.cjs.entry.js +5 -5
- package/dist/cjs/ic-skeleton.cjs.entry.js +2 -2
- package/dist/cjs/ic-skip-link.cjs.entry.js +2 -2
- package/dist/cjs/ic-status-tag.cjs.entry.js +3 -3
- package/dist/cjs/ic-step.cjs.entry.js +14 -14
- package/dist/cjs/ic-stepper.cjs.entry.js +3 -3
- package/dist/cjs/ic-switch.cjs.entry.js +7 -9
- package/dist/cjs/ic-switch.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-tab-context.cjs.entry.js +1 -1
- package/dist/cjs/ic-tab-group.cjs.entry.js +3 -3
- package/dist/cjs/ic-tab-panel.cjs.entry.js +2 -2
- package/dist/cjs/ic-tab.cjs.entry.js +1 -1
- package/dist/cjs/ic-theme.cjs.entry.js +2 -2
- package/dist/cjs/ic-toast-region.cjs.entry.js +1 -1
- package/dist/cjs/ic-toast.cjs.entry.js +6 -6
- package/dist/cjs/ic-toggle-button-group.cjs.entry.js +3 -3
- package/dist/cjs/ic-toggle-button.cjs.entry.js +3 -3
- package/dist/cjs/ic-top-navigation.cjs.entry.js +1 -1
- package/dist/cjs/ic-typography.cjs.entry.js +3 -3
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/components/ic-card-horizontal/ic-card-horizontal.js +5 -5
- package/dist/collection/components/ic-checkbox/ic-checkbox.js +4 -4
- package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.js +2 -2
- package/dist/collection/components/ic-data-list/ic-data-list.js +2 -2
- package/dist/collection/components/ic-data-row/ic-data-row.js +2 -2
- package/dist/collection/components/ic-dialog/ic-dialog.js +41 -29
- package/dist/collection/components/ic-dialog/ic-dialog.js.map +1 -1
- package/dist/collection/components/ic-empty-state/ic-empty-state.js +2 -2
- package/dist/collection/components/ic-footer-link/ic-footer-link.js +2 -2
- package/dist/collection/components/ic-hero/ic-hero.js +4 -4
- package/dist/collection/components/ic-horizontal-scroll/ic-horizontal-scroll.js +5 -5
- package/dist/collection/components/ic-input-component-container/ic-input-component-container.js +3 -3
- package/dist/collection/components/ic-input-container/ic-input-container.js +2 -2
- package/dist/collection/components/ic-input-label/ic-input-label.js +2 -2
- package/dist/collection/components/ic-input-validation/ic-input-validation.js +3 -3
- package/dist/collection/components/ic-layout-grid/ic-layout-grid.js +2 -2
- package/dist/collection/components/ic-layout-grid-item/ic-layout-grid-item.js +2 -2
- package/dist/collection/components/ic-link/ic-link.js +1 -1
- package/dist/collection/components/ic-loading-indicator/ic-loading-indicator.js +5 -5
- package/dist/collection/components/ic-menu/ic-menu.js +3 -3
- package/dist/collection/components/ic-menu-group/ic-menu-group.js +1 -1
- package/dist/collection/components/ic-navigation-group/ic-navigation-group.js +1 -1
- package/dist/collection/components/ic-navigation-menu/ic-navigation-menu.js +4 -4
- package/dist/collection/components/ic-page-header/ic-page-header.js +6 -6
- package/dist/collection/components/ic-pagination/ic-pagination.js +4 -4
- package/dist/collection/components/ic-pagination-bar/ic-pagination-bar.js +5 -5
- package/dist/collection/components/ic-pagination-item/ic-pagination-item.js +1 -1
- package/dist/collection/components/ic-popover-menu/ic-popover-menu.js +4 -4
- package/dist/collection/components/ic-radio-group/ic-radio-group.css +15 -0
- package/dist/collection/components/ic-radio-group/ic-radio-group.js +9 -9
- package/dist/collection/components/ic-radio-group/ic-radio-group.js.map +1 -1
- package/dist/collection/components/ic-radio-group/ic-radio-group.stories.js +48 -4
- package/dist/collection/components/ic-radio-option/ic-radio-option.css +29 -444
- package/dist/collection/components/ic-radio-option/ic-radio-option.js +7 -5
- package/dist/collection/components/ic-radio-option/ic-radio-option.js.map +1 -1
- package/dist/collection/components/ic-search-bar/ic-search-bar.js +10 -10
- package/dist/collection/components/ic-section-container/ic-section-container.js +2 -2
- package/dist/collection/components/ic-select/ic-select.js +18 -16
- package/dist/collection/components/ic-select/ic-select.js.map +1 -1
- package/dist/collection/components/ic-select/ic-select.types.js.map +1 -1
- package/dist/collection/components/ic-side-navigation/ic-side-navigation.js +4 -4
- package/dist/collection/components/ic-skeleton/ic-skeleton.js +2 -2
- package/dist/collection/components/ic-skip-link/ic-skip-link.js +2 -2
- package/dist/collection/components/ic-status-tag/ic-status-tag.js +2 -2
- package/dist/collection/components/ic-step/ic-step.js +13 -13
- package/dist/collection/components/ic-stepper/ic-stepper.js +2 -2
- package/dist/collection/components/ic-switch/ic-switch.css +108 -43
- package/dist/collection/components/ic-switch/ic-switch.js +9 -11
- package/dist/collection/components/ic-switch/ic-switch.js.map +1 -1
- package/dist/collection/components/ic-switch/ic-switch.stories.js +8 -4
- package/dist/collection/components/ic-tab-context/ic-tab-context.js +1 -1
- package/dist/collection/components/ic-tab-group/ic-tab-group.js +2 -2
- package/dist/collection/components/ic-tab-panel/ic-tab-panel.js +2 -2
- package/dist/collection/components/ic-text-field/ic-text-field.js +5 -5
- package/dist/collection/components/ic-theme/ic-theme.js +1 -1
- package/dist/collection/components/ic-toast/ic-toast.js +5 -5
- package/dist/collection/components/ic-toast-region/ic-toast-region.js +1 -1
- package/dist/collection/components/ic-toggle-button/ic-toggle-button.js +2 -2
- package/dist/collection/components/ic-toggle-button-group/ic-toggle-button-group.js +2 -2
- package/dist/collection/components/ic-tooltip/ic-tooltip.css +21 -0
- package/dist/collection/components/ic-tooltip/ic-tooltip.js +33 -3
- package/dist/collection/components/ic-tooltip/ic-tooltip.js.map +1 -1
- package/dist/collection/components/ic-tooltip/ic-tooltip.stories.js +128 -6
- package/dist/collection/components/ic-typography/ic-typography.js +2 -2
- package/dist/collection/utils/helpers.js +8 -66
- package/dist/collection/utils/helpers.js.map +1 -1
- package/dist/components/helpers.js +9 -67
- package/dist/components/helpers.js.map +1 -1
- package/dist/components/ic-action-chip.js +1 -1
- package/dist/components/ic-alert.js +1 -1
- package/dist/components/ic-card-horizontal.js +6 -6
- package/dist/components/ic-card-vertical.js +1 -1
- package/dist/components/ic-checkbox-group.js +2 -2
- package/dist/components/ic-checkbox.js +4 -4
- package/dist/components/ic-chip.js +1 -1
- package/dist/components/ic-data-list.js +2 -2
- package/dist/components/ic-data-row.js +2 -2
- package/dist/components/ic-dialog.js +41 -29
- package/dist/components/ic-dialog.js.map +1 -1
- package/dist/components/ic-divider2.js +1 -1
- package/dist/components/ic-empty-state.js +3 -3
- package/dist/components/ic-footer-link.js +2 -2
- package/dist/components/ic-footer.js +1 -1
- package/dist/components/ic-hero.js +5 -5
- package/dist/components/ic-horizontal-scroll2.js +6 -6
- package/dist/components/ic-input-component-container2.js +4 -4
- package/dist/components/ic-input-container2.js +2 -2
- package/dist/components/ic-input-label2.js +2 -2
- package/dist/components/ic-input-validation2.js +3 -3
- package/dist/components/ic-layout-grid-item.js +2 -2
- package/dist/components/ic-layout-grid.js +2 -2
- package/dist/components/ic-link2.js +1 -1
- package/dist/components/ic-loading-indicator2.js +5 -5
- package/dist/components/ic-menu-group.js +1 -1
- package/dist/components/ic-menu2.js +30 -29
- 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 +2 -2
- package/dist/components/ic-navigation-item.js +1 -1
- package/dist/components/ic-navigation-menu2.js +5 -5
- package/dist/components/ic-page-header.js +6 -6
- package/dist/components/ic-pagination-bar.js +6 -6
- package/dist/components/ic-pagination-item2.js +2 -2
- package/dist/components/ic-pagination2.js +4 -4
- package/dist/components/ic-popover-menu.js +4 -4
- package/dist/components/ic-radio-group.js +6 -6
- package/dist/components/ic-radio-group.js.map +1 -1
- package/dist/components/ic-radio-option.js +8 -6
- package/dist/components/ic-radio-option.js.map +1 -1
- package/dist/components/ic-search-bar.js +10 -10
- package/dist/components/ic-section-container2.js +2 -2
- package/dist/components/ic-select2.js +19 -17
- package/dist/components/ic-select2.js.map +1 -1
- package/dist/components/ic-side-navigation.js +5 -5
- package/dist/components/ic-side-navigation.js.map +1 -1
- package/dist/components/ic-skeleton.js +2 -2
- package/dist/components/ic-skeleton.js.map +1 -1
- package/dist/components/ic-skip-link.js +2 -2
- package/dist/components/ic-status-tag.js +2 -2
- package/dist/components/ic-step.js +13 -13
- package/dist/components/ic-stepper.js +2 -2
- package/dist/components/ic-switch.js +6 -8
- package/dist/components/ic-switch.js.map +1 -1
- package/dist/components/ic-tab-context.js +1 -1
- package/dist/components/ic-tab-group.js +2 -2
- package/dist/components/ic-tab-panel.js +2 -2
- package/dist/components/ic-text-field2.js +6 -6
- package/dist/components/ic-theme.js +2 -2
- package/dist/components/ic-toast-region.js +1 -1
- package/dist/components/ic-toast.js +6 -6
- package/dist/components/ic-toggle-button-group.js +2 -2
- package/dist/components/ic-toggle-button.js +3 -3
- package/dist/components/ic-tooltip2.js +13 -4
- package/dist/components/ic-tooltip2.js.map +1 -1
- package/dist/components/ic-top-navigation.js +1 -1
- package/dist/components/ic-typography2.js +2 -2
- package/dist/core/core.esm.js +1 -1
- package/dist/core/core.esm.js.map +1 -1
- package/dist/core/{p-3aed13ba.entry.js → p-023cf5d9.entry.js} +2 -2
- package/dist/core/{p-fb9376f0.entry.js → p-043a5677.entry.js} +2 -2
- package/dist/core/p-171a19bf.entry.js +3 -0
- package/dist/core/p-171a19bf.entry.js.map +1 -0
- package/dist/core/{p-347cc084.entry.js → p-19056c16.entry.js} +2 -2
- package/dist/core/{p-b777f0a1.entry.js → p-1cfaa962.entry.js} +2 -2
- package/dist/core/{p-659d048d.entry.js → p-23fb87be.entry.js} +2 -2
- package/dist/core/{p-f661ba76.entry.js → p-2424f82f.entry.js} +2 -2
- package/dist/core/{p-2691cc80.entry.js → p-243ae8fe.entry.js} +2 -2
- package/dist/core/{p-aad03a3c.entry.js → p-271ee0bc.entry.js} +2 -2
- package/dist/core/{p-67de1290.entry.js → p-2b1ce5b7.entry.js} +2 -2
- package/dist/core/p-343670b4.entry.js +2 -0
- package/dist/core/p-343670b4.entry.js.map +1 -0
- package/dist/core/{p-61d79fc6.entry.js → p-3da9774b.entry.js} +2 -2
- package/dist/core/{p-0fb7f915.entry.js → p-3ee66d00.entry.js} +2 -2
- package/dist/core/{p-ea7a3d30.entry.js → p-3f001e75.entry.js} +2 -2
- package/dist/core/{p-09505807.entry.js → p-406647b8.entry.js} +2 -2
- package/dist/core/{p-9cb83a2e.entry.js → p-44d043f7.entry.js} +2 -2
- package/dist/core/{p-4f56acff.entry.js → p-46e5a58b.entry.js} +2 -2
- package/dist/core/{p-cfbacca1.entry.js → p-4dbc72f4.entry.js} +2 -2
- package/dist/core/p-526dd099.entry.js +2 -0
- package/dist/core/p-526dd099.entry.js.map +1 -0
- package/dist/core/{p-f64996f1.entry.js → p-5fc0dc36.entry.js} +2 -2
- package/dist/core/{p-7b538fd1.entry.js → p-61799a8b.entry.js} +2 -2
- package/dist/core/{p-90678e67.entry.js → p-6b5edd6b.entry.js} +2 -2
- package/dist/core/p-70ca7796.entry.js +2 -0
- package/dist/core/p-70ca7796.entry.js.map +1 -0
- package/dist/core/{p-daec7e69.entry.js → p-72f52f20.entry.js} +2 -2
- package/dist/core/{p-9c2b2cb9.entry.js → p-74a3a450.entry.js} +2 -2
- package/dist/core/{p-c156e6e9.entry.js → p-796fc111.entry.js} +2 -2
- package/dist/core/{p-b52c44eb.entry.js → p-85232cec.entry.js} +2 -2
- package/dist/core/{p-b997ad5e.entry.js → p-85ac0d78.entry.js} +2 -2
- package/dist/core/{p-1b81ec88.entry.js → p-8fc5e9f9.entry.js} +2 -2
- package/dist/core/p-8fc5e9f9.entry.js.map +1 -0
- package/dist/core/{p-48a628f0.entry.js → p-9267c160.entry.js} +2 -2
- package/dist/core/{p-393af2bc.entry.js → p-970e190c.entry.js} +2 -2
- package/dist/core/p-98dee727.entry.js +2 -0
- package/dist/core/p-98dee727.entry.js.map +1 -0
- package/dist/core/{p-e938eb31.entry.js → p-99b20121.entry.js} +2 -2
- package/dist/core/{p-aaf4e367.entry.js → p-9ae157de.entry.js} +2 -2
- package/dist/core/{p-80d85403.entry.js → p-9b48971f.entry.js} +2 -2
- package/dist/core/{p-73043f57.entry.js → p-9ced00a7.entry.js} +2 -2
- package/dist/core/{p-bb7652cd.entry.js → p-a0c54a50.entry.js} +2 -2
- package/dist/core/{p-880f7548.entry.js → p-a5fcb9c1.entry.js} +2 -2
- package/dist/core/{p-a780a34b.entry.js → p-a7c263bd.entry.js} +2 -2
- package/dist/core/{p-99433296.entry.js → p-ab104baa.entry.js} +2 -2
- package/dist/core/{p-ef70ea50.entry.js → p-b27e147d.entry.js} +2 -2
- package/dist/core/{p-9502fb86.entry.js → p-b58fb588.entry.js} +2 -2
- package/dist/core/p-bb52e752.entry.js +2 -0
- package/dist/core/p-bb52e752.entry.js.map +1 -0
- package/dist/core/{p-2b87c592.entry.js → p-c0b70c08.entry.js} +2 -2
- package/dist/core/{p-46fd555f.entry.js → p-c41fd2cf.entry.js} +2 -2
- package/dist/core/{p-5900cb65.entry.js → p-c82c2362.entry.js} +2 -2
- package/dist/core/{p-e7767c0d.entry.js → p-ca64b7ba.entry.js} +2 -2
- package/dist/core/{p-cad23b7d.entry.js → p-cd963de6.entry.js} +2 -2
- package/dist/core/{p-735d3096.entry.js → p-cf669574.entry.js} +2 -2
- package/dist/core/{p-83578f1d.entry.js → p-cf87b6db.entry.js} +2 -2
- package/dist/core/{p-05fd2707.entry.js → p-d0d324b4.entry.js} +2 -2
- package/dist/core/{p-ea890d3d.entry.js → p-d0dd9f2c.entry.js} +2 -2
- package/dist/core/{p-5976de6e.entry.js → p-d1220d2a.entry.js} +2 -2
- package/dist/core/{p-50dca790.entry.js → p-d5fcd4f9.entry.js} +2 -2
- package/dist/core/{p-56de4f4b.entry.js → p-d7c6fc8d.entry.js} +2 -2
- package/dist/core/{p-506d428a.entry.js → p-d8de5b88.entry.js} +2 -2
- package/dist/core/{p-53ab3c0f.entry.js → p-e35f15ec.entry.js} +2 -2
- package/dist/core/p-e5266c19.entry.js +2 -0
- package/dist/core/p-e5266c19.entry.js.map +1 -0
- package/dist/core/{p-09caf7ed.entry.js → p-ec1ea1a7.entry.js} +2 -2
- package/dist/core/{p-b77b1e1f.js → p-eeb8d98a.js} +2 -2
- package/dist/core/p-eeb8d98a.js.map +1 -0
- package/dist/core/{p-2a124daf.entry.js → p-ef96e1aa.entry.js} +2 -2
- package/dist/core/{p-2bd80913.entry.js → p-fc4b7d2b.entry.js} +2 -2
- package/dist/core/{p-8a833e82.entry.js → p-fd9ea62a.entry.js} +2 -2
- package/dist/esm/core.js +1 -1
- package/dist/esm/{helpers-66681c73.js → helpers-33039856.js} +10 -68
- package/dist/esm/helpers-33039856.js.map +1 -0
- package/dist/esm/ic-accordion-group.entry.js +1 -1
- package/dist/esm/ic-accordion.entry.js +1 -1
- package/dist/esm/ic-action-chip.entry.js +1 -1
- package/dist/esm/ic-alert.entry.js +1 -1
- package/dist/esm/ic-back-to-top.entry.js +1 -1
- package/dist/esm/ic-badge.entry.js +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 +17 -9
- package/dist/esm/ic-button_3.entry.js.map +1 -1
- package/dist/esm/ic-card-horizontal.entry.js +6 -6
- package/dist/esm/ic-card-vertical.entry.js +1 -1
- package/dist/esm/ic-checkbox-group.entry.js +3 -3
- package/dist/esm/ic-checkbox.entry.js +5 -5
- package/dist/esm/ic-chip.entry.js +1 -1
- package/dist/esm/ic-data-list.entry.js +2 -2
- package/dist/esm/ic-data-row.entry.js +3 -3
- package/dist/esm/ic-dialog.entry.js +41 -29
- 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 +3 -3
- package/dist/esm/ic-footer-link-group.entry.js +1 -1
- package/dist/esm/ic-footer-link.entry.js +3 -3
- package/dist/esm/ic-footer.entry.js +1 -1
- package/dist/esm/ic-hero.entry.js +5 -5
- package/dist/esm/ic-horizontal-scroll.entry.js +6 -6
- package/dist/esm/ic-horizontal-scroll.entry.js.map +1 -1
- package/dist/esm/ic-input-component-container_3.entry.js +35 -34
- package/dist/esm/ic-input-component-container_3.entry.js.map +1 -1
- package/dist/esm/ic-input-label_2.entry.js +6 -6
- package/dist/esm/ic-layout-grid-item.entry.js +2 -2
- package/dist/esm/ic-layout-grid.entry.js +2 -2
- package/dist/esm/ic-link.entry.js +2 -2
- package/dist/esm/ic-menu-group.entry.js +2 -2
- 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 +2 -2
- package/dist/esm/ic-navigation-item.entry.js +1 -1
- package/dist/esm/ic-navigation-menu.entry.js +5 -5
- package/dist/esm/ic-page-header.entry.js +7 -7
- package/dist/esm/ic-pagination-bar.entry.js +6 -6
- package/dist/esm/ic-pagination-item.entry.js +2 -2
- package/dist/esm/ic-pagination_3.entry.js +28 -26
- package/dist/esm/ic-pagination_3.entry.js.map +1 -1
- package/dist/esm/ic-popover-menu.entry.js +5 -5
- package/dist/esm/ic-radio-group.entry.js +7 -7
- package/dist/esm/ic-radio-group.entry.js.map +1 -1
- package/dist/esm/ic-radio-option.entry.js +9 -7
- package/dist/esm/ic-radio-option.entry.js.map +1 -1
- package/dist/esm/ic-search-bar.entry.js +10 -10
- package/dist/esm/ic-section-container.entry.js +2 -2
- package/dist/esm/ic-side-navigation.entry.js +5 -5
- package/dist/esm/ic-skeleton.entry.js +2 -2
- package/dist/esm/ic-skip-link.entry.js +2 -2
- package/dist/esm/ic-status-tag.entry.js +3 -3
- package/dist/esm/ic-step.entry.js +14 -14
- package/dist/esm/ic-stepper.entry.js +3 -3
- package/dist/esm/ic-switch.entry.js +7 -9
- package/dist/esm/ic-switch.entry.js.map +1 -1
- package/dist/esm/ic-tab-context.entry.js +1 -1
- package/dist/esm/ic-tab-group.entry.js +3 -3
- package/dist/esm/ic-tab-panel.entry.js +2 -2
- package/dist/esm/ic-tab.entry.js +1 -1
- package/dist/esm/ic-theme.entry.js +2 -2
- package/dist/esm/ic-toast-region.entry.js +1 -1
- package/dist/esm/ic-toast.entry.js +6 -6
- package/dist/esm/ic-toggle-button-group.entry.js +3 -3
- package/dist/esm/ic-toggle-button.entry.js +3 -3
- package/dist/esm/ic-top-navigation.entry.js +1 -1
- package/dist/esm/ic-typography.entry.js +3 -3
- package/dist/esm/loader.js +1 -1
- package/dist/types/components/ic-dialog/ic-dialog.d.ts +2 -1
- package/dist/types/components/ic-radio-group/ic-radio-group.d.ts +2 -2
- package/dist/types/components/ic-select/ic-select.types.d.ts +2 -1
- package/dist/types/components/ic-switch/ic-switch.d.ts +2 -2
- package/dist/types/components/ic-tooltip/ic-tooltip.d.ts +8 -0
- package/dist/types/components.d.ts +12 -4
- package/dist/types/utils/helpers.d.ts +0 -31
- package/hydrate/index.js +263 -294
- package/hydrate/index.mjs +263 -294
- package/package.json +10 -9
- package/vscode-data.json +13 -3
- package/dist/cjs/helpers-81cd6930.js.map +0 -1
- package/dist/core/p-1b81ec88.entry.js.map +0 -1
- package/dist/core/p-6b4ec95f.entry.js +0 -3
- package/dist/core/p-6b4ec95f.entry.js.map +0 -1
- package/dist/core/p-a08d6b46.entry.js +0 -2
- package/dist/core/p-a08d6b46.entry.js.map +0 -1
- package/dist/core/p-a2953aad.entry.js +0 -2
- package/dist/core/p-a2953aad.entry.js.map +0 -1
- package/dist/core/p-a321feee.entry.js +0 -2
- package/dist/core/p-a321feee.entry.js.map +0 -1
- package/dist/core/p-b77b1e1f.js.map +0 -1
- package/dist/core/p-cbca04bb.entry.js +0 -2
- package/dist/core/p-cbca04bb.entry.js.map +0 -1
- package/dist/core/p-cc64e5ef.entry.js +0 -2
- package/dist/core/p-cc64e5ef.entry.js.map +0 -1
- package/dist/core/p-f84ac9c6.entry.js +0 -2
- package/dist/core/p-f84ac9c6.entry.js.map +0 -1
- package/dist/esm/helpers-66681c73.js.map +0 -1
- /package/dist/core/{p-3aed13ba.entry.js.map → p-023cf5d9.entry.js.map} +0 -0
- /package/dist/core/{p-fb9376f0.entry.js.map → p-043a5677.entry.js.map} +0 -0
- /package/dist/core/{p-347cc084.entry.js.map → p-19056c16.entry.js.map} +0 -0
- /package/dist/core/{p-b777f0a1.entry.js.map → p-1cfaa962.entry.js.map} +0 -0
- /package/dist/core/{p-659d048d.entry.js.map → p-23fb87be.entry.js.map} +0 -0
- /package/dist/core/{p-f661ba76.entry.js.map → p-2424f82f.entry.js.map} +0 -0
- /package/dist/core/{p-2691cc80.entry.js.map → p-243ae8fe.entry.js.map} +0 -0
- /package/dist/core/{p-aad03a3c.entry.js.map → p-271ee0bc.entry.js.map} +0 -0
- /package/dist/core/{p-67de1290.entry.js.map → p-2b1ce5b7.entry.js.map} +0 -0
- /package/dist/core/{p-61d79fc6.entry.js.map → p-3da9774b.entry.js.map} +0 -0
- /package/dist/core/{p-0fb7f915.entry.js.map → p-3ee66d00.entry.js.map} +0 -0
- /package/dist/core/{p-ea7a3d30.entry.js.map → p-3f001e75.entry.js.map} +0 -0
- /package/dist/core/{p-09505807.entry.js.map → p-406647b8.entry.js.map} +0 -0
- /package/dist/core/{p-9cb83a2e.entry.js.map → p-44d043f7.entry.js.map} +0 -0
- /package/dist/core/{p-4f56acff.entry.js.map → p-46e5a58b.entry.js.map} +0 -0
- /package/dist/core/{p-cfbacca1.entry.js.map → p-4dbc72f4.entry.js.map} +0 -0
- /package/dist/core/{p-f64996f1.entry.js.map → p-5fc0dc36.entry.js.map} +0 -0
- /package/dist/core/{p-7b538fd1.entry.js.map → p-61799a8b.entry.js.map} +0 -0
- /package/dist/core/{p-90678e67.entry.js.map → p-6b5edd6b.entry.js.map} +0 -0
- /package/dist/core/{p-daec7e69.entry.js.map → p-72f52f20.entry.js.map} +0 -0
- /package/dist/core/{p-9c2b2cb9.entry.js.map → p-74a3a450.entry.js.map} +0 -0
- /package/dist/core/{p-c156e6e9.entry.js.map → p-796fc111.entry.js.map} +0 -0
- /package/dist/core/{p-b52c44eb.entry.js.map → p-85232cec.entry.js.map} +0 -0
- /package/dist/core/{p-b997ad5e.entry.js.map → p-85ac0d78.entry.js.map} +0 -0
- /package/dist/core/{p-48a628f0.entry.js.map → p-9267c160.entry.js.map} +0 -0
- /package/dist/core/{p-393af2bc.entry.js.map → p-970e190c.entry.js.map} +0 -0
- /package/dist/core/{p-e938eb31.entry.js.map → p-99b20121.entry.js.map} +0 -0
- /package/dist/core/{p-aaf4e367.entry.js.map → p-9ae157de.entry.js.map} +0 -0
- /package/dist/core/{p-80d85403.entry.js.map → p-9b48971f.entry.js.map} +0 -0
- /package/dist/core/{p-73043f57.entry.js.map → p-9ced00a7.entry.js.map} +0 -0
- /package/dist/core/{p-bb7652cd.entry.js.map → p-a0c54a50.entry.js.map} +0 -0
- /package/dist/core/{p-880f7548.entry.js.map → p-a5fcb9c1.entry.js.map} +0 -0
- /package/dist/core/{p-a780a34b.entry.js.map → p-a7c263bd.entry.js.map} +0 -0
- /package/dist/core/{p-99433296.entry.js.map → p-ab104baa.entry.js.map} +0 -0
- /package/dist/core/{p-ef70ea50.entry.js.map → p-b27e147d.entry.js.map} +0 -0
- /package/dist/core/{p-9502fb86.entry.js.map → p-b58fb588.entry.js.map} +0 -0
- /package/dist/core/{p-2b87c592.entry.js.map → p-c0b70c08.entry.js.map} +0 -0
- /package/dist/core/{p-46fd555f.entry.js.map → p-c41fd2cf.entry.js.map} +0 -0
- /package/dist/core/{p-5900cb65.entry.js.map → p-c82c2362.entry.js.map} +0 -0
- /package/dist/core/{p-e7767c0d.entry.js.map → p-ca64b7ba.entry.js.map} +0 -0
- /package/dist/core/{p-cad23b7d.entry.js.map → p-cd963de6.entry.js.map} +0 -0
- /package/dist/core/{p-735d3096.entry.js.map → p-cf669574.entry.js.map} +0 -0
- /package/dist/core/{p-83578f1d.entry.js.map → p-cf87b6db.entry.js.map} +0 -0
- /package/dist/core/{p-05fd2707.entry.js.map → p-d0d324b4.entry.js.map} +0 -0
- /package/dist/core/{p-ea890d3d.entry.js.map → p-d0dd9f2c.entry.js.map} +0 -0
- /package/dist/core/{p-5976de6e.entry.js.map → p-d1220d2a.entry.js.map} +0 -0
- /package/dist/core/{p-50dca790.entry.js.map → p-d5fcd4f9.entry.js.map} +0 -0
- /package/dist/core/{p-56de4f4b.entry.js.map → p-d7c6fc8d.entry.js.map} +0 -0
- /package/dist/core/{p-506d428a.entry.js.map → p-d8de5b88.entry.js.map} +0 -0
- /package/dist/core/{p-53ab3c0f.entry.js.map → p-e35f15ec.entry.js.map} +0 -0
- /package/dist/core/{p-09caf7ed.entry.js.map → p-ec1ea1a7.entry.js.map} +0 -0
- /package/dist/core/{p-2a124daf.entry.js.map → p-ef96e1aa.entry.js.map} +0 -0
- /package/dist/core/{p-2bd80913.entry.js.map → p-fc4b7d2b.entry.js.map} +0 -0
- /package/dist/core/{p-8a833e82.entry.js.map → p-fd9ea62a.entry.js.map} +0 -0
|
@@ -40,7 +40,7 @@ export class ToastRegion {
|
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
42
|
render() {
|
|
43
|
-
return h("slot", { key: '
|
|
43
|
+
return h("slot", { key: '28f5e26c6dbfb2de076cff231b72722f1ff403c7' });
|
|
44
44
|
}
|
|
45
45
|
static get is() { return "ic-toast-region"; }
|
|
46
46
|
static get properties() {
|
|
@@ -150,7 +150,7 @@ export class ToggleButton {
|
|
|
150
150
|
render() {
|
|
151
151
|
const { accessibleLabel, checked, disabled, fullWidth, iconPlacement, monochrome, label, loading, outline, size, theme, tooltipPlacement, variant, } = this;
|
|
152
152
|
const iconVariant = variant === "icon";
|
|
153
|
-
return (h(Host, { key: '
|
|
153
|
+
return (h(Host, { key: 'a90e2a846a52531dc542d039724dc8516a00ae14', class: {
|
|
154
154
|
"ic-toggle-button-checked": checked,
|
|
155
155
|
"ic-toggle-button-disabled": disabled,
|
|
156
156
|
"ic-toggle-button-icon": iconVariant,
|
|
@@ -160,7 +160,7 @@ export class ToggleButton {
|
|
|
160
160
|
"ic-toggle-button-hide-outline": !outline,
|
|
161
161
|
[`ic-toggle-button-${size}`]: true,
|
|
162
162
|
[`ic-theme-${theme}`]: theme !== "inherit",
|
|
163
|
-
}, onFocus: this.handleFocus }, h("ic-button", { key: '
|
|
163
|
+
}, onFocus: this.handleFocus }, h("ic-button", { key: '6f15f0c63675bd099d370ce02e2b02eeac4e913a', "aria-pressed": `${checked}`, variant: iconVariant ? "icon-tertiary" : "secondary", onClick: this.handleClick, title: accessibleLabel, "aria-label": `${accessibleLabel ? accessibleLabel : label}, ${checked ? "ticked" : "unticked"}`, disabled: disabled, size: size, fullWidth: fullWidth, loading: loading, tooltipPlacement: tooltipPlacement }, !iconVariant && label, h("slot", { key: '2503823bad70fa984db6c71d16cc863daaede0e3' }), isSlotUsed(this.el, "icon") && (h("slot", { key: '53969441b6446ec012b538c2f3d468ea0e793547', name: "icon", slot: `${iconPlacement}-icon` })), isSlotUsed(this.el, "badge") && (h("slot", { key: '2619be7d1528115db996708b102aadd611fd1b4b', name: "badge", slot: "badge" })))));
|
|
164
164
|
}
|
|
165
165
|
static get is() { return "ic-toggle-button"; }
|
|
166
166
|
static get encapsulation() { return "shadow"; }
|
|
@@ -245,14 +245,14 @@ export class ToggleButtonGroup {
|
|
|
245
245
|
}
|
|
246
246
|
render() {
|
|
247
247
|
const { accessibleLabel, disabled, fullWidth, loading, monochrome, outline, theme, } = this;
|
|
248
|
-
return (h(Host, { key: '
|
|
248
|
+
return (h(Host, { key: 'b312b6cae074758bad82c66446709925e19cf5ce', role: "group", "aria-label": accessibleLabel, tabindex: disabled ? -1 : 0, class: {
|
|
249
249
|
"ic-toggle-button-group-disabled": disabled,
|
|
250
250
|
"ic-toggle-button-group-full-width": fullWidth,
|
|
251
251
|
"ic-toggle-button-group-loading": loading,
|
|
252
252
|
"ic-toggle-button-group-monochrome": monochrome,
|
|
253
253
|
"ic-toggle-button-group-hide-outline": !outline,
|
|
254
254
|
[`ic-theme-${theme}`]: theme !== "inherit",
|
|
255
|
-
}, onFocus: this.handleHostFocus }, h("slot", { key: '
|
|
255
|
+
}, onFocus: this.handleHostFocus }, h("slot", { key: '8b09d946e7a8983b66f8bef384901899f88a54af' })));
|
|
256
256
|
}
|
|
257
257
|
static get is() { return "ic-toggle-button-group"; }
|
|
258
258
|
static get encapsulation() { return "shadow"; }
|
|
@@ -577,6 +577,27 @@ video {
|
|
|
577
577
|
display: inline-block;
|
|
578
578
|
}
|
|
579
579
|
|
|
580
|
+
:host(.ic-tooltip.ic-tooltip-with-icon) .ic-tooltip-content {
|
|
581
|
+
display: flex;
|
|
582
|
+
align-items: flex-start;
|
|
583
|
+
justify-content: flex-start;
|
|
584
|
+
gap: var(--ic-space-xxs);
|
|
585
|
+
text-align: left;
|
|
586
|
+
}
|
|
587
|
+
|
|
588
|
+
:host(.ic-tooltip.ic-tooltip-with-icon) .ic-icon-container {
|
|
589
|
+
width: var(--ic-space-md);
|
|
590
|
+
height: var(--ic-space-md);
|
|
591
|
+
color: var(--ic-tooltip-text);
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
:host(.ic-tooltip.ic-tooltip-with-icon) ::slotted([slot="icon"]) {
|
|
595
|
+
width: var(--ic-space-md);
|
|
596
|
+
height: var(--ic-space-md);
|
|
597
|
+
display: inline-block;
|
|
598
|
+
margin-top: var(--ic-space-1px);
|
|
599
|
+
}
|
|
600
|
+
|
|
580
601
|
@media screen and (max-width: 576px) {
|
|
581
602
|
:host(.ic-tooltip) .ic-tooltip-container {
|
|
582
603
|
max-width: 18.875rem;
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { Host, h, } from "@stencil/core";
|
|
2
2
|
import { createPopper } from "@popperjs/core";
|
|
3
|
-
import { isSafari, onComponentRequiredPropUndefined, } from "../../utils/helpers";
|
|
3
|
+
import { isSafari, onComponentRequiredPropUndefined, isSlotUsed, renderDynamicChildSlots, } from "../../utils/helpers";
|
|
4
|
+
/**
|
|
5
|
+
* @slot icon - Icon will be rendered to the left of the tooltip text.
|
|
6
|
+
*/
|
|
4
7
|
export class Tooltip {
|
|
5
8
|
constructor() {
|
|
6
9
|
this.delayedHideEvents = ["mouseleave"];
|
|
@@ -189,6 +192,10 @@ export class Tooltip {
|
|
|
189
192
|
}
|
|
190
193
|
this.containerContentArea =
|
|
191
194
|
(_b = (_a = container === null || container === void 0 ? void 0 : container.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector(".content-area")) !== null && _b !== void 0 ? _b : null;
|
|
195
|
+
this.hostMutationObserver = new MutationObserver((mutationList) => renderDynamicChildSlots(mutationList, "icon", this));
|
|
196
|
+
this.hostMutationObserver.observe(this.el, {
|
|
197
|
+
childList: true,
|
|
198
|
+
});
|
|
192
199
|
onComponentRequiredPropUndefined([{ prop: this.label, propName: "label" }], "Tooltip");
|
|
193
200
|
}
|
|
194
201
|
componentDidRender() {
|
|
@@ -197,6 +204,9 @@ export class Tooltip {
|
|
|
197
204
|
this.maxLines &&
|
|
198
205
|
this.maxLines > 0 &&
|
|
199
206
|
(typographyEl === null || typographyEl === void 0 ? void 0 : typographyEl.setAttribute("style", `--truncation-max-lines: ${this.maxLines}`));
|
|
207
|
+
if (this.iconAltText && !isSlotUsed(this.el, "icon")) {
|
|
208
|
+
console.warn(`Prop 'iconAltText' is provided without an icon slotted in the 'icon' slot. Please provide an icon or remove the 'iconAltText' prop.`);
|
|
209
|
+
}
|
|
200
210
|
}
|
|
201
211
|
/**
|
|
202
212
|
* Method to programmatically show/hide the tooltip without needing to interact with an anchor element
|
|
@@ -215,10 +225,11 @@ export class Tooltip {
|
|
|
215
225
|
}
|
|
216
226
|
render() {
|
|
217
227
|
const { label, maxLines, silent, theme } = this;
|
|
218
|
-
return (h(Host, { key: '
|
|
228
|
+
return (h(Host, { key: 'f9990c54172e8fda3d24a9f613ff5328018b9c6c', class: {
|
|
219
229
|
"ic-tooltip": true,
|
|
220
230
|
[`ic-theme-${theme}`]: theme !== "inherit",
|
|
221
|
-
|
|
231
|
+
"ic-tooltip-with-icon": isSlotUsed(this.el, "icon"),
|
|
232
|
+
}, "aria-label": isSafari && label }, h("div", { key: '1b09f90e4da36ec2470bef240be537dc3642c922', ref: (el) => (this.toolTip = el), role: "tooltip", class: "ic-tooltip-container", "aria-hidden": `${silent}` }, h("div", { key: '1cbfb4ce2ba7fce474330e70aab9f6820845b80d', class: "ic-tooltip-content" }, isSlotUsed(this.el, "icon") && (h("div", { key: '3b82f426322ae769893569dc7c649f0ada256ad2', class: "ic-icon-container", "aria-hidden": `${!this.iconAltText}`, "aria-label": this.iconAltText, role: "img" }, h("slot", { key: '7dd357c6339e36a9d830d74e042f2772b6d1fb4e', name: "icon", "aria-hidden": "true" }))), h("ic-typography", { key: '959297e6c8134160c67aaea1f09b06b30bdc6bbb', maxLines: maxLines, variant: "caption" }, label)), h("div", { key: '8be3a57f5e5c7dcb1b16544ab18aa2fbf9f76ad6', ref: (el) => (this.arrow = el), class: "ic-tooltip-arrow" })), h("slot", { key: 'cb9ede12f1da7cf478cff4ae6914693e0ec3f560' })));
|
|
222
233
|
}
|
|
223
234
|
static get is() { return "ic-tooltip"; }
|
|
224
235
|
static get encapsulation() { return "shadow"; }
|
|
@@ -294,6 +305,25 @@ export class Tooltip {
|
|
|
294
305
|
"reflect": false,
|
|
295
306
|
"defaultValue": "false"
|
|
296
307
|
},
|
|
308
|
+
"iconAltText": {
|
|
309
|
+
"type": "string",
|
|
310
|
+
"mutable": false,
|
|
311
|
+
"complexType": {
|
|
312
|
+
"original": "string",
|
|
313
|
+
"resolved": "string | undefined",
|
|
314
|
+
"references": {}
|
|
315
|
+
},
|
|
316
|
+
"required": false,
|
|
317
|
+
"optional": true,
|
|
318
|
+
"docs": {
|
|
319
|
+
"tags": [],
|
|
320
|
+
"text": "The alt text to be used alongside a slotted icon."
|
|
321
|
+
},
|
|
322
|
+
"getter": false,
|
|
323
|
+
"setter": false,
|
|
324
|
+
"attribute": "icon-alt-text",
|
|
325
|
+
"reflect": false
|
|
326
|
+
},
|
|
297
327
|
"maxLines": {
|
|
298
328
|
"type": "number",
|
|
299
329
|
"mutable": false,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ic-tooltip.js","sourceRoot":"","sources":["../../../src/components/ic-tooltip/ic-tooltip.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Element,\n Event,\n EventEmitter,\n Host,\n Prop,\n h,\n Method,\n State,\n Watch,\n} from \"@stencil/core\";\nimport { Instance, Options, createPopper } from \"@popperjs/core\";\nimport { IcTooltipPlacements } from \"./ic-tooltip.types\";\nimport {\n isSafari,\n onComponentRequiredPropUndefined,\n} from \"../../utils/helpers\";\nimport { IcThemeMode } from \"../../utils/types\";\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 containerContentArea: HTMLDivElement | null;\n private instantHideEvents = [\"focusout\"];\n private mouseOverTool: boolean = false;\n private persistTooltip = false;\n private popperInstance: Instance;\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 * 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 @Watch(\"disableClick\")\n watchDisableClickHandler(): void {\n if (this.disableClick) {\n this.hide();\n }\n this.updateTooltipEvents();\n }\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 @Watch(\"disableHover\")\n watchDisableHoverHandler(): void {\n if (this.disableHover) {\n this.hide();\n }\n this.updateTooltipEvents();\n }\n\n /**\n * Setting to `true` can help in situations where tooltip content is clipped by a parent element.\n */\n @Prop() fixedPositioning: 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() 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 * Sets the tooltip to the dark or light theme colors. \"inherit\" will set the color based on the system settings or ic-theme component.\n */\n @Prop() theme?: IcThemeMode = \"inherit\";\n\n /**\n * The text to display on the tooltip.\n */\n @Prop() label!: string;\n @Watch(\"label\")\n watchLabelHandler(): void {\n if (this.toolTip?.hasAttribute(\"data-show\") && this.popperInstance) {\n this.popperInstance.update();\n }\n }\n\n @State() popperProps: Partial<Options> = {};\n\n /**\n * Emitted when the tooltip becomes visible.\n */\n @Event() icTooltipShow: EventEmitter<void>;\n\n /**\n * @internal This method allows props to be added to the PopperJS createPopper instance outside of tooltip\n * @param props object - createPopper props set externally\n */\n @Method()\n async setExternalPopperProps<T extends Partial<Options>>(props: T) {\n this.popperProps = props;\n }\n\n 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 // Display tooltips correctly within drawer and dialog components\n let container: HTMLElement | null;\n\n if ((this.el.getRootNode() as ShadowRoot).host) {\n container = (this.el.getRootNode() as ShadowRoot).host.closest(\n \"ic-dialog, ic-drawer\"\n );\n } else {\n container = this.el.closest(\"ic-dialog, ic-drawer\");\n }\n this.containerContentArea =\n container?.shadowRoot?.querySelector(\".content-area\") ?? 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 &&\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 /**\n * @internal Method to return if tooltip is currently visible.\n */\n @Method()\n async isTooltipVisible(): Promise<boolean> {\n return Promise.resolve(this.toolTip.hasAttribute(\"data-show\"));\n }\n\n private show = () => {\n if (this.label) {\n this.toolTip.setAttribute(\"data-show\", \"\");\n\n if (this.containerContentArea) {\n this.el.classList.add(\"ic-tooltip-in-container\");\n }\n\n this.popperInstance = createPopper(this.el, this.toolTip, {\n strategy: this.fixedPositioning ? \"fixed\" : \"absolute\",\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 ...(this.containerContentArea\n ? [\n {\n name: \"preventOverflow\",\n options: {\n boundary: this.containerContentArea,\n padding: 8,\n },\n },\n {\n name: \"flip\",\n options: {\n boundary: this.containerContentArea,\n },\n },\n ]\n : []),\n ],\n ...this.popperProps,\n });\n this.icTooltipShow.emit();\n } else {\n console.warn(`Tooltip can't display without prop 'label' set`);\n }\n };\n\n private hide = () => {\n if (this.toolTip !== undefined) {\n this.toolTip.removeAttribute(\"data-show\");\n this.persistTooltip = false;\n }\n if (this.popperInstance !== undefined) {\n this.popperInstance.destroy();\n }\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 if (event) {\n this.el[method](event, this.show);\n if (this.toolTip !== undefined) {\n this.toolTip[method](event, this.mouseEnterTooltip);\n }\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 as EventListener);\n };\n\n private updateTooltipEvents = () => {\n this.manageEventListeners(\"remove\");\n this.showEvents = [\n !this.disableHover && \"mouseenter\",\n !this.disableHover && \"focusin\",\n !this.disableClick && \"click\",\n ];\n this.manageEventListeners(\"add\");\n };\n\n render() {\n const { label, maxLines, silent, theme } = this;\n return (\n <Host\n class={{\n \"ic-tooltip\": true,\n [`ic-theme-${theme}`]: theme !== \"inherit\",\n }}\n aria-label={isSafari && label} // accessible name needs to be in light dom to be announced by VoiceOver. Replace in v4 as aria-label on element with no role is not well-supported\n >\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"]}
|
|
1
|
+
{"version":3,"file":"ic-tooltip.js","sourceRoot":"","sources":["../../../src/components/ic-tooltip/ic-tooltip.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Element,\n Event,\n EventEmitter,\n Host,\n Prop,\n h,\n Method,\n State,\n Watch,\n} from \"@stencil/core\";\nimport { Instance, Options, createPopper } from \"@popperjs/core\";\nimport { IcTooltipPlacements } from \"./ic-tooltip.types\";\nimport {\n isSafari,\n onComponentRequiredPropUndefined,\n isSlotUsed,\n renderDynamicChildSlots,\n} from \"../../utils/helpers\";\nimport { IcThemeMode } from \"../../utils/types\";\n\n/**\n * @slot icon - Icon will be rendered to the left of the tooltip text.\n */\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 containerContentArea: HTMLDivElement | null;\n private instantHideEvents = [\"focusout\"];\n private mouseOverTool: boolean = false;\n private persistTooltip = false;\n private popperInstance: Instance;\n private showEvents = [\n !this.disableHover && \"mouseenter\",\n !this.disableHover && \"focusin\",\n !this.disableClick && \"click\",\n ];\n private toolTip: HTMLDivElement;\n private hostMutationObserver?: MutationObserver;\n\n @Element() el: HTMLIcTooltipElement;\n\n /**\n * 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 @Watch(\"disableClick\")\n watchDisableClickHandler(): void {\n if (this.disableClick) {\n this.hide();\n }\n this.updateTooltipEvents();\n }\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 @Watch(\"disableHover\")\n watchDisableHoverHandler(): void {\n if (this.disableHover) {\n this.hide();\n }\n this.updateTooltipEvents();\n }\n\n /**\n * Setting to `true` can help in situations where tooltip content is clipped by a parent element.\n */\n @Prop() fixedPositioning: boolean = false;\n\n /**\n * The alt text to be used alongside a slotted icon.\n */\n @Prop() iconAltText?: string;\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() 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 * Sets the tooltip to the dark or light theme colors. \"inherit\" will set the color based on the system settings or ic-theme component.\n */\n @Prop() theme?: IcThemeMode = \"inherit\";\n\n /**\n * The text to display on the tooltip.\n */\n @Prop() label!: string;\n @Watch(\"label\")\n watchLabelHandler(): void {\n if (this.toolTip?.hasAttribute(\"data-show\") && this.popperInstance) {\n this.popperInstance.update();\n }\n }\n\n @State() popperProps: Partial<Options> = {};\n\n /**\n * Emitted when the tooltip becomes visible.\n */\n @Event() icTooltipShow: EventEmitter<void>;\n\n /**\n * @internal This method allows props to be added to the PopperJS createPopper instance outside of tooltip\n * @param props object - createPopper props set externally\n */\n @Method()\n async setExternalPopperProps<T extends Partial<Options>>(props: T) {\n this.popperProps = props;\n }\n\n 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 // Display tooltips correctly within drawer and dialog components\n let container: HTMLElement | null;\n\n if ((this.el.getRootNode() as ShadowRoot).host) {\n container = (this.el.getRootNode() as ShadowRoot).host.closest(\n \"ic-dialog, ic-drawer\"\n );\n } else {\n container = this.el.closest(\"ic-dialog, ic-drawer\");\n }\n this.containerContentArea =\n container?.shadowRoot?.querySelector(\".content-area\") ?? null;\n this.hostMutationObserver = new MutationObserver((mutationList) =>\n renderDynamicChildSlots(mutationList, \"icon\", this)\n );\n this.hostMutationObserver.observe(this.el, {\n childList: true,\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 &&\n this.maxLines > 0 &&\n typographyEl?.setAttribute(\n \"style\",\n `--truncation-max-lines: ${this.maxLines}`\n );\n\n if (this.iconAltText && !isSlotUsed(this.el, \"icon\")) {\n console.warn(\n `Prop 'iconAltText' is provided without an icon slotted in the 'icon' slot. Please provide an icon or remove the 'iconAltText' prop.`\n );\n }\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 /**\n * @internal Method to return if tooltip is currently visible.\n */\n @Method()\n async isTooltipVisible(): Promise<boolean> {\n return Promise.resolve(this.toolTip.hasAttribute(\"data-show\"));\n }\n\n private show = () => {\n if (this.label) {\n this.toolTip.setAttribute(\"data-show\", \"\");\n\n if (this.containerContentArea) {\n this.el.classList.add(\"ic-tooltip-in-container\");\n }\n\n this.popperInstance = createPopper(this.el, this.toolTip, {\n strategy: this.fixedPositioning ? \"fixed\" : \"absolute\",\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 ...(this.containerContentArea\n ? [\n {\n name: \"preventOverflow\",\n options: {\n boundary: this.containerContentArea,\n padding: 8,\n },\n },\n {\n name: \"flip\",\n options: {\n boundary: this.containerContentArea,\n },\n },\n ]\n : []),\n ],\n ...this.popperProps,\n });\n this.icTooltipShow.emit();\n } else {\n console.warn(`Tooltip can't display without prop 'label' set`);\n }\n };\n\n private hide = () => {\n if (this.toolTip !== undefined) {\n this.toolTip.removeAttribute(\"data-show\");\n this.persistTooltip = false;\n }\n if (this.popperInstance !== undefined) {\n this.popperInstance.destroy();\n }\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 if (event) {\n this.el[method](event, this.show);\n if (this.toolTip !== undefined) {\n this.toolTip[method](event, this.mouseEnterTooltip);\n }\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 as EventListener);\n };\n\n private updateTooltipEvents = () => {\n this.manageEventListeners(\"remove\");\n this.showEvents = [\n !this.disableHover && \"mouseenter\",\n !this.disableHover && \"focusin\",\n !this.disableClick && \"click\",\n ];\n this.manageEventListeners(\"add\");\n };\n\n render() {\n const { label, maxLines, silent, theme } = this;\n return (\n <Host\n class={{\n \"ic-tooltip\": true,\n [`ic-theme-${theme}`]: theme !== \"inherit\",\n \"ic-tooltip-with-icon\": isSlotUsed(this.el, \"icon\"),\n }}\n aria-label={isSafari && label} // accessible name needs to be in light dom to be announced by VoiceOver. Replace in v4 as aria-label on element with no role is not well-supported\n >\n <div\n ref={(el) => (this.toolTip = el as HTMLDivElement)}\n role=\"tooltip\"\n class=\"ic-tooltip-container\"\n aria-hidden={`${silent}`}\n >\n <div class=\"ic-tooltip-content\">\n {isSlotUsed(this.el, \"icon\") && (\n <div\n class=\"ic-icon-container\"\n aria-hidden={`${!this.iconAltText}`}\n aria-label={this.iconAltText}\n role=\"img\"\n >\n <slot name=\"icon\" aria-hidden=\"true\"></slot>\n </div>\n )}\n <ic-typography maxLines={maxLines} variant=\"caption\">\n {label}\n </ic-typography>\n </div>\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"]}
|
|
@@ -9,6 +9,12 @@ const defaultArgs = {
|
|
|
9
9
|
fixedPositioning: false,
|
|
10
10
|
};
|
|
11
11
|
|
|
12
|
+
const defaultWithIconArgs = {
|
|
13
|
+
...defaultArgs,
|
|
14
|
+
iconSlot: "icon",
|
|
15
|
+
tooltipIconAltText: "Check mark icon",
|
|
16
|
+
};
|
|
17
|
+
|
|
12
18
|
export default {
|
|
13
19
|
title: "Web Components/Tooltip",
|
|
14
20
|
component: "ic-tooltip",
|
|
@@ -207,6 +213,30 @@ export const LeftPlacements = {
|
|
|
207
213
|
name: "Left placements",
|
|
208
214
|
};
|
|
209
215
|
|
|
216
|
+
export const TooltipWithSlottedIcon = {
|
|
217
|
+
render: () => html`
|
|
218
|
+
<ic-tooltip
|
|
219
|
+
label="This is a tooltip with a longer label and an icon to show how the text is aligned when there is an icon present."
|
|
220
|
+
id="ic-tooltip-with-icon"
|
|
221
|
+
icon-alt-text="Check mark icon"
|
|
222
|
+
>
|
|
223
|
+
<svg
|
|
224
|
+
slot="icon"
|
|
225
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
226
|
+
height="24px"
|
|
227
|
+
viewBox="0 0 24 24"
|
|
228
|
+
width="24px"
|
|
229
|
+
fill="currentColor"
|
|
230
|
+
>
|
|
231
|
+
<path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z" />
|
|
232
|
+
</svg>
|
|
233
|
+
<button aria-describedby="ic-tooltip-with-icon">Icon on Tooltip</button>
|
|
234
|
+
</ic-tooltip>
|
|
235
|
+
`,
|
|
236
|
+
|
|
237
|
+
name: "With Icon",
|
|
238
|
+
};
|
|
239
|
+
|
|
210
240
|
export const Truncation = {
|
|
211
241
|
render: () =>
|
|
212
242
|
html`<ic-tooltip
|
|
@@ -359,9 +389,7 @@ export const Playground = {
|
|
|
359
389
|
<ic-button aria-describedby="ic-tooltip-2"> ICDS </ic-button>
|
|
360
390
|
</ic-tooltip>
|
|
361
391
|
</div> `,
|
|
362
|
-
|
|
363
392
|
args: defaultArgs,
|
|
364
|
-
|
|
365
393
|
argTypes: {
|
|
366
394
|
placement: {
|
|
367
395
|
options: [
|
|
@@ -378,20 +406,114 @@ export const Playground = {
|
|
|
378
406
|
"left",
|
|
379
407
|
"left-start",
|
|
380
408
|
],
|
|
381
|
-
|
|
382
409
|
control: {
|
|
383
410
|
type: "select",
|
|
384
411
|
},
|
|
385
412
|
},
|
|
386
|
-
|
|
387
413
|
theme: {
|
|
388
414
|
options: ["inherit", "light", "dark"],
|
|
389
|
-
|
|
390
415
|
control: {
|
|
391
416
|
type: "inline-radio",
|
|
392
417
|
},
|
|
393
418
|
},
|
|
394
419
|
},
|
|
395
|
-
|
|
396
420
|
name: "Playground",
|
|
397
421
|
};
|
|
422
|
+
|
|
423
|
+
export const PlaygroundWithIcon = {
|
|
424
|
+
render: (args) =>
|
|
425
|
+
html`<div style="margin: 250px">
|
|
426
|
+
<ic-tooltip
|
|
427
|
+
label=${args.label}
|
|
428
|
+
icon-alt-text=${args.tooltipIconAltText}
|
|
429
|
+
icon-slot=${args.iconSlot}
|
|
430
|
+
placement=${args.placement}
|
|
431
|
+
max-lines=${args.maxLines}
|
|
432
|
+
disable-hover=${args.disableHover}
|
|
433
|
+
id="ic-tooltip-1"
|
|
434
|
+
theme=${args.theme}
|
|
435
|
+
fixed-positioning=${args.fixedPositioning}
|
|
436
|
+
>
|
|
437
|
+
<svg
|
|
438
|
+
slot=${args.iconSlot}
|
|
439
|
+
aria-label=${args.tooltipIconAltText}
|
|
440
|
+
width="24"
|
|
441
|
+
height="24"
|
|
442
|
+
viewBox="0 0 24 24"
|
|
443
|
+
fill="currentColor"
|
|
444
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
445
|
+
>
|
|
446
|
+
<path
|
|
447
|
+
d="M8.79502 15.875L4.62502 11.705L3.20502 13.115L8.79502 18.705L20.795 6.70501L19.385 5.29501L8.79502 15.875Z"
|
|
448
|
+
/>
|
|
449
|
+
</svg>
|
|
450
|
+
<button aria-describedby="ic-tooltip-1">Native</button>
|
|
451
|
+
</ic-tooltip>
|
|
452
|
+
<ic-tooltip
|
|
453
|
+
label=${args.label}
|
|
454
|
+
icon-alt-text=${args.tooltipIconAltText}
|
|
455
|
+
icon-slot=${args.iconSlot}
|
|
456
|
+
placement=${args.placement}
|
|
457
|
+
max-lines=${args.maxLines}
|
|
458
|
+
disable-hover=${args.disableHover}
|
|
459
|
+
id="ic-tooltip-2"
|
|
460
|
+
theme=${args.theme}
|
|
461
|
+
fixed-positioning=${args.fixedPositioning}
|
|
462
|
+
>
|
|
463
|
+
<svg
|
|
464
|
+
slot=${args.iconSlot}
|
|
465
|
+
aria-label=${args.tooltipIconAltText}
|
|
466
|
+
width="24"
|
|
467
|
+
height="24"
|
|
468
|
+
viewBox="0 0 24 24"
|
|
469
|
+
fill="currentColor"
|
|
470
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
471
|
+
>
|
|
472
|
+
<path
|
|
473
|
+
d="M8.79502 15.875L4.62502 11.705L3.20502 13.115L8.79502 18.705L20.795 6.70501L19.385 5.29501L8.79502 15.875Z"
|
|
474
|
+
/>
|
|
475
|
+
</svg>
|
|
476
|
+
<ic-button aria-describedby="ic-tooltip-2"> ICDS </ic-button>
|
|
477
|
+
</ic-tooltip>
|
|
478
|
+
</div> `,
|
|
479
|
+
args: defaultWithIconArgs,
|
|
480
|
+
argTypes: {
|
|
481
|
+
placement: {
|
|
482
|
+
options: [
|
|
483
|
+
"bottom",
|
|
484
|
+
"top-start",
|
|
485
|
+
"top",
|
|
486
|
+
"top-end",
|
|
487
|
+
"right-start",
|
|
488
|
+
"right",
|
|
489
|
+
"right-end",
|
|
490
|
+
"bottom-end",
|
|
491
|
+
"bottom-start",
|
|
492
|
+
"left-end",
|
|
493
|
+
"left",
|
|
494
|
+
"left-start",
|
|
495
|
+
],
|
|
496
|
+
control: {
|
|
497
|
+
type: "select",
|
|
498
|
+
},
|
|
499
|
+
},
|
|
500
|
+
theme: {
|
|
501
|
+
options: ["inherit", "light", "dark"],
|
|
502
|
+
control: {
|
|
503
|
+
type: "inline-radio",
|
|
504
|
+
},
|
|
505
|
+
},
|
|
506
|
+
iconSlot: {
|
|
507
|
+
options: ["icon", ""],
|
|
508
|
+
control: {
|
|
509
|
+
type: "select",
|
|
510
|
+
},
|
|
511
|
+
},
|
|
512
|
+
tooltipIconAltText: {
|
|
513
|
+
control: {
|
|
514
|
+
type: "text",
|
|
515
|
+
},
|
|
516
|
+
},
|
|
517
|
+
},
|
|
518
|
+
name: "Playground With Icon",
|
|
519
|
+
};
|
|
@@ -163,7 +163,7 @@ export class Typography {
|
|
|
163
163
|
render() {
|
|
164
164
|
var _a, _b;
|
|
165
165
|
const { variant, applyVerticalMargins, maxLines, truncated, expanded, strikethrough, underline, italic, bold, theme, } = this;
|
|
166
|
-
return (h(Host, { key: '
|
|
166
|
+
return (h(Host, { key: 'ebe035263fde8a7f2d24b8c40386caa8920bc506', class: {
|
|
167
167
|
[`ic-typography-${variant}`]: true,
|
|
168
168
|
[`ic-typography-vertical-margins-${variant}`]: !!applyVerticalMargins,
|
|
169
169
|
["ic-typography-bold"]: !!bold,
|
|
@@ -176,7 +176,7 @@ export class Typography {
|
|
|
176
176
|
((_b = (_a = this.el.getRootNode()) === null || _a === void 0 ? void 0 : _a.host) === null || _b === void 0 ? void 0 : _b.tagName) ===
|
|
177
177
|
"IC-TOOLTIP") &&
|
|
178
178
|
maxLines &&
|
|
179
|
-
maxLines > 0 ? (h("div", { class: "trunc-wrapper", ref: (el) => (this.truncWrapperEl = el) }, h("slot", null))) : (h("slot", null)), variant === "body" && maxLines && maxLines > 0 && truncated && (h("button", { key: '
|
|
179
|
+
maxLines > 0 ? (h("div", { class: "trunc-wrapper", ref: (el) => (this.truncWrapperEl = el) }, h("slot", null))) : (h("slot", null)), variant === "body" && maxLines && maxLines > 0 && truncated && (h("button", { key: '78d2abb16288489fadb3c94a1cf1bbffd78ea67e', class: { "trunc-btn": true, focus: this.truncButtonFocussed }, onFocus: this.truncButtonFocus, onBlur: this.truncButtonBlur, onMouseDown: this.truncButtonFocusFromMouse, onClick: this.toggleExpanded }, expanded ? "See less" : "See more"))));
|
|
180
180
|
}
|
|
181
181
|
static get is() { return "ic-typography"; }
|
|
182
182
|
static get encapsulation() { return "shadow"; }
|
|
@@ -475,10 +475,13 @@ export const focusElement = (focusAttemptCount, focusedElementIndex, interactive
|
|
|
475
475
|
if (newFocusAttemptCount++ > interactiveElementList.length) {
|
|
476
476
|
return;
|
|
477
477
|
}
|
|
478
|
-
let newFocusedElementIndex = focusedElementIndex;
|
|
479
478
|
if (shouldSkipElement(element)) {
|
|
480
|
-
|
|
481
|
-
|
|
479
|
+
const nextIndex = shiftKey
|
|
480
|
+
? focusedElementIndex - 1
|
|
481
|
+
: focusedElementIndex + 1;
|
|
482
|
+
const newFocusedElementIndex = nextIndex < 0
|
|
483
|
+
? interactiveElementList.length - 1
|
|
484
|
+
: nextIndex % interactiveElementList.length;
|
|
482
485
|
return focusElement(newFocusAttemptCount, newFocusedElementIndex, interactiveElementList, shiftKey);
|
|
483
486
|
}
|
|
484
487
|
else {
|
|
@@ -494,73 +497,12 @@ export const focusElement = (focusAttemptCount, focusedElementIndex, interactive
|
|
|
494
497
|
default:
|
|
495
498
|
element.focus();
|
|
496
499
|
}
|
|
497
|
-
return { newFocusAttemptCount, newFocusedElementIndex };
|
|
498
|
-
}
|
|
499
|
-
};
|
|
500
|
-
/**
|
|
501
|
-
* Gets the index of the currently focused element. Used for focus trapping.
|
|
502
|
-
* @param el - host element of the component
|
|
503
|
-
* @param interactiveElementList - list of interactive elements
|
|
504
|
-
*/
|
|
505
|
-
export const getFocusedElementIndex = (el, interactiveElementList) => {
|
|
506
|
-
var _a;
|
|
507
|
-
for (let i = 0; i < interactiveElementList.length; i++) {
|
|
508
|
-
if (interactiveElementList[i] ===
|
|
509
|
-
(((_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.activeElement) || document.activeElement)) {
|
|
510
|
-
return i;
|
|
511
|
-
}
|
|
512
|
-
}
|
|
513
|
-
return null;
|
|
514
|
-
};
|
|
515
|
-
/**
|
|
516
|
-
* Gets the next focusable element index based on whether the shift key is pressed. Used for focus trapping.
|
|
517
|
-
* @param focusedElementIndex - current focused element index
|
|
518
|
-
* @param shiftKey - whether the shift key is pressed
|
|
519
|
-
*/
|
|
520
|
-
export const getFocusIndexBasedOnShiftKey = (focusedElementIndex, shiftKey) => (shiftKey ? (focusedElementIndex -= 1) : (focusedElementIndex += 1));
|
|
521
|
-
/**
|
|
522
|
-
* Gets the next focusable element index, looping back to the start or end if necessary. Used for focus trapping.
|
|
523
|
-
* @param focusedElementIndex - current focused element index
|
|
524
|
-
* @param interactiveElementList - list of interactive elements
|
|
525
|
-
*/
|
|
526
|
-
export const getLoopedNextFocusIndexIfLastElement = (focusedElementIndex, interactiveElementList) => {
|
|
527
|
-
if (focusedElementIndex > interactiveElementList.length - 1) {
|
|
528
|
-
return 0;
|
|
529
|
-
}
|
|
530
|
-
else if (focusedElementIndex < 0) {
|
|
531
|
-
return interactiveElementList.length - 1;
|
|
532
|
-
}
|
|
533
|
-
return focusedElementIndex;
|
|
534
|
-
};
|
|
535
|
-
/**
|
|
536
|
-
* Handles tab key press for focus trapping.
|
|
537
|
-
* @param el - host element of the component
|
|
538
|
-
* @param focusAttemptCount - number of focus attempts that have been made
|
|
539
|
-
* @param focusedElementIndex - current focused element index
|
|
540
|
-
* @param interactiveElementList - list of interactive elements
|
|
541
|
-
* @param shiftKey - whether the shift key is pressed
|
|
542
|
-
*/
|
|
543
|
-
export function handleFocusTrapTabKeyPress(el, focusAttemptCount, focusedElementIndex, interactiveElementList, shiftKey) {
|
|
544
|
-
var _a;
|
|
545
|
-
let newFocusAttemptCount = focusAttemptCount;
|
|
546
|
-
let newFocusedElementIndex = getFocusedElementIndex(el, interactiveElementList) || focusedElementIndex;
|
|
547
|
-
if (((_a = interactiveElementList[focusedElementIndex]) === null || _a === void 0 ? void 0 : _a.tagName) === IC_SEARCH_BAR) {
|
|
548
500
|
return {
|
|
549
501
|
newFocusAttemptCount,
|
|
550
|
-
newFocusedElementIndex,
|
|
551
|
-
preventDefault: false,
|
|
502
|
+
newFocusedElementIndex: focusedElementIndex,
|
|
552
503
|
};
|
|
553
504
|
}
|
|
554
|
-
|
|
555
|
-
newFocusedElementIndex = getLoopedNextFocusIndexIfLastElement(newFocusedElementIndex, interactiveElementList);
|
|
556
|
-
newFocusAttemptCount = 0;
|
|
557
|
-
const focusElementResult = focusElement(newFocusAttemptCount, newFocusedElementIndex, interactiveElementList, shiftKey);
|
|
558
|
-
if (focusElementResult) {
|
|
559
|
-
newFocusedElementIndex = focusElementResult.newFocusedElementIndex;
|
|
560
|
-
newFocusAttemptCount = focusElementResult.newFocusAttemptCount;
|
|
561
|
-
}
|
|
562
|
-
return { newFocusAttemptCount, newFocusedElementIndex, preventDefault: true };
|
|
563
|
-
}
|
|
505
|
+
};
|
|
564
506
|
/**
|
|
565
507
|
* Sets up listener and mutation observer to refresh interactive elements on slot changes. Used for focus trapping.
|
|
566
508
|
* @param contentWrapper - content wrapper element
|