@ukic/canary-web-components 3.0.0-canary.31 → 3.0.0-canary.33
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-6f4b406b.js → helpers-f81fed28.js} +37 -1
- package/dist/cjs/helpers-f81fed28.js.map +1 -0
- package/dist/cjs/ic-calendar_2.cjs.entry.js +2 -2
- package/dist/cjs/ic-calendar_2.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-card-horizontal.cjs.entry.js +1 -1
- package/dist/cjs/ic-checkbox_3.cjs.entry.js +19 -7
- package/dist/cjs/ic-checkbox_3.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-data-list.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-data-row.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-data-table-title-bar.cjs.entry.js +1 -1
- package/dist/cjs/ic-data-table.cjs.entry.js +13 -8
- package/dist/cjs/ic-data-table.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-date-picker.cjs.entry.js +1 -1
- package/dist/cjs/ic-footer.cjs.entry.js +9 -5
- package/dist/cjs/ic-footer.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-hero.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-input-component-container_4.cjs.entry.js +2 -2
- package/dist/cjs/ic-input-component-container_4.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-menu.cjs.entry.js +1 -1
- package/dist/cjs/ic-menu.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-navigation-group.cjs.entry.js +1 -1
- package/dist/cjs/ic-navigation-group.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-navigation-item.cjs.entry.js +1 -1
- package/dist/cjs/ic-navigation-item.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-pagination_4.cjs.entry.js +8 -4
- package/dist/cjs/ic-pagination_4.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 +9 -6
- package/dist/cjs/ic-radio-option.cjs.entry.js.map +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-table-of-contents.cjs.entry.js +1 -1
- package/dist/cjs/ic-time-input.cjs.entry.js +401 -99
- package/dist/cjs/ic-time-input.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-time-selector.cjs.entry.js +842 -0
- package/dist/cjs/ic-time-selector.cjs.entry.js.map +1 -0
- package/dist/cjs/ic-toast.cjs.entry.js +14 -6
- package/dist/cjs/ic-toast.cjs.entry.js.map +1 -1
- package/dist/cjs/{ic-toggle-button.cjs.entry.js → ic-toggle-button_2.cjs.entry.js} +274 -1
- package/dist/cjs/ic-toggle-button_2.cjs.entry.js.map +1 -0
- package/dist/cjs/ic-tree-item.cjs.entry.js +3 -3
- package/dist/cjs/ic-tree-view.cjs.entry.js +4 -4
- package/dist/cjs/index-d337cd8a.js +8 -8
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/collection-manifest.json +1 -0
- package/dist/collection/components/ic-calendar/ic-calendar.css +13 -7
- package/dist/collection/components/ic-calendar/ic-calendar.stories.js +13 -0
- package/dist/collection/components/ic-calendar/ic-calendar.stories.js.map +1 -1
- package/dist/collection/components/ic-data-table/ic-data-table.js +13 -8
- package/dist/collection/components/ic-data-table/ic-data-table.js.map +1 -1
- package/dist/collection/components/ic-pagination-bar/ic-pagination-bar.js +78 -6
- package/dist/collection/components/ic-pagination-bar/ic-pagination-bar.js.map +1 -1
- package/dist/collection/components/ic-pagination-bar/ic-pagination-bar.stories.js +28 -0
- package/dist/collection/components/ic-pagination-bar/ic-pagination-bar.stories.js.map +1 -1
- package/dist/collection/components/ic-time-input/ic-time-input.css +21 -3
- package/dist/collection/components/ic-time-input/ic-time-input.js +434 -106
- package/dist/collection/components/ic-time-input/ic-time-input.js.map +1 -1
- package/dist/collection/components/ic-time-input/ic-time-input.stories.js +58 -9
- package/dist/collection/components/ic-time-input/ic-time-input.stories.js.map +1 -1
- package/dist/collection/components/ic-time-input/test/helpers/ic-time-input.js +2 -0
- package/dist/collection/components/ic-time-input/test/helpers/ic-time-input.js.map +1 -1
- package/dist/collection/components/ic-time-selector/ic-time-selector.css +293 -0
- package/dist/collection/components/ic-time-selector/ic-time-selector.js +1075 -0
- package/dist/collection/components/ic-time-selector/ic-time-selector.js.map +1 -0
- package/dist/collection/components/ic-time-selector/ic-time-selector.stories.js +166 -0
- package/dist/collection/components/ic-time-selector/ic-time-selector.stories.js.map +1 -0
- package/dist/collection/components/ic-time-selector/ic-time-selector.types.js +2 -0
- package/dist/collection/components/ic-time-selector/ic-time-selector.types.js.map +1 -0
- package/dist/collection/components/ic-tree-item/ic-tree-item.js +2 -2
- package/dist/collection/components/ic-tree-view/ic-tree-view.js +3 -3
- package/dist/collection/utils/helpers.js +35 -0
- package/dist/collection/utils/helpers.js.map +1 -1
- package/dist/collection/utils/types.js.map +1 -1
- package/dist/components/helpers2.js +36 -1
- package/dist/components/helpers2.js.map +1 -1
- package/dist/components/ic-calendar2.js +1 -1
- package/dist/components/ic-calendar2.js.map +1 -1
- package/dist/components/ic-checkbox2.js.map +1 -1
- package/dist/components/ic-data-list.js.map +1 -1
- package/dist/components/ic-data-row.js.map +1 -1
- package/dist/components/ic-data-table.js +12 -7
- package/dist/components/ic-data-table.js.map +1 -1
- package/dist/components/ic-footer.js +10 -5
- package/dist/components/ic-footer.js.map +1 -1
- package/dist/components/ic-hero.js.map +1 -1
- package/dist/components/ic-input-component-container2.js +1 -1
- package/dist/components/ic-input-component-container2.js.map +1 -1
- package/dist/components/ic-input-validation2.js +1 -1
- package/dist/components/ic-input-validation2.js.map +1 -1
- package/dist/components/ic-menu2.js +1 -1
- package/dist/components/ic-menu2.js.map +1 -1
- package/dist/components/ic-navigation-group.js +1 -1
- package/dist/components/ic-navigation-group.js.map +1 -1
- package/dist/components/ic-navigation-item.js +1 -1
- package/dist/components/ic-navigation-item.js.map +1 -1
- package/dist/components/ic-pagination-bar2.js +21 -6
- package/dist/components/ic-pagination-bar2.js.map +1 -1
- package/dist/components/ic-pagination2.js +9 -4
- package/dist/components/ic-pagination2.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 +10 -7
- package/dist/components/ic-radio-option.js.map +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-time-input.js +431 -112
- package/dist/components/ic-time-input.js.map +1 -1
- package/dist/components/ic-time-selector.d.ts +11 -0
- package/dist/components/ic-time-selector.js +898 -0
- package/dist/components/ic-time-selector.js.map +1 -0
- package/dist/components/ic-toast.js +15 -6
- package/dist/components/ic-toast.js.map +1 -1
- package/dist/components/ic-toggle-button-group.js +1 -299
- package/dist/components/ic-toggle-button-group.js.map +1 -1
- package/dist/{esm/ic-toggle-button-group.entry.js → components/ic-toggle-button-group2.js} +70 -13
- package/dist/components/ic-toggle-button-group2.js.map +1 -0
- package/dist/components/ic-toggle-button.js +1 -228
- package/dist/components/ic-toggle-button.js.map +1 -1
- package/dist/{esm/ic-toggle-button.entry.js → components/ic-toggle-button2.js} +65 -10
- package/dist/components/ic-toggle-button2.js.map +1 -0
- package/dist/components/ic-tree-item.js +2 -2
- package/dist/components/ic-tree-view.js +4 -4
- package/dist/core/core.css +28 -6
- package/dist/core/core.esm.js +1 -1
- package/dist/core/core.esm.js.map +1 -1
- package/dist/core/{p-b80b08ae.entry.js → p-08f24329.entry.js} +2 -2
- package/dist/core/{p-615d474e.entry.js → p-14b8bf37.entry.js} +2 -2
- package/dist/core/{p-81f12581.entry.js → p-169ad948.entry.js} +2 -2
- package/dist/core/p-169ad948.entry.js.map +1 -0
- package/dist/core/{p-847cbb16.entry.js → p-1d166343.entry.js} +2 -2
- package/dist/core/{p-b4bfaf8f.entry.js → p-201b41c7.entry.js} +2 -2
- package/dist/core/{p-24bac55f.entry.js → p-33509a89.entry.js} +2 -2
- package/dist/core/{p-e1920777.entry.js → p-3389625c.entry.js} +2 -2
- package/dist/core/{p-5a1cfb3c.entry.js → p-344752cb.entry.js} +2 -2
- package/dist/core/{p-6c238418.entry.js → p-348d7080.entry.js} +2 -2
- package/dist/core/{p-3ef2e98d.entry.js → p-39cdf5db.entry.js} +2 -2
- package/dist/core/{p-ffbf493f.entry.js → p-496b314f.entry.js} +2 -2
- package/dist/core/p-496b314f.entry.js.map +1 -0
- package/dist/core/{p-bd9a76d8.entry.js → p-508b6da3.entry.js} +2 -2
- package/dist/core/p-551a0fc1.entry.js +2 -0
- package/dist/core/p-551a0fc1.entry.js.map +1 -0
- package/dist/core/{p-f5cea10d.entry.js → p-5e6687a8.entry.js} +2 -2
- package/dist/core/{p-72171192.entry.js → p-60f4fe3a.entry.js} +2 -2
- package/dist/core/p-61c92598.entry.js +2 -0
- package/dist/core/p-61c92598.entry.js.map +1 -0
- package/dist/core/{p-e00e67ff.entry.js → p-6323da7a.entry.js} +2 -2
- package/dist/core/p-691dd972.entry.js +2 -0
- package/dist/core/p-691dd972.entry.js.map +1 -0
- package/dist/core/{p-c6c87e58.entry.js → p-6dfe0922.entry.js} +2 -2
- package/dist/core/p-71cc5909.entry.js +2 -0
- package/dist/core/p-71cc5909.entry.js.map +1 -0
- package/dist/core/p-770e92cd.entry.js +2 -0
- package/dist/core/p-770e92cd.entry.js.map +1 -0
- package/dist/core/{p-7cf6b428.entry.js → p-79ead0e7.entry.js} +2 -2
- package/dist/core/p-7b4b45cf.entry.js +2 -0
- package/dist/core/p-7b4b45cf.entry.js.map +1 -0
- package/dist/core/{p-afedcfdb.entry.js → p-7efdbab8.entry.js} +2 -2
- package/dist/core/p-802a4bd3.entry.js +2 -0
- package/dist/core/p-802a4bd3.entry.js.map +1 -0
- package/dist/core/p-829b34f9.js +2 -0
- package/dist/core/p-829b34f9.js.map +1 -0
- package/dist/core/{p-9a9605c3.entry.js → p-879c180d.entry.js} +2 -2
- package/dist/core/{p-3891ce53.entry.js → p-8830011c.entry.js} +2 -2
- package/dist/core/{p-444cd8d3.entry.js → p-8ab37b4d.entry.js} +2 -2
- package/dist/core/{p-c87cc0d1.entry.js → p-939025af.entry.js} +2 -2
- package/dist/core/p-939b168a.entry.js +2 -0
- package/dist/core/p-939b168a.entry.js.map +1 -0
- package/dist/core/{p-5a4344cb.entry.js → p-9dea5764.entry.js} +2 -2
- package/dist/core/{p-af821831.entry.js → p-a88e61b2.entry.js} +2 -2
- package/dist/core/p-a88e61b2.entry.js.map +1 -0
- package/dist/core/{p-90611726.entry.js → p-a8a92e54.entry.js} +2 -2
- package/dist/core/{p-31f3fb15.entry.js → p-a94a7b71.entry.js} +2 -2
- package/dist/core/p-ad551a0c.entry.js +2 -0
- package/dist/core/p-ad551a0c.entry.js.map +1 -0
- package/dist/core/{p-ba75ed34.entry.js → p-b434bd7c.entry.js} +2 -2
- package/dist/core/p-b4a2f6fa.entry.js.map +1 -1
- package/dist/core/{p-2188b483.entry.js → p-c0a7eed7.entry.js} +2 -2
- package/dist/core/p-c0b227d2.entry.js +2 -0
- package/dist/core/p-c0b227d2.entry.js.map +1 -0
- package/dist/core/{p-2646a629.entry.js → p-c32f043e.entry.js} +2 -2
- package/dist/core/{p-7a0f62c2.entry.js → p-c4b2774d.entry.js} +2 -2
- package/dist/core/p-c9525aac.entry.js +2 -0
- package/dist/core/p-c9525aac.entry.js.map +1 -0
- package/dist/core/{p-7026afad.entry.js → p-ca05573a.entry.js} +2 -2
- package/dist/core/{p-8c580d88.entry.js → p-d0607a70.entry.js} +2 -2
- package/dist/core/{p-15c05eb8.entry.js → p-d528d856.entry.js} +2 -2
- package/dist/core/{p-0043b019.entry.js → p-da1c2883.entry.js} +2 -2
- package/dist/core/{p-ffc1cea6.entry.js → p-e2e556ec.entry.js} +2 -2
- package/dist/core/{p-e4ef4263.js → p-e519f607.js} +2 -2
- package/dist/core/{p-3f0bce15.entry.js → p-e5c6d01a.entry.js} +2 -2
- package/dist/core/{p-04a9f82f.entry.js → p-e8db8772.entry.js} +2 -2
- package/dist/core/{p-e4b82731.entry.js → p-ea04103e.entry.js} +2 -2
- package/dist/core/{p-9a95f428.entry.js → p-eaeb473e.entry.js} +2 -2
- package/dist/core/p-eaeb473e.entry.js.map +1 -0
- package/dist/core/{p-8e592393.entry.js → p-ecc7fd71.entry.js} +2 -2
- package/dist/core/p-efe260f0.entry.js +2 -0
- package/dist/core/p-efe260f0.entry.js.map +1 -0
- package/dist/core/{p-b6d6b26e.entry.js → p-f1b57f91.entry.js} +2 -2
- package/dist/core/p-f5dc04f7.entry.js +2 -0
- package/dist/core/p-f5dc04f7.entry.js.map +1 -0
- package/dist/core/p-fb07921b.entry.js +2 -0
- package/dist/core/p-fb07921b.entry.js.map +1 -0
- package/dist/core/{p-1900c7c7.entry.js → p-fd08156a.entry.js} +2 -2
- package/dist/core/{p-3594922d.entry.js → p-fe5b51bb.entry.js} +2 -2
- package/dist/core/{p-ef5b6622.entry.js → p-ff618439.entry.js} +2 -2
- package/dist/esm/core.js +1 -1
- package/dist/esm/{helpers-5419eb6c.js → helpers-063369f4.js} +2 -2
- package/dist/esm/{helpers-5419eb6c.js.map → helpers-063369f4.js.map} +1 -1
- package/dist/esm/{helpers-9f228880.js → helpers-a08b3f32.js} +37 -2
- package/dist/esm/helpers-a08b3f32.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 +1 -1
- package/dist/esm/ic-calendar_2.entry.js +2 -2
- package/dist/esm/ic-calendar_2.entry.js.map +1 -1
- package/dist/esm/ic-card-horizontal.entry.js +1 -1
- package/dist/esm/ic-card-vertical.entry.js +1 -1
- package/dist/esm/ic-checkbox-group.entry.js +1 -1
- package/dist/esm/ic-checkbox_3.entry.js +20 -8
- package/dist/esm/ic-checkbox_3.entry.js.map +1 -1
- package/dist/esm/ic-chip.entry.js +1 -1
- package/dist/esm/ic-data-list.entry.js.map +1 -1
- package/dist/esm/ic-data-row.entry.js +1 -1
- package/dist/esm/ic-data-row.entry.js.map +1 -1
- package/dist/esm/ic-data-table-title-bar.entry.js +1 -1
- package/dist/esm/ic-data-table.entry.js +13 -8
- package/dist/esm/ic-data-table.entry.js.map +1 -1
- package/dist/esm/ic-date-picker.entry.js +1 -1
- package/dist/esm/ic-dialog.entry.js +1 -1
- package/dist/esm/ic-divider.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 +10 -6
- package/dist/esm/ic-footer.entry.js.map +1 -1
- package/dist/esm/ic-hero.entry.js +1 -1
- package/dist/esm/ic-hero.entry.js.map +1 -1
- package/dist/esm/ic-horizontal-scroll.entry.js +1 -1
- package/dist/esm/ic-input-component-container_4.entry.js +3 -3
- package/dist/esm/ic-input-component-container_4.entry.js.map +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-menu.entry.js +2 -2
- package/dist/esm/ic-menu.entry.js.map +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-group.entry.js.map +1 -1
- package/dist/esm/ic-navigation-item.entry.js +2 -2
- package/dist/esm/ic-navigation-item.entry.js.map +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_4.entry.js +9 -5
- package/dist/esm/ic-pagination_4.entry.js.map +1 -1
- package/dist/esm/ic-popover-menu.entry.js +1 -1
- package/dist/esm/ic-radio-group.entry.js +2 -2
- package/dist/esm/ic-radio-group.entry.js.map +1 -1
- package/dist/esm/ic-radio-option.entry.js +10 -7
- package/dist/esm/ic-radio-option.entry.js.map +1 -1
- package/dist/esm/ic-search-bar.entry.js +2 -2
- package/dist/esm/ic-search-bar.entry.js.map +1 -1
- package/dist/esm/ic-side-navigation.entry.js +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.entry.js +1 -1
- package/dist/esm/ic-table-of-contents.entry.js +1 -1
- package/dist/esm/ic-theme.entry.js +1 -1
- package/dist/esm/ic-time-input.entry.js +401 -99
- package/dist/esm/ic-time-input.entry.js.map +1 -1
- package/dist/esm/ic-time-selector.entry.js +838 -0
- package/dist/esm/ic-time-selector.entry.js.map +1 -0
- package/dist/esm/ic-toast.entry.js +15 -7
- package/dist/esm/ic-toast.entry.js.map +1 -1
- package/dist/esm/ic-toggle-button_2.entry.js +449 -0
- package/dist/esm/ic-toggle-button_2.entry.js.map +1 -0
- package/dist/esm/ic-top-navigation.entry.js +1 -1
- package/dist/esm/ic-tree-item.entry.js +3 -3
- package/dist/esm/ic-tree-view.entry.js +4 -4
- package/dist/esm/ic-typography.entry.js +1 -1
- package/dist/esm/index-a7a720e7.js +8 -8
- package/dist/esm/loader.js +1 -1
- package/dist/types/components/ic-calendar/ic-calendar.stories.d.ts +20 -14
- package/dist/types/components/ic-pagination-bar/ic-pagination-bar.d.ts +12 -0
- package/dist/types/components/ic-pagination-bar/ic-pagination-bar.stories.d.ts +12 -0
- package/dist/types/components/ic-time-input/ic-time-input.d.ts +26 -6
- package/dist/types/components/ic-time-input/ic-time-input.stories.d.ts +31 -7
- package/dist/types/components/ic-time-input/test/helpers/ic-time-input.d.ts +1 -0
- package/dist/types/components/ic-time-selector/ic-time-selector.d.ts +88 -0
- package/dist/types/components/ic-time-selector/ic-time-selector.stories.d.ts +99 -0
- package/dist/types/components/ic-time-selector/ic-time-selector.types.d.ts +1 -0
- package/dist/types/components.d.ts +163 -11
- package/dist/types/utils/helpers.d.ts +14 -0
- package/dist/types/utils/types.d.ts +4 -1
- package/hydrate/index.js +1410 -156
- package/hydrate/index.mjs +1410 -156
- package/package.json +30 -30
- package/dist/cjs/helpers-6f4b406b.js.map +0 -1
- package/dist/cjs/ic-toggle-button-group.cjs.entry.js +0 -267
- package/dist/cjs/ic-toggle-button-group.cjs.entry.js.map +0 -1
- package/dist/cjs/ic-toggle-button.cjs.entry.js.map +0 -1
- package/dist/core/p-1a976789.entry.js +0 -2
- package/dist/core/p-1a976789.entry.js.map +0 -1
- package/dist/core/p-3ba2b455.entry.js +0 -2
- package/dist/core/p-3ba2b455.entry.js.map +0 -1
- package/dist/core/p-41def410.entry.js +0 -2
- package/dist/core/p-41def410.entry.js.map +0 -1
- package/dist/core/p-4b188516.entry.js +0 -2
- package/dist/core/p-4b188516.entry.js.map +0 -1
- package/dist/core/p-5b32aaf3.entry.js +0 -2
- package/dist/core/p-5b32aaf3.entry.js.map +0 -1
- package/dist/core/p-7332320d.entry.js +0 -2
- package/dist/core/p-7332320d.entry.js.map +0 -1
- package/dist/core/p-81f12581.entry.js.map +0 -1
- package/dist/core/p-9044539c.entry.js +0 -2
- package/dist/core/p-9044539c.entry.js.map +0 -1
- package/dist/core/p-9a95f428.entry.js.map +0 -1
- package/dist/core/p-9f76eed6.entry.js +0 -2
- package/dist/core/p-9f76eed6.entry.js.map +0 -1
- package/dist/core/p-a1448064.entry.js +0 -2
- package/dist/core/p-a1448064.entry.js.map +0 -1
- package/dist/core/p-a237af88.entry.js +0 -2
- package/dist/core/p-a237af88.entry.js.map +0 -1
- package/dist/core/p-af821831.entry.js.map +0 -1
- package/dist/core/p-ba21f477.entry.js +0 -2
- package/dist/core/p-ba21f477.entry.js.map +0 -1
- package/dist/core/p-c3eddb99.entry.js +0 -2
- package/dist/core/p-c3eddb99.entry.js.map +0 -1
- package/dist/core/p-c5d65718.entry.js +0 -2
- package/dist/core/p-c5d65718.entry.js.map +0 -1
- package/dist/core/p-d144ca59.entry.js +0 -2
- package/dist/core/p-d144ca59.entry.js.map +0 -1
- package/dist/core/p-f48ce5f6.js +0 -2
- package/dist/core/p-f48ce5f6.js.map +0 -1
- package/dist/core/p-ffbf493f.entry.js.map +0 -1
- package/dist/esm/helpers-9f228880.js.map +0 -1
- package/dist/esm/ic-toggle-button-group.entry.js.map +0 -1
- package/dist/esm/ic-toggle-button.entry.js.map +0 -1
- /package/dist/core/{p-b80b08ae.entry.js.map → p-08f24329.entry.js.map} +0 -0
- /package/dist/core/{p-615d474e.entry.js.map → p-14b8bf37.entry.js.map} +0 -0
- /package/dist/core/{p-847cbb16.entry.js.map → p-1d166343.entry.js.map} +0 -0
- /package/dist/core/{p-b4bfaf8f.entry.js.map → p-201b41c7.entry.js.map} +0 -0
- /package/dist/core/{p-24bac55f.entry.js.map → p-33509a89.entry.js.map} +0 -0
- /package/dist/core/{p-e1920777.entry.js.map → p-3389625c.entry.js.map} +0 -0
- /package/dist/core/{p-5a1cfb3c.entry.js.map → p-344752cb.entry.js.map} +0 -0
- /package/dist/core/{p-6c238418.entry.js.map → p-348d7080.entry.js.map} +0 -0
- /package/dist/core/{p-3ef2e98d.entry.js.map → p-39cdf5db.entry.js.map} +0 -0
- /package/dist/core/{p-bd9a76d8.entry.js.map → p-508b6da3.entry.js.map} +0 -0
- /package/dist/core/{p-f5cea10d.entry.js.map → p-5e6687a8.entry.js.map} +0 -0
- /package/dist/core/{p-72171192.entry.js.map → p-60f4fe3a.entry.js.map} +0 -0
- /package/dist/core/{p-e00e67ff.entry.js.map → p-6323da7a.entry.js.map} +0 -0
- /package/dist/core/{p-c6c87e58.entry.js.map → p-6dfe0922.entry.js.map} +0 -0
- /package/dist/core/{p-7cf6b428.entry.js.map → p-79ead0e7.entry.js.map} +0 -0
- /package/dist/core/{p-afedcfdb.entry.js.map → p-7efdbab8.entry.js.map} +0 -0
- /package/dist/core/{p-9a9605c3.entry.js.map → p-879c180d.entry.js.map} +0 -0
- /package/dist/core/{p-3891ce53.entry.js.map → p-8830011c.entry.js.map} +0 -0
- /package/dist/core/{p-444cd8d3.entry.js.map → p-8ab37b4d.entry.js.map} +0 -0
- /package/dist/core/{p-c87cc0d1.entry.js.map → p-939025af.entry.js.map} +0 -0
- /package/dist/core/{p-5a4344cb.entry.js.map → p-9dea5764.entry.js.map} +0 -0
- /package/dist/core/{p-90611726.entry.js.map → p-a8a92e54.entry.js.map} +0 -0
- /package/dist/core/{p-31f3fb15.entry.js.map → p-a94a7b71.entry.js.map} +0 -0
- /package/dist/core/{p-ba75ed34.entry.js.map → p-b434bd7c.entry.js.map} +0 -0
- /package/dist/core/{p-2188b483.entry.js.map → p-c0a7eed7.entry.js.map} +0 -0
- /package/dist/core/{p-2646a629.entry.js.map → p-c32f043e.entry.js.map} +0 -0
- /package/dist/core/{p-7a0f62c2.entry.js.map → p-c4b2774d.entry.js.map} +0 -0
- /package/dist/core/{p-7026afad.entry.js.map → p-ca05573a.entry.js.map} +0 -0
- /package/dist/core/{p-8c580d88.entry.js.map → p-d0607a70.entry.js.map} +0 -0
- /package/dist/core/{p-15c05eb8.entry.js.map → p-d528d856.entry.js.map} +0 -0
- /package/dist/core/{p-0043b019.entry.js.map → p-da1c2883.entry.js.map} +0 -0
- /package/dist/core/{p-ffc1cea6.entry.js.map → p-e2e556ec.entry.js.map} +0 -0
- /package/dist/core/{p-e4ef4263.js.map → p-e519f607.js.map} +0 -0
- /package/dist/core/{p-3f0bce15.entry.js.map → p-e5c6d01a.entry.js.map} +0 -0
- /package/dist/core/{p-04a9f82f.entry.js.map → p-e8db8772.entry.js.map} +0 -0
- /package/dist/core/{p-e4b82731.entry.js.map → p-ea04103e.entry.js.map} +0 -0
- /package/dist/core/{p-8e592393.entry.js.map → p-ecc7fd71.entry.js.map} +0 -0
- /package/dist/core/{p-b6d6b26e.entry.js.map → p-f1b57f91.entry.js.map} +0 -0
- /package/dist/core/{p-1900c7c7.entry.js.map → p-fd08156a.entry.js.map} +0 -0
- /package/dist/core/{p-3594922d.entry.js.map → p-fe5b51bb.entry.js.map} +0 -0
- /package/dist/core/{p-ef5b6622.entry.js.map → p-ff618439.entry.js.map} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* eslint-disable react/jsx-no-bind */
|
|
2
2
|
import { h, Host, } from "@stencil/core";
|
|
3
3
|
import { IcInformationStatus, } from "../../utils/types";
|
|
4
|
-
import { isEmptyString, isNumeric, addFormResetListener, getInputDescribedByText, onComponentRequiredPropUndefined, removeDisabledFalse, removeFormResetListener, renderHiddenInput, } from "../../utils/helpers";
|
|
4
|
+
import { isEmptyString, isNumeric, addFormResetListener, getInputDescribedByText, onComponentRequiredPropUndefined, removeDisabledFalse, removeFormResetListener, renderHiddenInput, parseTimeHelper, } from "../../utils/helpers";
|
|
5
5
|
import Clear from "../../assets/clear-icon.svg";
|
|
6
6
|
import Clock from "../../assets/clock.svg";
|
|
7
7
|
let inputIds = 0;
|
|
@@ -11,6 +11,7 @@ let inputIds = 0;
|
|
|
11
11
|
export class TimeInput {
|
|
12
12
|
constructor() {
|
|
13
13
|
this.DEFAULT_TIME_FORMAT = "HH:MM:SS";
|
|
14
|
+
this.TOGGLE_BUTTON_SELECTOR = "ic-toggle-button";
|
|
14
15
|
this.ARIA_INVALID = "aria-invalid";
|
|
15
16
|
this.ARIA_LABEL = "aria-label";
|
|
16
17
|
this.ARIA_LABELLED_BY = "aria-labelledby";
|
|
@@ -21,6 +22,7 @@ export class TimeInput {
|
|
|
21
22
|
this.isValidHour = true;
|
|
22
23
|
this.isValidMinute = true;
|
|
23
24
|
this.isValidSecond = true;
|
|
25
|
+
this.isValidMillisecond = true;
|
|
24
26
|
this.isValidTime = true;
|
|
25
27
|
this.isTimeSetFromKeyboardEvent = false;
|
|
26
28
|
this.previousSelectedTime = null;
|
|
@@ -29,12 +31,20 @@ export class TimeInput {
|
|
|
29
31
|
this.clearInput = false;
|
|
30
32
|
this.maxTime = null;
|
|
31
33
|
this.minTime = null;
|
|
34
|
+
this.previousHour = "";
|
|
35
|
+
this.previousMinute = "";
|
|
36
|
+
this.previousSecond = "";
|
|
37
|
+
this.previousMillisecond = "";
|
|
38
|
+
this.previousPeriod = "AM";
|
|
32
39
|
this.clockFocused = false;
|
|
33
40
|
this.clearButtonFocused = false;
|
|
34
41
|
this.removeLabelledBy = false;
|
|
35
42
|
this.hour = "";
|
|
36
43
|
this.minute = "";
|
|
37
44
|
this.second = "";
|
|
45
|
+
this.millisecond = "";
|
|
46
|
+
this.period = "AM";
|
|
47
|
+
this.isSSSFormat = () => this.timeFormat === "HH:MM:SS.SSS";
|
|
38
48
|
/**
|
|
39
49
|
* If `true`, the disabled state will be set.
|
|
40
50
|
*/
|
|
@@ -44,7 +54,7 @@ export class TimeInput {
|
|
|
44
54
|
*/
|
|
45
55
|
this.disableTimes = [];
|
|
46
56
|
/**
|
|
47
|
-
* If `true`, every individual input field completed will emit an
|
|
57
|
+
* If `true`, every individual input field completed will emit an icTimeChange event.
|
|
48
58
|
*/
|
|
49
59
|
this.emitTimePartChange = false;
|
|
50
60
|
/**
|
|
@@ -79,6 +89,10 @@ export class TimeInput {
|
|
|
79
89
|
* If `true`, the input will require a value.
|
|
80
90
|
*/
|
|
81
91
|
this.required = false;
|
|
92
|
+
/**
|
|
93
|
+
* If `true`, the time input will show an AM/PM toggle when in 12-hour time period.
|
|
94
|
+
*/
|
|
95
|
+
this.showAmPmToggle = false;
|
|
82
96
|
/**
|
|
83
97
|
* If `true`, a button which clears the time input when clicked will be displayed.
|
|
84
98
|
*/
|
|
@@ -126,19 +140,6 @@ export class TimeInput {
|
|
|
126
140
|
inputEl.classList.add(this.FIT_TO_VALUE);
|
|
127
141
|
}
|
|
128
142
|
};
|
|
129
|
-
this.parseTime = (value) => {
|
|
130
|
-
if (!value)
|
|
131
|
-
return null;
|
|
132
|
-
if (value instanceof Date)
|
|
133
|
-
return value;
|
|
134
|
-
const parts = value.split(":");
|
|
135
|
-
if (parts.length >= 2) {
|
|
136
|
-
const d = new Date();
|
|
137
|
-
d.setHours(+parts[0], +parts[1], parts[2] ? +parts[2] : 0, 0);
|
|
138
|
-
return d;
|
|
139
|
-
}
|
|
140
|
-
return null;
|
|
141
|
-
};
|
|
142
143
|
this.isHHMMFormat = () => this.timeFormat === "HH:MM";
|
|
143
144
|
this.isKeyboardOrEvent = (event) => {
|
|
144
145
|
return (Object.prototype.toString.call(event) === this.EVENT_OBJECT_STRING ||
|
|
@@ -166,9 +167,22 @@ export class TimeInput {
|
|
|
166
167
|
else {
|
|
167
168
|
this.isValidSecond = true;
|
|
168
169
|
}
|
|
170
|
+
if (this.isSSSFormat()) {
|
|
171
|
+
if (!isEmptyString(this.millisecond)) {
|
|
172
|
+
this.isValidMillisecond =
|
|
173
|
+
+this.millisecond >= 0 && +this.millisecond <= 999;
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
this.isValidMillisecond = true;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
this.isValidMillisecond = true;
|
|
181
|
+
}
|
|
169
182
|
}
|
|
170
183
|
else {
|
|
171
184
|
this.isValidSecond = true;
|
|
185
|
+
this.isValidMillisecond = true;
|
|
172
186
|
}
|
|
173
187
|
};
|
|
174
188
|
this.setInputValue = (input, clear = false) => {
|
|
@@ -182,6 +196,9 @@ export class TimeInput {
|
|
|
182
196
|
else if (input === this.secondInputEl && !this.isHHMMFormat()) {
|
|
183
197
|
this.second = newValue;
|
|
184
198
|
}
|
|
199
|
+
else if (this.isSSSFormat() && input === this.millisecondInputEl) {
|
|
200
|
+
this.millisecond = newValue;
|
|
201
|
+
}
|
|
185
202
|
this.setValidationMessage();
|
|
186
203
|
};
|
|
187
204
|
this.setPreventInput = (input, isPrevented) => {
|
|
@@ -194,22 +211,50 @@ export class TimeInput {
|
|
|
194
211
|
else if (input === this.secondInputEl) {
|
|
195
212
|
this.preventSecondInput = isPrevented;
|
|
196
213
|
}
|
|
214
|
+
else if (this.isSSSFormat() && input === this.millisecondInputEl) {
|
|
215
|
+
this.preventMillisecondInput = isPrevented;
|
|
216
|
+
}
|
|
197
217
|
};
|
|
198
218
|
this.setValidationMessage = () => {
|
|
199
|
-
this.maxTime =
|
|
200
|
-
this.minTime =
|
|
219
|
+
this.maxTime = parseTimeHelper(this.max).date;
|
|
220
|
+
this.minTime = parseTimeHelper(this.min).date;
|
|
201
221
|
this.setTimeValidity();
|
|
202
222
|
let outOfBoundsMsg = "";
|
|
203
223
|
let isDisabledTime = false;
|
|
204
224
|
if (!isEmptyString(this.hour) &&
|
|
205
225
|
!isEmptyString(this.minute) &&
|
|
206
|
-
(this.isHHMMFormat() || !isEmptyString(this.second))
|
|
207
|
-
|
|
208
|
-
this.
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
226
|
+
(this.isHHMMFormat() || !isEmptyString(this.second)) &&
|
|
227
|
+
(!this.isSSSFormat() || !isEmptyString(this.millisecond))) {
|
|
228
|
+
this.selectedTime = this.convertToTime(this.hour, this.minute, this.isHHMMFormat() ? "00" : this.second, this.isSSSFormat() ? this.millisecond : "000");
|
|
229
|
+
const inputHour = +this.hour;
|
|
230
|
+
const selectedHour = this.selectedTime
|
|
231
|
+
? this.selectedTime.getHours()
|
|
232
|
+
: null;
|
|
233
|
+
if (this.timePeriod === "12" &&
|
|
234
|
+
this.showAmPmToggle &&
|
|
235
|
+
selectedHour !== null) {
|
|
236
|
+
let selectedHour12 = selectedHour % 12;
|
|
237
|
+
if (selectedHour12 === 0)
|
|
238
|
+
selectedHour12 = 12;
|
|
239
|
+
this.isValidTime =
|
|
240
|
+
!!this.selectedTime &&
|
|
241
|
+
selectedHour12 == inputHour &&
|
|
242
|
+
this.selectedTime.getMinutes() == +this.minute &&
|
|
243
|
+
(this.isHHMMFormat() ||
|
|
244
|
+
this.selectedTime.getSeconds() == +this.second) &&
|
|
245
|
+
(!this.isSSSFormat() ||
|
|
246
|
+
this.selectedTime.getMilliseconds() == +this.millisecond);
|
|
247
|
+
}
|
|
248
|
+
else {
|
|
249
|
+
this.isValidTime =
|
|
250
|
+
!!this.selectedTime &&
|
|
251
|
+
this.selectedTime.getHours() == inputHour &&
|
|
252
|
+
this.selectedTime.getMinutes() == +this.minute &&
|
|
253
|
+
(this.isHHMMFormat() ||
|
|
254
|
+
this.selectedTime.getSeconds() == +this.second) &&
|
|
255
|
+
(!this.isSSSFormat() ||
|
|
256
|
+
this.selectedTime.getMilliseconds() == +this.millisecond);
|
|
257
|
+
}
|
|
213
258
|
if (this.selectedTime &&
|
|
214
259
|
Array.isArray(this.disableTimes) &&
|
|
215
260
|
this.disableTimes.length > 0) {
|
|
@@ -218,18 +263,25 @@ export class TimeInput {
|
|
|
218
263
|
t !== null &&
|
|
219
264
|
"start" in t &&
|
|
220
265
|
"end" in t) {
|
|
221
|
-
const start =
|
|
222
|
-
const end =
|
|
266
|
+
const start = parseTimeHelper(t.start).date;
|
|
267
|
+
const end = parseTimeHelper(t.end).date;
|
|
223
268
|
if (start && end) {
|
|
224
269
|
return this.selectedTime >= start && this.selectedTime <= end;
|
|
225
270
|
}
|
|
226
271
|
return false;
|
|
227
272
|
}
|
|
228
|
-
const parsed =
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
273
|
+
const parsed = parseTimeHelper(t).parts;
|
|
274
|
+
if (!parsed)
|
|
275
|
+
return false;
|
|
276
|
+
let selectedHour = this.selectedTime.getHours();
|
|
277
|
+
let parsedHour = parsed.hour;
|
|
278
|
+
if (this.timePeriod === "12" && this.showAmPmToggle) {
|
|
279
|
+
selectedHour = this.convertTo24Hour(selectedHour);
|
|
280
|
+
parsedHour = this.convertTo24Hour(parsedHour);
|
|
281
|
+
}
|
|
282
|
+
return (parsedHour === selectedHour &&
|
|
283
|
+
parsed.minute === this.selectedTime.getMinutes() &&
|
|
284
|
+
parsed.second === this.selectedTime.getSeconds());
|
|
233
285
|
});
|
|
234
286
|
if (isDisabledTime) {
|
|
235
287
|
this.isValidTime = false;
|
|
@@ -259,6 +311,7 @@ export class TimeInput {
|
|
|
259
311
|
if (!(this.isValidHour &&
|
|
260
312
|
this.isValidMinute &&
|
|
261
313
|
this.isValidSecond &&
|
|
314
|
+
this.isValidMillisecond &&
|
|
262
315
|
this.isValidTime)) {
|
|
263
316
|
this.invalidTimeText = outOfBoundsMsg || this.invalidTimeMessage;
|
|
264
317
|
}
|
|
@@ -270,12 +323,33 @@ export class TimeInput {
|
|
|
270
323
|
const hh = time.getHours().toString().padStart(2, "0");
|
|
271
324
|
const mm = time.getMinutes().toString().padStart(2, "0");
|
|
272
325
|
const ss = time.getSeconds().toString().padStart(2, "0");
|
|
326
|
+
const sss = time.getMilliseconds().toString().padStart(3, "0");
|
|
327
|
+
if (this.isSSSFormat()) {
|
|
328
|
+
return `${hh}:${mm}:${ss}.${sss}`;
|
|
329
|
+
}
|
|
273
330
|
return this.isHHMMFormat() ? `${hh}:${mm}` : `${hh}:${mm}:${ss}`;
|
|
274
331
|
};
|
|
275
332
|
this.handleInput = (event) => {
|
|
276
333
|
const inputEvent = event;
|
|
277
334
|
const input = event.target;
|
|
278
|
-
if (input
|
|
335
|
+
if (input === this.millisecondInputEl && this.isSSSFormat()) {
|
|
336
|
+
this.setInputValue(input);
|
|
337
|
+
this.setPreventInput(input, false);
|
|
338
|
+
this.setFitToValueStyling(input);
|
|
339
|
+
if (input.value.length === 3) {
|
|
340
|
+
this.moveToNextInput(input);
|
|
341
|
+
this.setPreventInput(input, true);
|
|
342
|
+
}
|
|
343
|
+
else {
|
|
344
|
+
this.setPreventInput(input, false);
|
|
345
|
+
}
|
|
346
|
+
if (input.value.length === 0) {
|
|
347
|
+
this.setInputValue(input, true);
|
|
348
|
+
this.setValidationMessage();
|
|
349
|
+
}
|
|
350
|
+
this.notifyScreenReader(input);
|
|
351
|
+
}
|
|
352
|
+
else if (input !== this.hourInputEl) {
|
|
279
353
|
if (inputEvent.inputType !== "deleteContentBackward" &&
|
|
280
354
|
!this.preventAutoFormatting) {
|
|
281
355
|
if (input.value.length === 1 &&
|
|
@@ -308,6 +382,12 @@ export class TimeInput {
|
|
|
308
382
|
if (input.value.length !== 2) {
|
|
309
383
|
this.setPreventInput(input, false);
|
|
310
384
|
}
|
|
385
|
+
this.setFitToValueStyling(input);
|
|
386
|
+
if (input.value.length === 0) {
|
|
387
|
+
this.setInputValue(input, true);
|
|
388
|
+
this.setValidationMessage();
|
|
389
|
+
}
|
|
390
|
+
this.notifyScreenReader(input);
|
|
311
391
|
}
|
|
312
392
|
else {
|
|
313
393
|
if (input.value.length === 2) {
|
|
@@ -321,18 +401,25 @@ export class TimeInput {
|
|
|
321
401
|
this.setInputValue(input, true);
|
|
322
402
|
this.setPreventInput(input, false);
|
|
323
403
|
}
|
|
404
|
+
this.setFitToValueStyling(input);
|
|
405
|
+
if (input.value.length === 0) {
|
|
406
|
+
this.setInputValue(input, true);
|
|
407
|
+
this.setValidationMessage();
|
|
408
|
+
}
|
|
409
|
+
this.notifyScreenReader(input);
|
|
324
410
|
}
|
|
325
|
-
this.setFitToValueStyling(input);
|
|
326
|
-
if (input.value.length === 0) {
|
|
327
|
-
this.setInputValue(input, true);
|
|
328
|
-
this.setValidationMessage();
|
|
329
|
-
}
|
|
330
|
-
this.notifyScreenReader(input);
|
|
331
411
|
};
|
|
332
412
|
this.handleKeyDown = (event, isInputPrevented) => {
|
|
333
413
|
var _a;
|
|
414
|
+
const navKeys = /arrowup|arrowdown|arrowleft|arrowright|shift|tab|backspace|delete/i;
|
|
334
415
|
const input = event.target;
|
|
335
416
|
const eventKey = (_a = event.key) === null || _a === void 0 ? void 0 : _a.toLowerCase();
|
|
417
|
+
if (!/-?\d*\.?\d+(e[-+]?\d+)?|[:]|[.]/i.test(eventKey) &&
|
|
418
|
+
!navKeys.test(eventKey) &&
|
|
419
|
+
!((event.ctrlKey || event.metaKey) &&
|
|
420
|
+
(eventKey === "v" || eventKey === "c"))) {
|
|
421
|
+
event.preventDefault();
|
|
422
|
+
}
|
|
336
423
|
const regex = /-?\d*\.?\d+(e[-+]?\d+)?|[:]|arrowup|arrowdown|arrowleft|arrowright|shift|tab|backspace|delete/;
|
|
337
424
|
if (!regex.test(eventKey) &&
|
|
338
425
|
!((event.ctrlKey || event.metaKey) &&
|
|
@@ -372,7 +459,18 @@ export class TimeInput {
|
|
|
372
459
|
};
|
|
373
460
|
this.handleBlur = (event) => {
|
|
374
461
|
const input = event.target;
|
|
375
|
-
if (input) {
|
|
462
|
+
if (input === this.millisecondInputEl && this.isSSSFormat()) {
|
|
463
|
+
if (input.value.length === 1) {
|
|
464
|
+
input.value = `00${input.value}`;
|
|
465
|
+
this.setInputValue(input);
|
|
466
|
+
}
|
|
467
|
+
else if (input.value.length === 2) {
|
|
468
|
+
input.value = `0${input.value}`;
|
|
469
|
+
this.setInputValue(input);
|
|
470
|
+
}
|
|
471
|
+
this.setFitToValueStyling(input);
|
|
472
|
+
}
|
|
473
|
+
else if (input) {
|
|
376
474
|
this.autocompleteInput(input);
|
|
377
475
|
}
|
|
378
476
|
};
|
|
@@ -428,20 +526,80 @@ export class TimeInput {
|
|
|
428
526
|
};
|
|
429
527
|
this.setValueAndEmitChange = (value, force = false) => {
|
|
430
528
|
if (this.value !== value || force) {
|
|
431
|
-
this.
|
|
529
|
+
this.emitIcTimeChange(value);
|
|
432
530
|
this.value = value;
|
|
433
531
|
}
|
|
434
532
|
};
|
|
435
|
-
this.
|
|
436
|
-
|
|
437
|
-
this.
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
533
|
+
this.convertTo24Hour = (hour) => {
|
|
534
|
+
let date24hours = hour;
|
|
535
|
+
if (this.period === "PM" && hour < 12)
|
|
536
|
+
date24hours = hour + 12;
|
|
537
|
+
if (this.period === "AM" && hour === 12)
|
|
538
|
+
date24hours = 0;
|
|
539
|
+
return date24hours;
|
|
540
|
+
};
|
|
541
|
+
this.emitIcTimeChange = (t) => {
|
|
542
|
+
const hour = parseInt(this.hour);
|
|
543
|
+
const minute = parseInt(this.minute);
|
|
544
|
+
const second = parseInt(this.second);
|
|
545
|
+
const millisecond = parseInt(this.millisecond);
|
|
546
|
+
const period = this.period;
|
|
547
|
+
let allSelected = false;
|
|
548
|
+
if (this.isSSSFormat()) {
|
|
549
|
+
allSelected =
|
|
550
|
+
this.hour !== "" &&
|
|
551
|
+
this.minute !== "" &&
|
|
552
|
+
this.second !== "" &&
|
|
553
|
+
this.millisecond !== "";
|
|
554
|
+
}
|
|
555
|
+
else if (this.timeFormat === this.DEFAULT_TIME_FORMAT) {
|
|
556
|
+
allSelected =
|
|
557
|
+
this.hour !== "" && this.minute !== "" && this.second !== "";
|
|
558
|
+
}
|
|
559
|
+
else if (this.timeFormat === "HH:MM") {
|
|
560
|
+
allSelected = this.hour !== "" && this.minute !== "";
|
|
561
|
+
}
|
|
562
|
+
let time = t;
|
|
563
|
+
let date24hours = hour;
|
|
564
|
+
if (hour != null &&
|
|
565
|
+
period &&
|
|
566
|
+
this.timePeriod === "12" &&
|
|
567
|
+
this.showAmPmToggle) {
|
|
568
|
+
date24hours = this.convertTo24Hour(hour);
|
|
569
|
+
time = new Date();
|
|
570
|
+
time.setHours(date24hours !== null && date24hours !== void 0 ? date24hours : 0);
|
|
571
|
+
time.setMinutes(minute !== null && minute !== void 0 ? minute : 0);
|
|
572
|
+
time.setSeconds(second !== null && second !== void 0 ? second : 0);
|
|
573
|
+
this.isSSSFormat() && time.setMilliseconds(millisecond !== null && millisecond !== void 0 ? millisecond : 0);
|
|
574
|
+
}
|
|
575
|
+
this.selectedTime = time;
|
|
576
|
+
const allTimePartsEmpty = this.hour === "" &&
|
|
577
|
+
this.minute === "" &&
|
|
578
|
+
this.second === "" &&
|
|
579
|
+
this.millisecond === "";
|
|
580
|
+
const onlyPeriodChanged = allTimePartsEmpty &&
|
|
581
|
+
this.period !== this.previousPeriod &&
|
|
582
|
+
this.previousHour === "" &&
|
|
583
|
+
this.previousMinute === "" &&
|
|
584
|
+
this.previousSecond === "" &&
|
|
585
|
+
this.previousMillisecond === "";
|
|
586
|
+
if (!onlyPeriodChanged) {
|
|
587
|
+
this.icTimeChange.emit({
|
|
588
|
+
value: allSelected ? time : null,
|
|
589
|
+
timeObject: {
|
|
590
|
+
hour: this.hour === "" ? null : this.hour,
|
|
591
|
+
minute: this.minute === "" ? null : this.minute,
|
|
592
|
+
second: this.second === "" ? null : this.second,
|
|
593
|
+
millisecond: this.millisecond === "" ? null : this.millisecond,
|
|
594
|
+
period: this.period === "" ? null : this.period,
|
|
595
|
+
},
|
|
596
|
+
});
|
|
597
|
+
}
|
|
598
|
+
this.previousHour = this.hour;
|
|
599
|
+
this.previousMinute = this.minute;
|
|
600
|
+
this.previousSecond = this.second;
|
|
601
|
+
this.previousMillisecond = this.millisecond;
|
|
602
|
+
this.previousPeriod = this.period;
|
|
445
603
|
};
|
|
446
604
|
this.setTime = (time) => {
|
|
447
605
|
if (time === null || time === "" || time === undefined) {
|
|
@@ -451,6 +609,8 @@ export class TimeInput {
|
|
|
451
609
|
this.minute = "";
|
|
452
610
|
if (this.second)
|
|
453
611
|
this.second = "";
|
|
612
|
+
if (this.millisecond)
|
|
613
|
+
this.millisecond = "";
|
|
454
614
|
this.inputsInOrder.forEach((input) => {
|
|
455
615
|
input.classList.remove(this.FIT_TO_VALUE);
|
|
456
616
|
this.setPreventInput(input, false);
|
|
@@ -466,22 +626,26 @@ export class TimeInput {
|
|
|
466
626
|
this.second = zuluMatch[3];
|
|
467
627
|
}
|
|
468
628
|
else {
|
|
469
|
-
const parts = time.split(
|
|
629
|
+
const parts = time.split(/[:.]/);
|
|
470
630
|
this.hour = parts[0] || "";
|
|
471
631
|
this.minute = parts[1] || "";
|
|
472
632
|
this.second = parts[2] || "";
|
|
633
|
+
this.millisecond = parts[3] || "";
|
|
473
634
|
}
|
|
474
635
|
}
|
|
475
636
|
else if (time instanceof Date) {
|
|
476
637
|
this.hour = time.getHours().toString().padStart(2, "0");
|
|
477
638
|
this.minute = time.getMinutes().toString().padStart(2, "0");
|
|
478
639
|
this.second = time.getSeconds().toString().padStart(2, "0");
|
|
640
|
+
if (this.isSSSFormat()) {
|
|
641
|
+
this.millisecond = time.getMilliseconds().toString().padStart(3, "0");
|
|
642
|
+
}
|
|
479
643
|
}
|
|
480
644
|
}
|
|
481
645
|
this.setValidationMessage();
|
|
482
646
|
};
|
|
483
|
-
this.setAriaInvalid = (validHour, validMinute, validSecond) => {
|
|
484
|
-
var _a, _b, _c;
|
|
647
|
+
this.setAriaInvalid = (validHour, validMinute, validSecond, validMillisecond) => {
|
|
648
|
+
var _a, _b, _c, _d;
|
|
485
649
|
if (this.inputsInOrder.length) {
|
|
486
650
|
this.inputsInOrder.forEach((input) => {
|
|
487
651
|
input.removeAttribute(this.ARIA_INVALID);
|
|
@@ -495,7 +659,10 @@ export class TimeInput {
|
|
|
495
659
|
if (!validSecond) {
|
|
496
660
|
(_c = this.secondInputEl) === null || _c === void 0 ? void 0 : _c.setAttribute(this.ARIA_INVALID, "true");
|
|
497
661
|
}
|
|
498
|
-
if (!
|
|
662
|
+
if (!validMillisecond) {
|
|
663
|
+
(_d = this.millisecondInputEl) === null || _d === void 0 ? void 0 : _d.setAttribute(this.ARIA_INVALID, "true");
|
|
664
|
+
}
|
|
665
|
+
if (!(validHour && validMinute && validSecond && validMillisecond)) {
|
|
499
666
|
this.inputsInOrder.forEach((input) => {
|
|
500
667
|
input.setAttribute(this.ARIA_INVALID, "true");
|
|
501
668
|
});
|
|
@@ -503,6 +670,7 @@ export class TimeInput {
|
|
|
503
670
|
}
|
|
504
671
|
};
|
|
505
672
|
this.handleClear = () => {
|
|
673
|
+
var _a;
|
|
506
674
|
this.clearInput = true;
|
|
507
675
|
if (this.hourInputEl) {
|
|
508
676
|
this.hourInputEl.value = "";
|
|
@@ -513,9 +681,25 @@ export class TimeInput {
|
|
|
513
681
|
if (!this.isHHMMFormat() && this.secondInputEl) {
|
|
514
682
|
this.secondInputEl.value = "";
|
|
515
683
|
}
|
|
684
|
+
if (this.isSSSFormat() && this.millisecondInputEl) {
|
|
685
|
+
this.millisecondInputEl.value = "";
|
|
686
|
+
}
|
|
516
687
|
this.hour = "";
|
|
517
688
|
this.minute = "";
|
|
518
689
|
this.second = "";
|
|
690
|
+
this.millisecond = "";
|
|
691
|
+
this.period = "AM";
|
|
692
|
+
if (this.showAmPmToggle) {
|
|
693
|
+
(_a = this.periodToggleEl) === null || _a === void 0 ? void 0 : _a.querySelectorAll(this.TOGGLE_BUTTON_SELECTOR).forEach((btn) => {
|
|
694
|
+
const toggleBtn = btn;
|
|
695
|
+
if (toggleBtn.label === "AM") {
|
|
696
|
+
toggleBtn.checked = true;
|
|
697
|
+
}
|
|
698
|
+
else {
|
|
699
|
+
toggleBtn.checked = false;
|
|
700
|
+
}
|
|
701
|
+
});
|
|
702
|
+
}
|
|
519
703
|
this.handleTimeChange(true);
|
|
520
704
|
this.inputsInOrder.forEach((input) => {
|
|
521
705
|
input.classList.remove(this.FIT_TO_VALUE);
|
|
@@ -531,26 +715,31 @@ export class TimeInput {
|
|
|
531
715
|
};
|
|
532
716
|
this.notifyScreenReaderSelectedTime = () => {
|
|
533
717
|
if (this.selectedTime && this.selectedTimeInfoEl) {
|
|
718
|
+
let hours = this.selectedTime.getHours();
|
|
719
|
+
if (this.timePeriod === "12" && this.showAmPmToggle) {
|
|
720
|
+
hours = this.convertTo24Hour(hours);
|
|
721
|
+
}
|
|
722
|
+
const hoursStr = hours.toString().padStart(2, "0");
|
|
723
|
+
const minutesStr = this.selectedTime
|
|
724
|
+
.getMinutes()
|
|
725
|
+
.toString()
|
|
726
|
+
.padStart(2, "0");
|
|
727
|
+
const secondsStr = this.selectedTime
|
|
728
|
+
.getSeconds()
|
|
729
|
+
.toString()
|
|
730
|
+
.padStart(2, "0");
|
|
731
|
+
const msStr = this.selectedTime
|
|
732
|
+
.getMilliseconds()
|
|
733
|
+
.toString()
|
|
734
|
+
.padStart(3, "0");
|
|
534
735
|
if (this.isHHMMFormat()) {
|
|
535
|
-
this.selectedTimeInfoEl.textContent = `Selected time: ${
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
.getMinutes()
|
|
540
|
-
.toString()
|
|
541
|
-
.padStart(2, "0")}`;
|
|
736
|
+
this.selectedTimeInfoEl.textContent = `Selected time: ${hoursStr}:${minutesStr}`;
|
|
737
|
+
}
|
|
738
|
+
else if (!this.isSSSFormat()) {
|
|
739
|
+
this.selectedTimeInfoEl.textContent = `Selected time: ${hoursStr}:${minutesStr}:${secondsStr}`;
|
|
542
740
|
}
|
|
543
741
|
else {
|
|
544
|
-
this.selectedTimeInfoEl.textContent = `Selected time: ${
|
|
545
|
-
.getHours()
|
|
546
|
-
.toString()
|
|
547
|
-
.padStart(2, "0")}:${this.selectedTime
|
|
548
|
-
.getMinutes()
|
|
549
|
-
.toString()
|
|
550
|
-
.padStart(2, "0")}:${this.selectedTime
|
|
551
|
-
.getSeconds()
|
|
552
|
-
.toString()
|
|
553
|
-
.padStart(2, "0")}`;
|
|
742
|
+
this.selectedTimeInfoEl.textContent = `Selected time: ${hoursStr}:${minutesStr}:${secondsStr}.${msStr}`;
|
|
554
743
|
}
|
|
555
744
|
}
|
|
556
745
|
};
|
|
@@ -568,7 +757,7 @@ export class TimeInput {
|
|
|
568
757
|
};
|
|
569
758
|
this.handleHostFocus = () => {
|
|
570
759
|
var _a, _b;
|
|
571
|
-
if ((_b = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.activeElement) === null || _b === void 0 ? void 0 : _b.id.match(/(hour|minute|second)-input$/)) {
|
|
760
|
+
if ((_b = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.activeElement) === null || _b === void 0 ? void 0 : _b.id.match(/(hour|minute|second|millisecond)-input$/)) {
|
|
572
761
|
this.removeLabelledBy = false;
|
|
573
762
|
}
|
|
574
763
|
else {
|
|
@@ -617,12 +806,17 @@ export class TimeInput {
|
|
|
617
806
|
this.setInputValue(input);
|
|
618
807
|
}
|
|
619
808
|
};
|
|
620
|
-
this.convertToTime = (hour, minute, second) => {
|
|
809
|
+
this.convertToTime = (hour, minute, second, millisecond = null) => {
|
|
621
810
|
if (!isEmptyString(hour) &&
|
|
622
811
|
!isEmptyString(minute) &&
|
|
623
|
-
(this.isHHMMFormat() || !isEmptyString(second))
|
|
812
|
+
(this.isHHMMFormat() || !isEmptyString(second)) &&
|
|
813
|
+
(!this.isSSSFormat() ||
|
|
814
|
+
(millisecond !== null && !isEmptyString(millisecond)))) {
|
|
624
815
|
const d = new Date();
|
|
625
816
|
d.setHours(+hour, +minute, this.isHHMMFormat() ? 0 : +second, 0);
|
|
817
|
+
if (this.isSSSFormat() && millisecond !== null) {
|
|
818
|
+
d.setMilliseconds(+millisecond);
|
|
819
|
+
}
|
|
626
820
|
return d;
|
|
627
821
|
}
|
|
628
822
|
else {
|
|
@@ -667,17 +861,22 @@ export class TimeInput {
|
|
|
667
861
|
(_d = this.inputCompContainerEl) === null || _d === void 0 ? void 0 : _d.setAttribute(this.ARIA_LABELLED_BY, labelledBy);
|
|
668
862
|
};
|
|
669
863
|
this.getInputsInOrder = () => {
|
|
670
|
-
const timeParts = this.timeFormat.split(
|
|
864
|
+
const timeParts = this.timeFormat.split(/[:.]/);
|
|
671
865
|
return timeParts.map((part) => {
|
|
672
|
-
switch (part
|
|
673
|
-
case "
|
|
866
|
+
switch (part) {
|
|
867
|
+
case "HH":
|
|
674
868
|
return (h("input", { class: "hour-input", id: "hour-input", ref: (el) => (this.hourInputEl = el), "aria-label": "hour", placeholder: "HH", disabled: this.disabled, "aria-required": `${this.required}`, inputmode: "number", pattern: "[0-9]*", onPaste: this.handlePaste, onKeyDown: (event) => this.handleKeyDown(event, this.preventHourInput) }));
|
|
675
|
-
case "
|
|
869
|
+
case "MM":
|
|
676
870
|
return (h("input", { id: "minute-input", class: "minute-input", ref: (el) => (this.minuteInputEl = el), "aria-label": "minute", placeholder: "MM", disabled: this.disabled, "aria-required": `${this.required}`, inputmode: "number", pattern: "[0-9]*", onPaste: this.handlePaste, onKeyDown: (event) => this.handleKeyDown(event, this.preventMinuteInput) }));
|
|
677
|
-
case "
|
|
871
|
+
case "SS":
|
|
678
872
|
if (!this.isHHMMFormat()) {
|
|
679
873
|
return (h("input", { id: "second-input", class: "second-input", ref: (el) => (this.secondInputEl = el), "aria-label": "second", placeholder: "SS", disabled: this.disabled, "aria-required": `${this.required}`, inputmode: "number", pattern: "[0-9]*", onPaste: this.handlePaste, onKeyDown: (event) => this.handleKeyDown(event, this.preventSecondInput) }));
|
|
680
874
|
}
|
|
875
|
+
break;
|
|
876
|
+
case "SSS":
|
|
877
|
+
if (this.isSSSFormat()) {
|
|
878
|
+
return (h("input", { id: "millisecond-input", class: "millisecond-input", ref: (el) => (this.millisecondInputEl = el), "aria-label": "millisecond", placeholder: "SSS", disabled: this.disabled, "aria-required": `${this.required}`, inputmode: "number", pattern: "[0-9]*", onPaste: this.handlePaste, onKeyDown: (event) => this.handleKeyDown(event, this.preventMillisecondInput) }));
|
|
879
|
+
}
|
|
681
880
|
return null;
|
|
682
881
|
default:
|
|
683
882
|
return null;
|
|
@@ -685,6 +884,9 @@ export class TimeInput {
|
|
|
685
884
|
});
|
|
686
885
|
};
|
|
687
886
|
this.getDescOfInputsOrder = () => {
|
|
887
|
+
if (this.isSSSFormat()) {
|
|
888
|
+
return "hour, minute, second, and millisecond";
|
|
889
|
+
}
|
|
688
890
|
return "hour, minute, and second";
|
|
689
891
|
};
|
|
690
892
|
this.getScreenReaderInfo = (validationStatus) => {
|
|
@@ -724,7 +926,7 @@ export class TimeInput {
|
|
|
724
926
|
this.removeLabelledBy = false;
|
|
725
927
|
return;
|
|
726
928
|
}
|
|
727
|
-
if (relatedTarget === null || relatedTarget === void 0 ? void 0 : relatedTarget.id.match(/(minute|second)-input$/)) {
|
|
929
|
+
if (relatedTarget === null || relatedTarget === void 0 ? void 0 : relatedTarget.id.match(/(minute|second|millisecond)-input$/)) {
|
|
728
930
|
this.removeLabelledBy = false;
|
|
729
931
|
return;
|
|
730
932
|
}
|
|
@@ -742,6 +944,18 @@ export class TimeInput {
|
|
|
742
944
|
return value;
|
|
743
945
|
}
|
|
744
946
|
}
|
|
947
|
+
else if (this.isSSSFormat()) {
|
|
948
|
+
if (/^\d{2}:\d{2}:\d{2}\.\d{1,3}$/.test(value)) {
|
|
949
|
+
return value;
|
|
950
|
+
}
|
|
951
|
+
if (/^\d{2}:\d{2}:\d{2}\.\d{1,3}Z$/.test(value)) {
|
|
952
|
+
return value.replace("Z", "");
|
|
953
|
+
}
|
|
954
|
+
const isoMatch = value.match(/T(\d{2}:\d{2}:\d{2}\.\d{1,3})/);
|
|
955
|
+
if (isoMatch) {
|
|
956
|
+
return isoMatch[1];
|
|
957
|
+
}
|
|
958
|
+
}
|
|
745
959
|
else {
|
|
746
960
|
if (/^\d{2}:\d{2}:\d{2}$/.test(value)) {
|
|
747
961
|
return value;
|
|
@@ -758,16 +972,78 @@ export class TimeInput {
|
|
|
758
972
|
};
|
|
759
973
|
this.setPastedValueAndValidation = (isValidTime, pastedValue, event) => {
|
|
760
974
|
if (isValidTime) {
|
|
761
|
-
const timeParts = isValidTime.split(
|
|
975
|
+
const timeParts = isValidTime.split(/[:.]/);
|
|
762
976
|
this.inputsInOrder.forEach((input, index) => {
|
|
977
|
+
var _a, _b, _c, _d;
|
|
763
978
|
input.classList.add(this.FIT_TO_VALUE);
|
|
764
|
-
|
|
765
|
-
input.
|
|
979
|
+
let timeValue = timeParts[index] || "";
|
|
980
|
+
if (input === this.millisecondInputEl && this.isSSSFormat()) {
|
|
981
|
+
timeValue = timeValue.slice(0, 3);
|
|
982
|
+
}
|
|
983
|
+
else {
|
|
984
|
+
timeValue = timeValue.slice(0, 2);
|
|
985
|
+
}
|
|
986
|
+
if (input === this.hourInputEl) {
|
|
987
|
+
let activeToggle;
|
|
988
|
+
if (this.timePeriod === "12" && this.showAmPmToggle) {
|
|
989
|
+
if (parseInt(timeValue) > 12) {
|
|
990
|
+
timeValue = (parseInt(timeValue) - 12)
|
|
991
|
+
.toString()
|
|
992
|
+
.padStart(2, "0");
|
|
993
|
+
if (parseInt(timeValue) > 12) {
|
|
994
|
+
return;
|
|
995
|
+
}
|
|
996
|
+
else {
|
|
997
|
+
this.period = "PM";
|
|
998
|
+
(_a = this.periodToggleEl) === null || _a === void 0 ? void 0 : _a.querySelectorAll(this.TOGGLE_BUTTON_SELECTOR).forEach((btn) => {
|
|
999
|
+
const toggleBtn = btn;
|
|
1000
|
+
if (toggleBtn.label === "PM") {
|
|
1001
|
+
activeToggle = toggleBtn;
|
|
1002
|
+
}
|
|
1003
|
+
else {
|
|
1004
|
+
toggleBtn.checked = false;
|
|
1005
|
+
}
|
|
1006
|
+
});
|
|
1007
|
+
if (activeToggle) {
|
|
1008
|
+
(_b = this.periodToggleEl) === null || _b === void 0 ? void 0 : _b.setActiveToggle(activeToggle);
|
|
1009
|
+
activeToggle.checked = true;
|
|
1010
|
+
}
|
|
1011
|
+
this.invalidTimeText = "";
|
|
1012
|
+
this.validationStatus = "";
|
|
1013
|
+
}
|
|
1014
|
+
}
|
|
1015
|
+
else {
|
|
1016
|
+
if (parseInt(timeValue) === 0) {
|
|
1017
|
+
timeValue = "12";
|
|
1018
|
+
}
|
|
1019
|
+
this.period = "AM";
|
|
1020
|
+
(_c = this.periodToggleEl) === null || _c === void 0 ? void 0 : _c.querySelectorAll(this.TOGGLE_BUTTON_SELECTOR).forEach((btn) => {
|
|
1021
|
+
const toggleBtn = btn;
|
|
1022
|
+
if (toggleBtn.label === "AM") {
|
|
1023
|
+
activeToggle = toggleBtn;
|
|
1024
|
+
}
|
|
1025
|
+
else {
|
|
1026
|
+
toggleBtn.checked = false;
|
|
1027
|
+
}
|
|
1028
|
+
});
|
|
1029
|
+
if (activeToggle) {
|
|
1030
|
+
(_d = this.periodToggleEl) === null || _d === void 0 ? void 0 : _d.setActiveToggle(activeToggle);
|
|
1031
|
+
activeToggle.checked = true;
|
|
1032
|
+
}
|
|
1033
|
+
this.invalidTimeText = "";
|
|
1034
|
+
this.validationStatus = "";
|
|
1035
|
+
}
|
|
1036
|
+
}
|
|
1037
|
+
}
|
|
1038
|
+
input.value = timeValue;
|
|
766
1039
|
this.setInputValue(input);
|
|
767
1040
|
this.autocompleteInput(input);
|
|
768
1041
|
});
|
|
769
|
-
if (this.isHHMMFormat() &&
|
|
1042
|
+
if (this.isHHMMFormat() &&
|
|
1043
|
+
this.second !== "" &&
|
|
1044
|
+
this.millisecond !== "") {
|
|
770
1045
|
this.second = "";
|
|
1046
|
+
this.millisecond = "";
|
|
771
1047
|
}
|
|
772
1048
|
}
|
|
773
1049
|
else {
|
|
@@ -782,14 +1058,22 @@ export class TimeInput {
|
|
|
782
1058
|
}
|
|
783
1059
|
}
|
|
784
1060
|
};
|
|
1061
|
+
this.handleAMPM = (selectedOption) => {
|
|
1062
|
+
var _a;
|
|
1063
|
+
this.period = selectedOption.label;
|
|
1064
|
+
(_a = this.periodToggleEl) === null || _a === void 0 ? void 0 : _a.setActiveToggle(selectedOption);
|
|
1065
|
+
};
|
|
785
1066
|
}
|
|
786
1067
|
watchInputHandler() {
|
|
787
1068
|
if (this.emitTimePartChange &&
|
|
788
1069
|
!this.externalSetTime &&
|
|
789
1070
|
!this.clearInput &&
|
|
790
|
-
!(this.hour &&
|
|
1071
|
+
!(this.hour &&
|
|
1072
|
+
this.minute &&
|
|
1073
|
+
this.second &&
|
|
1074
|
+
(this.isSSSFormat() ? this.millisecond : true)) &&
|
|
791
1075
|
this.selectedTime === null) {
|
|
792
|
-
this.
|
|
1076
|
+
this.emitIcTimeChange(this.selectedTime);
|
|
793
1077
|
}
|
|
794
1078
|
}
|
|
795
1079
|
watchDisabledHandler() {
|
|
@@ -800,10 +1084,10 @@ export class TimeInput {
|
|
|
800
1084
|
this.helperText = this.defaultHelperText;
|
|
801
1085
|
}
|
|
802
1086
|
watchMaxHandler() {
|
|
803
|
-
this.maxTime =
|
|
1087
|
+
this.maxTime = parseTimeHelper(this.max).date;
|
|
804
1088
|
}
|
|
805
1089
|
watchMinHandler() {
|
|
806
|
-
this.minTime =
|
|
1090
|
+
this.minTime = parseTimeHelper(this.min).date;
|
|
807
1091
|
}
|
|
808
1092
|
watchRequiredHandler() {
|
|
809
1093
|
var _a, _b;
|
|
@@ -852,7 +1136,7 @@ export class TimeInput {
|
|
|
852
1136
|
input.classList.add(this.FIT_TO_VALUE);
|
|
853
1137
|
});
|
|
854
1138
|
}
|
|
855
|
-
this.setAriaInvalid(this.isValidHour, this.isValidMinute, this.isValidSecond);
|
|
1139
|
+
this.setAriaInvalid(this.isValidHour, this.isValidMinute, this.isValidSecond, this.isValidMillisecond);
|
|
856
1140
|
if (this.value) {
|
|
857
1141
|
this.notifyScreenReaderSelectedTime();
|
|
858
1142
|
}
|
|
@@ -866,7 +1150,7 @@ export class TimeInput {
|
|
|
866
1150
|
componentWillUpdate() {
|
|
867
1151
|
if (!this.isTimeSetFromKeyboardEvent)
|
|
868
1152
|
this.setTime(this.value);
|
|
869
|
-
this.setAriaInvalid(this.isValidHour, this.isValidMinute, this.isValidSecond);
|
|
1153
|
+
this.setAriaInvalid(this.isValidHour, this.isValidMinute, this.isValidSecond, this.isValidMillisecond);
|
|
870
1154
|
this.handleTimeChange(false);
|
|
871
1155
|
this.isTimeSetFromKeyboardEvent = false;
|
|
872
1156
|
}
|
|
@@ -885,12 +1169,12 @@ export class TimeInput {
|
|
|
885
1169
|
return this.selectedTime;
|
|
886
1170
|
}
|
|
887
1171
|
/**
|
|
888
|
-
* @internal Used to enable other components to invoke an
|
|
1172
|
+
* @internal Used to enable other components to invoke an icTimeChange event from the input.
|
|
889
1173
|
*/
|
|
890
|
-
async
|
|
1174
|
+
async triggerIcTimeChange(t) {
|
|
891
1175
|
this.externalSetTime = true;
|
|
892
1176
|
this.setTime(t);
|
|
893
|
-
this.
|
|
1177
|
+
this.emitIcTimeChange(t);
|
|
894
1178
|
this.externalSetTime = false;
|
|
895
1179
|
}
|
|
896
1180
|
render() {
|
|
@@ -907,23 +1191,39 @@ export class TimeInput {
|
|
|
907
1191
|
!(isEmptyString(this.hour) &&
|
|
908
1192
|
isEmptyString(this.minute) &&
|
|
909
1193
|
isEmptyString(this.second)));
|
|
910
|
-
|
|
1194
|
+
if (this.showAmPmToggle && this.timePeriod !== "12") {
|
|
1195
|
+
this.showAmPmToggle = false;
|
|
1196
|
+
}
|
|
1197
|
+
return (h(Host, { key: 'd005982324084fad9fdfe6392cf879e15709d2ef', class: {
|
|
911
1198
|
[`ic-theme-${theme}`]: theme !== "inherit",
|
|
912
1199
|
[`ic-time-input-disabled`]: disabled,
|
|
913
1200
|
[`ic-time-input-${size}`]: true,
|
|
914
|
-
}, onBlur: this.handleHostBlur, onFocus: this.handleHostFocus }, h("ic-input-container", { key: '
|
|
1201
|
+
}, onBlur: this.handleHostBlur, onFocus: this.handleHostFocus }, h("ic-input-container", { key: '6fcc48d72a92ef2a0acf3f6b109e29b24c6608db', disabled: disabled }, !(hideLabel && hideHelperText) && (h("ic-input-label", { key: '84364f527bbfeffed22d95df1ce879bb9cb55fde', for: inputId, label: label, hideLabel: hideLabel, helperText: !hideHelperText ? helperText : "", disabled: disabled }, h("slot", { key: '4a993ddc9a3923e4fbe58f4abfd1d6f51ef63494', name: "helper-text", slot: "helper-text" }))), h("span", { key: 'de2889971bef74376661a3fb0963c9bc88673e12', id: this.screenReaderInfoId, class: "sr-only", "aria-hidden": "true" }, this.getScreenReaderInfo(validationStatus), hideLabel && `${label}\n`, hideHelperText && `${helperText}\n`, `${this.defaultHelperText}.`), h("span", { key: 'b68b686d6794d6ad1247f18c867b1652066b48da', id: this.assistiveHintId, class: "sr-only", "aria-hidden": "true" }, assistiveHint), h("span", { key: '56557e76da321f937be614926cd3f41b4c9a09a8', id: "live-region", "aria-live": "assertive", class: "sr-only" }), h("div", { key: '89cbb13ffe21d66fd82a28ad6b5b295cf68c5787', class: {
|
|
1202
|
+
"with-am-pm-toggle": this.showAmPmToggle === true,
|
|
1203
|
+
} }, h("ic-input-component-container", { key: '03a61c8d72f43d68f81069327aa31b632bfee74d', id: inputId, ref: (el) => (this.inputCompContainerEl = el), disabled: disabled, validationStatus: validationStatus, size: size, role: "group", class: { [`ic-theme-${theme}`]: theme !== "inherit" } }, h("div", { key: '0fdf9d4191272a8b53e73d6230e10750032d5279', class: "input-container" }, h("div", { key: 'c7b13f330ec67b48e817f4b87fff96ad6ad6102e', class: "time-inputs" }, [
|
|
915
1204
|
this.getInputsInOrder()[0],
|
|
916
1205
|
":",
|
|
917
1206
|
this.getInputsInOrder()[1],
|
|
918
1207
|
!this.isHHMMFormat()
|
|
919
1208
|
? [":", this.getInputsInOrder()[2]]
|
|
920
1209
|
: null,
|
|
921
|
-
|
|
1210
|
+
this.isSSSFormat()
|
|
1211
|
+
? [".", this.getInputsInOrder()[3]]
|
|
1212
|
+
: null,
|
|
1213
|
+
]), h("div", { key: 'caf4926b8008875a111f6bb3aa0815cfb2e10768', class: "action-buttons" }, showClearButton && (h("ic-button", { key: '9883c16dc3d60c6ea4d9d3cc3e4a770479339879', id: "clear-button", "aria-label": "Clear input", class: {
|
|
922
1214
|
["clear-button"]: true,
|
|
923
1215
|
["hidden"]: isEmptyString(this.hour) &&
|
|
924
1216
|
isEmptyString(this.minute) &&
|
|
925
1217
|
isEmptyString(this.second),
|
|
926
|
-
}, disabled: this.disabled, innerHTML: Clear, onClick: this.handleClear, onFocus: this.handleClearFocus, onBlur: this.handleClearBlur, variant: "icon-tertiary", theme: this.clearButtonFocused ? "light" : "dark", size: size })), showClockButton && (h("div", { key: '
|
|
1218
|
+
}, disabled: this.disabled, innerHTML: Clear, onClick: this.handleClear, onFocus: this.handleClearFocus, onBlur: this.handleClearBlur, variant: "icon-tertiary", theme: this.clearButtonFocused ? "light" : "dark", size: size })), showClockButton && (h("div", { key: '9ace5895419381c300bbdc5c8ef2eeacad05b63b', class: "show-clock-button-wrapper" }, h("div", { key: 'dfa2a5bbf9e7bd74353d7caf3514861d545d6026', class: { divider: showDivider, [size]: true } }), h("ic-button", { key: '1c36dcf4f02a323aafeb265126e2d1334df077b2', id: "clock-button", "aria-label": "Display clock", "aria-haspopup": "dialog", class: "clock-button", disabled: this.disabled, innerHTML: Clock, variant: "icon-tertiary", size: size, onFocus: this.handleClockFocus, onBlur: this.handleClockBlur, theme: this.clockFocused ? "light" : "dark" })))))), this.showAmPmToggle && (h("ic-toggle-button-group", { key: 'c63749fddcc1b7ed3c394a17a5d1a65aa322f024', "select-type": "single", "accessible-label": "AM PM Toggle", ref: (el) => (this.periodToggleEl = el), disabled: disabled, class: "am-pm-toggle", "select-method": "auto", onIcChange: (e) => this.handleAMPM(e.detail.selectedOption), onKeyDown: (e) => {
|
|
1219
|
+
if (e.key === "Tab" && e.shiftKey) {
|
|
1220
|
+
e.preventDefault();
|
|
1221
|
+
if (this.inputsInOrder && this.inputsInOrder.length > 0) {
|
|
1222
|
+
const lastInput = this.inputsInOrder[this.inputsInOrder.length - 1];
|
|
1223
|
+
lastInput === null || lastInput === void 0 ? void 0 : lastInput.focus();
|
|
1224
|
+
}
|
|
1225
|
+
}
|
|
1226
|
+
} }, h("ic-toggle-button", { key: 'fc731674e7c26846a969768ddc77b94b14c6cca6', label: "AM", disabled: disabled, checked: true }), h("ic-toggle-button", { key: '89e0bd48a39a8e786fcac5e034358edd560f4136', label: "PM", disabled: disabled })))), h("span", { key: '52854ea1dc4a1c4e7783914ff90bf204848a2e6e', id: this.selectedTimeInfoId, class: "sr-only", "aria-live": "polite" }, h("span", { key: '065c89020778df53ae78d037ef62feb189b7fdba', ref: (el) => (this.selectedTimeInfoEl = el), role: "status" })), h("ic-input-validation", { key: 'fc2500bef0e8e077272424a46663a85509a160c3', status: validationStatus, message: hasCustomValidation ? this.validationText : this.invalidTimeText, for: inputId, ariaLiveMode: validationAriaLive }))));
|
|
927
1227
|
}
|
|
928
1228
|
static get is() { return "ic-time-input"; }
|
|
929
1229
|
static get encapsulation() { return "shadow"; }
|
|
@@ -996,7 +1296,7 @@ export class TimeInput {
|
|
|
996
1296
|
"optional": true,
|
|
997
1297
|
"docs": {
|
|
998
1298
|
"tags": [],
|
|
999
|
-
"text": "If `true`, every individual input field completed will emit an
|
|
1299
|
+
"text": "If `true`, every individual input field completed will emit an icTimeChange event."
|
|
1000
1300
|
},
|
|
1001
1301
|
"getter": false,
|
|
1002
1302
|
"setter": false,
|
|
@@ -1212,6 +1512,26 @@ export class TimeInput {
|
|
|
1212
1512
|
"reflect": false,
|
|
1213
1513
|
"defaultValue": "false"
|
|
1214
1514
|
},
|
|
1515
|
+
"showAmPmToggle": {
|
|
1516
|
+
"type": "boolean",
|
|
1517
|
+
"mutable": true,
|
|
1518
|
+
"complexType": {
|
|
1519
|
+
"original": "boolean",
|
|
1520
|
+
"resolved": "boolean | undefined",
|
|
1521
|
+
"references": {}
|
|
1522
|
+
},
|
|
1523
|
+
"required": false,
|
|
1524
|
+
"optional": true,
|
|
1525
|
+
"docs": {
|
|
1526
|
+
"tags": [],
|
|
1527
|
+
"text": "If `true`, the time input will show an AM/PM toggle when in 12-hour time period."
|
|
1528
|
+
},
|
|
1529
|
+
"getter": false,
|
|
1530
|
+
"setter": false,
|
|
1531
|
+
"attribute": "show-am-pm-toggle",
|
|
1532
|
+
"reflect": false,
|
|
1533
|
+
"defaultValue": "false"
|
|
1534
|
+
},
|
|
1215
1535
|
"showClearButton": {
|
|
1216
1536
|
"type": "boolean",
|
|
1217
1537
|
"mutable": false,
|
|
@@ -1312,7 +1632,7 @@ export class TimeInput {
|
|
|
1312
1632
|
"mutable": false,
|
|
1313
1633
|
"complexType": {
|
|
1314
1634
|
"original": "IcTimeFormat",
|
|
1315
|
-
"resolved": "\"HH:MM\" | \"HH:MM:SS\"",
|
|
1635
|
+
"resolved": "\"HH:MM\" | \"HH:MM:SS\" | \"HH:MM:SS.SSS\"",
|
|
1316
1636
|
"references": {
|
|
1317
1637
|
"IcTimeFormat": {
|
|
1318
1638
|
"location": "import",
|
|
@@ -1461,7 +1781,9 @@ export class TimeInput {
|
|
|
1461
1781
|
"removeLabelledBy": {},
|
|
1462
1782
|
"hour": {},
|
|
1463
1783
|
"minute": {},
|
|
1464
|
-
"second": {}
|
|
1784
|
+
"second": {},
|
|
1785
|
+
"millisecond": {},
|
|
1786
|
+
"period": {}
|
|
1465
1787
|
};
|
|
1466
1788
|
}
|
|
1467
1789
|
static get events() {
|
|
@@ -1509,8 +1831,8 @@ export class TimeInput {
|
|
|
1509
1831
|
}
|
|
1510
1832
|
}
|
|
1511
1833
|
}, {
|
|
1512
|
-
"method": "
|
|
1513
|
-
"name": "
|
|
1834
|
+
"method": "icTimeChange",
|
|
1835
|
+
"name": "icTimeChange",
|
|
1514
1836
|
"bubbles": true,
|
|
1515
1837
|
"cancelable": true,
|
|
1516
1838
|
"composed": true,
|
|
@@ -1519,8 +1841,8 @@ export class TimeInput {
|
|
|
1519
1841
|
"text": "Emitted when the value has changed."
|
|
1520
1842
|
},
|
|
1521
1843
|
"complexType": {
|
|
1522
|
-
"original": "{\n value: Date | null;\n timeObject: {\n hour: string | null;\n minute: string | null;\n second: string | null;\n };\n }",
|
|
1523
|
-
"resolved": "{ value: Date | null; timeObject: { hour: string | null; minute: string | null; second: string | null; }; }",
|
|
1844
|
+
"original": "{\n value: Date | null;\n timeObject: {\n hour: string | null;\n minute: string | null;\n second: string | null;\n millisecond: string | null;\n period: string | null;\n };\n }",
|
|
1845
|
+
"resolved": "{ value: Date | null; timeObject: { hour: string | null; minute: string | null; second: string | null; millisecond: string | null; period: string | null; }; }",
|
|
1524
1846
|
"references": {
|
|
1525
1847
|
"Date": {
|
|
1526
1848
|
"location": "global",
|
|
@@ -1576,7 +1898,7 @@ export class TimeInput {
|
|
|
1576
1898
|
}]
|
|
1577
1899
|
}
|
|
1578
1900
|
},
|
|
1579
|
-
"
|
|
1901
|
+
"triggerIcTimeChange": {
|
|
1580
1902
|
"complexType": {
|
|
1581
1903
|
"signature": "(t: Date | null) => Promise<void>",
|
|
1582
1904
|
"parameters": [{
|
|
@@ -1600,7 +1922,7 @@ export class TimeInput {
|
|
|
1600
1922
|
"text": "",
|
|
1601
1923
|
"tags": [{
|
|
1602
1924
|
"name": "internal",
|
|
1603
|
-
"text": "Used to enable other components to invoke an
|
|
1925
|
+
"text": "Used to enable other components to invoke an icTimeChange event from the input."
|
|
1604
1926
|
}]
|
|
1605
1927
|
}
|
|
1606
1928
|
}
|
|
@@ -1617,6 +1939,12 @@ export class TimeInput {
|
|
|
1617
1939
|
}, {
|
|
1618
1940
|
"propName": "second",
|
|
1619
1941
|
"methodName": "watchInputHandler"
|
|
1942
|
+
}, {
|
|
1943
|
+
"propName": "millisecond",
|
|
1944
|
+
"methodName": "watchInputHandler"
|
|
1945
|
+
}, {
|
|
1946
|
+
"propName": "period",
|
|
1947
|
+
"methodName": "watchInputHandler"
|
|
1620
1948
|
}, {
|
|
1621
1949
|
"propName": "disabled",
|
|
1622
1950
|
"methodName": "watchDisabledHandler"
|