@ukic/canary-web-components 3.0.0-canary.30 → 3.0.0-canary.31
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/date-helpers-d7ee7b45.js.map +1 -1
- package/dist/cjs/{helpers-da852478.js → helpers-6f4b406b.js} +20 -20
- package/dist/cjs/helpers-6f4b406b.js.map +1 -0
- package/dist/cjs/ic-button_3.cjs.entry.js +5 -5
- package/dist/cjs/ic-button_3.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-calendar_2.cjs.entry.js +2354 -0
- package/dist/cjs/ic-calendar_2.cjs.entry.js.map +1 -0
- package/dist/cjs/ic-card-horizontal.cjs.entry.js +6 -6
- package/dist/cjs/ic-card-horizontal.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-checkbox-group.cjs.entry.js +2 -2
- package/dist/cjs/ic-checkbox-group.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-checkbox_3.cjs.entry.js +39 -16
- package/dist/cjs/ic-checkbox_3.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-data-list.cjs.entry.js +2 -2
- package/dist/cjs/ic-data-list.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-data-row.cjs.entry.js +2 -2
- package/dist/cjs/ic-data-row.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-data-table-title-bar.cjs.entry.js +4 -4
- package/dist/cjs/ic-data-table.cjs.entry.js +8 -8
- package/dist/cjs/ic-date-picker.cjs.entry.js +98 -854
- package/dist/cjs/ic-date-picker.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-dialog.cjs.entry.js +1 -1
- package/dist/cjs/ic-dialog.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-footer-link.cjs.entry.js +2 -2
- package/dist/cjs/ic-footer-link.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-hero.cjs.entry.js +11 -6
- package/dist/cjs/ic-hero.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-horizontal-scroll.cjs.entry.js +5 -5
- package/dist/cjs/ic-horizontal-scroll.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-input-component-container_4.cjs.entry.js +10 -10
- package/dist/cjs/ic-input-component-container_4.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-layout-grid-item.cjs.entry.js +2 -2
- package/dist/cjs/ic-layout-grid-item.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-layout-grid.cjs.entry.js +2 -2
- package/dist/cjs/ic-layout-grid.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-link.cjs.entry.js +1 -1
- package/dist/cjs/ic-link.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-menu-group.cjs.entry.js +1 -1
- package/dist/cjs/ic-menu-group.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-menu.cjs.entry.js +3 -3
- 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-menu.cjs.entry.js +4 -4
- package/dist/cjs/ic-navigation-menu.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-page-header.cjs.entry.js +6 -6
- package/dist/cjs/ic-page-header.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-pagination_4.cjs.entry.js +18 -18
- package/dist/cjs/ic-pagination_4.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-popover-menu.cjs.entry.js +4 -4
- package/dist/cjs/ic-popover-menu.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-radio-group.cjs.entry.js +4 -4
- package/dist/cjs/ic-radio-group.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-radio-option.cjs.entry.js +4 -4
- package/dist/cjs/ic-radio-option.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-search-bar.cjs.entry.js +9 -9
- package/dist/cjs/ic-search-bar.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-section-container.cjs.entry.js +2 -2
- package/dist/cjs/ic-section-container.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-side-navigation.cjs.entry.js +4 -4
- package/dist/cjs/ic-side-navigation.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-skeleton.cjs.entry.js +2 -2
- package/dist/cjs/ic-skeleton.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-skip-link.cjs.entry.js +2 -2
- package/dist/cjs/ic-skip-link.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-status-tag.cjs.entry.js +2 -2
- package/dist/cjs/ic-status-tag.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-step.cjs.entry.js +13 -13
- package/dist/cjs/ic-step.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-stepper.cjs.entry.js +2 -2
- package/dist/cjs/ic-stepper.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-switch.cjs.entry.js +4 -4
- 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-context.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-tab-group.cjs.entry.js +2 -2
- package/dist/cjs/ic-tab-group.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-tab-panel.cjs.entry.js +2 -2
- package/dist/cjs/ic-tab-panel.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-table-of-contents.cjs.entry.js +4 -4
- package/dist/cjs/ic-theme.cjs.entry.js +1 -1
- package/dist/cjs/ic-theme.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-time-input.cjs.entry.js +5 -5
- package/dist/cjs/ic-time-input.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-toast-region.cjs.entry.js +1 -1
- package/dist/cjs/ic-toast-region.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-toast.cjs.entry.js +4 -4
- package/dist/cjs/ic-toast.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-toggle-button-group.cjs.entry.js +2 -2
- package/dist/cjs/ic-toggle-button-group.cjs.entry.js.map +1 -1
- package/dist/cjs/ic-toggle-button.cjs.entry.js +2 -2
- package/dist/cjs/ic-toggle-button.cjs.entry.js.map +1 -1
- 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 +4 -4
- 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 +910 -0
- package/dist/collection/components/ic-calendar/ic-calendar.js +1542 -0
- package/dist/collection/components/ic-calendar/ic-calendar.js.map +1 -0
- package/dist/collection/components/ic-calendar/ic-calendar.stories.js +295 -0
- package/dist/collection/components/ic-calendar/ic-calendar.stories.js.map +1 -0
- package/dist/collection/components/ic-calendar/ic-day-button.js.map +1 -0
- package/dist/collection/components/ic-calendar/ic-month-picker.js +35 -0
- package/dist/collection/components/ic-calendar/ic-month-picker.js.map +1 -0
- package/dist/collection/components/ic-calendar/ic-year-picker.js +57 -0
- package/dist/collection/components/ic-calendar/ic-year-picker.js.map +1 -0
- package/dist/collection/components/ic-calendar/test/a11y/ic-calendar.test.a11y.js +13 -0
- package/dist/collection/components/ic-calendar/test/a11y/ic-calendar.test.a11y.js.map +1 -0
- package/dist/collection/components/ic-card-horizontal/ic-card-horizontal.js +6 -6
- package/dist/collection/components/ic-card-horizontal/ic-card-horizontal.js.map +1 -1
- package/dist/collection/components/ic-data-table/ic-data-table.js +7 -7
- package/dist/collection/components/ic-data-table-title-bar/ic-data-table-title-bar.js +3 -3
- package/dist/collection/components/ic-date-input/ic-date-input.js +8 -7
- package/dist/collection/components/ic-date-input/ic-date-input.js.map +1 -1
- package/dist/collection/components/ic-date-picker/ic-date-picker.css +7 -405
- package/dist/collection/components/ic-date-picker/ic-date-picker.js +145 -802
- package/dist/collection/components/ic-date-picker/ic-date-picker.js.map +1 -1
- package/dist/collection/components/ic-date-picker/ic-date-picker.stories.js +110 -0
- package/dist/collection/components/ic-date-picker/ic-date-picker.stories.js.map +1 -1
- package/dist/collection/components/ic-date-picker/story-data.js +5 -1
- package/dist/collection/components/ic-date-picker/story-data.js.map +1 -1
- package/dist/collection/components/ic-pagination-bar/ic-pagination-bar.js +7 -7
- package/dist/collection/components/ic-pagination-bar/ic-pagination-bar.js.map +1 -1
- package/dist/collection/components/ic-table-of-contents/ic-table-of-contents.js +3 -3
- package/dist/collection/components/ic-time-input/ic-time-input.js +9 -8
- package/dist/collection/components/ic-time-input/ic-time-input.js.map +1 -1
- 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/date-helpers.js +3 -0
- package/dist/collection/utils/date-helpers.js.map +1 -1
- package/dist/collection/utils/types.js.map +1 -1
- package/dist/{esm/date-helpers-2b531c8c.js → components/date-helpers.js} +2 -2
- package/dist/components/date-helpers.js.map +1 -0
- package/dist/components/helpers2.js +20 -20
- package/dist/components/helpers2.js.map +1 -1
- package/dist/components/ic-calendar.d.ts +11 -0
- package/dist/components/ic-calendar.js +8 -0
- package/dist/components/ic-calendar.js.map +1 -0
- package/dist/components/ic-calendar2.js +1235 -0
- package/dist/components/ic-calendar2.js.map +1 -0
- package/dist/components/ic-card-horizontal.js +6 -6
- package/dist/components/ic-card-horizontal.js.map +1 -1
- package/dist/components/ic-checkbox-group.js +2 -2
- package/dist/components/ic-checkbox-group.js.map +1 -1
- package/dist/components/ic-checkbox2.js +31 -8
- package/dist/components/ic-checkbox2.js.map +1 -1
- package/dist/components/ic-data-list.js +2 -2
- package/dist/components/ic-data-list.js.map +1 -1
- package/dist/components/ic-data-row.js +2 -2
- package/dist/components/ic-data-row.js.map +1 -1
- package/dist/components/ic-data-table-title-bar.js +3 -3
- package/dist/components/ic-data-table.js +8 -8
- package/dist/components/ic-date-input2.js +6 -88
- package/dist/components/ic-date-input2.js.map +1 -1
- package/dist/components/ic-date-picker.js +113 -880
- package/dist/components/ic-date-picker.js.map +1 -1
- package/dist/components/ic-dialog.js +1 -1
- package/dist/components/ic-dialog.js.map +1 -1
- package/dist/components/ic-empty-state2.js +2 -2
- package/dist/components/ic-empty-state2.js.map +1 -1
- package/dist/components/ic-footer-link.js +2 -2
- package/dist/components/ic-footer-link.js.map +1 -1
- package/dist/components/ic-hero.js +12 -6
- package/dist/components/ic-hero.js.map +1 -1
- package/dist/components/ic-horizontal-scroll2.js +5 -5
- package/dist/components/ic-horizontal-scroll2.js.map +1 -1
- package/dist/components/ic-input-component-container2.js +3 -3
- package/dist/components/ic-input-component-container2.js.map +1 -1
- package/dist/components/ic-input-container2.js +2 -2
- package/dist/components/ic-input-container2.js.map +1 -1
- package/dist/components/ic-input-label2.js +2 -2
- package/dist/components/ic-input-label2.js.map +1 -1
- package/dist/components/ic-input-validation2.js +3 -3
- package/dist/components/ic-input-validation2.js.map +1 -1
- package/dist/components/ic-layout-grid-item.js +2 -2
- package/dist/components/ic-layout-grid-item.js.map +1 -1
- package/dist/components/ic-layout-grid.js +2 -2
- package/dist/components/ic-layout-grid.js.map +1 -1
- package/dist/components/ic-link2.js +1 -1
- package/dist/components/ic-link2.js.map +1 -1
- package/dist/components/ic-loading-indicator2.js +5 -5
- package/dist/components/ic-loading-indicator2.js.map +1 -1
- package/dist/components/ic-menu-group.js +1 -1
- package/dist/components/ic-menu-group.js.map +1 -1
- package/dist/components/ic-menu2.js +3 -3
- 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-menu2.js +4 -4
- package/dist/components/ic-navigation-menu2.js.map +1 -1
- package/dist/components/ic-page-header.js +6 -6
- package/dist/components/ic-page-header.js.map +1 -1
- package/dist/components/ic-pagination-bar2.js +6 -6
- package/dist/components/ic-pagination-bar2.js.map +1 -1
- package/dist/components/ic-pagination-item2.js +1 -1
- package/dist/components/ic-pagination-item2.js.map +1 -1
- package/dist/components/ic-pagination2.js +4 -4
- package/dist/components/ic-pagination2.js.map +1 -1
- package/dist/components/ic-popover-menu.js +4 -4
- package/dist/components/ic-popover-menu.js.map +1 -1
- package/dist/components/ic-radio-group.js +4 -4
- package/dist/components/ic-radio-group.js.map +1 -1
- package/dist/components/ic-radio-option.js +4 -4
- package/dist/components/ic-radio-option.js.map +1 -1
- package/dist/components/ic-search-bar.js +9 -9
- package/dist/components/ic-search-bar.js.map +1 -1
- package/dist/components/ic-section-container2.js +2 -2
- package/dist/components/ic-section-container2.js.map +1 -1
- package/dist/components/ic-select2.js +7 -7
- package/dist/components/ic-select2.js.map +1 -1
- package/dist/components/ic-side-navigation.js +4 -4
- 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-skip-link.js.map +1 -1
- package/dist/components/ic-status-tag.js +2 -2
- package/dist/components/ic-status-tag.js.map +1 -1
- package/dist/components/ic-step.js +13 -13
- package/dist/components/ic-step.js.map +1 -1
- package/dist/components/ic-stepper.js +2 -2
- package/dist/components/ic-stepper.js.map +1 -1
- package/dist/components/ic-switch.js +4 -4
- package/dist/components/ic-switch.js.map +1 -1
- package/dist/components/ic-tab-context.js +1 -1
- package/dist/components/ic-tab-context.js.map +1 -1
- package/dist/components/ic-tab-group.js +2 -2
- package/dist/components/ic-tab-group.js.map +1 -1
- package/dist/components/ic-tab-panel.js +2 -2
- package/dist/components/ic-tab-panel.js.map +1 -1
- package/dist/components/ic-table-of-contents.js +3 -3
- package/dist/components/ic-text-field2.js +6 -6
- package/dist/components/ic-text-field2.js.map +1 -1
- package/dist/components/ic-theme.js +1 -1
- package/dist/components/ic-theme.js.map +1 -1
- package/dist/components/ic-time-input.js +5 -5
- package/dist/components/ic-time-input.js.map +1 -1
- package/dist/components/ic-toast-region.js +1 -1
- package/dist/components/ic-toast-region.js.map +1 -1
- package/dist/components/ic-toast.js +4 -4
- package/dist/components/ic-toast.js.map +1 -1
- package/dist/components/ic-toggle-button-group.js +2 -2
- package/dist/components/ic-toggle-button-group.js.map +1 -1
- package/dist/components/ic-toggle-button.js +2 -2
- package/dist/components/ic-toggle-button.js.map +1 -1
- package/dist/components/ic-tree-item.js +3 -3
- package/dist/components/ic-tree-view.js +4 -4
- package/dist/core/core.css +21 -9
- package/dist/core/core.esm.js +1 -1
- package/dist/core/core.esm.js.map +1 -1
- package/dist/core/{p-9fade6ad.entry.js → p-0043b019.entry.js} +2 -2
- package/dist/core/{p-9fade6ad.entry.js.map → p-0043b019.entry.js.map} +1 -1
- package/dist/core/{p-889bb8db.entry.js → p-04cb17d7.entry.js} +2 -2
- package/dist/core/{p-889bb8db.entry.js.map → p-04cb17d7.entry.js.map} +1 -1
- package/dist/core/{p-5ef453b6.entry.js → p-15c05eb8.entry.js} +2 -2
- package/dist/core/{p-5ef453b6.entry.js.map → p-15c05eb8.entry.js.map} +1 -1
- package/dist/core/p-1a976789.entry.js +2 -0
- package/dist/core/p-1a976789.entry.js.map +1 -0
- package/dist/core/{p-1be092cc.entry.js → p-2188b483.entry.js} +2 -2
- package/dist/core/{p-1be092cc.entry.js.map → p-2188b483.entry.js.map} +1 -1
- package/dist/core/{p-8c94541e.entry.js → p-24bac55f.entry.js} +2 -2
- package/dist/core/{p-8c94541e.entry.js.map → p-24bac55f.entry.js.map} +1 -1
- package/dist/core/{p-7f304d85.entry.js → p-2646a629.entry.js} +2 -2
- package/dist/core/{p-7f304d85.entry.js.map → p-2646a629.entry.js.map} +1 -1
- package/dist/core/{p-5cf704e3.entry.js → p-319e3d5b.entry.js} +2 -2
- package/dist/core/{p-5cf704e3.entry.js.map → p-319e3d5b.entry.js.map} +1 -1
- package/dist/core/{p-9e200827.entry.js → p-31f3fb15.entry.js} +2 -2
- package/dist/core/{p-9e200827.entry.js.map → p-31f3fb15.entry.js.map} +1 -1
- package/dist/core/{p-fd64c0e5.entry.js → p-3891ce53.entry.js} +2 -2
- package/dist/core/{p-fd64c0e5.entry.js.map → p-3891ce53.entry.js.map} +1 -1
- package/dist/core/{p-fad44bc8.entry.js → p-3ba2b455.entry.js} +2 -2
- package/dist/core/{p-fad44bc8.entry.js.map → p-3ba2b455.entry.js.map} +1 -1
- package/dist/core/{p-df220b91.entry.js → p-3ef2e98d.entry.js} +2 -2
- package/dist/core/{p-03ae0bc3.entry.js → p-41def410.entry.js} +2 -2
- package/dist/core/{p-03ae0bc3.entry.js.map → p-41def410.entry.js.map} +1 -1
- package/dist/core/p-4b188516.entry.js +2 -0
- package/dist/core/p-4b188516.entry.js.map +1 -0
- package/dist/core/{p-93e1ba0a.entry.js → p-5254a078.entry.js} +2 -2
- package/dist/core/{p-93e1ba0a.entry.js.map → p-5254a078.entry.js.map} +1 -1
- package/dist/core/{p-9c2e9189.entry.js → p-53740194.entry.js} +2 -2
- package/dist/core/{p-9c2e9189.entry.js.map → p-53740194.entry.js.map} +1 -1
- package/dist/core/{p-e380a54e.entry.js → p-5a4344cb.entry.js} +2 -2
- package/dist/core/{p-e380a54e.entry.js.map → p-5a4344cb.entry.js.map} +1 -1
- package/dist/core/p-5b32aaf3.entry.js +2 -0
- package/dist/core/p-5b32aaf3.entry.js.map +1 -0
- package/dist/core/{p-d8200098.entry.js → p-67c3985d.entry.js} +2 -2
- package/dist/core/{p-d8200098.entry.js.map → p-67c3985d.entry.js.map} +1 -1
- package/dist/core/{p-982a173d.entry.js → p-7332320d.entry.js} +2 -2
- package/dist/core/{p-982a173d.entry.js.map → p-7332320d.entry.js.map} +1 -1
- package/dist/core/{p-bc441e4c.js → p-75c3b882.js} +2 -2
- package/dist/core/{p-bc441e4c.js.map → p-75c3b882.js.map} +1 -1
- package/dist/core/{p-b88db5e3.entry.js → p-7a0f62c2.entry.js} +2 -2
- package/dist/core/{p-b88db5e3.entry.js.map → p-7a0f62c2.entry.js.map} +1 -1
- package/dist/core/p-81f12581.entry.js +2 -0
- package/dist/core/p-81f12581.entry.js.map +1 -0
- package/dist/core/{p-193afb53.entry.js → p-847cbb16.entry.js} +2 -2
- package/dist/core/{p-193afb53.entry.js.map → p-847cbb16.entry.js.map} +1 -1
- package/dist/core/{p-f3ccaa0b.entry.js → p-8e592393.entry.js} +2 -2
- package/dist/core/{p-f3ccaa0b.entry.js.map → p-8e592393.entry.js.map} +1 -1
- package/dist/core/p-9044539c.entry.js +2 -0
- package/dist/core/p-9044539c.entry.js.map +1 -0
- package/dist/core/{p-f4e7cae6.entry.js → p-90611726.entry.js} +2 -2
- package/dist/core/{p-f4e7cae6.entry.js.map → p-90611726.entry.js.map} +1 -1
- package/dist/core/{p-b00efb15.entry.js → p-9674b63f.entry.js} +2 -2
- package/dist/core/{p-b00efb15.entry.js.map → p-9674b63f.entry.js.map} +1 -1
- package/dist/core/{p-a27e1cee.entry.js → p-9a95f428.entry.js} +2 -2
- package/dist/core/{p-a27e1cee.entry.js.map → p-9a95f428.entry.js.map} +1 -1
- package/dist/core/{p-fb43abd6.entry.js → p-9ca147f3.entry.js} +2 -2
- package/dist/core/{p-fb43abd6.entry.js.map → p-9ca147f3.entry.js.map} +1 -1
- package/dist/core/{p-a8cc28a6.entry.js → p-9f76eed6.entry.js} +2 -2
- package/dist/core/{p-035dbee0.entry.js → p-a1448064.entry.js} +2 -2
- package/dist/core/{p-035dbee0.entry.js.map → p-a1448064.entry.js.map} +1 -1
- package/dist/core/{p-9ce9d39a.entry.js → p-a237af88.entry.js} +2 -2
- package/dist/core/{p-9ce9d39a.entry.js.map → p-a237af88.entry.js.map} +1 -1
- package/dist/core/{p-09c31ac6.entry.js → p-adde6c66.entry.js} +2 -2
- package/dist/core/{p-09c31ac6.entry.js.map → p-adde6c66.entry.js.map} +1 -1
- package/dist/core/{p-72b7051a.entry.js → p-af821831.entry.js} +2 -2
- package/dist/core/{p-72b7051a.entry.js.map → p-af821831.entry.js.map} +1 -1
- package/dist/core/{p-12e8dcdd.entry.js → p-afedcfdb.entry.js} +2 -2
- package/dist/core/{p-12e8dcdd.entry.js.map → p-afedcfdb.entry.js.map} +1 -1
- package/dist/core/{p-f098e531.entry.js → p-b4a2f6fa.entry.js} +2 -2
- package/dist/core/{p-f098e531.entry.js.map → p-b4a2f6fa.entry.js.map} +1 -1
- package/dist/core/p-b4bfaf8f.entry.js +2 -0
- package/dist/core/p-b4bfaf8f.entry.js.map +1 -0
- package/dist/core/{p-ea1de762.entry.js → p-b80b08ae.entry.js} +2 -2
- package/dist/core/p-b80b08ae.entry.js.map +1 -0
- package/dist/core/{p-7bf9bbde.entry.js → p-ba21f477.entry.js} +2 -2
- package/dist/core/{p-7bf9bbde.entry.js.map → p-ba21f477.entry.js.map} +1 -1
- package/dist/core/{p-63203e59.entry.js → p-ba75ed34.entry.js} +2 -2
- package/dist/core/{p-63203e59.entry.js.map → p-ba75ed34.entry.js.map} +1 -1
- package/dist/core/{p-15a81f32.entry.js → p-bd9a76d8.entry.js} +2 -2
- package/dist/core/{p-15a81f32.entry.js.map → p-bd9a76d8.entry.js.map} +1 -1
- package/dist/core/{p-10950727.entry.js → p-c3eddb99.entry.js} +2 -2
- package/dist/core/{p-10950727.entry.js.map → p-c3eddb99.entry.js.map} +1 -1
- package/dist/core/{p-a99ad459.entry.js → p-c5d65718.entry.js} +2 -2
- package/dist/core/{p-a99ad459.entry.js.map → p-c5d65718.entry.js.map} +1 -1
- package/dist/core/{p-eb958cc8.entry.js → p-c6c87e58.entry.js} +2 -2
- package/dist/core/{p-eb958cc8.entry.js.map → p-c6c87e58.entry.js.map} +1 -1
- package/dist/core/{p-c8ce7d60.entry.js → p-e00e67ff.entry.js} +2 -2
- package/dist/core/{p-c8ce7d60.entry.js.map → p-e00e67ff.entry.js.map} +1 -1
- package/dist/core/{p-069e758b.entry.js → p-e1920777.entry.js} +2 -2
- package/dist/core/{p-92936b49.entry.js → p-ef5b6622.entry.js} +2 -2
- package/dist/core/{p-0f22f41e.js → p-f48ce5f6.js} +2 -2
- package/dist/core/p-f48ce5f6.js.map +1 -0
- package/dist/core/{p-1ca62941.entry.js → p-f5cea10d.entry.js} +2 -2
- package/dist/esm/core.js +1 -1
- package/dist/esm/date-helpers-5723de08.js +86 -0
- package/dist/esm/{date-helpers-2b531c8c.js.map → date-helpers-5723de08.js.map} +1 -1
- package/dist/esm/{helpers-89cb996d.js → helpers-9f228880.js} +21 -21
- package/dist/esm/helpers-9f228880.js.map +1 -0
- package/dist/esm/ic-button_3.entry.js +5 -5
- package/dist/esm/ic-button_3.entry.js.map +1 -1
- package/dist/esm/ic-calendar_2.entry.js +2349 -0
- package/dist/esm/ic-calendar_2.entry.js.map +1 -0
- package/dist/esm/ic-card-horizontal.entry.js +6 -6
- package/dist/esm/ic-card-horizontal.entry.js.map +1 -1
- package/dist/esm/ic-checkbox-group.entry.js +2 -2
- package/dist/esm/ic-checkbox-group.entry.js.map +1 -1
- package/dist/esm/ic-checkbox_3.entry.js +39 -16
- package/dist/esm/ic-checkbox_3.entry.js.map +1 -1
- package/dist/esm/ic-data-list.entry.js +2 -2
- package/dist/esm/ic-data-list.entry.js.map +1 -1
- package/dist/esm/ic-data-row.entry.js +2 -2
- package/dist/esm/ic-data-row.entry.js.map +1 -1
- package/dist/esm/ic-data-table-title-bar.entry.js +4 -4
- package/dist/esm/ic-data-table.entry.js +8 -8
- package/dist/esm/ic-date-picker.entry.js +100 -856
- package/dist/esm/ic-date-picker.entry.js.map +1 -1
- package/dist/esm/ic-dialog.entry.js +1 -1
- package/dist/esm/ic-dialog.entry.js.map +1 -1
- package/dist/esm/ic-footer-link.entry.js +2 -2
- package/dist/esm/ic-footer-link.entry.js.map +1 -1
- package/dist/esm/ic-hero.entry.js +11 -6
- package/dist/esm/ic-hero.entry.js.map +1 -1
- package/dist/esm/ic-horizontal-scroll.entry.js +5 -5
- package/dist/esm/ic-horizontal-scroll.entry.js.map +1 -1
- package/dist/esm/ic-input-component-container_4.entry.js +10 -10
- package/dist/esm/ic-input-component-container_4.entry.js.map +1 -1
- package/dist/esm/ic-layout-grid-item.entry.js +2 -2
- package/dist/esm/ic-layout-grid-item.entry.js.map +1 -1
- package/dist/esm/ic-layout-grid.entry.js +2 -2
- package/dist/esm/ic-layout-grid.entry.js.map +1 -1
- package/dist/esm/ic-link.entry.js +1 -1
- package/dist/esm/ic-link.entry.js.map +1 -1
- package/dist/esm/ic-menu-group.entry.js +1 -1
- package/dist/esm/ic-menu-group.entry.js.map +1 -1
- package/dist/esm/ic-menu.entry.js +3 -3
- package/dist/esm/ic-menu.entry.js.map +1 -1
- package/dist/esm/ic-navigation-group.entry.js +1 -1
- package/dist/esm/ic-navigation-group.entry.js.map +1 -1
- package/dist/esm/ic-navigation-menu.entry.js +4 -4
- package/dist/esm/ic-navigation-menu.entry.js.map +1 -1
- package/dist/esm/ic-page-header.entry.js +6 -6
- package/dist/esm/ic-page-header.entry.js.map +1 -1
- package/dist/esm/ic-pagination_4.entry.js +18 -18
- package/dist/esm/ic-pagination_4.entry.js.map +1 -1
- package/dist/esm/ic-popover-menu.entry.js +4 -4
- package/dist/esm/ic-popover-menu.entry.js.map +1 -1
- package/dist/esm/ic-radio-group.entry.js +4 -4
- package/dist/esm/ic-radio-group.entry.js.map +1 -1
- package/dist/esm/ic-radio-option.entry.js +4 -4
- package/dist/esm/ic-radio-option.entry.js.map +1 -1
- package/dist/esm/ic-search-bar.entry.js +9 -9
- package/dist/esm/ic-search-bar.entry.js.map +1 -1
- package/dist/esm/ic-section-container.entry.js +2 -2
- package/dist/esm/ic-section-container.entry.js.map +1 -1
- package/dist/esm/ic-side-navigation.entry.js +4 -4
- package/dist/esm/ic-side-navigation.entry.js.map +1 -1
- package/dist/esm/ic-skeleton.entry.js +2 -2
- package/dist/esm/ic-skeleton.entry.js.map +1 -1
- package/dist/esm/ic-skip-link.entry.js +2 -2
- package/dist/esm/ic-skip-link.entry.js.map +1 -1
- package/dist/esm/ic-status-tag.entry.js +2 -2
- package/dist/esm/ic-status-tag.entry.js.map +1 -1
- package/dist/esm/ic-step.entry.js +13 -13
- package/dist/esm/ic-step.entry.js.map +1 -1
- package/dist/esm/ic-stepper.entry.js +2 -2
- package/dist/esm/ic-stepper.entry.js.map +1 -1
- package/dist/esm/ic-switch.entry.js +4 -4
- 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-context.entry.js.map +1 -1
- package/dist/esm/ic-tab-group.entry.js +2 -2
- package/dist/esm/ic-tab-group.entry.js.map +1 -1
- package/dist/esm/ic-tab-panel.entry.js +2 -2
- package/dist/esm/ic-tab-panel.entry.js.map +1 -1
- package/dist/esm/ic-table-of-contents.entry.js +4 -4
- package/dist/esm/ic-theme.entry.js +1 -1
- package/dist/esm/ic-theme.entry.js.map +1 -1
- package/dist/esm/ic-time-input.entry.js +5 -5
- package/dist/esm/ic-time-input.entry.js.map +1 -1
- package/dist/esm/ic-toast-region.entry.js +1 -1
- package/dist/esm/ic-toast-region.entry.js.map +1 -1
- package/dist/esm/ic-toast.entry.js +4 -4
- package/dist/esm/ic-toast.entry.js.map +1 -1
- package/dist/esm/ic-toggle-button-group.entry.js +2 -2
- package/dist/esm/ic-toggle-button-group.entry.js.map +1 -1
- package/dist/esm/ic-toggle-button.entry.js +2 -2
- package/dist/esm/ic-toggle-button.entry.js.map +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/index-a7a720e7.js +4 -4
- package/dist/esm/loader.js +1 -1
- package/dist/types/components/ic-calendar/ic-calendar.d.ts +216 -0
- package/dist/types/components/ic-calendar/ic-calendar.stories.d.ts +151 -0
- package/dist/types/components/ic-calendar/test/a11y/ic-calendar.test.a11y.d.ts +1 -0
- package/dist/types/components/ic-card-horizontal/ic-card-horizontal.d.ts +1 -2
- package/dist/types/components/ic-date-input/ic-date-input.d.ts +2 -2
- package/dist/types/components/ic-date-picker/ic-date-picker.d.ts +22 -105
- package/dist/types/components/ic-date-picker/ic-date-picker.stories.d.ts +81 -0
- package/dist/types/components/ic-pagination-bar/ic-pagination-bar.d.ts +1 -1
- package/dist/types/components/ic-time-input/ic-time-input.d.ts +2 -2
- package/dist/types/components.d.ts +213 -14
- package/dist/types/utils/date-helpers.d.ts +1 -0
- package/dist/types/utils/types.d.ts +1 -0
- package/hydrate/index.js +2085 -1639
- package/hydrate/index.mjs +2085 -1639
- package/package.json +3 -3
- package/dist/cjs/helpers-da852478.js.map +0 -1
- package/dist/cjs/ic-date-input.cjs.entry.js +0 -1214
- package/dist/cjs/ic-date-input.cjs.entry.js.map +0 -1
- package/dist/collection/components/ic-date-picker/ic-day-button.js.map +0 -1
- package/dist/collection/components/ic-date-picker/ic-month-picker.js +0 -29
- package/dist/collection/components/ic-date-picker/ic-month-picker.js.map +0 -1
- package/dist/collection/components/ic-date-picker/ic-year-picker.js +0 -39
- package/dist/collection/components/ic-date-picker/ic-year-picker.js.map +0 -1
- package/dist/core/p-0f22f41e.js.map +0 -1
- package/dist/core/p-13c8859b.entry.js +0 -2
- package/dist/core/p-13c8859b.entry.js.map +0 -1
- package/dist/core/p-2528ecec.entry.js +0 -2
- package/dist/core/p-2528ecec.entry.js.map +0 -1
- package/dist/core/p-402870f7.entry.js +0 -2
- package/dist/core/p-402870f7.entry.js.map +0 -1
- package/dist/core/p-bd8c2e24.entry.js +0 -2
- package/dist/core/p-bd8c2e24.entry.js.map +0 -1
- package/dist/core/p-c0d4db72.entry.js +0 -2
- package/dist/core/p-c0d4db72.entry.js.map +0 -1
- package/dist/core/p-ea1de762.entry.js.map +0 -1
- package/dist/core/p-f16c4210.entry.js +0 -2
- package/dist/core/p-f16c4210.entry.js.map +0 -1
- package/dist/esm/helpers-89cb996d.js.map +0 -1
- package/dist/esm/ic-date-input.entry.js +0 -1210
- package/dist/esm/ic-date-input.entry.js.map +0 -1
- /package/dist/collection/components/{ic-date-picker → ic-calendar}/ic-day-button.js +0 -0
- /package/dist/core/{p-df220b91.entry.js.map → p-3ef2e98d.entry.js.map} +0 -0
- /package/dist/core/{p-a8cc28a6.entry.js.map → p-9f76eed6.entry.js.map} +0 -0
- /package/dist/core/{p-069e758b.entry.js.map → p-e1920777.entry.js.map} +0 -0
- /package/dist/core/{p-92936b49.entry.js.map → p-ef5b6622.entry.js.map} +0 -0
- /package/dist/core/{p-1ca62941.entry.js.map → p-f5cea10d.entry.js.map} +0 -0
- /package/dist/types/components/{ic-date-picker → ic-calendar}/ic-day-button.d.ts +0 -0
- /package/dist/types/components/{ic-date-picker → ic-calendar}/ic-month-picker.d.ts +0 -0
- /package/dist/types/components/{ic-date-picker → ic-calendar}/ic-year-picker.d.ts +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ic-calendar.js","sourceRoot":"","sources":["../../../../../src/components/ic-calendar/ic-calendar.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Element,\n Event,\n EventEmitter,\n Host,\n h,\n Prop,\n State,\n Watch,\n Method,\n} from \"@stencil/core\";\n\nimport {\n IcDateFormat,\n IcDateInputMonths,\n IcDateValueFormat,\n IcShortDayNames,\n IcSizes,\n IcThemeMode,\n IcWeekDays,\n} from \"../../utils/types\";\n\nimport {\n addSixWeeks,\n clampDate,\n convertToDoubleDigits,\n createDate,\n dateInRange,\n dateMatches,\n getMonthStart,\n getMonthEnd,\n getWeekStart,\n yearInRange,\n} from \"../../utils/date-helpers\";\n\nimport chevron from \"../../assets/chevron-icon.svg\";\n\nimport { DayButton } from \"./ic-day-button\";\nimport { MonthPicker } from \"./ic-month-picker\";\nimport { YearPicker } from \"./ic-year-picker\";\nimport { removeDisabledFalse, stringEnumToArray } from \"../../utils/helpers\";\n\nconst FOCUS_TIMER = 100;\n\n@Component({\n tag: \"ic-calendar\",\n styleUrl: \"ic-calendar.css\",\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class Calendar {\n private clearButtonEl: HTMLIcButtonElement | undefined;\n private daysOfWeek: string[] = [];\n private dayButtonFocussed: boolean = false;\n private dayPickerKeyboardNav: boolean = false;\n private decadeStart: number;\n private decadeEnd: number;\n private dialogDescription: string = \"\";\n private focusDay: boolean = true;\n private focussedYearEl: HTMLIcButtonElement;\n private liveRegionEl?: HTMLElement = undefined;\n private monthButtonEl: HTMLIcButtonElement | undefined;\n private monthNames: string[] = [];\n private monthInViewUpdateHandled: boolean = false;\n private parentIsDatePicker: boolean = false;\n private today = new Date();\n private todayButtonEl: HTMLIcButtonElement | undefined;\n private yearButtonEl: HTMLIcButtonElement | undefined;\n private yearButtonFocussed: boolean = false;\n\n @Element() el: HTMLIcCalendarElement;\n\n @State() clearButtonClicked: boolean = false;\n @State() currMonthView: Date[] = [];\n @State() currYearPickerView: number[] = [];\n @State() decadeView: number[] = [];\n @State() focussedDate: Date | null = null;\n @State() focussedDay: number;\n @State() focussedDayEl: HTMLButtonElement;\n @State() focussedMonth: number;\n @State() focussedMonthEl: HTMLIcButtonElement;\n @State() focussedYear: number;\n @State() maxDate: Date | null = null;\n @State() minDate: Date | null = null;\n @State() monthInView: number;\n @State() monthPickerVisible: boolean = false;\n @State() orderedDaysOfWeek: string[] = [];\n @State() selectedDate: Date | null = null;\n @State() yearInView: number;\n @State() yearPickerVisible: boolean = false;\n\n /**\n * The format in which the date will be displayed.\n */\n @Prop() dateFormat: IcDateFormat = \"DD/MM/YYYY\";\n\n /**\n * If `true`, the disabled state will be set.\n */\n @Prop({ reflect: true }) disabled: boolean = false;\n @Watch(\"disabled\")\n watchDisabledHandler(): void {\n removeDisabledFalse(this.disabled, this.el);\n\n if (this.disabled) {\n this.setSelectedDate(null);\n this.clearButtonEl?.disabled;\n this.todayButtonEl?.disabled;\n } else {\n this.setOpenAtDate();\n }\n }\n\n /**\n * The days of the week to disable.\n */\n @Prop() disableDays?: IcWeekDays[] = [];\n\n /**\n * If `true`, dates in the future are not allowed.\n */\n @Prop() disableFuture?: boolean = false;\n\n @Watch(\"disableFuture\")\n watchDisableFutureHandler(): void {\n this.watchMaxHandler();\n }\n\n /**\n * If `true`, dates in the past are not allowed.\n */\n @Prop() disablePast?: boolean = false;\n\n @Watch(\"disablePast\")\n watchDisablePastHandler(): void {\n this.watchMinHandler();\n }\n\n /**\n * The latest date that will be allowed. The value can be in any format supported as `dateFormat`, in ISO 8601 date string format (`yyyy-mm-dd`) or as a JavaScript `Date` object.\n * The value of this prop is ignored if `disableFuture` is set to `true`.\n */\n @Prop() max: string | Date = \"\";\n @Watch(\"max\")\n watchMaxHandler(): void {\n if (this.disableFuture) {\n this.maxDate = new Date();\n } else {\n this.maxDate = createDate(this.max, this.dateFormat);\n }\n }\n\n /**\n * The earliest date that will be allowed. The value can be in any format supported as `dateFormat`, in ISO 8601 date string format (`yyyy-mm-dd`) or as a JavaScript `Date` object.\n * The value of this prop is ignored if `disablePast` is set to `true`.\n */\n @Prop() min: string | Date = \"\";\n @Watch(\"min\")\n watchMinHandler(): void {\n if (this.disablePast) {\n this.minDate = new Date();\n } else {\n this.minDate = createDate(this.min, this.dateFormat);\n }\n }\n\n /**\n * The date visible when the calendar opens. Used if no date is currently selected.\n * The value can be in any format supported as `dateFormat`, in ISO 8601 date string format (`yyyy-mm-dd`) or as a JavaScript `Date` object.\n */\n @Prop() openAtDate: string | Date = \"\";\n\n /**\n * If `true`, the `Clear` button on the calendar will be visible.\n */\n @Prop() showClearButton?: boolean = true;\n\n /**\n * If `true`, days outside the current month will be visible in the calendar.\n */\n @Prop() showDaysOutsideMonth?: boolean = true;\n\n /**\n * If `true`, the `Go to today` button on the calendar will be visible.\n */\n @Prop() showTodayButton?: boolean = true;\n\n /**\n * The size of the calendar to be displayed.\n */\n @Prop() size: IcSizes = \"medium\";\n\n /**\n * The first day of the week. `0` for Sunday, `1` for Monday, etc.\n * Default is Monday.\n */\n @Prop() startOfWeek: IcWeekDays = IcWeekDays.Monday;\n\n @Watch(\"startOfWeek\")\n watchStartOfWeekHandler(): void {\n this.orderedDaysOfWeek = this.daysOfWeek\n .slice(this.startOfWeek)\n .concat(this.daysOfWeek.slice(0, this.startOfWeek));\n this.updateMonthInView();\n }\n\n /**\n * Sets the calendar 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 value of the calendar and the date visible when the calendar opens.\n * The value can be in any format supported as `dateFormat`, in ISO 8601 date string format (`yyyy-mm-dd`) or as a JavaScript `Date` object.\n */\n @Prop({ mutable: true, reflect: true }) value?: IcDateValueFormat = \"\";\n\n @Watch(\"value\")\n @Watch(\"openAtDate\")\n valueChanged(\n newValue: IcDateValueFormat,\n oldValue: IcDateValueFormat,\n propName?: string\n ): void {\n if (newValue !== oldValue && this.isValidDateValue(newValue)) {\n if (propName === \"value\") {\n this.value = newValue;\n }\n this.setOpenAtDate();\n }\n }\n\n @Watch(\"focussedDate\")\n watchFocussedDateHandler(current: Date, previous: Date): void {\n if (\n previous === null ||\n !(\n previous.getFullYear() === current.getFullYear() &&\n previous.getMonth() === current.getMonth()\n )\n ) {\n this.updateMonthInView();\n }\n }\n\n @Watch(\"monthInView\")\n watchMonthInViewHandler(): void {\n this.focussedMonth = this.monthInView;\n }\n\n @Watch(\"yearInView\")\n watchYearInViewHandler(): void {\n this.setFocussedYear(this.yearInView, false);\n }\n\n @Watch(\"yearPickerVisible\")\n watchYearPickerVisibleHandler(): void {\n if (!this.yearPickerVisible) {\n this.setFocussedYear(this.yearInView);\n }\n }\n\n @Watch(\"monthPickerVisible\")\n watchMonthPickerVisibleHandler(): void {\n if (!this.monthPickerVisible) {\n this.focussedMonth = this.monthInView;\n }\n }\n\n @Watch(\"focussedDayEl\")\n watchFocussedDayEl(): void {\n if (this.focusDay) {\n setTimeout(() => this.focusFocussedDay(), FOCUS_TIMER);\n }\n this.focusDay = true;\n }\n\n /**\n * Emitted when the value has changed.\n */\n @Event() icChange: EventEmitter<{\n value: Date | null;\n dateObject: {\n day: string | null;\n month: string | null;\n year: string | null;\n };\n utcValue: Date | null;\n }>;\n\n /**\n * Emitted when the clear button has been clicked.\n */\n @Event() icCalendarClearButtonClick: EventEmitter<void>;\n\n /**\n * @internal Emitted when a day is selected.\n */\n @Event() icCalendarDaySelect: EventEmitter<void>;\n\n /**\n * Emitted when a month is selected.\n */\n @Event() icCalendarMonthSelect: EventEmitter<void>;\n\n /**\n * Emitted when a year is selected.\n */\n @Event() icCalendarYearSelect: EventEmitter<void>;\n\n componentWillLoad(): void {\n const root = this.el.getRootNode();\n this.parentIsDatePicker =\n root instanceof ShadowRoot && root.host?.tagName === \"IC-DATE-PICKER\";\n this.monthNames = stringEnumToArray(IcDateInputMonths);\n this.daysOfWeek = stringEnumToArray(IcShortDayNames);\n this.watchStartOfWeekHandler();\n this.watchMaxHandler();\n this.watchMinHandler();\n this.setOpenAtDate();\n removeDisabledFalse(this.disabled, this.el);\n }\n\n /**\n * @internal Clears the dialog description used to provide more context for screen readers.\n */\n @Method()\n async clearDialogDescription(): Promise<void> {\n this.dialogDescription = \"\";\n }\n\n private isValidDateValue = (value: IcDateValueFormat): boolean => {\n if (value == null) return true;\n\n if (value instanceof Date) {\n return !isNaN(value.getTime());\n }\n\n if (typeof value !== \"string\") return false;\n\n const iso8601Regex =\n /^\\d{4}-\\d{2}-\\d{2}(?:[T\\s]\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|[+-]\\d{2}:?\\d{2})?)?$/;\n\n if (iso8601Regex.test(value)) {\n return !isNaN(Date.parse(value));\n }\n\n const [a, b, c] = value.split(\"/\").map(Number);\n if ([a, b, c].some(isNaN)) return false;\n let day: number, month: number, year: number;\n switch (this.dateFormat) {\n case \"DD/MM/YYYY\":\n [day, month, year] = [a, b, c];\n break;\n case \"MM/DD/YYYY\":\n [month, day, year] = [a, b, c];\n break;\n case \"YYYY/MM/DD\":\n [year, month, day] = [a, b, c];\n break;\n default:\n return false;\n }\n if (month < 1 || month > 12 || day < 1 || day > 31) return false;\n\n const date = new Date(year, month - 1, day);\n return (\n date.getFullYear() === year &&\n date.getMonth() === month - 1 &&\n date.getDate() === day\n );\n };\n\n private isPresent = (prop: IcDateValueFormat) =>\n prop !== \"\" && prop !== undefined && prop !== null;\n\n private setOpenAtDate = () => {\n let openAt: Date | null = null;\n if (this.disabled) {\n openAt = new Date();\n } else {\n if (this.clearButtonClicked) {\n openAt = this.focussedDate ? this.focussedDate : new Date();\n this.clearButtonClicked = false;\n } else {\n if (\n !this.disabled &&\n this.value != null &&\n this.isValidDateValue(this.value)\n ) {\n openAt = createDate(this.value, this.dateFormat);\n }\n\n if (!!openAt && dateInRange(openAt, this.minDate, this.maxDate)) {\n const selectedDay = openAt.getDay();\n\n if (\n !!this.disableDays &&\n this.disableDays.length > 0 &&\n typeof selectedDay == \"number\" &&\n this.disableDays.includes(selectedDay)\n ) {\n openAt = createDate(this.value ?? new Date(), this.dateFormat);\n this.setSelectedDate(null);\n } else {\n this.setSelectedDate(openAt);\n }\n } else if (this.isPresent(this.openAtDate)) {\n openAt = createDate(this.openAtDate, this.dateFormat);\n } else {\n openAt = new Date();\n }\n }\n }\n this.setFocussedDate(openAt);\n\n this.updateMonthInView();\n let dialogDesc = this.getMonthInViewText();\n if (this.selectedDate === null) {\n dialogDesc += \" No date selected.\";\n }\n dialogDesc += ` Use arrow keys to change day. Press enter or space to select a date${\n this.parentIsDatePicker ? \" or press escape to close the picker\" : \"\"\n }.`;\n\n this.dialogDescription = dialogDesc;\n setTimeout(() => this.focusFocussedDay(), FOCUS_TIMER);\n };\n\n /* Refs & setters */\n private setFocussedDayEl = (element: HTMLButtonElement) => {\n this.focussedDayEl = element;\n };\n\n private setFocussedMonthEl = (element: HTMLIcButtonElement) => {\n this.focussedMonthEl = element;\n };\n\n private setFocussedYearEl = (element: HTMLIcButtonElement) => {\n this.focussedYearEl = element;\n };\n\n private setFocussedYear = (newYear: number, focus = true): void => {\n const prevYear = this.focussedYear;\n this.focussedYear = newYear;\n if (this.yearPickerVisible) {\n const newDecade = Math.floor(newYear / 10) * 10;\n const oldDecade = Math.floor(prevYear / 10) * 10;\n if (newDecade !== oldDecade) {\n this.setDecadeView(newDecade);\n this.setAriaLiveRegionText(this.getDecadeInViewText());\n }\n if (focus) {\n setTimeout(() => {\n if (this.focussedYearEl !== null) this.focussedYearEl.setFocus();\n }, FOCUS_TIMER);\n }\n } else {\n this.setDecadeView(Math.floor(newYear / 10) * 10);\n }\n };\n\n private setFocussedDate = (d: Date): void => {\n this.focussedDate = clampDate(d, this.minDate, this.maxDate);\n };\n\n private setSelectedDate = (d: Date | null, emit = true): void => {\n if (d === null || !dateMatches(d, this.selectedDate)) {\n this.selectedDate = d;\n this.value = d;\n if (emit) {\n this.icChange.emit(this.setDateChangeEventDetail(d));\n }\n }\n };\n\n private setDateChangeEventDetail = (d: Date | null) => {\n let UTCDate = null;\n let day = null;\n let month = null;\n let year = null;\n if (d !== null) {\n UTCDate = new Date(Date.UTC(d.getFullYear(), d.getMonth(), d.getDate()));\n day = convertToDoubleDigits(d.getDate());\n month = convertToDoubleDigits(d.getMonth() + 1);\n year = d.getFullYear().toString();\n }\n return {\n value: d,\n dateObject: {\n day: day === \"\" ? null : day,\n month: month === \"\" ? null : month,\n year: year === \"\" ? null : year,\n },\n utcValue: UTCDate,\n };\n };\n\n private setAriaLiveRegionText = (text: string) => {\n this.liveRegionEl && (this.liveRegionEl.innerText = text);\n };\n\n /* Navigation helpers */\n private goToPreviousMonth = (focusDay = false) => {\n this.focusDay = focusDay;\n this.moveMonths(-1);\n };\n\n private goToNextMonth = (focusDay = false) => {\n this.focusDay = focusDay;\n this.moveMonths(1);\n };\n\n private goToPreviousYear = (focusDay = false) => {\n if (this.isPrevYearAllowed()) {\n this.focusDay = focusDay;\n this.moveYears(-1);\n }\n };\n\n private goToNextYear = (focusDay = false) => {\n if (this.isNextYearAllowed()) {\n this.focusDay = focusDay;\n this.moveYears(1);\n }\n };\n\n private moveDays = (numDays: number): void => {\n if (this.focussedDate) {\n const d = new Date(this.focussedDate);\n d.setDate(d.getDate() + numDays);\n this.setFocussedDate(d);\n }\n };\n\n private moveMonths = (numMonths: number): void => {\n if (this.focussedDate) {\n const newMonth = this.focussedDate.getMonth() + numMonths;\n const min = new Date(\n new Date(getMonthStart(this.focussedDate)).setMonth(newMonth)\n );\n const max = getMonthEnd(min);\n const newDate = new Date(new Date(this.focussedDate).setMonth(newMonth));\n this.setFocussedDate(clampDate(newDate, min, max));\n\n if (\n this.monthPickerVisible === false &&\n this.yearPickerVisible === false &&\n this.monthInViewUpdateHandled === false\n ) {\n this.setAriaLiveRegionText(this.getMonthInViewText());\n }\n this.monthInViewUpdateHandled = false;\n }\n };\n\n private moveYears = (numYears: number): void => {\n if (this.focussedDate) {\n const newYear = this.focussedDate.getFullYear() + numYears;\n const min = new Date(\n new Date(getMonthStart(this.focussedDate)).setFullYear(newYear)\n );\n const max = getMonthEnd(min);\n const newDate = new Date(\n new Date(this.focussedDate).setFullYear(newYear)\n );\n this.setFocussedDate(clampDate(newDate, min, max));\n\n if (\n this.monthPickerVisible === false &&\n this.yearPickerVisible === false &&\n this.monthInViewUpdateHandled === false\n ) {\n this.setAriaLiveRegionText(this.getMonthInViewText());\n }\n this.monthInViewUpdateHandled = false;\n }\n };\n\n private updateFocussedMonth = (adjust: number): void => {\n const d = new Date(this.focussedYear, this.focussedMonth, 1);\n d.setMonth(this.focussedMonth + adjust);\n const newDate = clampDate(d, this.minDate, this.maxDate);\n this.focussedMonth = newDate.getMonth();\n setTimeout(() => this.focussedMonthEl.setFocus(), FOCUS_TIMER);\n };\n\n private updateFocussedYear = (adjust: number, focusYear = true): void => {\n const d = new Date(new Date().setFullYear(this.focussedYear + adjust));\n const newDate = clampDate(d, this.minDate, this.maxDate);\n this.setFocussedYear(newDate.getFullYear(), focusYear);\n };\n\n private getNextDayToFocus = (\n currDay: Date,\n forward: boolean,\n level = 1\n ): number => {\n const move = forward ? 1 : -1;\n const nextDay = new Date(currDay);\n nextDay.setDate(nextDay.getDate() + move);\n return this.disableDays?.includes(Number(nextDay.getDay()))\n ? this.getNextDayToFocus(nextDay, forward, level + 1)\n : level;\n };\n\n /* Focus helpers */\n private focusFirstElement = () => {\n this.monthButtonEl?.setFocus();\n };\n\n private focusLastElement = () => {\n if (\n this.showClearButton &&\n this.clearButtonEl &&\n !this.clearButtonEl.disabled\n ) {\n this.clearButtonEl.setFocus();\n } else if (\n this.showTodayButton &&\n this.todayButtonEl &&\n !this.todayButtonEl.disabled\n ) {\n this.todayButtonEl.setFocus();\n } else if (this.monthPickerVisible) {\n this.focussedMonthEl.setFocus();\n } else if (this.yearPickerVisible) {\n this.focussedYearEl.setFocus();\n } else {\n this.focussedDayEl.focus();\n }\n };\n\n private focusFocussedDay = () => {\n this.focussedDayEl.focus();\n };\n\n /* Click handlers */\n private monthButtonClickHandler = () => {\n this.yearPickerVisible = false;\n this.focusDay = false;\n this.monthPickerVisible = !this.monthPickerVisible;\n if (this.monthPickerVisible) {\n this.setAriaLiveRegionText(\"Month picker view open\");\n } else {\n this.setMonthSelectedLiveRegionText();\n this.icCalendarMonthSelect.emit();\n }\n };\n\n private yearButtonClickHandler = () => {\n this.monthPickerVisible = false;\n this.focusDay = false;\n this.yearPickerVisible = !this.yearPickerVisible;\n if (this.yearPickerVisible) {\n this.setAriaLiveRegionText(\n `Year picker view open. ${this.getDecadeInViewText()}`\n );\n } else {\n this.setYearSelectedLiveRegionText();\n this.icCalendarYearSelect.emit();\n }\n };\n\n private todayButtonClickHandler = () => {\n this.yearPickerVisible = false;\n this.monthPickerVisible = false;\n this.setFocussedDate(new Date());\n this.setAriaLiveRegionText(this.getMonthInViewText());\n\n setTimeout(() => this.focusFocussedDay(), FOCUS_TIMER);\n };\n\n private clearButtonClickHandler = () => {\n this.clearButtonClicked = true;\n this.selectedDate && this.setFocussedDate(this.selectedDate);\n this.setSelectedDate(null);\n this.icChange.emit(this.setDateChangeEventDetail(this.selectedDate));\n let text = \"Selected date cleared.\";\n if (!this.monthPickerVisible && !this.yearPickerVisible) {\n text += ` ${this.getMonthInViewText()}`;\n }\n if (this.monthPickerVisible) {\n this.focussedMonthEl.setFocus();\n } else if (this.yearPickerVisible) {\n this.focussedYearEl.setFocus();\n } else {\n this.focusFocussedDay();\n }\n this.setAriaLiveRegionText(text);\n };\n\n private monthYearNavClickHandler = (ev: Event): void => {\n const target = ev.target as Element;\n switch (target.id) {\n case \"previous-month-button\":\n this.goToPreviousMonth(this.dayButtonFocussed);\n break;\n\n case \"next-month-button\":\n this.goToNextMonth(this.dayButtonFocussed);\n break;\n\n case \"previous-year-button\":\n this.goToPreviousYear(this.dayButtonFocussed);\n break;\n\n case \"next-year-button\":\n this.goToNextYear(this.dayButtonFocussed);\n break;\n }\n };\n\n private handleCalendarClick = (event: MouseEvent): void => {\n this.clearDialogDescription();\n event.stopImmediatePropagation();\n };\n\n /* Keyboard handlers */\n private handleCalendarKeyDown = (ev: KeyboardEvent): void => {\n let handled = true;\n switch (ev.key) {\n case \"ArrowDown\":\n this.dayPickerKeyboardNav = true;\n this.moveDays(7);\n break;\n\n case \"ArrowUp\":\n this.dayPickerKeyboardNav = true;\n this.moveDays(-7);\n break;\n\n case \"ArrowLeft\":\n this.dayPickerKeyboardNav = true;\n if (this.focussedDate)\n this.moveDays(-1 * this.getNextDayToFocus(this.focussedDate, false));\n break;\n\n case \"ArrowRight\":\n this.dayPickerKeyboardNav = true;\n if (this.focussedDate)\n this.moveDays(this.getNextDayToFocus(this.focussedDate, true));\n break;\n\n case \"PageUp\":\n this.dayPickerKeyboardNav = true;\n ev.shiftKey ? this.moveYears(-1) : this.moveMonths(-1);\n break;\n\n case \"PageDown\":\n this.dayPickerKeyboardNav = true;\n ev.shiftKey ? this.moveYears(1) : this.moveMonths(1);\n break;\n\n case \"Home\":\n this.dayPickerKeyboardNav = true;\n this.setFocussedDate(\n new Date(this.focussedYear, this.focussedMonth, 1)\n );\n break;\n\n case \"End\":\n this.dayPickerKeyboardNav = true;\n this.setFocussedDate(\n new Date(this.focussedYear, this.focussedMonth + 1, 0)\n );\n break;\n\n case \"Tab\":\n handled = this.calendarTabHandler(ev);\n break;\n\n default:\n handled = false;\n break;\n }\n\n if (handled) {\n ev.preventDefault();\n }\n };\n\n private monthPickerKeyDownHandler = (ev: KeyboardEvent): void => {\n let handled = true;\n switch (ev.key) {\n case \"ArrowUp\":\n case \"ArrowLeft\":\n this.updateFocussedMonth(-1);\n break;\n\n case \"ArrowDown\":\n case \"ArrowRight\":\n this.updateFocussedMonth(1);\n break;\n\n case \"Home\":\n this.updateFocussedMonth(-this.focussedMonth);\n break;\n\n case \"End\":\n this.updateFocussedMonth(11 - this.focussedMonth);\n break;\n\n case \"Tab\":\n handled = this.calendarTabHandler(ev);\n break;\n\n case \"Escape\":\n ev.stopImmediatePropagation();\n this.monthPickerVisible = false;\n setTimeout(() => this.focusFocussedDay(), FOCUS_TIMER);\n break;\n\n default:\n handled = false;\n }\n\n if (handled) {\n ev.preventDefault();\n }\n };\n\n private yearPickerKeyDownHandler = (ev: KeyboardEvent): void => {\n let handled = true;\n switch (ev.key) {\n case \"ArrowUp\":\n case \"ArrowLeft\":\n this.updateFocussedYear(-1);\n break;\n\n case \"ArrowDown\":\n case \"ArrowRight\":\n this.updateFocussedYear(1);\n break;\n\n case \"Home\":\n if (this.focussedYear > this.decadeStart) {\n this.updateFocussedYear(this.decadeStart - this.focussedYear);\n }\n break;\n\n case \"End\":\n if (this.focussedYear < this.decadeEnd) {\n this.updateFocussedYear(this.decadeEnd - this.focussedYear);\n }\n break;\n\n case \"PageUp\":\n this.updateFocussedYear(-10);\n break;\n\n case \"PageDown\":\n this.updateFocussedYear(10);\n break;\n\n case \"Tab\":\n handled = this.calendarTabHandler(ev);\n break;\n\n case \"Escape\":\n ev.stopImmediatePropagation();\n this.yearPickerVisible = false;\n setTimeout(() => this.focusFocussedDay(), FOCUS_TIMER);\n break;\n\n default:\n handled = false;\n }\n\n if (handled) {\n ev.preventDefault();\n }\n };\n\n private monthButtonKeyDownHandler = (ev: KeyboardEvent): void => {\n let handled = false;\n switch (ev.key) {\n case \"ArrowLeft\":\n case \"ArrowUp\":\n handled = true;\n this.goToPreviousMonth();\n break;\n\n case \"ArrowRight\":\n case \"ArrowDown\":\n handled = true;\n this.goToNextMonth();\n break;\n\n case \"Home\":\n handled = true;\n this.focusDay = false;\n this.moveMonths(-this.monthInView);\n break;\n\n case \"End\":\n handled = true;\n this.focusDay = false;\n this.moveMonths(11 - this.monthInView);\n break;\n\n case \"Tab\":\n if (ev.shiftKey) {\n handled = true;\n this.focusLastElement();\n }\n break;\n\n case \"Escape\":\n if (this.monthPickerVisible) {\n this.monthPickerVisible = false;\n ev.stopImmediatePropagation();\n }\n break;\n\n default:\n break;\n }\n\n if (handled) {\n ev.preventDefault();\n }\n };\n\n private yearButtonKeyDownHandler = (ev: KeyboardEvent): void => {\n let handled = false;\n switch (ev.key) {\n case \"ArrowLeft\":\n case \"ArrowUp\":\n handled = true;\n this.goToPreviousYear();\n break;\n\n case \"ArrowRight\":\n case \"ArrowDown\":\n handled = true;\n this.goToNextYear();\n break;\n\n case \"Home\":\n if (this.yearPickerVisible && this.yearInView > this.decadeStart) {\n handled = true;\n this.moveYears(this.decadeStart - this.yearInView);\n }\n break;\n\n case \"End\":\n if (this.yearPickerVisible && this.yearInView < this.decadeEnd) {\n handled = true;\n this.moveYears(this.decadeEnd - this.focussedYear);\n }\n break;\n\n case \"PageUp\":\n handled = true;\n this.focusDay = false;\n this.moveYears(-10);\n break;\n\n case \"PageDown\":\n handled = true;\n this.focusDay = false;\n this.moveYears(10);\n break;\n\n case \"Escape\":\n if (this.yearPickerVisible) {\n this.yearPickerVisible = false;\n ev.stopImmediatePropagation();\n }\n break;\n\n default:\n break;\n }\n\n if (handled) {\n ev.preventDefault();\n }\n };\n\n private todayButtonKeyDownHandler = (ev: KeyboardEvent) => {\n if (\n ev.key === \"Tab\" &&\n !ev.shiftKey &&\n this.clearButtonEl?.disabled &&\n this.parentIsDatePicker\n ) {\n this.focusFirstElement();\n ev.preventDefault();\n }\n };\n\n private clearButtonKeyDownHandler = (ev: KeyboardEvent) => {\n if (ev.key === \"Tab\" && !ev.shiftKey && this.parentIsDatePicker) {\n this.focusFirstElement();\n ev.preventDefault();\n }\n };\n\n private calendarTabHandler = (ev: KeyboardEvent): boolean => {\n let handled = false;\n if (\n !ev.shiftKey &&\n (!this.showTodayButton || this.isCurrentMonth()) &&\n (!this.showClearButton || this.clearButtonEl?.disabled) &&\n this.parentIsDatePicker\n ) {\n this.focusFirstElement();\n handled = true;\n } else if (ev.shiftKey) {\n this.yearButtonEl?.setFocus();\n handled = true;\n }\n return handled;\n };\n\n /* Utility functions */\n private setMonthSelectedLiveRegionText = () => {\n this.setAriaLiveRegionText(\n `${\n this.monthNames[this.monthInView]\n } selected. ${this.getMonthInViewText()}`\n );\n };\n\n private setYearSelectedLiveRegionText = () => {\n this.setAriaLiveRegionText(\n `${this.yearInView} selected. ${this.getMonthInViewText()}`\n );\n };\n\n private setDecadeView = (start: number) => {\n let currYear = start - 1;\n const decadeArr = [];\n while (currYear <= start + 10) {\n decadeArr.push(currYear);\n currYear++;\n }\n this.decadeView = decadeArr;\n this.decadeStart = decadeArr[1];\n this.decadeEnd = decadeArr[10];\n };\n\n private getMonthInViewText = () => {\n return `${this.monthNames[this.monthInView]} ${\n this.yearInView\n } currently in view.`;\n };\n\n private getDecadeInViewText = () => {\n return `${this.decadeStart} to ${this.decadeEnd} currently in view.`;\n };\n\n private isPrevYearAllowed = (): boolean => {\n return this.isYearAllowed(this.yearInView - 1);\n };\n\n private isNextYearAllowed = (): boolean => {\n return this.isYearAllowed(this.yearInView + 1);\n };\n\n private isYearAllowed = (yr: number): boolean =>\n yearInRange(yr, this.minDate, this.maxDate);\n\n private getMonthView = (date: Date): Date[] => {\n const start = getWeekStart(getMonthStart(date), this.startOfWeek);\n const end = addSixWeeks(start);\n\n const days: Date[] = [];\n let current = start;\n\n while (!dateMatches(current, end)) {\n days.push(current);\n current = new Date(current);\n current.setDate(current.getDate() + 1);\n }\n\n days.push(current);\n\n return days;\n };\n\n private isCurrentMonth = (): boolean => {\n const d = new Date();\n return (\n d.getFullYear() === this.yearInView && d.getMonth() === this.monthInView\n );\n };\n\n private updateMonthInView = (): void => {\n if (this.focussedDate) {\n this.currMonthView = this.getMonthView(this.focussedDate);\n\n this.focussedDay = this.focussedDate.getDate();\n this.monthInView = this.focussedDate.getMonth();\n this.yearInView = this.focussedDate.getFullYear();\n\n if (this.dayPickerKeyboardNav) {\n this.monthInViewUpdateHandled = true;\n this.setAriaLiveRegionText(this.getMonthInViewText());\n this.dayPickerKeyboardNav = false;\n }\n }\n };\n\n /* Mouse handlers */\n private navButtonMouseDownHandler = (ev: MouseEvent): void => {\n ev.preventDefault();\n };\n\n private handleCalendarMouseDown = (event: MouseEvent): void => {\n const target = event.target as HTMLElement;\n if (target.tagName !== \"IC-BUTTON\") {\n event.preventDefault();\n }\n };\n\n private handleSelectDay = (day: Date): void => {\n this.setSelectedDate(day);\n this.setFocussedDate(day);\n this.icCalendarDaySelect.emit();\n };\n\n private handleSelectMonth = (month: number): void => {\n this.moveMonths(month - this.monthInView);\n setTimeout(() => {\n this.monthButtonEl?.setFocus();\n this.monthPickerVisible = false;\n this.setMonthSelectedLiveRegionText();\n this.icCalendarMonthSelect.emit();\n }, FOCUS_TIMER);\n };\n\n private handleSelectYear = (year: number): void => {\n const yrPos = this.decadeView.indexOf(year);\n if (yrPos > 0 && yrPos < this.decadeView.length - 1) {\n this.moveYears(year - this.yearInView);\n this.focusDay = false;\n const monthName = this.monthNames[this.monthInView];\n this.setAriaLiveRegionText(\n `${year} selected. ${monthName} ${year} currently in view.`\n );\n setTimeout(() => {\n this.yearButtonEl?.setFocus();\n this.yearPickerVisible = false;\n this.icCalendarYearSelect.emit();\n }, FOCUS_TIMER);\n } else {\n const moveYears = year - this.focussedYear > 0 ? 10 : -10;\n this.updateFocussedYear(moveYears, this.yearButtonFocussed);\n this.setAriaLiveRegionText(this.getDecadeInViewText());\n }\n };\n\n private onDayButtonFocusHandler = () => {\n this.dayButtonFocussed = true;\n };\n\n private onDayButtonBlurHandler = () => {\n this.dayButtonFocussed = false;\n };\n\n private onYearButtonFocusHandler = () => {\n this.yearButtonFocussed = true;\n };\n\n private onYearButtonBlurHandler = () => {\n this.yearButtonFocussed = false;\n };\n\n /* Render helpers */\n private renderMonthYearNavButton = (\n id: string,\n flip: boolean,\n disabled: boolean\n ): void => {\n const buttonSize = this.size;\n return (\n <ic-button\n id={id}\n disableTooltip={true}\n disabled={disabled}\n onClick={this.monthYearNavClickHandler}\n class={{ flip: flip }}\n variant=\"icon-tertiary\"\n innerHTML={chevron}\n size={buttonSize}\n tabIndex={-1}\n aria-label={`Go to ${id.slice(0, -7).replace(\"-\", \" \")}`}\n onMouseDown={this.navButtonMouseDownHandler}\n />\n );\n };\n\n private previousMonthButton = (): void => {\n let disabled = false;\n if (this.disabled) {\n disabled = true;\n } else {\n if (this.focussedDate !== null && this.minDate !== null) {\n const yearMatch =\n this.focussedDate.getFullYear() === this.minDate.getFullYear();\n if (yearMatch) {\n disabled = this.monthInView - 1 < this.minDate.getMonth();\n }\n }\n }\n return this.renderMonthYearNavButton(\n \"previous-month-button\",\n true,\n disabled\n );\n };\n\n private nextMonthButton = (): void => {\n let disabled = false;\n if (this.disabled) {\n disabled = true;\n } else {\n if (this.focussedDate !== null && this.maxDate !== null) {\n const yearMatch =\n this.focussedDate.getFullYear() === this.maxDate.getFullYear();\n if (yearMatch) {\n disabled = this.monthInView + 1 > this.maxDate.getMonth();\n }\n }\n }\n return this.renderMonthYearNavButton(\"next-month-button\", false, disabled);\n };\n\n private previousYearButton = (): void => {\n return this.renderMonthYearNavButton(\n \"previous-year-button\",\n true,\n this.disabled || !this.isPrevYearAllowed()\n );\n };\n\n private nextYearButton = (): void => {\n return this.renderMonthYearNavButton(\n \"next-year-button\",\n false,\n this.disabled || !this.isNextYearAllowed()\n );\n };\n\n render() {\n const {\n dialogDescription,\n monthNames,\n focussedMonth,\n focussedYear,\n monthInView,\n yearInView,\n monthPickerVisible,\n yearPickerVisible,\n decadeView,\n minDate,\n maxDate,\n orderedDaysOfWeek,\n parentIsDatePicker,\n showClearButton,\n showTodayButton,\n size,\n theme,\n } = this;\n\n let monthButtonText = \"\";\n if (monthPickerVisible) {\n monthButtonText = `Use the arrow keys to change the selected month. To return to day picker view, press Enter or Space to select a month, or press Escape.`;\n } else {\n monthButtonText = `Press Enter or Space to open month picker view or use the arrow keys to change month.`;\n }\n\n let yearButtonText = \"\";\n if (yearPickerVisible) {\n yearButtonText = `Use the arrow keys to change the selected year. To return to day picker view, press Enter or Space to select a year, or press Escape.`;\n } else {\n yearButtonText = `Press Enter or Space to open year picker view or use the arrow keys to change the selected year.`;\n }\n\n const dialogLabel = \"choose date\";\n\n const monthLabel =\n monthNames && monthNames[monthInView]\n ? monthNames[monthInView]\n : \"Open month picker\";\n const yearLabel = this.yearInView ? this.yearInView : \"Open year picker\";\n\n let minDay = minDate;\n if (minDate && this.disablePast) {\n const yesterday = new Date(minDate);\n yesterday.setDate(minDate.getDate() - 1);\n minDay = yesterday;\n }\n\n const weeks = [];\n for (let i = 0; i < this.currMonthView.length; i += 7) {\n weeks.push(this.currMonthView.slice(i, i + 7));\n }\n\n return (\n <Host\n class={{\n [`ic-calendar-${size}`]: true,\n [`ic-theme-${theme}`]: theme !== \"inherit\",\n }}\n >\n <div>\n <span id=\"dialog-description\" class=\"sr-only\">\n {dialogDescription}\n </span>\n <div\n {...(parentIsDatePicker && {\n role: \"dialog\",\n \"aria-modal\": \"true\",\n })}\n aria-label={dialogLabel}\n aria-describedBy=\"dialog-description\"\n class={{\n \"calendar-container\": true,\n }}\n onMouseDown={this.handleCalendarMouseDown}\n onClick={this.handleCalendarClick}\n >\n <span\n ref={(el) => (this.liveRegionEl = el)}\n id=\"live-region\"\n aria-live=\"assertive\"\n class=\"sr-only\"\n ></span>\n <div\n class={{\n \"month-year-nav-container\": true,\n }}\n >\n <div class=\"month-year-nav\">\n {this.previousMonthButton()}\n <span id=\"select-month-hint\" aria-hidden=\"true\">\n {monthButtonText}\n </span>\n <ic-button\n ref={(el: HTMLIcButtonElement | undefined) =>\n (this.monthButtonEl = el)\n }\n size={size}\n class=\"month-picker-button\"\n disabled={this.disabled}\n aria-haspopup=\"menu\"\n aria-expanded={monthPickerVisible ? \"true\" : \"false\"}\n full-width=\"true\"\n variant=\"tertiary\"\n aria-label={monthLabel}\n aria-describedby=\"select-month-hint\"\n onKeyDown={this.monthButtonKeyDownHandler}\n onClick={this.monthButtonClickHandler}\n >\n {monthNames[monthInView]}\n </ic-button>\n {this.nextMonthButton()}\n </div>\n <div class=\"month-year-nav\">\n {this.previousYearButton()}\n <span id=\"select-year-hint\" aria-hidden=\"true\">\n {yearButtonText}\n </span>\n <ic-button\n ref={(el: HTMLIcButtonElement | undefined) =>\n (this.yearButtonEl = el)\n }\n size={size}\n class=\"year-picker-button\"\n disabled={this.disabled}\n aria-haspopup=\"menu\"\n aria-expanded={yearPickerVisible ? \"true\" : \"false\"}\n full-width=\"true\"\n variant=\"tertiary\"\n aria-label={yearLabel}\n aria-describedby=\"select-year-hint\"\n onKeyDown={this.yearButtonKeyDownHandler}\n onClick={this.yearButtonClickHandler}\n >\n {this.yearInView}\n </ic-button>\n {this.nextYearButton()}\n </div>\n </div>\n {!(monthPickerVisible || yearPickerVisible) && (\n <table\n role=\"grid\"\n class={{\n calendar: true,\n hidden: monthPickerVisible || yearPickerVisible,\n }}\n onKeyDown={this.handleCalendarKeyDown}\n >\n <thead class=\"weekdays-container\">\n <tr class=\"weekdays\">\n {orderedDaysOfWeek.map((dayName) => {\n const header =\n size === \"small\" ? dayName.charAt(0) : dayName;\n return (\n <th scope=\"col\" class=\"calendar-day-header\">\n {header}\n </th>\n );\n })}\n </tr>\n </thead>\n <tbody class=\"calendar-days-container\">\n {weeks.map((week, weekIdx) => (\n <tr key={weekIdx}>\n {week.map((day) => (\n <td key={day.toISOString()}>\n <DayButton\n day={day}\n disableDay={\n this.disabled ||\n this.disableDays?.includes(Number(day.getDay()))\n }\n today={dateMatches(day, this.today)}\n selected={dateMatches(day, this.selectedDate)}\n focussed={dateMatches(day, this.focussedDate)}\n inRange={dateInRange(day, minDay, maxDate)}\n monthInView={monthInView}\n onSelectDay={this.handleSelectDay}\n focussedDayRef={this.setFocussedDayEl}\n onFocusDay={this.onDayButtonFocusHandler}\n onBlurDay={this.onDayButtonBlurHandler}\n showDaysOutsideMonth={this.showDaysOutsideMonth}\n />\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n )}\n <div\n class={{\n \"month-picker-container\": true,\n hidden: !monthPickerVisible,\n }}\n >\n {monthPickerVisible && (\n <MonthPicker\n size={size}\n onSelectMonth={this.handleSelectMonth}\n monthInView={monthInView}\n focussedMonth={focussedMonth}\n onKeyDown={this.monthPickerKeyDownHandler}\n focussedMonthRef={this.setFocussedMonthEl}\n minDate={minDate}\n maxDate={maxDate}\n yearInView={yearInView}\n ></MonthPicker>\n )}\n </div>\n <div\n class={{\n \"year-picker-container\": true,\n hidden: !yearPickerVisible,\n }}\n >\n {yearPickerVisible && (\n <YearPicker\n decadeView={decadeView}\n size={size}\n focussedYear={focussedYear}\n onSelectYear={this.handleSelectYear}\n onKeyDown={this.yearPickerKeyDownHandler}\n onFocusYear={this.onYearButtonFocusHandler}\n onBlurYear={this.onYearButtonBlurHandler}\n yearInView={yearInView}\n minDate={minDate}\n maxDate={maxDate}\n focussedYearRef={this.setFocussedYearEl}\n ></YearPicker>\n )}\n </div>\n <div\n class={{\n \"bottom-buttons\": true,\n \"no-today\": !showTodayButton,\n }}\n >\n {showTodayButton && (\n <ic-button\n id=\"today-button\"\n variant=\"tertiary\"\n ref={(el: HTMLIcButtonElement | undefined) =>\n (this.todayButtonEl = el)\n }\n size={size}\n aria-label=\"Navigate to current date\"\n onClick={this.todayButtonClickHandler}\n onKeyDown={this.todayButtonKeyDownHandler}\n disabled={this.isCurrentMonth()}\n >\n Go to today\n </ic-button>\n )}\n {showClearButton && (\n <ic-button\n id=\"clear-button\"\n aria-label=\"clear selected date\"\n ref={(el: HTMLIcButtonElement | undefined) =>\n (this.clearButtonEl = el)\n }\n variant=\"tertiary\"\n size={size}\n onClick={this.clearButtonClickHandler}\n onKeyDown={this.clearButtonKeyDownHandler}\n disabled={\n this.value === \"\" ||\n this.value === null ||\n this.value === undefined\n }\n >\n Clear\n </ic-button>\n )}\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n"]}
|
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
|
|
2
|
+
import readme from "./readme.md";
|
|
3
|
+
import { html } from "lit-html";
|
|
4
|
+
export default {
|
|
5
|
+
title: "Web Components/Calendar",
|
|
6
|
+
component: "ic-calendar",
|
|
7
|
+
parameters: {
|
|
8
|
+
componentAPI: {
|
|
9
|
+
data: readme,
|
|
10
|
+
},
|
|
11
|
+
},
|
|
12
|
+
};
|
|
13
|
+
const INLINE_RADIO = "inline-radio";
|
|
14
|
+
const SELECTED_DATE_DISPLAY = "selected-date-display";
|
|
15
|
+
const SELECTED_DATE = "Selected date: ";
|
|
16
|
+
const NO_DATE_SELECTED = "No date selected";
|
|
17
|
+
/**
|
|
18
|
+
* Use a calendar to select a single date where visualising that date could be useful.
|
|
19
|
+
*
|
|
20
|
+
* Click the 'Component API' tab to view all the available props and events for calendars.
|
|
21
|
+
*
|
|
22
|
+
* To use the calendar component, import `@ukic/canary-web-components` into your application.
|
|
23
|
+
*
|
|
24
|
+
* The default calendar uses the date format of `DD/MM/YYYY`.
|
|
25
|
+
*/
|
|
26
|
+
export const Default = {
|
|
27
|
+
render: () => {
|
|
28
|
+
setTimeout(() => {
|
|
29
|
+
document.addEventListener("icChange", function (event) {
|
|
30
|
+
if (event.detail.value) {
|
|
31
|
+
document.getElementById(SELECTED_DATE_DISPLAY).textContent =
|
|
32
|
+
SELECTED_DATE + event.detail.value;
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
document.getElementById(SELECTED_DATE_DISPLAY).textContent =
|
|
36
|
+
NO_DATE_SELECTED;
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
}, 0);
|
|
40
|
+
return html `<ic-calendar id="default"></ic-calendar>
|
|
41
|
+
<span>
|
|
42
|
+
<ic-typography id="selected-date-display" style="top: 420px"
|
|
43
|
+
>No date selected</ic-typography
|
|
44
|
+
>
|
|
45
|
+
</span>`;
|
|
46
|
+
},
|
|
47
|
+
name: "Default",
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* The `value` prop sets the selected date in the calendar. The value can be in any format supported by the `date-format` prop, in ISO 8601 date string format (yyyy-mm-dd) or as a JavaScript Date object.
|
|
51
|
+
*/
|
|
52
|
+
export const Value = {
|
|
53
|
+
render: () => html `<ic-calendar id="value" value="01/01/2000"></ic-calendar>`,
|
|
54
|
+
name: "Value",
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* The `open-at-date` prop can be used to specify the date in view. This prop can be in any format supported by the `date-format` prop, in ISO 8601 date string format (yyyy-mm-dd) or as a JavaScript Date object.
|
|
58
|
+
*
|
|
59
|
+
* If the `value` prop is set, the date set using the `value` prop will take precedence and the calendar will open to that date instead.
|
|
60
|
+
*/
|
|
61
|
+
export const OpenAtDate = {
|
|
62
|
+
render: () => html `<ic-calendar
|
|
63
|
+
id="open-at-date"
|
|
64
|
+
open-at-date="31/12/1999"
|
|
65
|
+
></ic-calendar>`,
|
|
66
|
+
name: "Open at date",
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* The `min` and `max` props set the minimum and maximum selectable dates in the calendar. The values can be in any format supported by the `date-format` prop, in ISO 8601 date string format (yyyy-mm-dd) or as a JavaScript Date object.
|
|
70
|
+
*/
|
|
71
|
+
export const MinMax = {
|
|
72
|
+
render: () => html `<ic-calendar
|
|
73
|
+
id="min-max"
|
|
74
|
+
min="01/08/2008"
|
|
75
|
+
max="31/08/2008"
|
|
76
|
+
></ic-calendar>`,
|
|
77
|
+
name: "Min & max",
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* Any prop that accepts a date value can be set to a Javascript Date object. The following example sets the `value`, `max` and `min` props.
|
|
81
|
+
*/
|
|
82
|
+
export const JavascriptDates = {
|
|
83
|
+
render: () => html `<ic-calendar id="js-dates"></ic-calendar>
|
|
84
|
+
<script>
|
|
85
|
+
const calendar = document.querySelector("#js-dates");
|
|
86
|
+
calendar.value = new Date(2024, 6, 1);
|
|
87
|
+
calendar.min = new Date(2024, 6, 31);
|
|
88
|
+
calendar.max = new Date(2024, 6, 31);
|
|
89
|
+
</script>`,
|
|
90
|
+
name: "JavaScript dates",
|
|
91
|
+
};
|
|
92
|
+
/**
|
|
93
|
+
* The `date-format` prop determines how dates are displayed. The supported formats are `DD/MM/YYYY`, `MM/DD/YYYY` or `YYYY/MM/DD`.
|
|
94
|
+
*/
|
|
95
|
+
export const DateFormats = {
|
|
96
|
+
render: () => html `<ic-calendar
|
|
97
|
+
id="date-formats"
|
|
98
|
+
date-format="MM/DD/YYYY"
|
|
99
|
+
></ic-calendar>`,
|
|
100
|
+
name: "Date formats",
|
|
101
|
+
};
|
|
102
|
+
/**
|
|
103
|
+
* The `start-of-week` prop sets the first day of the week in the calendar. This prop takes a number between 0 and 6, where 0 is Sunday and 6 is Saturday. By default, the first day of the week is set to Monday (1).
|
|
104
|
+
*/
|
|
105
|
+
export const StartOfWeek = {
|
|
106
|
+
render: () => html `<ic-calendar id="start-of-week"></ic-calendar>
|
|
107
|
+
<script>
|
|
108
|
+
const calendar = document.querySelector("#start-of-week");
|
|
109
|
+
calendar.startOfWeek = 6;
|
|
110
|
+
</script>`,
|
|
111
|
+
name: "Start of week",
|
|
112
|
+
};
|
|
113
|
+
/**
|
|
114
|
+
* Disable specific days of the week by using the `disable-days` prop. This prop takes an array of numbers between 0 and 6, where 0 is Sunday and 6 is Saturday.
|
|
115
|
+
*/
|
|
116
|
+
export const DisableDaysOfWeek = {
|
|
117
|
+
render: () => html `<ic-calendar id="disable-weekends"></ic-calendar>
|
|
118
|
+
<script>
|
|
119
|
+
const calendar = document.querySelector("#disable-weekends");
|
|
120
|
+
calendar.disableDays = [0, 6];
|
|
121
|
+
</script>`,
|
|
122
|
+
name: "Disable days of the week",
|
|
123
|
+
};
|
|
124
|
+
/**
|
|
125
|
+
* Dates before today can be disabled with the `disable-past` prop.
|
|
126
|
+
*/
|
|
127
|
+
export const DisablePast = {
|
|
128
|
+
render: () => html ` <ic-calendar
|
|
129
|
+
id="disable-past"
|
|
130
|
+
disable-past="true"
|
|
131
|
+
></ic-calendar>`,
|
|
132
|
+
name: "Disable dates in past",
|
|
133
|
+
};
|
|
134
|
+
/**
|
|
135
|
+
* Dates after today can be disabled with the `disable-future` prop.
|
|
136
|
+
*/
|
|
137
|
+
export const DisableFuture = {
|
|
138
|
+
render: () => html `<ic-calendar id="disable-future" disable-future="true"></ic-calendar>`,
|
|
139
|
+
name: "Disable dates in future",
|
|
140
|
+
};
|
|
141
|
+
/**
|
|
142
|
+
* Days outside of the current month in view can be hidden by setting the `show-days-outside-month` prop to `false`.
|
|
143
|
+
*/
|
|
144
|
+
export const DaysOutsideMonthHidden = {
|
|
145
|
+
render: () => html `<ic-calendar
|
|
146
|
+
id="days-outside-month-hidden"
|
|
147
|
+
show-days-outside-month="false"
|
|
148
|
+
></ic-calendar>`,
|
|
149
|
+
name: "Days outside month hidden",
|
|
150
|
+
};
|
|
151
|
+
/**
|
|
152
|
+
* The "Go to today" and "Clear" buttons can be hidden from the calendar view by setting the `show-today-button` and `show-clear-button` props to `false`.
|
|
153
|
+
*/
|
|
154
|
+
export const ButtonsHidden = {
|
|
155
|
+
render: () => html `<ic-calendar
|
|
156
|
+
id="buttons-hidden"
|
|
157
|
+
show-today-button="false"
|
|
158
|
+
show-clear-button="false"
|
|
159
|
+
></ic-calendar>`,
|
|
160
|
+
name: "Today & clear buttons hidden",
|
|
161
|
+
};
|
|
162
|
+
/**
|
|
163
|
+
* The `icChange` event is emitted by the calendar when the selected date changes.
|
|
164
|
+
*/
|
|
165
|
+
export const IcChangeEvent = {
|
|
166
|
+
render: () => {
|
|
167
|
+
setTimeout(() => {
|
|
168
|
+
document.addEventListener("icChange", function (event) {
|
|
169
|
+
if (event.detail.value) {
|
|
170
|
+
document.getElementById(SELECTED_DATE_DISPLAY).textContent =
|
|
171
|
+
SELECTED_DATE + event.detail.value;
|
|
172
|
+
document.getElementById("icchange-event-display").innerHTML = `icChange event emitted: {<br>
|
|
173
|
+
value: ${event.detail.value},<br>
|
|
174
|
+
utcValue: ${event.detail.utcValue},<br>
|
|
175
|
+
dateObject: {day: ${event.detail.dateObject.day}, month: ${event.detail.dateObject.month}, year: ${event.detail.dateObject.year}}<br>
|
|
176
|
+
}`;
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
document.getElementById(SELECTED_DATE_DISPLAY).textContent =
|
|
180
|
+
NO_DATE_SELECTED;
|
|
181
|
+
document.getElementById("icchange-event-display").textContent =
|
|
182
|
+
"No icChange event emitted";
|
|
183
|
+
}
|
|
184
|
+
});
|
|
185
|
+
}, 0);
|
|
186
|
+
return html `<ic-calendar id="ic-change-event"></ic-calendar>
|
|
187
|
+
<span>
|
|
188
|
+
<ic-typography id="selected-date-display" style="top: 420px"
|
|
189
|
+
>No date selected</ic-typography
|
|
190
|
+
>
|
|
191
|
+
<ic-typography id="icchange-event-display" style="top: 428px">
|
|
192
|
+
No icChange event emitted
|
|
193
|
+
</ic-typography>
|
|
194
|
+
</span>`;
|
|
195
|
+
},
|
|
196
|
+
name: "IcChange event",
|
|
197
|
+
};
|
|
198
|
+
const defaultArgs = {
|
|
199
|
+
["date-format"]: "DD/MM/YYYY",
|
|
200
|
+
disabled: false,
|
|
201
|
+
["disable-days"]: [],
|
|
202
|
+
["disable-future"]: false,
|
|
203
|
+
["disable-past"]: false,
|
|
204
|
+
max: "",
|
|
205
|
+
min: "",
|
|
206
|
+
["open-at-date"]: "",
|
|
207
|
+
["show-clear-button"]: true,
|
|
208
|
+
["show-days-outside-month"]: true,
|
|
209
|
+
["show-today-button"]: true,
|
|
210
|
+
size: "medium",
|
|
211
|
+
["start-of-week"]: 1,
|
|
212
|
+
theme: "inherit",
|
|
213
|
+
value: "",
|
|
214
|
+
};
|
|
215
|
+
const weekDays = {
|
|
216
|
+
Sunday: 0,
|
|
217
|
+
Monday: 1,
|
|
218
|
+
Tuesday: 2,
|
|
219
|
+
Wednesday: 3,
|
|
220
|
+
Thursday: 4,
|
|
221
|
+
Friday: 5,
|
|
222
|
+
Saturday: 6,
|
|
223
|
+
};
|
|
224
|
+
export const Playground = {
|
|
225
|
+
render: (args) => {
|
|
226
|
+
setTimeout(() => {
|
|
227
|
+
document.addEventListener("icChange", function (event) {
|
|
228
|
+
if (event.detail.value) {
|
|
229
|
+
document.getElementById("playground-selected-date-display").textContent = SELECTED_DATE + event.detail.value;
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
document.getElementById("playground-selected-date-display").textContent = NO_DATE_SELECTED;
|
|
233
|
+
}
|
|
234
|
+
});
|
|
235
|
+
}, 0);
|
|
236
|
+
return html `<ic-calendar
|
|
237
|
+
id="playground"
|
|
238
|
+
disabled=${args.disabled}
|
|
239
|
+
size=${args.size}
|
|
240
|
+
date-format=${args["date-format"]}
|
|
241
|
+
disable-days=${JSON.stringify(args["disable-days"])}
|
|
242
|
+
disable-future=${args["disable-future"]}
|
|
243
|
+
disable-past=${args["disable-past"]}
|
|
244
|
+
max=${args.max}
|
|
245
|
+
min=${args.min}
|
|
246
|
+
open-at-date=${args["open-at-date"]}
|
|
247
|
+
show-clear-button=${args["show-clear-button"]}
|
|
248
|
+
show-days-outside-month=${args["show-days-outside-month"]}
|
|
249
|
+
show-today-button=${args["show-today-button"]}
|
|
250
|
+
start-of-week=${args["start-of-week"]}
|
|
251
|
+
theme=${args.theme}
|
|
252
|
+
value=${args.value}
|
|
253
|
+
></ic-calendar>
|
|
254
|
+
<span>
|
|
255
|
+
<ic-typography id="playground-selected-date-display" style="top: 420px"
|
|
256
|
+
>No date selected</ic-typography
|
|
257
|
+
>
|
|
258
|
+
</span>`;
|
|
259
|
+
},
|
|
260
|
+
name: "Playground",
|
|
261
|
+
args: defaultArgs,
|
|
262
|
+
argTypes: {
|
|
263
|
+
["date-format"]: {
|
|
264
|
+
options: ["DD/MM/YYYY", "MM/DD/YYYY", "YYYY/MM/DD"],
|
|
265
|
+
control: {
|
|
266
|
+
type: INLINE_RADIO,
|
|
267
|
+
},
|
|
268
|
+
},
|
|
269
|
+
size: {
|
|
270
|
+
control: INLINE_RADIO,
|
|
271
|
+
options: ["small", "medium", "large"],
|
|
272
|
+
},
|
|
273
|
+
["start-of-week"]: {
|
|
274
|
+
options: Object.keys(weekDays),
|
|
275
|
+
mapping: weekDays,
|
|
276
|
+
control: {
|
|
277
|
+
type: INLINE_RADIO,
|
|
278
|
+
labels: {
|
|
279
|
+
Sunday: "Sunday",
|
|
280
|
+
Monday: "Monday",
|
|
281
|
+
Tuesday: "Tuesday",
|
|
282
|
+
Wednesday: "Wednesday",
|
|
283
|
+
Thursday: "Thursday",
|
|
284
|
+
Friday: "Friday",
|
|
285
|
+
Saturday: "Saturday",
|
|
286
|
+
},
|
|
287
|
+
},
|
|
288
|
+
},
|
|
289
|
+
theme: {
|
|
290
|
+
control: INLINE_RADIO,
|
|
291
|
+
options: ["inherit", "light", "dark"],
|
|
292
|
+
},
|
|
293
|
+
},
|
|
294
|
+
};
|
|
295
|
+
//# sourceMappingURL=ic-calendar.stories.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ic-calendar.stories.js","sourceRoot":"","sources":["../../../../../src/components/ic-calendar/ic-calendar.stories.js"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,eAAe;IACb,KAAK,EAAE,yBAAyB;IAChC,SAAS,EAAE,aAAa;IACxB,UAAU,EAAE;QACV,YAAY,EAAE;YACZ,IAAI,EAAE,MAAM;SACb;KACF;CACF,CAAC;AAEF,MAAM,YAAY,GAAG,cAAc,CAAC;AACpC,MAAM,qBAAqB,GAAG,uBAAuB,CAAC;AACtD,MAAM,aAAa,GAAG,iBAAiB,CAAC;AACxC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;AAE5C;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,MAAM,EAAE,GAAG,EAAE;QACX,UAAU,CAAC,GAAG,EAAE;YACd,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE,UAAU,KAAK;gBACnD,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;oBACvB,QAAQ,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC,WAAW;wBACxD,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;gBACvC,CAAC;qBAAM,CAAC;oBACN,QAAQ,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC,WAAW;wBACxD,gBAAgB,CAAC;gBACrB,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,CAAC,CAAC,CAAC;QACN,OAAO,IAAI,CAAA;;;;;cAKD,CAAC;IACb,CAAC;IACD,IAAI,EAAE,SAAS;CAChB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAA,2DAA2D;IAC7E,IAAI,EAAE,OAAO;CACd,CAAC;AAEF;;;;GAIG;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,MAAM,EAAE,GAAG,EAAE,CACX,IAAI,CAAA;;;oBAGY;IAClB,IAAI,EAAE,cAAc;CACrB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,MAAM,EAAE,GAAG,EAAE,CACX,IAAI,CAAA;;;;oBAIY;IAClB,IAAI,EAAE,WAAW;CAClB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAA;;;;;;cAMN;IACZ,IAAI,EAAE,kBAAkB;CACzB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,MAAM,EAAE,GAAG,EAAE,CACX,IAAI,CAAA;;;oBAGY;IAClB,IAAI,EAAE,cAAc;CACrB,CAAC;AAEF;;GAEG;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,MAAM,EAAE,GAAG,EAAE,CACX,IAAI,CAAA;;;;gBAIQ;IACd,IAAI,EAAE,eAAe;CACtB,CAAC;AAEF;;GAEG;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,MAAM,EAAE,GAAG,EAAE,CACX,IAAI,CAAA;;;;gBAIQ;IACd,IAAI,EAAE,0BAA0B;CACjC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAA;;;kBAGF;IAChB,IAAI,EAAE,uBAAuB;CAC9B,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,MAAM,EAAE,GAAG,EAAE,CACX,IAAI,CAAA,uEAAuE;IAC7E,IAAI,EAAE,yBAAyB;CAChC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,MAAM,EAAE,GAAG,EAAE,CACX,IAAI,CAAA;;;oBAGY;IAClB,IAAI,EAAE,2BAA2B;CAClC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,MAAM,EAAE,GAAG,EAAE,CACX,IAAI,CAAA;;;;oBAIY;IAClB,IAAI,EAAE,8BAA8B;CACrC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,MAAM,EAAE,GAAG,EAAE;QACX,UAAU,CAAC,GAAG,EAAE;YACd,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE,UAAU,KAAK;gBACnD,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;oBACvB,QAAQ,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC,WAAW;wBACxD,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;oBACrC,QAAQ,CAAC,cAAc,CACrB,wBAAwB,CACzB,CAAC,SAAS,GAAG;qBACH,KAAK,CAAC,MAAM,CAAC,KAAK;wBACf,KAAK,CAAC,MAAM,CAAC,QAAQ;gCACb,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,YAAY,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,WAAW,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI;YAC/H,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,QAAQ,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC,WAAW;wBACxD,gBAAgB,CAAC;oBACnB,QAAQ,CAAC,cAAc,CAAC,wBAAwB,CAAC,CAAC,WAAW;wBAC3D,2BAA2B,CAAC;gBAChC,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,CAAC,CAAC,CAAC;QACN,OAAO,IAAI,CAAA;;;;;;;;cAQD,CAAC;IACb,CAAC;IACD,IAAI,EAAE,gBAAgB;CACvB,CAAC;AAEF,MAAM,WAAW,GAAG;IAClB,CAAC,aAAa,CAAC,EAAE,YAAY;IAC7B,QAAQ,EAAE,KAAK;IACf,CAAC,cAAc,CAAC,EAAE,EAAE;IACpB,CAAC,gBAAgB,CAAC,EAAE,KAAK;IACzB,CAAC,cAAc,CAAC,EAAE,KAAK;IACvB,GAAG,EAAE,EAAE;IACP,GAAG,EAAE,EAAE;IACP,CAAC,cAAc,CAAC,EAAE,EAAE;IACpB,CAAC,mBAAmB,CAAC,EAAE,IAAI;IAC3B,CAAC,yBAAyB,CAAC,EAAE,IAAI;IACjC,CAAC,mBAAmB,CAAC,EAAE,IAAI;IAC3B,IAAI,EAAE,QAAQ;IACd,CAAC,eAAe,CAAC,EAAE,CAAC;IACpB,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,EAAE;CACV,CAAC;AAEF,MAAM,QAAQ,GAAG;IACf,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,CAAC;IACV,SAAS,EAAE,CAAC;IACZ,QAAQ,EAAE,CAAC;IACX,MAAM,EAAE,CAAC;IACT,QAAQ,EAAE,CAAC;CACZ,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;QACf,UAAU,CAAC,GAAG,EAAE;YACd,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE,UAAU,KAAK;gBACnD,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;oBACvB,QAAQ,CAAC,cAAc,CACrB,kCAAkC,CACnC,CAAC,WAAW,GAAG,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;gBACrD,CAAC;qBAAM,CAAC;oBACN,QAAQ,CAAC,cAAc,CACrB,kCAAkC,CACnC,CAAC,WAAW,GAAG,gBAAgB,CAAC;gBACnC,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,CAAC,CAAC,CAAC;QACN,OAAO,IAAI,CAAA;;mBAEI,IAAI,CAAC,QAAQ;eACjB,IAAI,CAAC,IAAI;sBACF,IAAI,CAAC,aAAa,CAAC;uBAClB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;yBAClC,IAAI,CAAC,gBAAgB,CAAC;uBACxB,IAAI,CAAC,cAAc,CAAC;cAC7B,IAAI,CAAC,GAAG;cACR,IAAI,CAAC,GAAG;uBACC,IAAI,CAAC,cAAc,CAAC;4BACf,IAAI,CAAC,mBAAmB,CAAC;kCACnB,IAAI,CAAC,yBAAyB,CAAC;4BACrC,IAAI,CAAC,mBAAmB,CAAC;wBAC7B,IAAI,CAAC,eAAe,CAAC;gBAC7B,IAAI,CAAC,KAAK;gBACV,IAAI,CAAC,KAAK;;;;;;cAMZ,CAAC;IACb,CAAC;IACD,IAAI,EAAE,YAAY;IAClB,IAAI,EAAE,WAAW;IACjB,QAAQ,EAAE;QACR,CAAC,aAAa,CAAC,EAAE;YACf,OAAO,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,YAAY,CAAC;YACnD,OAAO,EAAE;gBACP,IAAI,EAAE,YAAY;aACnB;SACF;QACD,IAAI,EAAE;YACJ,OAAO,EAAE,YAAY;YACrB,OAAO,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC;SACtC;QACD,CAAC,eAAe,CAAC,EAAE;YACjB,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC9B,OAAO,EAAE,QAAQ;YACjB,OAAO,EAAE;gBACP,IAAI,EAAE,YAAY;gBAClB,MAAM,EAAE;oBACN,MAAM,EAAE,QAAQ;oBAChB,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE,SAAS;oBAClB,SAAS,EAAE,WAAW;oBACtB,QAAQ,EAAE,UAAU;oBACpB,MAAM,EAAE,QAAQ;oBAChB,QAAQ,EAAE,UAAU;iBACrB;aACF;SACF;QACD,KAAK,EAAE;YACL,OAAO,EAAE,YAAY;YACrB,OAAO,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;SACtC;KACF;CACF,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\nimport readme from \"./readme.md\";\nimport { html } from \"lit-html\";\nexport default {\n title: \"Web Components/Calendar\",\n component: \"ic-calendar\",\n parameters: {\n componentAPI: {\n data: readme,\n },\n },\n};\n\nconst INLINE_RADIO = \"inline-radio\";\nconst SELECTED_DATE_DISPLAY = \"selected-date-display\";\nconst SELECTED_DATE = \"Selected date: \";\nconst NO_DATE_SELECTED = \"No date selected\";\n\n/**\n * Use a calendar to select a single date where visualising that date could be useful.\n *\n * Click the 'Component API' tab to view all the available props and events for calendars.\n *\n * To use the calendar component, import `@ukic/canary-web-components` into your application.\n *\n * The default calendar uses the date format of `DD/MM/YYYY`.\n */\nexport const Default = {\n render: () => {\n setTimeout(() => {\n document.addEventListener(\"icChange\", function (event) {\n if (event.detail.value) {\n document.getElementById(SELECTED_DATE_DISPLAY).textContent =\n SELECTED_DATE + event.detail.value;\n } else {\n document.getElementById(SELECTED_DATE_DISPLAY).textContent =\n NO_DATE_SELECTED;\n }\n });\n }, 0);\n return html`<ic-calendar id=\"default\"></ic-calendar>\n <span>\n <ic-typography id=\"selected-date-display\" style=\"top: 420px\"\n >No date selected</ic-typography\n >\n </span>`;\n },\n name: \"Default\",\n};\n\n/**\n * The `value` prop sets the selected date in the calendar. The value can be in any format supported by the `date-format` prop, in ISO 8601 date string format (yyyy-mm-dd) or as a JavaScript Date object.\n */\nexport const Value = {\n render: () => html`<ic-calendar id=\"value\" value=\"01/01/2000\"></ic-calendar>`,\n name: \"Value\",\n};\n\n/**\n * The `open-at-date` prop can be used to specify the date in view. This prop can be in any format supported by the `date-format` prop, in ISO 8601 date string format (yyyy-mm-dd) or as a JavaScript Date object.\n *\n * If the `value` prop is set, the date set using the `value` prop will take precedence and the calendar will open to that date instead.\n */\n\nexport const OpenAtDate = {\n render: () =>\n html`<ic-calendar\n id=\"open-at-date\"\n open-at-date=\"31/12/1999\"\n ></ic-calendar>`,\n name: \"Open at date\",\n};\n\n/**\n * The `min` and `max` props set the minimum and maximum selectable dates in the calendar. The values can be in any format supported by the `date-format` prop, in ISO 8601 date string format (yyyy-mm-dd) or as a JavaScript Date object.\n */\nexport const MinMax = {\n render: () =>\n html`<ic-calendar\n id=\"min-max\"\n min=\"01/08/2008\"\n max=\"31/08/2008\"\n ></ic-calendar>`,\n name: \"Min & max\",\n};\n\n/**\n * Any prop that accepts a date value can be set to a Javascript Date object. The following example sets the `value`, `max` and `min` props.\n */\nexport const JavascriptDates = {\n render: () => html`<ic-calendar id=\"js-dates\"></ic-calendar>\n <script>\n const calendar = document.querySelector(\"#js-dates\");\n calendar.value = new Date(2024, 6, 1);\n calendar.min = new Date(2024, 6, 31);\n calendar.max = new Date(2024, 6, 31);\n </script>`,\n name: \"JavaScript dates\",\n};\n\n/**\n * The `date-format` prop determines how dates are displayed. The supported formats are `DD/MM/YYYY`, `MM/DD/YYYY` or `YYYY/MM/DD`.\n */\nexport const DateFormats = {\n render: () =>\n html`<ic-calendar\n id=\"date-formats\"\n date-format=\"MM/DD/YYYY\"\n ></ic-calendar>`,\n name: \"Date formats\",\n};\n\n/**\n * The `start-of-week` prop sets the first day of the week in the calendar. This prop takes a number between 0 and 6, where 0 is Sunday and 6 is Saturday. By default, the first day of the week is set to Monday (1).\n */\n\nexport const StartOfWeek = {\n render: () =>\n html`<ic-calendar id=\"start-of-week\"></ic-calendar>\n <script>\n const calendar = document.querySelector(\"#start-of-week\");\n calendar.startOfWeek = 6;\n </script>`,\n name: \"Start of week\",\n};\n\n/**\n * Disable specific days of the week by using the `disable-days` prop. This prop takes an array of numbers between 0 and 6, where 0 is Sunday and 6 is Saturday.\n */\n\nexport const DisableDaysOfWeek = {\n render: () =>\n html`<ic-calendar id=\"disable-weekends\"></ic-calendar>\n <script>\n const calendar = document.querySelector(\"#disable-weekends\");\n calendar.disableDays = [0, 6];\n </script>`,\n name: \"Disable days of the week\",\n};\n\n/**\n * Dates before today can be disabled with the `disable-past` prop.\n */\nexport const DisablePast = {\n render: () => html` <ic-calendar\n id=\"disable-past\"\n disable-past=\"true\"\n ></ic-calendar>`,\n name: \"Disable dates in past\",\n};\n\n/**\n * Dates after today can be disabled with the `disable-future` prop.\n */\nexport const DisableFuture = {\n render: () =>\n html`<ic-calendar id=\"disable-future\" disable-future=\"true\"></ic-calendar>`,\n name: \"Disable dates in future\",\n};\n\n/**\n * Days outside of the current month in view can be hidden by setting the `show-days-outside-month` prop to `false`.\n */\nexport const DaysOutsideMonthHidden = {\n render: () =>\n html`<ic-calendar\n id=\"days-outside-month-hidden\"\n show-days-outside-month=\"false\"\n ></ic-calendar>`,\n name: \"Days outside month hidden\",\n};\n\n/**\n * The \"Go to today\" and \"Clear\" buttons can be hidden from the calendar view by setting the `show-today-button` and `show-clear-button` props to `false`.\n */\nexport const ButtonsHidden = {\n render: () =>\n html`<ic-calendar\n id=\"buttons-hidden\"\n show-today-button=\"false\"\n show-clear-button=\"false\"\n ></ic-calendar>`,\n name: \"Today & clear buttons hidden\",\n};\n\n/**\n * The `icChange` event is emitted by the calendar when the selected date changes.\n */\nexport const IcChangeEvent = {\n render: () => {\n setTimeout(() => {\n document.addEventListener(\"icChange\", function (event) {\n if (event.detail.value) {\n document.getElementById(SELECTED_DATE_DISPLAY).textContent =\n SELECTED_DATE + event.detail.value;\n document.getElementById(\n \"icchange-event-display\"\n ).innerHTML = `icChange event emitted: {<br>\n value: ${event.detail.value},<br>\n utcValue: ${event.detail.utcValue},<br>\n dateObject: {day: ${event.detail.dateObject.day}, month: ${event.detail.dateObject.month}, year: ${event.detail.dateObject.year}}<br>\n }`;\n } else {\n document.getElementById(SELECTED_DATE_DISPLAY).textContent =\n NO_DATE_SELECTED;\n document.getElementById(\"icchange-event-display\").textContent =\n \"No icChange event emitted\";\n }\n });\n }, 0);\n return html`<ic-calendar id=\"ic-change-event\"></ic-calendar>\n <span>\n <ic-typography id=\"selected-date-display\" style=\"top: 420px\"\n >No date selected</ic-typography\n >\n <ic-typography id=\"icchange-event-display\" style=\"top: 428px\">\n No icChange event emitted\n </ic-typography>\n </span>`;\n },\n name: \"IcChange event\",\n};\n\nconst defaultArgs = {\n [\"date-format\"]: \"DD/MM/YYYY\",\n disabled: false,\n [\"disable-days\"]: [],\n [\"disable-future\"]: false,\n [\"disable-past\"]: false,\n max: \"\",\n min: \"\",\n [\"open-at-date\"]: \"\",\n [\"show-clear-button\"]: true,\n [\"show-days-outside-month\"]: true,\n [\"show-today-button\"]: true,\n size: \"medium\",\n [\"start-of-week\"]: 1,\n theme: \"inherit\",\n value: \"\",\n};\n\nconst weekDays = {\n Sunday: 0,\n Monday: 1,\n Tuesday: 2,\n Wednesday: 3,\n Thursday: 4,\n Friday: 5,\n Saturday: 6,\n};\n\nexport const Playground = {\n render: (args) => {\n setTimeout(() => {\n document.addEventListener(\"icChange\", function (event) {\n if (event.detail.value) {\n document.getElementById(\n \"playground-selected-date-display\"\n ).textContent = SELECTED_DATE + event.detail.value;\n } else {\n document.getElementById(\n \"playground-selected-date-display\"\n ).textContent = NO_DATE_SELECTED;\n }\n });\n }, 0);\n return html`<ic-calendar\n id=\"playground\"\n disabled=${args.disabled}\n size=${args.size}\n date-format=${args[\"date-format\"]}\n disable-days=${JSON.stringify(args[\"disable-days\"])}\n disable-future=${args[\"disable-future\"]}\n disable-past=${args[\"disable-past\"]}\n max=${args.max}\n min=${args.min}\n open-at-date=${args[\"open-at-date\"]}\n show-clear-button=${args[\"show-clear-button\"]}\n show-days-outside-month=${args[\"show-days-outside-month\"]}\n show-today-button=${args[\"show-today-button\"]}\n start-of-week=${args[\"start-of-week\"]}\n theme=${args.theme}\n value=${args.value}\n ></ic-calendar>\n <span>\n <ic-typography id=\"playground-selected-date-display\" style=\"top: 420px\"\n >No date selected</ic-typography\n >\n </span>`;\n },\n name: \"Playground\",\n args: defaultArgs,\n argTypes: {\n [\"date-format\"]: {\n options: [\"DD/MM/YYYY\", \"MM/DD/YYYY\", \"YYYY/MM/DD\"],\n control: {\n type: INLINE_RADIO,\n },\n },\n size: {\n control: INLINE_RADIO,\n options: [\"small\", \"medium\", \"large\"],\n },\n [\"start-of-week\"]: {\n options: Object.keys(weekDays),\n mapping: weekDays,\n control: {\n type: INLINE_RADIO,\n labels: {\n Sunday: \"Sunday\",\n Monday: \"Monday\",\n Tuesday: \"Tuesday\",\n Wednesday: \"Wednesday\",\n Thursday: \"Thursday\",\n Friday: \"Friday\",\n Saturday: \"Saturday\",\n },\n },\n },\n theme: {\n control: INLINE_RADIO,\n options: [\"inherit\", \"light\", \"dark\"],\n },\n },\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ic-day-button.js","sourceRoot":"","sources":["../../../../../src/components/ic-calendar/ic-day-button.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAuB,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAiBlE,MAAM,CAAC,MAAM,SAAS,GAAwC,CAAC,EAC7D,QAAQ,EACR,KAAK,EACL,GAAG,EACH,WAAW,EACX,UAAU,EACV,SAAS,EACT,WAAW,EACX,QAAQ,EACR,cAAc,EACd,OAAO,EACP,oBAAoB,EACpB,UAAU,GACX,EAAE,EAAE;IACH,MAAM,cAAc,GAAG,GAAS,EAAE;QAChC,WAAW,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,GAAS,EAAE;QAChC,UAAU,EAAE,CAAC;IACf,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,GAAS,EAAE;QAC/B,SAAS,EAAE,CAAC;IACd,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IACpD,MAAM,YAAY,GAAG,CAAC,OAAO,IAAI,UAAU,CAAC;IAC5C,MAAM,YAAY,GAAG,WAAW,KAAK,GAAG,CAAC,QAAQ,EAAE,CAAC;IACpD,MAAM,QAAQ,GAAG,YAAY,IAAI,CAAC,YAAY,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAEzE,OAAO,CACL,WAAK,KAAK,EAAC,sBAAsB;QAC/B,cACE,KAAK,EAAE;gBACL,YAAY,EAAE,IAAI;gBAClB,eAAe,EAAE,YAAY;gBAC7B,eAAe,EAAE,CAAC,CAAC,YAAY;gBAC/B,MAAM,EAAE,YAAY,IAAI,CAAC,oBAAoB;gBAC7C,QAAQ,EAAE,QAAQ;gBAClB,KAAK,EAAE,KAAK;gBACZ,QAAQ,EAAE,QAAQ;gBAClB,QAAQ,EAAE,QAAQ;aACnB,EACD,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBACd,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,mBAC7B,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,kBAC5B,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,gBAEtC,QAAQ,IAAI,YAAY,IAAI,YAAY;gBACtC,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,UAAU,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,GAAG,CAAC,OAAO,EAAE,IAChD,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CACvB,IAAI,GAAG,CAAC,WAAW,EAAE,EAAE,EAE7B,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,cAAc,EACvB,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE;gBACV,IAAI,QAAQ,IAAI,EAAE,IAAI,cAAc,EAAE,CAAC;oBACrC,cAAc,CAAC,EAAE,CAAC,CAAC;gBACrB,CAAC;YACH,CAAC,IAEA,CAAC,CAAC,YAAY,IAAI,CAAC,YAAY,IAAI,oBAAoB,CAAC,CAAC,IAAI,CAC5D,qBAAe,OAAO,EAAC,gBAAgB,EAAC,MAAM,EAAE,YAAY,IACzD,GAAG,CAAC,OAAO,EAAE,CACA,CACjB,CACM,CACL,CACP,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import { h, FunctionalComponent } from \"@stencil/core\";\nimport { stringEnumToArray } from \"../../utils/helpers\";\nimport { IcDayNames, IcDateInputMonths } from \"../../utils/types\";\n\nexport type DayButtonProps = {\n focussed: boolean;\n today: boolean;\n day: Date;\n monthInView: number;\n onFocusDay: () => void;\n onBlurDay: () => void;\n onSelectDay: (day: Date) => void;\n selected: boolean;\n focussedDayRef?: (element: HTMLButtonElement) => void;\n inRange: boolean;\n showDaysOutsideMonth?: boolean;\n disableDay?: boolean;\n};\n\nexport const DayButton: FunctionalComponent<DayButtonProps> = ({\n focussed,\n today,\n day,\n monthInView,\n onFocusDay,\n onBlurDay,\n onSelectDay,\n selected,\n focussedDayRef,\n inRange,\n showDaysOutsideMonth,\n disableDay,\n}) => {\n const handleDayClick = (): void => {\n onSelectDay(day);\n };\n\n const handleDayFocus = (): void => {\n onFocusDay();\n };\n\n const handleDayBlur = (): void => {\n onBlurDay();\n };\n\n const dayNames = stringEnumToArray(IcDayNames);\n const months = stringEnumToArray(IcDateInputMonths);\n const outsideRange = !inRange || disableDay;\n const outsideMonth = monthInView !== day.getMonth();\n const disabled = outsideRange || (outsideMonth && !showDaysOutsideMonth);\n\n return (\n <div class=\"day-button-container\">\n <button\n class={{\n \"day-button\": true,\n \"outside-month\": outsideMonth,\n \"outside-range\": !!outsideRange,\n hidden: outsideMonth && !showDaysOutsideMonth,\n disabled: disabled,\n today: today,\n selected: selected,\n focussed: focussed,\n }}\n tabIndex={focussed ? 0 : -1}\n aria-hidden={outsideMonth ? \"true\" : \"false\"}\n aria-disabled={disabled ? \"true\" : \"false\"}\n aria-current={today ? \"date\" : undefined}\n aria-label={\n disabled || outsideMonth || outsideRange\n ? undefined\n : `Choose ${dayNames[day.getDay()]}, ${day.getDate()} ${\n months[day.getMonth()]\n } ${day.getFullYear()}`\n }\n disabled={disabled}\n onClick={handleDayClick}\n onBlur={handleDayBlur}\n onFocus={handleDayFocus}\n ref={(el) => {\n if (focussed && el && focussedDayRef) {\n focussedDayRef(el);\n }\n }}\n >\n {(!outsideMonth || (outsideMonth && showDaysOutsideMonth)) && (\n <ic-typography variant=\"subtitle-small\" italic={outsideMonth}>\n {day.getDate()}\n </ic-typography>\n )}\n </button>\n </div>\n );\n};\n"]}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { h } from "@stencil/core";
|
|
2
|
+
import { dateInRange, getMonthStart, getMonthEnd, } from "../../utils/date-helpers";
|
|
3
|
+
import { stringEnumToArray } from "../../utils/helpers";
|
|
4
|
+
import { IcDateInputMonths } from "../../utils/types";
|
|
5
|
+
export const MonthPicker = ({ size, focussedMonth, monthInView, onSelectMonth, onKeyDown, focussedMonthRef, minDate, maxDate, yearInView, }) => {
|
|
6
|
+
const handleMonthClick = (ev) => {
|
|
7
|
+
const button = ev.target;
|
|
8
|
+
onSelectMonth(Number(button.getAttribute("data-month")));
|
|
9
|
+
};
|
|
10
|
+
const monthNames = stringEnumToArray(IcDateInputMonths);
|
|
11
|
+
const cols = size === "small" ? 2 : 3;
|
|
12
|
+
const months = [];
|
|
13
|
+
for (let i = 0; i < monthNames.length; i += cols) {
|
|
14
|
+
months.push(monthNames.slice(i, i + cols));
|
|
15
|
+
}
|
|
16
|
+
return (h("div", { class: {
|
|
17
|
+
"month-picker": true,
|
|
18
|
+
}, role: "grid" }, months.map((month, monthIdx) => (h("div", { class: "month-picker-row", key: monthIdx, role: "row" }, month.map((mon, index) => {
|
|
19
|
+
const correctedIndex = monthIdx * cols + index;
|
|
20
|
+
const current = monthInView === correctedIndex;
|
|
21
|
+
const focussed = focussedMonth === correctedIndex;
|
|
22
|
+
const outsideRange = !dateInRange(new Date(yearInView, correctedIndex, 1), minDate ? getMonthStart(minDate) : null, maxDate ? getMonthEnd(maxDate) : null);
|
|
23
|
+
return (h("ic-button", { role: "gridcell", class: {
|
|
24
|
+
"month-button": true,
|
|
25
|
+
selected: current,
|
|
26
|
+
focussed: focussed,
|
|
27
|
+
disabled: outsideRange,
|
|
28
|
+
}, "full-width": true, disabled: outsideRange, variant: current ? "primary" : "tertiary", "data-month": correctedIndex, size: size, tabIndex: focussed ? 0 : -1, "aria-current": current ? "true" : "false", "aria-label": current ? "" : `select ${mon}`, onClick: handleMonthClick, onKeyDown: onKeyDown, ref: (el) => {
|
|
29
|
+
if (focussed && el) {
|
|
30
|
+
focussedMonthRef(el);
|
|
31
|
+
}
|
|
32
|
+
} }, mon));
|
|
33
|
+
}))))));
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=ic-month-picker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ic-month-picker.js","sourceRoot":"","sources":["../../../../../src/components/ic-calendar/ic-month-picker.tsx"],"names":[],"mappings":"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","sourcesContent":["import { h, FunctionalComponent } from \"@stencil/core\";\nimport {\n dateInRange,\n getMonthStart,\n getMonthEnd,\n} from \"../../utils/date-helpers\";\nimport { stringEnumToArray } from \"../../utils/helpers\";\nimport { IcSizes, IcDateInputMonths } from \"../../utils/types\";\n\nexport type MonthPickerProps = {\n focussedMonth: number;\n monthInView: number;\n yearInView: number;\n onSelectMonth: (month: number) => void;\n onKeyDown: (ev: KeyboardEvent) => void;\n focussedMonthRef: (element: HTMLIcButtonElement) => void;\n minDate: Date | null;\n maxDate: Date | null;\n size?: IcSizes;\n};\n\nexport const MonthPicker: FunctionalComponent<MonthPickerProps> = ({\n size,\n focussedMonth,\n monthInView,\n onSelectMonth,\n onKeyDown,\n focussedMonthRef,\n minDate,\n maxDate,\n yearInView,\n}) => {\n const handleMonthClick = (ev: MouseEvent): void => {\n const button = ev.target as HTMLElement;\n onSelectMonth(Number(button.getAttribute(\"data-month\")));\n };\n\n const monthNames = stringEnumToArray(IcDateInputMonths);\n\n const cols = size === \"small\" ? 2 : 3;\n const months: string[][] = [];\n for (let i = 0; i < monthNames.length; i += cols) {\n months.push(monthNames.slice(i, i + cols));\n }\n\n return (\n <div\n class={{\n \"month-picker\": true,\n }}\n role=\"grid\"\n >\n {months.map((month, monthIdx) => (\n <div class=\"month-picker-row\" key={monthIdx} role=\"row\">\n {month.map((mon, index) => {\n const correctedIndex = monthIdx * cols + index;\n const current = monthInView === correctedIndex;\n const focussed = focussedMonth === correctedIndex;\n const outsideRange = !dateInRange(\n new Date(yearInView, correctedIndex, 1),\n minDate ? getMonthStart(minDate) : null,\n maxDate ? getMonthEnd(maxDate) : null\n );\n return (\n <ic-button\n role=\"gridcell\"\n class={{\n \"month-button\": true,\n selected: current,\n focussed: focussed,\n disabled: outsideRange,\n }}\n full-width\n disabled={outsideRange}\n variant={current ? \"primary\" : \"tertiary\"}\n data-month={correctedIndex}\n size={size}\n tabIndex={focussed ? 0 : -1}\n aria-current={current ? \"true\" : \"false\"}\n aria-label={current ? \"\" : `select ${mon}`}\n onClick={handleMonthClick}\n onKeyDown={onKeyDown}\n ref={(el?: HTMLIcButtonElement) => {\n if (focussed && el) {\n focussedMonthRef(el);\n }\n }}\n >\n {mon}\n </ic-button>\n );\n })}\n </div>\n ))}\n </div>\n );\n};\n"]}
|