igniteui-webcomponents 6.0.0 → 6.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +48 -0
- package/README.md +6 -1
- package/components/avatar/themes/dark/avatar.bootstrap.css.js +1 -1
- package/components/avatar/themes/dark/avatar.bootstrap.css.js.map +1 -1
- package/components/avatar/themes/dark/avatar.fluent.css.js +1 -1
- package/components/avatar/themes/dark/avatar.fluent.css.js.map +1 -1
- package/components/avatar/themes/dark/avatar.material.css.js +1 -1
- package/components/avatar/themes/dark/avatar.material.css.js.map +1 -1
- package/components/button/button-base.d.ts +5 -6
- package/components/button/button-base.js +15 -29
- package/components/button/button-base.js.map +1 -1
- package/components/button/themes/button/light/button.shared.css.js +1 -1
- package/components/button/themes/button/light/button.shared.css.js.map +1 -1
- package/components/button-group/toggle-button.d.ts +2 -2
- package/components/button-group/toggle-button.js +4 -6
- package/components/button-group/toggle-button.js.map +1 -1
- package/components/calendar/calendar.d.ts +1 -1
- package/components/calendar/calendar.js +12 -9
- package/components/calendar/calendar.js.map +1 -1
- package/components/calendar/days-view/days-view.d.ts +1 -1
- package/components/calendar/days-view/days-view.js +8 -9
- package/components/calendar/days-view/days-view.js.map +1 -1
- package/components/calendar/helpers.d.ts +12 -1
- package/components/calendar/helpers.js +35 -10
- package/components/calendar/helpers.js.map +1 -1
- package/components/calendar/model.d.ts +15 -1
- package/components/calendar/model.js +26 -5
- package/components/calendar/model.js.map +1 -1
- package/components/calendar/months-view/months-view.d.ts +1 -1
- package/components/calendar/months-view/months-view.js +6 -6
- package/components/calendar/months-view/months-view.js.map +1 -1
- package/components/calendar/themes/dark/calendar.fluent.css.js +1 -1
- package/components/calendar/themes/dark/calendar.fluent.css.js.map +1 -1
- package/components/calendar/themes/light/calendar.fluent.css.js +1 -1
- package/components/calendar/themes/light/calendar.fluent.css.js.map +1 -1
- package/components/calendar/themes/light/calendar.shared.css.js +1 -1
- package/components/calendar/themes/light/calendar.shared.css.js.map +1 -1
- package/components/calendar/years-view/years-view.d.ts +1 -1
- package/components/calendar/years-view/years-view.js +6 -6
- package/components/calendar/years-view/years-view.js.map +1 -1
- package/components/carousel/carousel-indicator-container.d.ts +2 -2
- package/components/carousel/carousel-indicator-container.js +8 -9
- package/components/carousel/carousel-indicator-container.js.map +1 -1
- package/components/carousel/carousel.d.ts +7 -8
- package/components/carousel/carousel.js +24 -20
- package/components/carousel/carousel.js.map +1 -1
- package/components/checkbox/checkbox-base.d.ts +8 -10
- package/components/checkbox/checkbox-base.js +20 -23
- package/components/checkbox/checkbox-base.js.map +1 -1
- package/components/checkbox/checkbox.d.ts +3 -3
- package/components/checkbox/checkbox.js +18 -19
- package/components/checkbox/checkbox.js.map +1 -1
- package/components/checkbox/switch.d.ts +2 -2
- package/components/checkbox/switch.js +15 -19
- package/components/checkbox/switch.js.map +1 -1
- package/components/chip/chip.d.ts +4 -0
- package/components/chip/chip.js +29 -6
- package/components/chip/chip.js.map +1 -1
- package/components/chip/themes/shared/chip.common.css.js +1 -1
- package/components/chip/themes/shared/chip.common.css.js.map +1 -1
- package/components/chip/themes/shared/chip.indigo.css.js +1 -1
- package/components/chip/themes/shared/chip.indigo.css.js.map +1 -1
- package/components/combo/combo.d.ts +2 -2
- package/components/combo/combo.js +12 -11
- package/components/combo/combo.js.map +1 -1
- package/components/combo/themes/combo.base.css.js +1 -1
- package/components/combo/themes/combo.base.css.js.map +1 -1
- package/components/combo/themes/shared/combo.fluent.css.js +1 -1
- package/components/combo/themes/shared/combo.fluent.css.js.map +1 -1
- package/components/common/controllers/focus-ring.d.ts +21 -11
- package/components/common/controllers/focus-ring.js +16 -14
- package/components/common/controllers/focus-ring.js.map +1 -1
- package/components/common/controllers/gestures.d.ts +1 -0
- package/components/common/controllers/gestures.js.map +1 -1
- package/components/common/controllers/key-bindings.d.ts +40 -33
- package/components/common/controllers/key-bindings.js +83 -71
- package/components/common/controllers/key-bindings.js.map +1 -1
- package/components/common/controllers/resize-observer.d.ts +11 -8
- package/components/common/controllers/resize-observer.js +3 -3
- package/components/common/controllers/resize-observer.js.map +1 -1
- package/components/common/definitions/defineAllComponents.js +2 -0
- package/components/common/definitions/defineAllComponents.js.map +1 -1
- package/components/common/i18n/date-range-picker.resources.d.ts +11 -0
- package/components/common/i18n/date-range-picker.resources.js +12 -0
- package/components/common/i18n/date-range-picker.resources.js.map +1 -0
- package/components/common/mixins/combo-box.js +8 -2
- package/components/common/mixins/combo-box.js.map +1 -1
- package/components/common/mixins/forms/form-value.d.ts +15 -1
- package/components/common/mixins/forms/form-value.js +25 -4
- package/components/common/mixins/forms/form-value.js.map +1 -1
- package/components/common/mixins/option.d.ts +3 -2
- package/components/common/mixins/option.js.map +1 -1
- package/components/common/part-map.d.ts +17 -0
- package/components/common/part-map.js +46 -0
- package/components/common/part-map.js.map +1 -0
- package/components/common/util.d.ts +5 -6
- package/components/common/util.js +17 -22
- package/components/common/util.js.map +1 -1
- package/components/common/validators.js +3 -7
- package/components/common/validators.js.map +1 -1
- package/components/date-picker/date-picker.d.ts +37 -37
- package/components/date-picker/date-picker.js +142 -140
- package/components/date-picker/date-picker.js.map +1 -1
- package/components/date-picker/themes/dark/date-picker.bootstrap.css.js +1 -1
- package/components/date-picker/themes/dark/date-picker.bootstrap.css.js.map +1 -1
- package/components/date-picker/themes/dark/date-picker.fluent.css.js +1 -1
- package/components/date-picker/themes/dark/date-picker.fluent.css.js.map +1 -1
- package/components/date-picker/themes/dark/date-picker.indigo.css.js +1 -1
- package/components/date-picker/themes/dark/date-picker.indigo.css.js.map +1 -1
- package/components/date-picker/themes/dark/date-picker.material.css.js +1 -1
- package/components/date-picker/themes/dark/date-picker.material.css.js.map +1 -1
- package/components/date-picker/themes/light/date-picker.bootstrap.css.js +1 -1
- package/components/date-picker/themes/light/date-picker.bootstrap.css.js.map +1 -1
- package/components/date-picker/themes/light/date-picker.fluent.css.js +1 -1
- package/components/date-picker/themes/light/date-picker.fluent.css.js.map +1 -1
- package/components/date-picker/themes/light/date-picker.indigo.css.js +1 -1
- package/components/date-picker/themes/light/date-picker.indigo.css.js.map +1 -1
- package/components/date-picker/themes/light/date-picker.material.css.js +1 -1
- package/components/date-picker/themes/light/date-picker.material.css.js.map +1 -1
- package/components/date-picker/themes/light/date-picker.shared.css.js +1 -1
- package/components/date-picker/themes/light/date-picker.shared.css.js.map +1 -1
- package/components/date-picker/themes/shared/date-picker.bootstrap.css.js +1 -1
- package/components/date-picker/themes/shared/date-picker.bootstrap.css.js.map +1 -1
- package/components/date-picker/themes/shared/date-picker.common.css.js +1 -1
- package/components/date-picker/themes/shared/date-picker.common.css.js.map +1 -1
- package/components/date-picker/themes/shared/date-picker.fluent.css.js +1 -1
- package/components/date-picker/themes/shared/date-picker.fluent.css.js.map +1 -1
- package/components/date-picker/themes/shared/date-picker.indigo.css.js +1 -1
- package/components/date-picker/themes/shared/date-picker.indigo.css.js.map +1 -1
- package/components/date-picker/themes/shared/date-picker.material.css.js +3 -0
- package/components/date-picker/themes/shared/date-picker.material.css.js.map +1 -0
- package/components/date-picker/themes/themes.js +3 -2
- package/components/date-picker/themes/themes.js.map +1 -1
- package/components/date-range-picker/date-range-picker.base.css.js +3 -0
- package/components/date-range-picker/date-range-picker.base.css.js.map +1 -0
- package/components/date-range-picker/date-range-picker.d.ts +365 -0
- package/components/date-range-picker/date-range-picker.js +810 -0
- package/components/date-range-picker/date-range-picker.js.map +1 -0
- package/components/{radio-group/radio-group.base.css.js → date-range-picker/predefined-ranges-area.base.css.js} +2 -2
- package/components/date-range-picker/predefined-ranges-area.base.css.js.map +1 -0
- package/components/date-range-picker/predefined-ranges-area.d.ts +36 -0
- package/components/date-range-picker/predefined-ranges-area.js +115 -0
- package/components/date-range-picker/predefined-ranges-area.js.map +1 -0
- package/components/date-range-picker/themes/dark/date-range-picker.bootstrap.css.js +3 -0
- package/components/date-range-picker/themes/dark/date-range-picker.bootstrap.css.js.map +1 -0
- package/components/date-range-picker/themes/dark/date-range-picker.fluent.css.d.ts +1 -0
- package/components/date-range-picker/themes/dark/date-range-picker.fluent.css.js +3 -0
- package/components/date-range-picker/themes/dark/date-range-picker.fluent.css.js.map +1 -0
- package/components/date-range-picker/themes/dark/date-range-picker.indigo.css.d.ts +1 -0
- package/components/date-range-picker/themes/dark/date-range-picker.indigo.css.js +3 -0
- package/components/date-range-picker/themes/dark/date-range-picker.indigo.css.js.map +1 -0
- package/components/date-range-picker/themes/dark/date-range-picker.material.css.d.ts +1 -0
- package/components/date-range-picker/themes/dark/date-range-picker.material.css.js +3 -0
- package/components/date-range-picker/themes/dark/date-range-picker.material.css.js.map +1 -0
- package/components/date-range-picker/themes/light/date-range-picker.bootstrap.css.d.ts +1 -0
- package/components/date-range-picker/themes/light/date-range-picker.bootstrap.css.js +3 -0
- package/components/date-range-picker/themes/light/date-range-picker.bootstrap.css.js.map +1 -0
- package/components/date-range-picker/themes/light/date-range-picker.fluent.css.d.ts +1 -0
- package/components/date-range-picker/themes/light/date-range-picker.fluent.css.js +3 -0
- package/components/date-range-picker/themes/light/date-range-picker.fluent.css.js.map +1 -0
- package/components/date-range-picker/themes/light/date-range-picker.indigo.css.d.ts +1 -0
- package/components/date-range-picker/themes/light/date-range-picker.indigo.css.js +3 -0
- package/components/date-range-picker/themes/light/date-range-picker.indigo.css.js.map +1 -0
- package/components/date-range-picker/themes/light/date-range-picker.material.css.d.ts +1 -0
- package/components/date-range-picker/themes/light/date-range-picker.material.css.js +3 -0
- package/components/date-range-picker/themes/light/date-range-picker.material.css.js.map +1 -0
- package/components/date-range-picker/themes/light/date-range-picker.shared.css.d.ts +1 -0
- package/components/date-range-picker/themes/light/date-range-picker.shared.css.js +3 -0
- package/components/date-range-picker/themes/light/date-range-picker.shared.css.js.map +1 -0
- package/components/date-range-picker/themes/ranges-themes.d.ts +2 -0
- package/components/date-range-picker/themes/ranges-themes.js +14 -0
- package/components/date-range-picker/themes/ranges-themes.js.map +1 -0
- package/components/date-range-picker/themes/shared/date-range-picker.bootstrap.css.d.ts +1 -0
- package/components/date-range-picker/themes/shared/date-range-picker.bootstrap.css.js +3 -0
- package/components/date-range-picker/themes/shared/date-range-picker.bootstrap.css.js.map +1 -0
- package/components/date-range-picker/themes/shared/date-range-picker.common.css.d.ts +1 -0
- package/components/date-range-picker/themes/shared/date-range-picker.common.css.js +3 -0
- package/components/date-range-picker/themes/shared/date-range-picker.common.css.js.map +1 -0
- package/components/date-range-picker/themes/shared/date-range-picker.fluent.css.d.ts +1 -0
- package/components/date-range-picker/themes/shared/date-range-picker.fluent.css.js +3 -0
- package/components/date-range-picker/themes/shared/date-range-picker.fluent.css.js.map +1 -0
- package/components/date-range-picker/themes/shared/date-range-picker.indigo.css.d.ts +1 -0
- package/components/date-range-picker/themes/shared/date-range-picker.indigo.css.js +3 -0
- package/components/date-range-picker/themes/shared/date-range-picker.indigo.css.js.map +1 -0
- package/components/date-range-picker/themes/shared/date-range-picker.material.css.d.ts +1 -0
- package/components/date-range-picker/themes/shared/date-range-picker.material.css.js +3 -0
- package/components/date-range-picker/themes/shared/date-range-picker.material.css.js.map +1 -0
- package/components/date-range-picker/themes/shared/predefined-ranges-area.common.css.d.ts +1 -0
- package/components/date-range-picker/themes/shared/predefined-ranges-area.common.css.js +3 -0
- package/components/date-range-picker/themes/shared/predefined-ranges-area.common.css.js.map +1 -0
- package/components/date-range-picker/themes/shared/predefined-ranges-area.indigo.css.d.ts +1 -0
- package/components/date-range-picker/themes/shared/predefined-ranges-area.indigo.css.js +3 -0
- package/components/date-range-picker/themes/shared/predefined-ranges-area.indigo.css.js.map +1 -0
- package/components/date-range-picker/themes/themes.d.ts +2 -0
- package/components/date-range-picker/themes/themes.js +50 -0
- package/components/date-range-picker/themes/themes.js.map +1 -0
- package/components/date-range-picker/validators.d.ts +26 -0
- package/components/date-range-picker/validators.js +57 -0
- package/components/date-range-picker/validators.js.map +1 -0
- package/components/date-time-input/date-time-input.d.ts +2 -2
- package/components/date-time-input/date-time-input.js +8 -10
- package/components/date-time-input/date-time-input.js.map +1 -1
- package/components/date-time-input/date-util.d.ts +7 -0
- package/components/date-time-input/date-util.js +11 -0
- package/components/date-time-input/date-util.js.map +1 -1
- package/components/dialog/dialog.js +11 -10
- package/components/dialog/dialog.js.map +1 -1
- package/components/dialog/themes/dialog.base.css.js +1 -1
- package/components/dialog/themes/dialog.base.css.js.map +1 -1
- package/components/dialog/themes/shared/dialog.indigo.css.js +1 -1
- package/components/dialog/themes/shared/dialog.indigo.css.js.map +1 -1
- package/components/dropdown/dropdown.js.map +1 -1
- package/components/file-input/file-input.d.ts +12 -6
- package/components/file-input/file-input.js +23 -19
- package/components/file-input/file-input.js.map +1 -1
- package/components/file-input/themes/file-input.base.css.js +1 -1
- package/components/file-input/themes/file-input.base.css.js.map +1 -1
- package/components/input/input-base.d.ts +0 -1
- package/components/input/input-base.js +5 -4
- package/components/input/input-base.js.map +1 -1
- package/components/input/input.d.ts +2 -3
- package/components/input/input.js +10 -9
- package/components/input/input.js.map +1 -1
- package/components/input/themes/dark/input.bootstrap.css.js +1 -1
- package/components/input/themes/dark/input.bootstrap.css.js.map +1 -1
- package/components/input/themes/dark/input.indigo.css.js +1 -1
- package/components/input/themes/dark/input.indigo.css.js.map +1 -1
- package/components/input/themes/input.base.css.js +1 -1
- package/components/input/themes/input.base.css.js.map +1 -1
- package/components/input/themes/light/input.bootstrap.css.js +1 -1
- package/components/input/themes/light/input.bootstrap.css.js.map +1 -1
- package/components/input/themes/light/input.indigo.css.js +1 -1
- package/components/input/themes/light/input.indigo.css.js.map +1 -1
- package/components/input/themes/light/input.shared.css.js +1 -1
- package/components/input/themes/light/input.shared.css.js.map +1 -1
- package/components/input/themes/shared/input.bootstrap.css.js +1 -1
- package/components/input/themes/shared/input.bootstrap.css.js.map +1 -1
- package/components/input/themes/shared/input.common.css.js +1 -1
- package/components/input/themes/shared/input.common.css.js.map +1 -1
- package/components/input/themes/shared/input.fluent.css.js +1 -1
- package/components/input/themes/shared/input.fluent.css.js.map +1 -1
- package/components/input/themes/shared/input.indigo.css.js +1 -1
- package/components/input/themes/shared/input.indigo.css.js.map +1 -1
- package/components/input/themes/shared/input.material.css.js +1 -1
- package/components/input/themes/shared/input.material.css.js.map +1 -1
- package/components/mask-input/mask-input.d.ts +2 -3
- package/components/mask-input/mask-input.js +13 -12
- package/components/mask-input/mask-input.js.map +1 -1
- package/components/mask-input/mask-parser.d.ts +100 -14
- package/components/mask-input/mask-parser.js +134 -117
- package/components/mask-input/mask-parser.js.map +1 -1
- package/components/nav-drawer/nav-drawer-item.js +2 -6
- package/components/nav-drawer/nav-drawer-item.js.map +1 -1
- package/components/nav-drawer/nav-drawer.js +5 -6
- package/components/nav-drawer/nav-drawer.js.map +1 -1
- package/components/progress/base.js +6 -5
- package/components/progress/base.js.map +1 -1
- package/components/progress/circular-progress.js +7 -15
- package/components/progress/circular-progress.js.map +1 -1
- package/components/progress/linear-progress.js +5 -5
- package/components/progress/linear-progress.js.map +1 -1
- package/components/progress/themes/circular/dark/circular.progress.shared.css.js +1 -1
- package/components/progress/themes/circular/dark/circular.progress.shared.css.js.map +1 -1
- package/components/progress/themes/linear/dark/linear.progress.bootstrap.css.js +1 -1
- package/components/progress/themes/linear/dark/linear.progress.bootstrap.css.js.map +1 -1
- package/components/progress/themes/linear/dark/linear.progress.shared.css.js +1 -1
- package/components/progress/themes/linear/dark/linear.progress.shared.css.js.map +1 -1
- package/components/radio/radio.d.ts +11 -12
- package/components/radio/radio.js +39 -44
- package/components/radio/radio.js.map +1 -1
- package/components/radio/utils.js +6 -3
- package/components/radio/utils.js.map +1 -1
- package/components/radio-group/radio-group.d.ts +2 -1
- package/components/radio-group/radio-group.js +23 -10
- package/components/radio-group/radio-group.js.map +1 -1
- package/components/radio-group/themes/dark/radio-group.bootstrap.css.d.ts +1 -0
- package/components/radio-group/themes/dark/radio-group.bootstrap.css.js +3 -0
- package/components/radio-group/themes/dark/radio-group.bootstrap.css.js.map +1 -0
- package/components/radio-group/themes/dark/radio-group.fluent.css.d.ts +1 -0
- package/components/radio-group/themes/dark/radio-group.fluent.css.js +3 -0
- package/components/radio-group/themes/dark/radio-group.fluent.css.js.map +1 -0
- package/components/radio-group/themes/dark/radio-group.indigo.css.d.ts +1 -0
- package/components/radio-group/themes/dark/radio-group.indigo.css.js +3 -0
- package/components/radio-group/themes/dark/radio-group.indigo.css.js.map +1 -0
- package/components/radio-group/themes/dark/radio-group.material.css.d.ts +1 -0
- package/components/radio-group/themes/dark/radio-group.material.css.js +3 -0
- package/components/radio-group/themes/dark/radio-group.material.css.js.map +1 -0
- package/components/radio-group/themes/light/radio-group.bootstrap.css.d.ts +1 -0
- package/components/radio-group/themes/light/radio-group.bootstrap.css.js +3 -0
- package/components/radio-group/themes/light/radio-group.bootstrap.css.js.map +1 -0
- package/components/radio-group/themes/light/radio-group.fluent.css.d.ts +1 -0
- package/components/radio-group/themes/light/radio-group.fluent.css.js +3 -0
- package/components/radio-group/themes/light/radio-group.fluent.css.js.map +1 -0
- package/components/radio-group/themes/light/radio-group.indigo.css.d.ts +1 -0
- package/components/radio-group/themes/light/radio-group.indigo.css.js +3 -0
- package/components/radio-group/themes/light/radio-group.indigo.css.js.map +1 -0
- package/components/radio-group/themes/light/radio-group.material.css.d.ts +1 -0
- package/components/radio-group/themes/light/radio-group.material.css.js +3 -0
- package/components/radio-group/themes/light/radio-group.material.css.js.map +1 -0
- package/components/radio-group/themes/light/radio-group.shared.css.d.ts +1 -0
- package/components/radio-group/themes/light/radio-group.shared.css.js +3 -0
- package/components/radio-group/themes/light/radio-group.shared.css.js.map +1 -0
- package/components/radio-group/themes/radio-group.base.css.d.ts +1 -0
- package/components/radio-group/themes/radio-group.base.css.js +3 -0
- package/components/radio-group/themes/radio-group.base.css.js.map +1 -0
- package/components/radio-group/themes/shared/radio-group.bootstrap.css.d.ts +1 -0
- package/components/radio-group/themes/shared/radio-group.bootstrap.css.js +3 -0
- package/components/radio-group/themes/shared/radio-group.bootstrap.css.js.map +1 -0
- package/components/radio-group/themes/shared/radio-group.common.css.d.ts +1 -0
- package/components/radio-group/themes/shared/radio-group.common.css.js +3 -0
- package/components/radio-group/themes/shared/radio-group.common.css.js.map +1 -0
- package/components/radio-group/themes/shared/radio-group.fluent.css.d.ts +1 -0
- package/components/radio-group/themes/shared/radio-group.fluent.css.js +3 -0
- package/components/radio-group/themes/shared/radio-group.fluent.css.js.map +1 -0
- package/components/radio-group/themes/shared/radio-group.indigo.css.d.ts +1 -0
- package/components/radio-group/themes/shared/radio-group.indigo.css.js +3 -0
- package/components/radio-group/themes/shared/radio-group.indigo.css.js.map +1 -0
- package/components/radio-group/themes/shared/radio-group.material.css.d.ts +1 -0
- package/components/radio-group/themes/shared/radio-group.material.css.js +3 -0
- package/components/radio-group/themes/shared/radio-group.material.css.js.map +1 -0
- package/components/radio-group/themes/themes.d.ts +2 -0
- package/components/radio-group/themes/themes.js +50 -0
- package/components/radio-group/themes/themes.js.map +1 -0
- package/components/rating/rating.d.ts +2 -2
- package/components/rating/rating.js +4 -4
- package/components/rating/rating.js.map +1 -1
- package/components/resize-container/resize-container.js +4 -4
- package/components/resize-container/resize-container.js.map +1 -1
- package/components/select/select.d.ts +2 -2
- package/components/select/select.js +11 -10
- package/components/select/select.js.map +1 -1
- package/components/select/themes/shared/select.fluent.css.js +1 -1
- package/components/select/themes/shared/select.fluent.css.js.map +1 -1
- package/components/slider/range-slider.js +1 -1
- package/components/slider/range-slider.js.map +1 -1
- package/components/slider/slider-base.js +1 -1
- package/components/slider/slider-base.js.map +1 -1
- package/components/slider/slider.d.ts +2 -3
- package/components/slider/slider.js +7 -7
- package/components/slider/slider.js.map +1 -1
- package/components/stepper/step.js +3 -3
- package/components/stepper/step.js.map +1 -1
- package/components/stepper/themes/step/dark/step.indigo.css.js +1 -1
- package/components/stepper/themes/step/dark/step.indigo.css.js.map +1 -1
- package/components/stepper/themes/step/light/step.bootstrap.css.js +1 -1
- package/components/stepper/themes/step/light/step.bootstrap.css.js.map +1 -1
- package/components/stepper/themes/step/light/step.fluent.css.js +1 -1
- package/components/stepper/themes/step/light/step.fluent.css.js.map +1 -1
- package/components/stepper/themes/step/light/step.indigo.css.js +1 -1
- package/components/stepper/themes/step/light/step.indigo.css.js.map +1 -1
- package/components/stepper/themes/step/light/step.material.css.js +1 -1
- package/components/stepper/themes/step/light/step.material.css.js.map +1 -1
- package/components/stepper/themes/step/light/step.shared.css.js +1 -1
- package/components/stepper/themes/step/light/step.shared.css.js.map +1 -1
- package/components/tabs/tab-dom.d.ts +2 -2
- package/components/tabs/tab-dom.js +15 -2
- package/components/tabs/tab-dom.js.map +1 -1
- package/components/tabs/tabs.d.ts +2 -1
- package/components/tabs/tabs.js +10 -8
- package/components/tabs/tabs.js.map +1 -1
- package/components/tabs/themes/dark/tab.indigo.css.js +1 -1
- package/components/tabs/themes/dark/tab.indigo.css.js.map +1 -1
- package/components/tabs/themes/light/tab.indigo.css.js +1 -1
- package/components/tabs/themes/light/tab.indigo.css.js.map +1 -1
- package/components/tabs/themes/tab.base.css.js +1 -1
- package/components/tabs/themes/tab.base.css.js.map +1 -1
- package/components/textarea/textarea.d.ts +30 -33
- package/components/textarea/textarea.js +95 -96
- package/components/textarea/textarea.js.map +1 -1
- package/components/textarea/themes/dark/textarea.bootstrap.css.js +1 -1
- package/components/textarea/themes/dark/textarea.bootstrap.css.js.map +1 -1
- package/components/textarea/themes/dark/textarea.indigo.css.js +1 -1
- package/components/textarea/themes/dark/textarea.indigo.css.js.map +1 -1
- package/components/textarea/themes/light/textarea.bootstrap.css.js +1 -1
- package/components/textarea/themes/light/textarea.bootstrap.css.js.map +1 -1
- package/components/textarea/themes/light/textarea.indigo.css.js +1 -1
- package/components/textarea/themes/light/textarea.indigo.css.js.map +1 -1
- package/components/textarea/themes/light/textarea.shared.css.js +1 -1
- package/components/textarea/themes/light/textarea.shared.css.js.map +1 -1
- package/components/textarea/themes/shared/textarea.bootstrap.css.js +1 -1
- package/components/textarea/themes/shared/textarea.bootstrap.css.js.map +1 -1
- package/components/textarea/themes/shared/textarea.fluent.css.js +1 -1
- package/components/textarea/themes/shared/textarea.fluent.css.js.map +1 -1
- package/components/textarea/themes/shared/textarea.indigo.css.js +1 -1
- package/components/textarea/themes/shared/textarea.indigo.css.js.map +1 -1
- package/components/textarea/themes/shared/textarea.material.css.js +1 -1
- package/components/textarea/themes/shared/textarea.material.css.js.map +1 -1
- package/components/textarea/themes/textarea.base.css.js +1 -1
- package/components/textarea/themes/textarea.base.css.js.map +1 -1
- package/components/tile-manager/tile-manager.js +5 -4
- package/components/tile-manager/tile-manager.js.map +1 -1
- package/components/tile-manager/tile.js +6 -5
- package/components/tile-manager/tile.js.map +1 -1
- package/components/tooltip/tooltip.d.ts +24 -9
- package/components/tooltip/tooltip.js +22 -19
- package/components/tooltip/tooltip.js.map +1 -1
- package/components/tree/tree-item.js +5 -3
- package/components/tree/tree-item.js.map +1 -1
- package/components/types.d.ts +1 -1
- package/components/types.js.map +1 -1
- package/components/validation-container/themes/dark/validator.indigo.css.js +1 -1
- package/components/validation-container/themes/dark/validator.indigo.css.js.map +1 -1
- package/components/validation-container/validation-container.js +4 -11
- package/components/validation-container/validation-container.js.map +1 -1
- package/custom-elements.json +21925 -18034
- package/igniteui-webcomponents.css-data.json +1 -1
- package/igniteui-webcomponents.html-data.json +1 -1
- package/index.d.ts +4 -1
- package/index.js +1 -0
- package/index.js.map +1 -1
- package/package.json +3 -2
- package/themes/dark/bootstrap.css +1 -1
- package/themes/dark/fluent.css +1 -1
- package/themes/dark/indigo.css +1 -1
- package/themes/dark/material.css +1 -1
- package/themes/light/bootstrap.css +1 -1
- package/themes/light/fluent.css +1 -1
- package/themes/light/indigo.css +1 -1
- package/themes/light/material.css +1 -1
- package/web-types.json +2 -2
- package/components/radio-group/radio-group.base.css.js.map +0 -1
- package/components/radio-group/radio-group.fluent.css.js +0 -3
- package/components/radio-group/radio-group.fluent.css.js.map +0 -1
- package/components/radio-group/radio-group.indigo.css.js +0 -3
- package/components/radio-group/radio-group.indigo.css.js.map +0 -1
- package/components/radio-group/radio-group.material.css.js +0 -3
- package/components/radio-group/radio-group.material.css.js.map +0 -1
- /package/components/{radio-group/radio-group.base.css.d.ts → date-picker/themes/shared/date-picker.material.css.d.ts} +0 -0
- /package/components/{radio-group/radio-group.fluent.css.d.ts → date-range-picker/date-range-picker.base.css.d.ts} +0 -0
- /package/components/{radio-group/radio-group.indigo.css.d.ts → date-range-picker/predefined-ranges-area.base.css.d.ts} +0 -0
- /package/components/{radio-group/radio-group.material.css.d.ts → date-range-picker/themes/dark/date-range-picker.bootstrap.css.d.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calendar.js","sourceRoot":"","sources":["../../../src/components/calendar/calendar.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, nothing } from 'lit';\nimport { property, query, queryAll, state } from 'lit/decorators.js';\nimport { choose } from 'lit/directives/choose.js';\nimport { type Ref, createRef, ref } from 'lit/directives/ref.js';\nimport { styleMap } from 'lit/directives/style-map.js';\n\nimport { themes } from '../../theming/theming-decorator.js';\nimport {\n addKeybindings,\n arrowDown,\n arrowLeft,\n arrowRight,\n arrowUp,\n endKey,\n homeKey,\n pageDownKey,\n pageUpKey,\n shiftKey,\n} from '../common/controllers/key-bindings.js';\nimport { watch } from '../common/decorators/watch.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport { IgcCalendarResourceStringEN } from '../common/i18n/calendar.resources.js';\nimport { createDateTimeFormatters } from '../common/localization/intl-formatters.js';\nimport type { Constructor } from '../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../common/mixins/event-emitter.js';\nimport {\n clamp,\n findElementFromEventPath,\n first,\n formatString,\n last,\n partNameMap,\n} from '../common/util.js';\nimport IgcIconComponent from '../icon/icon.js';\nimport type { ContentOrientation } from '../types.js';\nimport { IgcCalendarBaseComponent } from './base.js';\nimport IgcDaysViewComponent from './days-view/days-view.js';\nimport {\n MONTHS_PER_ROW,\n YEARS_PER_PAGE,\n YEARS_PER_ROW,\n areSameMonth,\n getYearRange,\n isDateInRanges,\n} from './helpers.js';\nimport { CalendarDay } from './model.js';\nimport IgcMonthsViewComponent from './months-view/months-view.js';\nimport { styles } from './themes/calendar.base.css.js';\nimport { all } from './themes/calendar.js';\nimport type {\n CalendarActiveView,\n CalendarHeaderOrientation,\n IgcCalendarComponentEventMap,\n} from './types.js';\nimport IgcYearsViewComponent from './years-view/years-view.js';\n\nexport const focusActiveDate = Symbol();\n\n/**\n * Represents a calendar that lets users\n * to select a date value in a variety of different ways.\n *\n * @element igc-calendar\n *\n * @slot - The default slot for the calendar.\n * @slot title - Renders the title of the calendar header.\n * @slot header-date - Renders content instead of the current date/range in the calendar header.\n *\n * @fires igcChange - Emitted when calendar changes its value.\n *\n * @csspart header - The header element of the calendar.\n * @csspart header-title - The header title element of the calendar.\n * @csspart header-date - The header date element of the calendar.\n * @csspart content - The content element which contains the views and navigation elements of the calendar.\n * @csspart navigation - The navigation container element of the calendar.\n * @csspart months-navigation - The months navigation button element of the calendar.\n * @csspart years-navigation - The years navigation button element of the calendar.\n * @csspart years-range - The years range element of the calendar.\n * @csspart navigation-buttons - The navigation buttons container of the calendar.\n * @csspart navigation-button - Previous/next navigation button of the calendar.\n * @csspart days-view-container - The days view container element of the calendar.\n * @csspart days-view - Days view element of the calendar.\n * @csspart months-view - The months view element of the calendar.\n * @csspart years-view - The years view element of the calendar.\n * @csspart days-row - Days row element of the calendar.\n * @csspart label - Week header label element of the calendar.\n * @csspart week-number - Week number element of the calendar.\n * @csspart week-number-inner - Week number inner element of the calendar.\n * @csspart date - Date element of the calendar.\n * @csspart date-inner - Date inner element of the calendar.\n * @csspart first - The first selected date element of the calendar in range selection.\n * @csspart last - The last selected date element of the calendar in range selection.\n * @csspart inactive - Inactive date element of the calendar.\n * @csspart hidden - Hidden date element of the calendar.\n * @csspart weekend - Weekend date element of the calendar.\n * @csspart range - Range selected element of the calendar.\n * @csspart special - Special date element of the calendar.\n * @csspart disabled - Disabled date element of the calendar.\n * @csspart single - Single selected date element of the calendar.\n * @csspart preview - Range selection preview date element of the calendar.\n * @csspart month - Month element of the calendar.\n * @csspart month-inner - Month inner element of the calendar.\n * @csspart year - Year element of the calendar.\n * @csspart year-inner - Year inner element of the calendar.\n * @csspart selected - Indicates selected state. Applies to date, month and year elements of the calendar.\n * @csspart current - Indicates current state. Applies to date, month and year elements of the calendar.\n */\n@themes(all)\nexport default class IgcCalendarComponent extends EventEmitterMixin<\n IgcCalendarComponentEventMap,\n Constructor<IgcCalendarBaseComponent>\n>(IgcCalendarBaseComponent) {\n public static readonly tagName = 'igc-calendar';\n public static styles = styles;\n\n /* blazorSuppress */\n public static register() {\n registerComponent(\n IgcCalendarComponent,\n IgcIconComponent,\n IgcDaysViewComponent,\n IgcMonthsViewComponent,\n IgcYearsViewComponent\n );\n }\n\n private get _isDayView() {\n return this.activeView === 'days';\n }\n\n private get _isMonthView() {\n return this.activeView === 'months';\n }\n\n private get _isYearView() {\n return this.activeView === 'years';\n }\n\n private get previousButtonLabel() {\n if (this._isDayView) {\n return this.resourceStrings.previousMonth;\n }\n if (this._isMonthView) {\n return this.resourceStrings.previousYear;\n }\n return formatString(this.resourceStrings.previousYears, YEARS_PER_PAGE);\n }\n\n private get nextButtonLabel() {\n if (this._isDayView) {\n return this.resourceStrings.nextMonth;\n }\n if (this._isMonthView) {\n return this.resourceStrings.nextYear;\n }\n return formatString(this.resourceStrings.nextYears, YEARS_PER_PAGE);\n }\n\n private contentRef: Ref<HTMLDivElement> = createRef();\n\n @state()\n private activeDaysViewIndex = 0;\n\n @queryAll(IgcDaysViewComponent.tagName)\n private daysViews!: NodeListOf<IgcDaysViewComponent>;\n\n @query(IgcMonthsViewComponent.tagName)\n private monthsView!: IgcMonthsViewComponent;\n\n @query(IgcYearsViewComponent.tagName)\n private yearsView!: IgcYearsViewComponent;\n\n /**\n * Whether to show the dates that do not belong to the current active month.\n * @attr hide-outside-days\n */\n @property({ type: Boolean, attribute: 'hide-outside-days', reflect: true })\n public hideOutsideDays = false;\n\n /**\n * Whether to render the calendar header part.\n * When the calendar selection is set to `multiple` the header is always hidden.\n *\n * @attr hide-header\n */\n @property({ type: Boolean, attribute: 'hide-header', reflect: true })\n public hideHeader = false;\n\n /**\n * The orientation of the calendar header.\n * @attr header-orientation\n */\n @property({ reflect: true, attribute: 'header-orientation' })\n public headerOrientation: CalendarHeaderOrientation = 'horizontal';\n\n /**\n * The orientation of the calendar months when more than one month\n * is being shown.\n * @attr orientation\n */\n @property()\n public orientation: ContentOrientation = 'horizontal';\n\n /**\n * The number of months displayed in the days view.\n * @attr visible-months\n */\n @property({ type: Number, attribute: 'visible-months' })\n public visibleMonths = 1;\n\n /**\n * The current active view of the component.\n * @attr active-view\n */\n @property({ attribute: 'active-view' })\n public activeView: CalendarActiveView = 'days';\n\n /** The options used to format the months and the weekdays in the calendar views. */\n @property({ attribute: false })\n public formatOptions: Pick<Intl.DateTimeFormatOptions, 'month' | 'weekday'> =\n { month: 'long', weekday: 'narrow' };\n\n /**\n * The resource strings for localization.\n */\n @property({ attribute: false })\n public resourceStrings = IgcCalendarResourceStringEN;\n\n private _intl = createDateTimeFormatters(this.locale, {\n month: {\n month: this.formatOptions.month,\n },\n monthLabel: { month: 'long' },\n weekday: { weekday: 'short' },\n monthDay: { month: 'short', day: 'numeric' },\n yearLabel: { month: 'long', year: 'numeric' },\n });\n\n @watch('locale')\n protected localeChange() {\n this._intl.locale = this.locale;\n }\n\n @watch('formatOptions')\n protected formatOptionsChange() {\n this._intl.update({\n month: {\n month: this.formatOptions.month,\n },\n });\n }\n\n /** @private @hidden @internal */\n public async [focusActiveDate]() {\n await this.updateComplete;\n\n if (this._isDayView) {\n return this.daysViews.item(this.activeDaysViewIndex).focusActiveDate();\n }\n\n if (this._isMonthView) {\n return this.monthsView.focusActiveDate();\n }\n\n if (this._isYearView) {\n return this.yearsView.focusActiveDate();\n }\n }\n\n private updateViewIndex(date: CalendarDay, delta: -1 | 1) {\n if (this.visibleMonths === 1) return;\n\n const index = this.activeDaysViewIndex;\n const view = CalendarDay.from(this.daysViews.item(index).activeDate);\n\n if (date.month !== view.month) {\n this.activeDaysViewIndex = clamp(\n index + delta,\n 0,\n this.visibleMonths - 1\n );\n }\n }\n\n private getSubsequentActiveDate(start: CalendarDay, delta: number) {\n const disabled = this._disabledDates;\n let beginning = start.clone();\n\n while (isDateInRanges(beginning, disabled)) {\n beginning = beginning.add('day', delta);\n }\n\n return beginning;\n }\n\n private handleArrowKey(period: 'day' | 'week', delta: -1 | 1) {\n if (this._isDayView) {\n const date = this.getSubsequentActiveDate(\n this._activeDate.add(period, delta),\n delta\n );\n this.updateViewIndex(date, delta);\n this._activeDate = date;\n } else {\n const monthOrYear = this._isMonthView ? 'month' : 'year';\n const monthOrYearDelta =\n (this._isMonthView ? MONTHS_PER_ROW : YEARS_PER_ROW) * delta;\n\n this._activeDate = this.getSubsequentActiveDate(\n this._activeDate.add(\n monthOrYear,\n period === 'week' ? monthOrYearDelta : delta\n ),\n delta\n );\n }\n\n this[focusActiveDate]();\n }\n\n private onPageKeys(delta: -1 | 1) {\n const unit = this._isDayView ? 'month' : 'year';\n const increment = (this._isYearView ? YEARS_PER_PAGE : 1) * delta;\n\n this._activeDate = this.getSubsequentActiveDate(\n this._activeDate.add(unit, increment),\n increment\n );\n this[focusActiveDate]();\n }\n\n private onShiftPageKeys(delta: -1 | 1) {\n if (this._isDayView) {\n this._activeDate = this.getSubsequentActiveDate(\n this._activeDate.add('year', delta),\n delta\n );\n this[focusActiveDate]();\n }\n }\n\n private onHomeKey() {\n if (this._isDayView) {\n const first = CalendarDay.from(this.daysViews.item(0).activeDate);\n this._activeDate = this.getSubsequentActiveDate(\n first.set({ date: 1 }),\n 1\n );\n\n this.activeDaysViewIndex = 0;\n }\n\n if (this._isMonthView) {\n this._activeDate = this.getSubsequentActiveDate(\n this._activeDate.set({ month: 0 }),\n 1\n );\n }\n\n if (this._isYearView) {\n this._activeDate = this.getSubsequentActiveDate(\n this._activeDate.set({\n year: getYearRange(this._activeDate, YEARS_PER_PAGE).start,\n }),\n 1\n );\n }\n\n this[focusActiveDate]();\n }\n\n private onEndKey() {\n if (this._isDayView) {\n const index = this.daysViews.length - 1;\n const last = CalendarDay.from(this.daysViews.item(index).activeDate);\n this._activeDate = this.getSubsequentActiveDate(\n last.set({ month: last.month + 1, date: 0 }),\n -1\n );\n this.activeDaysViewIndex = index;\n }\n\n if (this._isMonthView) {\n this._activeDate = this.getSubsequentActiveDate(\n this._activeDate.set({ month: 11 }),\n -1\n );\n }\n\n if (this._isYearView) {\n this._activeDate = this.getSubsequentActiveDate(\n this._activeDate.set({\n year: getYearRange(this._activeDate, YEARS_PER_PAGE).end,\n }),\n -1\n );\n }\n\n this[focusActiveDate]();\n }\n\n private isNotFromCalendarView(_: Element, event: KeyboardEvent) {\n return !findElementFromEventPath(\n `${IgcDaysViewComponent.tagName}, ${IgcMonthsViewComponent.tagName}, ${IgcYearsViewComponent.tagName}`,\n event\n );\n }\n\n constructor() {\n super();\n\n addKeybindings(this, {\n skip: this.isNotFromCalendarView,\n ref: this.contentRef,\n bindingDefaults: { preventDefault: true, triggers: ['keydownRepeat'] },\n })\n .set(arrowLeft, this.handleArrowKey.bind(this, 'day', -1))\n .set(arrowRight, this.handleArrowKey.bind(this, 'day', 1))\n .set(arrowUp, this.handleArrowKey.bind(this, 'week', -1))\n .set(arrowDown, this.handleArrowKey.bind(this, 'week', 1))\n .set([shiftKey, pageUpKey], this.onShiftPageKeys.bind(this, -1))\n .set([shiftKey, pageDownKey], this.onShiftPageKeys.bind(this, 1))\n .set(pageUpKey, this.onPageKeys.bind(this, -1))\n .set(pageDownKey, this.onPageKeys.bind(this, 1))\n .set(homeKey, this.onHomeKey)\n .set(endKey, this.onEndKey);\n }\n\n protected renderNavigationButtons() {\n const parts = partNameMap({\n 'navigation-button': true,\n vertical: this.orientation === 'vertical',\n });\n\n return html`\n <div part=\"navigation-buttons\">\n <button\n part=${parts}\n aria-label=${this.previousButtonLabel}\n @click=${this.navigatePrevious}\n >\n <igc-icon\n aria-hidden=\"true\"\n name=\"arrow_prev\"\n collection=\"default\"\n ></igc-icon>\n </button>\n\n <button\n part=${parts}\n aria-label=${this.nextButtonLabel}\n @click=${this.navigateNext}\n >\n <igc-icon\n aria-hidden=\"true\"\n name=\"arrow_next\"\n collection=\"default\"\n ></igc-icon>\n </button>\n </div>\n `;\n }\n\n protected renderMonthButtonNavigation(\n active: CalendarDay,\n viewIndex: number\n ) {\n const labelFmt = this._intl.get('monthLabel').format;\n const valueFmt = this._intl.get('month').format;\n const ariaLabel = `${labelFmt(active.native)}, ${this.resourceStrings.selectMonth}`;\n\n return html`\n <button\n part=\"months-navigation\"\n aria-label=${ariaLabel}\n @click=${() => this.switchToMonths(viewIndex)}\n >\n ${valueFmt(active.native)}\n </button>\n `;\n }\n\n protected renderYearButtonNavigation(active: CalendarDay, viewIndex: number) {\n const fmt = this._intl.get('yearLabel').format;\n const ariaLabel = `${active.year}, ${this.resourceStrings.selectYear}`;\n const ariaSkip = this._isDayView ? fmt(active.native) : active.year;\n\n return html`\n <span class=\"aria-off-screen\" aria-live=\"polite\">${ariaSkip}</span>\n <button\n part=\"years-navigation\"\n aria-label=${ariaLabel}\n @click=${() => this.switchToYears(viewIndex)}\n >\n ${active.year}\n </button>\n `;\n }\n\n protected renderYearRangeNavigation(active: CalendarDay) {\n const { start, end } = getYearRange(active, YEARS_PER_PAGE);\n\n return html`\n <span part=\"years-range\" aria-live=\"polite\"> ${start} - ${end} </span>\n `;\n }\n\n protected renderNavigation(\n date?: CalendarDay,\n showButtons = true,\n viewIndex = 0\n ) {\n const activeDate = date ?? this._activeDate;\n\n return html`\n <div part=\"navigation\">\n <div part=\"picker-dates\">\n ${this._isDayView\n ? this.renderMonthButtonNavigation(activeDate, viewIndex)\n : nothing}\n ${this._isDayView || this._isMonthView\n ? this.renderYearButtonNavigation(activeDate, viewIndex)\n : nothing}\n ${this._isYearView\n ? this.renderYearRangeNavigation(activeDate)\n : nothing}\n </div>\n ${showButtons ? this.renderNavigationButtons() : nothing}\n </div>\n `;\n }\n\n protected renderHeader() {\n if (this.hideHeader || this._isMultiple) {\n return nothing;\n }\n\n const title = this._isSingle\n ? this.resourceStrings.selectDate\n : this.resourceStrings.selectRange;\n\n return html`\n <div part=\"header\">\n <h5 part=\"header-title\">\n <slot name=\"title\">${title}</slot>\n </h5>\n <h2 part=\"header-date\">${this.renderHeaderDate()}</h2>\n </div>\n `;\n }\n\n protected renderHeaderDateSingle() {\n const date = this.value ?? CalendarDay.today.native;\n const day = this._intl.get('weekday').format(date);\n const month = this._intl.get('monthDay').format(date);\n const separator =\n this.headerOrientation === 'vertical' ? html`<br />` : ' ';\n\n const formatted = html`${day},${separator}${month}`;\n\n return html`<slot name=\"header-date\">${formatted}</slot>`;\n }\n\n protected renderHeaderDateRange() {\n const values = this.values;\n const fmt = this._intl.get('monthDay').format;\n const { startDate, endDate } = this.resourceStrings;\n\n const start = this._hasValues ? fmt(first(values)) : startDate;\n const end =\n this._hasValues && values.length > 1 ? fmt(last(values)) : endDate;\n\n return html`\n <slot name=\"header-date\">\n <span>${start}</span>\n <span> - </span>\n <span>${end}</span>\n </slot>\n `;\n }\n\n protected renderHeaderDate() {\n return this._isSingle\n ? this.renderHeaderDateSingle()\n : this.renderHeaderDateRange();\n }\n\n protected renderDaysView() {\n const activeDates = this.getActiveDates();\n const horizontal = this.orientation === 'horizontal';\n const length = activeDates.length - 1;\n const format = this.formatOptions\n .weekday as Intl.DateTimeFormatOptions['weekday'];\n\n return html`${activeDates.map(\n (date, idx) => html`\n <div part=\"days-view-container\">\n ${this.renderNavigation(\n date,\n horizontal ? idx === length : idx === 0,\n idx\n )}\n <igc-days-view\n @igcChange=${this.changeValue}\n @igcActiveDateChange=${this.activeDateChanged}\n @igcRangePreviewDateChange=${this.rangePreviewDateChanged}\n part=\"days-view\"\n exportparts=\"days-row, label, date-inner, week-number-inner, week-number, date, first, last, selected, inactive, hidden, current, weekend, range, special, disabled, single, preview\"\n .active=${this.activeDaysViewIndex === idx}\n .activeDate=${date.native}\n .disabledDates=${this.disabledDates}\n .hideLeadingDays=${this.hideOutsideDays || idx !== 0}\n .hideTrailingDays=${this.hideOutsideDays || idx !== length}\n .locale=${this.locale}\n .rangePreviewDate=${this._rangePreviewDate?.native}\n .resourceStrings=${this.resourceStrings}\n .selection=${this.selection}\n .showWeekNumbers=${this.showWeekNumbers}\n .specialDates=${this._specialDates}\n .value=${this.value}\n .values=${this.values}\n .weekDayFormat=${format!}\n .weekStart=${this.weekStart}\n ></igc-days-view>\n </div>\n `\n )}`;\n }\n\n protected renderMonthView() {\n const format = this.formatOptions\n .month as Intl.DateTimeFormatOptions['month'];\n\n return html`\n ${this.renderNavigation()}\n <igc-months-view\n part=\"months-view\"\n exportparts=\"month, selected, month-inner, current\"\n @igcChange=${this.changeMonth}\n .value=${this.activeDate}\n .locale=${this.locale}\n .monthFormat=${format!}\n ></igc-months-view>\n `;\n }\n\n protected renderYearView() {\n return html`\n ${this.renderNavigation()}\n <igc-years-view\n part=\"years-view\"\n exportparts=\"year, selected, year-inner, current\"\n @igcChange=${this.changeYear}\n .value=${this.activeDate}\n .yearsPerPage=${YEARS_PER_PAGE}\n ></igc-years-view>\n `;\n }\n\n protected override render() {\n const direction = this._isDayView && this.orientation === 'horizontal';\n\n const styles = {\n display: 'flex',\n flexGrow: 1,\n flexDirection: direction ? 'row' : 'column',\n };\n\n return html`\n ${this.renderHeader()}\n <div ${ref(this.contentRef)} part=\"content\" style=${styleMap(styles)}>\n ${choose(this.activeView, [\n ['days', () => this.renderDaysView()],\n ['months', () => this.renderMonthView()],\n ['years', () => this.renderYearView()],\n ])}\n </div>\n `;\n }\n\n protected changeMonth(event: CustomEvent<Date>) {\n event.stopPropagation();\n this.activeDate = event.detail;\n this.activeView = 'days';\n\n this[focusActiveDate]();\n }\n\n protected changeYear(event: CustomEvent<Date>) {\n event.stopPropagation();\n this.activeDate = event.detail;\n this.activeView = 'months';\n\n this[focusActiveDate]();\n }\n\n protected changeValue(event: CustomEvent<Date>) {\n event.stopPropagation();\n\n const view = event.target as IgcDaysViewComponent;\n if (this._isSingle) {\n this.value = view.value;\n } else {\n this.values = view.values;\n }\n\n this.emitEvent('igcChange', {\n detail: this._isSingle ? (this.value as Date) : this.values,\n });\n }\n\n protected activeDateChanged(event: CustomEvent<Date>) {\n const view = event.target as IgcDaysViewComponent;\n const views = Array.from(this.daysViews);\n\n this.activeDaysViewIndex = views.indexOf(view);\n this.activeDate = event.detail;\n\n if (!areSameMonth(this.activeDate, view.activeDate)) {\n this[focusActiveDate]();\n }\n }\n\n protected rangePreviewDateChanged(event: CustomEvent<Date>) {\n this._rangePreviewDate = event.detail\n ? CalendarDay.from(event.detail)\n : undefined;\n }\n\n private getActiveDates() {\n const current = this.activeDaysViewIndex;\n const length = Math.max(this.visibleMonths, 1);\n\n return Array.from({ length }, (_, i) =>\n this._activeDate.add('month', i - current)\n );\n }\n\n private activateDaysView(index: number) {\n const view = this.daysViews.item(index);\n this.activeDate = view.activeDate;\n this.activeDaysViewIndex = index;\n }\n\n private navigatePrevious() {\n const unit = this._isDayView ? 'month' : 'year';\n const delta = this._isYearView ? YEARS_PER_PAGE : 1;\n this._activeDate = this._activeDate.add(unit, -delta);\n }\n\n private navigateNext() {\n const unit = this._isDayView ? 'month' : 'year';\n const delta = this._isYearView ? YEARS_PER_PAGE : 1;\n this._activeDate = this._activeDate.add(unit, delta);\n }\n\n private switchToMonths(viewIndex: number) {\n this.activateDaysView(viewIndex);\n this.activeView = 'months';\n\n this[focusActiveDate]();\n }\n\n private switchToYears(viewIndex: number) {\n if (this._isDayView) {\n this.activateDaysView(viewIndex);\n }\n this.activeView = 'years';\n\n this[focusActiveDate]();\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-calendar': IgcCalendarComponent;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"calendar.js","sourceRoot":"","sources":["../../../src/components/calendar/calendar.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, nothing } from 'lit';\nimport { property, query, queryAll, state } from 'lit/decorators.js';\nimport { choose } from 'lit/directives/choose.js';\nimport { type Ref, createRef, ref } from 'lit/directives/ref.js';\nimport { styleMap } from 'lit/directives/style-map.js';\n\nimport { themes } from '../../theming/theming-decorator.js';\nimport {\n addKeybindings,\n arrowDown,\n arrowLeft,\n arrowRight,\n arrowUp,\n endKey,\n homeKey,\n pageDownKey,\n pageUpKey,\n shiftKey,\n} from '../common/controllers/key-bindings.js';\nimport { watch } from '../common/decorators/watch.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport { IgcCalendarResourceStringEN } from '../common/i18n/calendar.resources.js';\nimport { createDateTimeFormatters } from '../common/localization/intl-formatters.js';\nimport type { Constructor } from '../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../common/mixins/event-emitter.js';\nimport { partMap } from '../common/part-map.js';\nimport {\n clamp,\n findElementFromEventPath,\n first,\n formatString,\n last,\n} from '../common/util.js';\nimport IgcIconComponent from '../icon/icon.js';\nimport type { ContentOrientation } from '../types.js';\nimport { IgcCalendarBaseComponent } from './base.js';\nimport IgcDaysViewComponent from './days-view/days-view.js';\nimport {\n MONTHS_PER_ROW,\n YEARS_PER_PAGE,\n YEARS_PER_ROW,\n areSameMonth,\n getYearRange,\n isDateInRanges,\n} from './helpers.js';\nimport { CalendarDay } from './model.js';\nimport IgcMonthsViewComponent from './months-view/months-view.js';\nimport { styles } from './themes/calendar.base.css.js';\nimport { all } from './themes/calendar.js';\nimport type {\n CalendarActiveView,\n CalendarHeaderOrientation,\n IgcCalendarComponentEventMap,\n} from './types.js';\nimport IgcYearsViewComponent from './years-view/years-view.js';\n\nexport const focusActiveDate = Symbol();\n\n/* blazorIndirectRender */\n/* blazorSupportsVisualChildren */\n/**\n * Represents a calendar that lets users\n * to select a date value in a variety of different ways.\n *\n * @element igc-calendar\n *\n * @slot - The default slot for the calendar.\n * @slot title - Renders the title of the calendar header.\n * @slot header-date - Renders content instead of the current date/range in the calendar header.\n *\n * @fires igcChange - Emitted when calendar changes its value.\n *\n * @csspart header - The header element of the calendar.\n * @csspart header-title - The header title element of the calendar.\n * @csspart header-date - The header date element of the calendar.\n * @csspart content - The content element which contains the views and navigation elements of the calendar.\n * @csspart navigation - The navigation container element of the calendar.\n * @csspart months-navigation - The months navigation button element of the calendar.\n * @csspart years-navigation - The years navigation button element of the calendar.\n * @csspart years-range - The years range element of the calendar.\n * @csspart navigation-buttons - The navigation buttons container of the calendar.\n * @csspart navigation-button - Previous/next navigation button of the calendar.\n * @csspart days-view-container - The days view container element of the calendar.\n * @csspart days-view - Days view element of the calendar.\n * @csspart months-view - The months view element of the calendar.\n * @csspart years-view - The years view element of the calendar.\n * @csspart days-row - Days row element of the calendar.\n * @csspart label - Week header label element of the calendar.\n * @csspart week-number - Week number element of the calendar.\n * @csspart week-number-inner - Week number inner element of the calendar.\n * @csspart date - Date element of the calendar.\n * @csspart date-inner - Date inner element of the calendar.\n * @csspart first - The first selected date element of the calendar in range selection.\n * @csspart last - The last selected date element of the calendar in range selection.\n * @csspart inactive - Inactive date element of the calendar.\n * @csspart hidden - Hidden date element of the calendar.\n * @csspart weekend - Weekend date element of the calendar.\n * @csspart range - Range selected element of the calendar.\n * @csspart special - Special date element of the calendar.\n * @csspart disabled - Disabled date element of the calendar.\n * @csspart single - Single selected date element of the calendar.\n * @csspart preview - Range selection preview date element of the calendar.\n * @csspart month - Month element of the calendar.\n * @csspart month-inner - Month inner element of the calendar.\n * @csspart year - Year element of the calendar.\n * @csspart year-inner - Year inner element of the calendar.\n * @csspart selected - Indicates selected state. Applies to date, month and year elements of the calendar.\n * @csspart current - Indicates current state. Applies to date, month and year elements of the calendar.\n */\n@themes(all)\nexport default class IgcCalendarComponent extends EventEmitterMixin<\n IgcCalendarComponentEventMap,\n Constructor<IgcCalendarBaseComponent>\n>(IgcCalendarBaseComponent) {\n public static readonly tagName = 'igc-calendar';\n public static styles = styles;\n\n /* blazorSuppress */\n public static register() {\n registerComponent(\n IgcCalendarComponent,\n IgcIconComponent,\n IgcDaysViewComponent,\n IgcMonthsViewComponent,\n IgcYearsViewComponent\n );\n }\n\n private get _isDayView() {\n return this.activeView === 'days';\n }\n\n private get _isMonthView() {\n return this.activeView === 'months';\n }\n\n private get _isYearView() {\n return this.activeView === 'years';\n }\n\n private get previousButtonLabel() {\n if (this._isDayView) {\n return this.resourceStrings.previousMonth;\n }\n if (this._isMonthView) {\n return this.resourceStrings.previousYear;\n }\n return formatString(this.resourceStrings.previousYears, YEARS_PER_PAGE);\n }\n\n private get nextButtonLabel() {\n if (this._isDayView) {\n return this.resourceStrings.nextMonth;\n }\n if (this._isMonthView) {\n return this.resourceStrings.nextYear;\n }\n return formatString(this.resourceStrings.nextYears, YEARS_PER_PAGE);\n }\n\n private contentRef: Ref<HTMLDivElement> = createRef();\n\n @state()\n private activeDaysViewIndex = 0;\n\n @queryAll(IgcDaysViewComponent.tagName)\n private daysViews!: NodeListOf<IgcDaysViewComponent>;\n\n @query(IgcMonthsViewComponent.tagName)\n private monthsView!: IgcMonthsViewComponent;\n\n @query(IgcYearsViewComponent.tagName)\n private yearsView!: IgcYearsViewComponent;\n\n /**\n * Whether to show the dates that do not belong to the current active month.\n * @attr hide-outside-days\n */\n @property({ type: Boolean, attribute: 'hide-outside-days', reflect: true })\n public hideOutsideDays = false;\n\n /**\n * Whether to render the calendar header part.\n * When the calendar selection is set to `multiple` the header is always hidden.\n *\n * @attr hide-header\n */\n @property({ type: Boolean, attribute: 'hide-header', reflect: true })\n public hideHeader = false;\n\n /**\n * The orientation of the calendar header.\n * @attr header-orientation\n */\n @property({ reflect: true, attribute: 'header-orientation' })\n public headerOrientation: CalendarHeaderOrientation = 'horizontal';\n\n /**\n * The orientation of the calendar months when more than one month\n * is being shown.\n * @attr orientation\n */\n @property()\n public orientation: ContentOrientation = 'horizontal';\n\n /**\n * The number of months displayed in the days view.\n * @attr visible-months\n */\n @property({ type: Number, attribute: 'visible-months' })\n public visibleMonths = 1;\n\n /**\n * The current active view of the component.\n * @attr active-view\n */\n @property({ attribute: 'active-view' })\n public activeView: CalendarActiveView = 'days';\n\n /** The options used to format the months and the weekdays in the calendar views. */\n @property({ attribute: false })\n public formatOptions: Pick<Intl.DateTimeFormatOptions, 'month' | 'weekday'> =\n { month: 'long', weekday: 'narrow' };\n\n /**\n * The resource strings for localization.\n */\n @property({ attribute: false })\n public resourceStrings = IgcCalendarResourceStringEN;\n\n private _intl = createDateTimeFormatters(this.locale, {\n month: {\n month: this.formatOptions.month,\n },\n monthLabel: { month: 'long' },\n weekday: { weekday: 'short' },\n monthDay: { month: 'short', day: 'numeric' },\n yearLabel: { month: 'long', year: 'numeric' },\n });\n\n @watch('locale')\n protected localeChange() {\n this._intl.locale = this.locale;\n }\n\n @watch('formatOptions')\n protected formatOptionsChange() {\n this._intl.update({\n month: {\n month: this.formatOptions.month,\n },\n });\n }\n\n /** @private @hidden @internal */\n public async [focusActiveDate](options?: FocusOptions) {\n await this.updateComplete;\n\n if (this._isDayView) {\n return this.daysViews\n .item(this.activeDaysViewIndex)\n .focusActiveDate(options);\n }\n\n if (this._isMonthView) {\n return this.monthsView.focusActiveDate(options);\n }\n\n if (this._isYearView) {\n return this.yearsView.focusActiveDate(options);\n }\n }\n\n private updateViewIndex(date: CalendarDay, delta: -1 | 1) {\n if (this.visibleMonths === 1) return;\n\n const index = this.activeDaysViewIndex;\n const view = CalendarDay.from(this.daysViews.item(index).activeDate);\n\n if (date.month !== view.month) {\n this.activeDaysViewIndex = clamp(\n index + delta,\n 0,\n this.visibleMonths - 1\n );\n }\n }\n\n private getSubsequentActiveDate(start: CalendarDay, delta: number) {\n const disabled = this._disabledDates;\n let beginning = start.clone();\n\n while (isDateInRanges(beginning, disabled)) {\n beginning = beginning.add('day', delta);\n }\n\n return beginning;\n }\n\n private handleArrowKey(period: 'day' | 'week', delta: -1 | 1) {\n if (this._isDayView) {\n const date = this.getSubsequentActiveDate(\n this._activeDate.add(period, delta),\n delta\n );\n this.updateViewIndex(date, delta);\n this._activeDate = date;\n } else {\n const monthOrYear = this._isMonthView ? 'month' : 'year';\n const monthOrYearDelta =\n (this._isMonthView ? MONTHS_PER_ROW : YEARS_PER_ROW) * delta;\n\n this._activeDate = this.getSubsequentActiveDate(\n this._activeDate.add(\n monthOrYear,\n period === 'week' ? monthOrYearDelta : delta\n ),\n delta\n );\n }\n\n this[focusActiveDate]();\n }\n\n private onPageKeys(delta: -1 | 1) {\n const unit = this._isDayView ? 'month' : 'year';\n const increment = (this._isYearView ? YEARS_PER_PAGE : 1) * delta;\n\n this._activeDate = this.getSubsequentActiveDate(\n this._activeDate.add(unit, increment),\n increment\n );\n this[focusActiveDate]();\n }\n\n private onShiftPageKeys(delta: -1 | 1) {\n if (this._isDayView) {\n this._activeDate = this.getSubsequentActiveDate(\n this._activeDate.add('year', delta),\n delta\n );\n this[focusActiveDate]();\n }\n }\n\n private onHomeKey() {\n if (this._isDayView) {\n const first = CalendarDay.from(this.daysViews.item(0).activeDate);\n this._activeDate = this.getSubsequentActiveDate(\n first.set({ date: 1 }),\n 1\n );\n\n this.activeDaysViewIndex = 0;\n }\n\n if (this._isMonthView) {\n this._activeDate = this.getSubsequentActiveDate(\n this._activeDate.set({ month: 0 }),\n 1\n );\n }\n\n if (this._isYearView) {\n this._activeDate = this.getSubsequentActiveDate(\n this._activeDate.set({\n year: getYearRange(this._activeDate, YEARS_PER_PAGE).start,\n }),\n 1\n );\n }\n\n this[focusActiveDate]();\n }\n\n private onEndKey() {\n if (this._isDayView) {\n const index = this.daysViews.length - 1;\n const last = CalendarDay.from(this.daysViews.item(index).activeDate);\n this._activeDate = this.getSubsequentActiveDate(\n last.set({ month: last.month + 1, date: 0 }),\n -1\n );\n this.activeDaysViewIndex = index;\n }\n\n if (this._isMonthView) {\n this._activeDate = this.getSubsequentActiveDate(\n this._activeDate.set({ month: 11 }),\n -1\n );\n }\n\n if (this._isYearView) {\n this._activeDate = this.getSubsequentActiveDate(\n this._activeDate.set({\n year: getYearRange(this._activeDate, YEARS_PER_PAGE).end,\n }),\n -1\n );\n }\n\n this[focusActiveDate]();\n }\n\n private isNotFromCalendarView(_: Element, event: KeyboardEvent) {\n return !findElementFromEventPath(\n `${IgcDaysViewComponent.tagName}, ${IgcMonthsViewComponent.tagName}, ${IgcYearsViewComponent.tagName}`,\n event\n );\n }\n\n constructor() {\n super();\n\n addKeybindings(this, {\n skip: this.isNotFromCalendarView,\n ref: this.contentRef,\n bindingDefaults: { preventDefault: true, triggers: ['keydownRepeat'] },\n })\n .set(arrowLeft, this.handleArrowKey.bind(this, 'day', -1))\n .set(arrowRight, this.handleArrowKey.bind(this, 'day', 1))\n .set(arrowUp, this.handleArrowKey.bind(this, 'week', -1))\n .set(arrowDown, this.handleArrowKey.bind(this, 'week', 1))\n .set([shiftKey, pageUpKey], this.onShiftPageKeys.bind(this, -1))\n .set([shiftKey, pageDownKey], this.onShiftPageKeys.bind(this, 1))\n .set(pageUpKey, this.onPageKeys.bind(this, -1))\n .set(pageDownKey, this.onPageKeys.bind(this, 1))\n .set(homeKey, this.onHomeKey)\n .set(endKey, this.onEndKey);\n }\n\n protected renderNavigationButtons() {\n const parts = {\n 'navigation-button': true,\n vertical: this.orientation === 'vertical',\n };\n\n return html`\n <div part=\"navigation-buttons\">\n <button\n part=${partMap(parts)}\n aria-label=${this.previousButtonLabel}\n @click=${this.navigatePrevious}\n >\n <igc-icon\n aria-hidden=\"true\"\n name=\"arrow_prev\"\n collection=\"default\"\n ></igc-icon>\n </button>\n\n <button\n part=${partMap(parts)}\n aria-label=${this.nextButtonLabel}\n @click=${this.navigateNext}\n >\n <igc-icon\n aria-hidden=\"true\"\n name=\"arrow_next\"\n collection=\"default\"\n ></igc-icon>\n </button>\n </div>\n `;\n }\n\n protected renderMonthButtonNavigation(\n active: CalendarDay,\n viewIndex: number\n ) {\n const labelFmt = this._intl.get('monthLabel').format;\n const valueFmt = this._intl.get('month').format;\n const ariaLabel = `${labelFmt(active.native)}, ${this.resourceStrings.selectMonth}`;\n\n return html`\n <button\n part=\"months-navigation\"\n aria-label=${ariaLabel}\n @click=${() => this.switchToMonths(viewIndex)}\n >\n ${valueFmt(active.native)}\n </button>\n `;\n }\n\n protected renderYearButtonNavigation(active: CalendarDay, viewIndex: number) {\n const fmt = this._intl.get('yearLabel').format;\n const ariaLabel = `${active.year}, ${this.resourceStrings.selectYear}`;\n const ariaSkip = this._isDayView ? fmt(active.native) : active.year;\n\n return html`\n <span class=\"aria-off-screen\" aria-live=\"polite\">${ariaSkip}</span>\n <button\n part=\"years-navigation\"\n aria-label=${ariaLabel}\n @click=${() => this.switchToYears(viewIndex)}\n >\n ${active.year}\n </button>\n `;\n }\n\n protected renderYearRangeNavigation(active: CalendarDay) {\n const { start, end } = getYearRange(active, YEARS_PER_PAGE);\n\n return html`\n <span part=\"years-range\" aria-live=\"polite\"> ${start} - ${end} </span>\n `;\n }\n\n protected renderNavigation(\n date?: CalendarDay,\n showButtons = true,\n viewIndex = 0\n ) {\n const activeDate = date ?? this._activeDate;\n\n return html`\n <div part=\"navigation\">\n <div part=\"picker-dates\">\n ${this._isDayView\n ? this.renderMonthButtonNavigation(activeDate, viewIndex)\n : nothing}\n ${this._isDayView || this._isMonthView\n ? this.renderYearButtonNavigation(activeDate, viewIndex)\n : nothing}\n ${this._isYearView\n ? this.renderYearRangeNavigation(activeDate)\n : nothing}\n </div>\n ${showButtons ? this.renderNavigationButtons() : nothing}\n </div>\n `;\n }\n\n protected renderHeader() {\n if (this.hideHeader || this._isMultiple) {\n return nothing;\n }\n\n const title = this._isSingle\n ? this.resourceStrings.selectDate\n : this.resourceStrings.selectRange;\n\n return html`\n <div part=\"header\">\n <h5 part=\"header-title\">\n <slot name=\"title\">${title}</slot>\n </h5>\n <h2 part=\"header-date\">${this.renderHeaderDate()}</h2>\n </div>\n `;\n }\n\n protected renderHeaderDateSingle() {\n const date = this.value ?? CalendarDay.today.native;\n const day = this._intl.get('weekday').format(date);\n const month = this._intl.get('monthDay').format(date);\n const separator =\n this.headerOrientation === 'vertical' ? html`<br />` : ' ';\n\n const formatted = html`${day},${separator}${month}`;\n\n return html`<slot name=\"header-date\">${formatted}</slot>`;\n }\n\n protected renderHeaderDateRange() {\n const values = this.values;\n const fmt = this._intl.get('monthDay').format;\n const { startDate, endDate } = this.resourceStrings;\n\n const start = this._hasValues ? fmt(first(values)) : startDate;\n const end =\n this._hasValues && values.length > 1 ? fmt(last(values)) : endDate;\n\n return html`\n <slot name=\"header-date\">\n <span>${start}</span>\n <span> - </span>\n <span>${end}</span>\n </slot>\n `;\n }\n\n protected renderHeaderDate() {\n return this._isSingle\n ? this.renderHeaderDateSingle()\n : this.renderHeaderDateRange();\n }\n\n protected renderDaysView() {\n const activeDates = this.getActiveDates();\n const horizontal = this.orientation === 'horizontal';\n const length = activeDates.length - 1;\n const format = this.formatOptions\n .weekday as Intl.DateTimeFormatOptions['weekday'];\n\n return html`${activeDates.map(\n (date, idx) => html`\n <div part=\"days-view-container\">\n ${this.renderNavigation(\n date,\n horizontal ? idx === length : idx === 0,\n idx\n )}\n <igc-days-view\n @igcChange=${this.changeValue}\n @igcActiveDateChange=${this.activeDateChanged}\n @igcRangePreviewDateChange=${this.rangePreviewDateChanged}\n part=\"days-view\"\n exportparts=\"days-row, label, date-inner, week-number-inner, week-number, date, first, last, selected, inactive, hidden, current, weekend, range, special, disabled, single, preview\"\n .active=${this.activeDaysViewIndex === idx}\n .activeDate=${date.native}\n .disabledDates=${this.disabledDates}\n .hideLeadingDays=${this.hideOutsideDays || idx !== 0}\n .hideTrailingDays=${this.hideOutsideDays || idx !== length}\n .locale=${this.locale}\n .rangePreviewDate=${this._rangePreviewDate?.native}\n .resourceStrings=${this.resourceStrings}\n .selection=${this.selection}\n .showWeekNumbers=${this.showWeekNumbers}\n .specialDates=${this._specialDates}\n .value=${this.value}\n .values=${this.values}\n .weekDayFormat=${format!}\n .weekStart=${this.weekStart}\n ></igc-days-view>\n </div>\n `\n )}`;\n }\n\n protected renderMonthView() {\n const format = this.formatOptions\n .month as Intl.DateTimeFormatOptions['month'];\n\n return html`\n ${this.renderNavigation()}\n <igc-months-view\n part=\"months-view\"\n exportparts=\"month, selected, month-inner, current\"\n @igcChange=${this.changeMonth}\n .value=${this.activeDate}\n .locale=${this.locale}\n .monthFormat=${format!}\n ></igc-months-view>\n `;\n }\n\n protected renderYearView() {\n return html`\n ${this.renderNavigation()}\n <igc-years-view\n part=\"years-view\"\n exportparts=\"year, selected, year-inner, current\"\n @igcChange=${this.changeYear}\n .value=${this.activeDate}\n .yearsPerPage=${YEARS_PER_PAGE}\n ></igc-years-view>\n `;\n }\n\n protected override render() {\n const direction = this._isDayView && this.orientation === 'horizontal';\n\n const styles = {\n display: 'flex',\n flexGrow: 1,\n flexDirection: direction ? 'row' : 'column',\n };\n\n return html`\n ${this.renderHeader()}\n <div ${ref(this.contentRef)} part=\"content\" style=${styleMap(styles)}>\n ${choose(this.activeView, [\n ['days', () => this.renderDaysView()],\n ['months', () => this.renderMonthView()],\n ['years', () => this.renderYearView()],\n ])}\n </div>\n `;\n }\n\n protected changeMonth(event: CustomEvent<Date>) {\n event.stopPropagation();\n this.activeDate = event.detail;\n this.activeView = 'days';\n\n this[focusActiveDate]();\n }\n\n protected changeYear(event: CustomEvent<Date>) {\n event.stopPropagation();\n this.activeDate = event.detail;\n this.activeView = 'months';\n\n this[focusActiveDate]();\n }\n\n protected changeValue(event: CustomEvent<Date>) {\n event.stopPropagation();\n\n const view = event.target as IgcDaysViewComponent;\n if (this._isSingle) {\n this.value = view.value;\n } else {\n this.values = view.values;\n }\n\n this.emitEvent('igcChange', {\n detail: this._isSingle ? (this.value as Date) : this.values,\n });\n }\n\n protected activeDateChanged(event: CustomEvent<Date>) {\n const view = event.target as IgcDaysViewComponent;\n const views = Array.from(this.daysViews);\n\n this.activeDaysViewIndex = views.indexOf(view);\n this.activeDate = event.detail;\n\n if (!areSameMonth(this.activeDate, view.activeDate)) {\n this[focusActiveDate]();\n }\n }\n\n protected rangePreviewDateChanged(event: CustomEvent<Date>) {\n this._rangePreviewDate = event.detail\n ? CalendarDay.from(event.detail)\n : undefined;\n }\n\n private getActiveDates() {\n const current = this.activeDaysViewIndex;\n const length = Math.max(this.visibleMonths, 1);\n\n return Array.from({ length }, (_, i) =>\n this._activeDate.add('month', i - current)\n );\n }\n\n private activateDaysView(index: number) {\n const view = this.daysViews.item(index);\n this.activeDate = view.activeDate;\n this.activeDaysViewIndex = index;\n }\n\n private navigatePrevious() {\n const unit = this._isDayView ? 'month' : 'year';\n const delta = this._isYearView ? YEARS_PER_PAGE : 1;\n this._activeDate = this._activeDate.add(unit, -delta);\n }\n\n private navigateNext() {\n const unit = this._isDayView ? 'month' : 'year';\n const delta = this._isYearView ? YEARS_PER_PAGE : 1;\n this._activeDate = this._activeDate.add(unit, delta);\n }\n\n private switchToMonths(viewIndex: number) {\n this.activateDaysView(viewIndex);\n this.activeView = 'months';\n\n this[focusActiveDate]();\n }\n\n private switchToYears(viewIndex: number) {\n if (this._isDayView) {\n this.activateDaysView(viewIndex);\n }\n this.activeView = 'years';\n\n this[focusActiveDate]();\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-calendar': IgcCalendarComponent;\n }\n}\n"]}
|
|
@@ -56,7 +56,7 @@ export default class IgcDaysViewComponent extends IgcDaysViewComponent_base {
|
|
|
56
56
|
constructor();
|
|
57
57
|
connectedCallback(): void;
|
|
58
58
|
/** Focuses the active date. */
|
|
59
|
-
focusActiveDate(): void;
|
|
59
|
+
focusActiveDate(options?: FocusOptions): void;
|
|
60
60
|
protected handleInteraction(event: Event): void;
|
|
61
61
|
private _selectMultiple;
|
|
62
62
|
private _selectRange;
|
|
@@ -16,7 +16,8 @@ import { registerComponent } from '../../common/definitions/register.js';
|
|
|
16
16
|
import { IgcCalendarResourceStringEN } from '../../common/i18n/calendar.resources.js';
|
|
17
17
|
import { createDateTimeFormatters } from '../../common/localization/intl-formatters.js';
|
|
18
18
|
import { EventEmitterMixin } from '../../common/mixins/event-emitter.js';
|
|
19
|
-
import {
|
|
19
|
+
import { partMap } from '../../common/part-map.js';
|
|
20
|
+
import { chunk, first, last, take } from '../../common/util.js';
|
|
20
21
|
import { IgcCalendarBaseComponent } from '../base.js';
|
|
21
22
|
import { areSameMonth, calendarRange, generateMonth, getViewElement, isDateInRanges, isNextMonth, isPreviousMonth, } from '../helpers.js';
|
|
22
23
|
import { CalendarDay, daysInWeek } from '../model.js';
|
|
@@ -63,8 +64,8 @@ let IgcDaysViewComponent = IgcDaysViewComponent_1 = class IgcDaysViewComponent e
|
|
|
63
64
|
super.connectedCallback();
|
|
64
65
|
this.role = 'grid';
|
|
65
66
|
}
|
|
66
|
-
focusActiveDate() {
|
|
67
|
-
this.activeDay.focus();
|
|
67
|
+
focusActiveDate(options) {
|
|
68
|
+
this.activeDay.focus(options);
|
|
68
69
|
}
|
|
69
70
|
handleInteraction(event) {
|
|
70
71
|
const value = getViewElement(event);
|
|
@@ -236,7 +237,6 @@ let IgcDaysViewComponent = IgcDaysViewComponent_1 = class IgcDaysViewComponent e
|
|
|
236
237
|
const hidden = hiddenLeading || hiddenTrailing;
|
|
237
238
|
const inactive = !areSameMonth(day, this._activeDate);
|
|
238
239
|
return {
|
|
239
|
-
date: true,
|
|
240
240
|
disabled: disabled || hidden,
|
|
241
241
|
first: this.isFirstInRange(day),
|
|
242
242
|
last: this.isLastInRange(day),
|
|
@@ -255,12 +255,11 @@ let IgcDaysViewComponent = IgcDaysViewComponent_1 = class IgcDaysViewComponent e
|
|
|
255
255
|
const ariaLabel = this.intlFormatDay(day);
|
|
256
256
|
const { changePreview, clearPreview } = this.getDayHandlers(day);
|
|
257
257
|
const props = this.getDayProperties(day, today);
|
|
258
|
-
const parts = partNameMap(props);
|
|
259
258
|
return html `
|
|
260
|
-
<span part=${
|
|
259
|
+
<span part=${partMap({ date: true, ...props })}>
|
|
261
260
|
<span
|
|
262
261
|
role="gridcell"
|
|
263
|
-
part=${
|
|
262
|
+
part=${partMap({ 'date-inner': true, ...props })}
|
|
264
263
|
aria-label=${ariaLabel}
|
|
265
264
|
aria-disabled=${props.disabled}
|
|
266
265
|
aria-selected=${props.selected}
|
|
@@ -287,8 +286,8 @@ let IgcDaysViewComponent = IgcDaysViewComponent_1 = class IgcDaysViewComponent e
|
|
|
287
286
|
}
|
|
288
287
|
renderWeekNumber(start, last) {
|
|
289
288
|
return html `
|
|
290
|
-
<span role="rowheader" part=${
|
|
291
|
-
<span part=${
|
|
289
|
+
<span role="rowheader" part=${partMap({ 'week-number': true, last })}>
|
|
290
|
+
<span part=${partMap({ 'week-number-inner': true, last })}>
|
|
292
291
|
${start.week}
|
|
293
292
|
</span>
|
|
294
293
|
</span>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"days-view.js","sourceRoot":"","sources":["../../../../src/components/calendar/days-view/days-view.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, nothing } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\n\nimport { themes } from '../../../theming/theming-decorator.js';\nimport { addKeybindings } from '../../common/controllers/key-bindings.js';\nimport { blazorIndirectRender } from '../../common/decorators/blazorIndirectRender.js';\nimport { blazorSuppressComponent } from '../../common/decorators/blazorSuppressComponent.js';\nimport { watch } from '../../common/decorators/watch.js';\nimport { registerComponent } from '../../common/definitions/register.js';\nimport { IgcCalendarResourceStringEN } from '../../common/i18n/calendar.resources.js';\nimport { createDateTimeFormatters } from '../../common/localization/intl-formatters.js';\nimport type { Constructor } from '../../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../../common/mixins/event-emitter.js';\nimport { chunk, first, last, partNameMap, take } from '../../common/util.js';\nimport { IgcCalendarBaseComponent } from '../base.js';\nimport {\n areSameMonth,\n calendarRange,\n generateMonth,\n getViewElement,\n isDateInRanges,\n isNextMonth,\n isPreviousMonth,\n} from '../helpers.js';\nimport { CalendarDay, daysInWeek } from '../model.js';\nimport { styles } from '../themes/days-view.base.css.js';\nimport { all } from '../themes/days.js';\nimport { DateRangeType, type IgcCalendarComponentEventMap } from '../types.js';\n\nexport interface IgcDaysViewEventMap extends IgcCalendarComponentEventMap {\n igcActiveDateChange: CustomEvent<Date>;\n igcRangePreviewDateChange: CustomEvent<Date>;\n}\n\n/**\n * Instantiate a days view as a separate component in the calendar.\n *\n * @element igc-days-view\n *\n * @fires igcActiveDateChange - Emitted when the active date changes.\n * @fires igcRangePreviewDateChange - Emitted when the range preview date changes.\n *\n * @csspart days-row - The days row container.\n * @csspart label - The label container.\n * @csspart label-inner - The inner label container.\n * @csspart week-number - The week number container.\n * @csspart week-number-inner - The inner week number container.\n */\n@blazorSuppressComponent\n@blazorIndirectRender\n@themes(all)\nexport default class IgcDaysViewComponent extends EventEmitterMixin<\n IgcDaysViewEventMap,\n Constructor<IgcCalendarBaseComponent>\n>(IgcCalendarBaseComponent) {\n public static readonly tagName = 'igc-days-view';\n public static styles = styles;\n\n /* blazorSuppress */\n public static register() {\n registerComponent(IgcDaysViewComponent);\n }\n\n @state()\n private dates!: CalendarDay[];\n\n @query('[tabindex=\"0\"]')\n private activeDay!: HTMLElement;\n\n /** The active state of the component. */\n @property({ type: Boolean })\n public active = false;\n\n /**\n * Whether to show leading days which do not belong to the current month.\n * @attr hide-leading-days\n */\n @property({ type: Boolean, attribute: 'hide-leading-days' })\n public hideLeadingDays = false;\n\n /**\n * Whether to show trailing days which do not belong to the current month.\n * @attr hide-trailing-days\n */\n @property({ type: Boolean, attribute: 'hide-trailing-days' })\n public hideTrailingDays = false;\n\n /** The range preview date. */\n @property({ attribute: false })\n public set rangePreviewDate(value) {\n this._rangePreviewDate = value ? CalendarDay.from(value) : undefined;\n }\n\n public get rangePreviewDate() {\n return this._rangePreviewDate?.native;\n }\n\n /** The resource strings. */\n @property({ attribute: false })\n public resourceStrings = IgcCalendarResourceStringEN;\n\n /**\n * The format of the days. Defaults to narrow.\n * @attr week-day-format\n */\n @property({ attribute: 'week-day-format' })\n public weekDayFormat: 'long' | 'short' | 'narrow' = 'narrow';\n\n private _intl = createDateTimeFormatters(this.locale, {\n weekday: { weekday: this.weekDayFormat },\n label: { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' },\n ariaWeekday: { weekday: 'long' },\n });\n\n @watch('locale')\n protected localeChange() {\n this._intl.locale = this.locale;\n }\n\n @watch('weekDayFormat')\n protected weekDayFormatChange() {\n this._intl.update({ weekday: { weekday: this.weekDayFormat } });\n }\n\n @watch('weekStart')\n @watch('activeDate')\n protected datesChange() {\n this.dates = Array.from(\n generateMonth(this._activeDate, this._firstDayOfWeek)\n );\n }\n\n constructor() {\n super();\n\n addKeybindings(this, {\n bindingDefaults: { preventDefault: true },\n }).setActivateHandler(this.handleInteraction);\n\n this.addEventListener('click', this.handleInteraction);\n }\n\n public override connectedCallback() {\n super.connectedCallback();\n this.role = 'grid';\n }\n\n /** Focuses the active date. */\n public focusActiveDate() {\n this.activeDay.focus();\n }\n\n protected handleInteraction(event: Event) {\n const value = getViewElement(event);\n\n if (value !== -1) {\n const date = CalendarDay.from(new Date(value));\n\n if (this._rangePreviewDate) {\n this.setRangePreviewDate();\n }\n\n if (this.selectDate(date)) {\n this.emitEvent('igcChange', { detail: date.native });\n }\n\n if (event.type === 'click') {\n // XXX: Why ?\n event.stopPropagation();\n this.emitEvent('igcActiveDateChange', { detail: date.native });\n this._activeDate = date;\n }\n }\n }\n\n private _selectMultiple(day: CalendarDay) {\n const values = this._values;\n const idx = values.findIndex((v) => v.equalTo(day));\n\n idx < 0 ? values.push(day) : values.splice(idx, 1);\n values.sort((a, b) => a.timestamp - b.timestamp);\n this._values = Array.from(values);\n }\n\n private _selectRange(day: CalendarDay) {\n let values = this._values;\n\n if (values.length !== 1) {\n values = [day];\n } else {\n const beginning = first(values);\n\n if (beginning.equalTo(day)) {\n this._values = [];\n return;\n }\n\n values = beginning.greaterThan(day)\n ? Array.from(calendarRange({ start: day, end: beginning }))\n : Array.from(calendarRange({ start: beginning, end: day }));\n\n values.push(last(values).add('day', 1));\n }\n\n this._values = values.filter(\n (v) => !isDateInRanges(v, this._disabledDates)\n );\n }\n\n private selectDate(value: CalendarDay) {\n if (isDateInRanges(value, this._disabledDates)) {\n return false;\n }\n\n if (this._isSingle) {\n if (this._value?.equalTo(value)) {\n return false;\n }\n this._value = value;\n }\n\n if (this._isMultiple) {\n this._selectMultiple(value);\n }\n\n if (this._isRange) {\n this._selectRange(value);\n }\n\n return true;\n }\n\n private isSelected(day: CalendarDay) {\n if (isDateInRanges(day, this._disabledDates)) {\n return false;\n }\n\n if (this._isSingle) {\n return !!this._value && this._value.equalTo(day);\n }\n\n if (!this._hasValues) {\n return false;\n }\n\n if (this._isMultiple) {\n return isDateInRanges(day, [\n {\n type: DateRangeType.Specific,\n dateRange: this.values,\n },\n ]);\n }\n return isDateInRanges(day, [\n {\n type: DateRangeType.Between,\n dateRange: [first(this._values).native, last(this._values).native],\n },\n ]);\n }\n\n // XXX: Range interaction\n private setRangePreviewDate(day?: CalendarDay) {\n this._rangePreviewDate = day;\n this.emitEvent('igcRangePreviewDateChange', {\n detail: day ? day.native : undefined,\n });\n }\n\n private changeRangePreview(day: CalendarDay) {\n if (this._values.length === 1 && !first(this._values).equalTo(day)) {\n this.setRangePreviewDate(day);\n }\n }\n\n private clearRangePreview() {\n if (this._rangePreviewDate) {\n this.setRangePreviewDate();\n }\n }\n\n // XXX: Ranges\n\n private isFirstInRange(day: CalendarDay) {\n if (this._isSingle || !this._hasValues) {\n return false;\n }\n\n const target = this._rangePreviewDate?.lessThan(first(this._values))\n ? this._rangePreviewDate\n : first(this._values);\n\n return target.equalTo(day);\n }\n\n private isLastInRange(day: CalendarDay) {\n if (this._isSingle || !this._hasValues) {\n return false;\n }\n\n const target = this._rangePreviewDate?.greaterThan(last(this._values))\n ? this._rangePreviewDate\n : last(this._values);\n\n return target.equalTo(day);\n }\n\n private isRangeDate(day: CalendarDay) {\n const isSingleRange = this._values.length === 1;\n\n if (!this._hasValues || (isSingleRange && !this._rangePreviewDate)) {\n return false;\n }\n\n const min = first(this._values);\n const max = isSingleRange ? this._rangePreviewDate! : last(this._values);\n\n return isDateInRanges(day, [\n {\n type: DateRangeType.Between,\n dateRange: [min.native, max.native],\n },\n ]);\n }\n\n private isRangePreview(day: CalendarDay) {\n if (!(this._hasValues && this._rangePreviewDate)) {\n return false;\n }\n\n return isDateInRanges(day, [\n {\n type: DateRangeType.Between,\n dateRange: [first(this._values).native, this._rangePreviewDate.native],\n },\n ]);\n }\n\n private intlFormatDay(day: CalendarDay) {\n const fmt = this._intl.get('label');\n\n // Range selection in progress\n if (this._rangePreviewDate?.equalTo(day)) {\n return fmt.formatRange(\n first(this._values).native,\n this._rangePreviewDate.native\n );\n }\n\n // Range selection finished\n if (this.isFirstInRange(day) || this.isLastInRange(day)) {\n return fmt.formatRange(\n first(this._values).native,\n last(this._values).native\n );\n }\n\n // Default\n return fmt.format(day.native);\n }\n\n private getDayHandlers(day: CalendarDay) {\n const range = this._isRange;\n const changePreview = range\n ? this.changeRangePreview.bind(this, day)\n : nothing;\n const clearPreview = range ? this.clearRangePreview : nothing;\n\n return { changePreview, clearPreview };\n }\n\n private getDayProperties(day: CalendarDay, today: CalendarDay) {\n const isRange = this._isRange;\n const disabled = isDateInRanges(day, this._disabledDates);\n\n const hiddenLeading =\n this.hideLeadingDays && isPreviousMonth(day, this._activeDate);\n const hiddenTrailing =\n this.hideTrailingDays && isNextMonth(day, this._activeDate);\n\n const hidden = hiddenLeading || hiddenTrailing;\n const inactive = !areSameMonth(day, this._activeDate);\n\n return {\n date: true,\n disabled: disabled || hidden,\n first: this.isFirstInRange(day),\n last: this.isLastInRange(day),\n range: isRange && this.isRangeDate(day),\n preview: isRange && this.isRangePreview(day),\n current: !inactive && day.equalTo(today),\n inactive,\n hidden,\n weekend: day.weekend,\n single: !isRange,\n selected: !disabled && this.isSelected(day),\n special: isDateInRanges(day, this._specialDates) && !inactive,\n };\n }\n\n protected renderDay(day: CalendarDay, today: CalendarDay) {\n const ariaLabel = this.intlFormatDay(day);\n const { changePreview, clearPreview } = this.getDayHandlers(day);\n\n const props = this.getDayProperties(day, today);\n const parts = partNameMap(props);\n\n return html`\n <span part=${parts}>\n <span\n role=\"gridcell\"\n part=${parts.replace('date', 'date-inner')}\n aria-label=${ariaLabel}\n aria-disabled=${props.disabled}\n aria-selected=${props.selected}\n data-value=${day.timestamp}\n tabindex=${day.equalTo(this._activeDate) ? 0 : -1}\n @focus=${changePreview}\n @blur=${clearPreview}\n @mouseenter=${changePreview}\n @mouseleave=${clearPreview}\n >\n ${day.date}\n </span>\n </span>\n `;\n }\n\n protected renderHeaderWeekNumber() {\n return html`\n <span role=\"columnheader\" part=\"label week-number first\">\n <span part=\"week-number-inner first\">\n ${this.resourceStrings.weekLabel}\n </span>\n </span>\n `;\n }\n\n protected renderWeekNumber(start: CalendarDay, last: boolean) {\n return html`\n <span role=\"rowheader\" part=${partNameMap({ 'week-number': true, last })}>\n <span part=${partNameMap({ 'week-number-inner': true, last })}>\n ${start.week}\n </span>\n </span>\n `;\n }\n\n protected renderHeaders() {\n const label = this._intl.get('weekday');\n const aria = this._intl.get('ariaWeekday');\n const days = take(\n generateMonth(this._activeDate, this._firstDayOfWeek),\n daysInWeek\n );\n\n const weekNumber = this.showWeekNumbers\n ? this.renderHeaderWeekNumber()\n : nothing;\n\n const headers = days.map(\n (day) => html`\n <span\n role=\"columnheader\"\n part=\"label\"\n aria-label=${aria.format(day.native)}\n >\n <span part=\"label-inner\">${label.format(day.native)}</span>\n </span>\n `\n );\n\n return html`\n <div role=\"row\" part=\"days-row first\">${weekNumber}${headers}</div>\n `;\n }\n\n protected *renderWeeks() {\n const today = CalendarDay.today;\n const weeks = Array.from(chunk(this.dates, daysInWeek));\n const last = weeks.length - 1;\n\n for (const [idx, week] of weeks.entries()) {\n let hidden = false;\n if (idx === 0 || idx === last) {\n hidden = week.every((day) => this.getDayProperties(day, today).hidden);\n }\n yield html`\n <div role=\"row\" part=\"days-row\" aria-hidden=${hidden}>\n ${this.showWeekNumbers\n ? this.renderWeekNumber(week[0], idx === last)\n : nothing}\n ${week.map((day) => this.renderDay(day, today))}\n </div>\n `;\n }\n }\n\n protected override render() {\n return html`${this.renderHeaders()}${this.renderWeeks()}`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-days-view': IgcDaysViewComponent;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"days-view.js","sourceRoot":"","sources":["../../../../src/components/calendar/days-view/days-view.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, nothing } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\n\nimport { themes } from '../../../theming/theming-decorator.js';\nimport { addKeybindings } from '../../common/controllers/key-bindings.js';\nimport { blazorIndirectRender } from '../../common/decorators/blazorIndirectRender.js';\nimport { blazorSuppressComponent } from '../../common/decorators/blazorSuppressComponent.js';\nimport { watch } from '../../common/decorators/watch.js';\nimport { registerComponent } from '../../common/definitions/register.js';\nimport { IgcCalendarResourceStringEN } from '../../common/i18n/calendar.resources.js';\nimport { createDateTimeFormatters } from '../../common/localization/intl-formatters.js';\nimport type { Constructor } from '../../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../../common/mixins/event-emitter.js';\nimport { partMap } from '../../common/part-map.js';\nimport { chunk, first, last, take } from '../../common/util.js';\nimport { IgcCalendarBaseComponent } from '../base.js';\nimport {\n areSameMonth,\n calendarRange,\n generateMonth,\n getViewElement,\n isDateInRanges,\n isNextMonth,\n isPreviousMonth,\n} from '../helpers.js';\nimport { CalendarDay, daysInWeek } from '../model.js';\nimport { styles } from '../themes/days-view.base.css.js';\nimport { all } from '../themes/days.js';\nimport { DateRangeType, type IgcCalendarComponentEventMap } from '../types.js';\n\nexport interface IgcDaysViewEventMap extends IgcCalendarComponentEventMap {\n igcActiveDateChange: CustomEvent<Date>;\n igcRangePreviewDateChange: CustomEvent<Date>;\n}\n\n/**\n * Instantiate a days view as a separate component in the calendar.\n *\n * @element igc-days-view\n *\n * @fires igcActiveDateChange - Emitted when the active date changes.\n * @fires igcRangePreviewDateChange - Emitted when the range preview date changes.\n *\n * @csspart days-row - The days row container.\n * @csspart label - The label container.\n * @csspart label-inner - The inner label container.\n * @csspart week-number - The week number container.\n * @csspart week-number-inner - The inner week number container.\n */\n@blazorSuppressComponent\n@blazorIndirectRender\n@themes(all)\nexport default class IgcDaysViewComponent extends EventEmitterMixin<\n IgcDaysViewEventMap,\n Constructor<IgcCalendarBaseComponent>\n>(IgcCalendarBaseComponent) {\n public static readonly tagName = 'igc-days-view';\n public static styles = styles;\n\n /* blazorSuppress */\n public static register() {\n registerComponent(IgcDaysViewComponent);\n }\n\n @state()\n private dates!: CalendarDay[];\n\n @query('[tabindex=\"0\"]')\n private activeDay!: HTMLElement;\n\n /** The active state of the component. */\n @property({ type: Boolean })\n public active = false;\n\n /**\n * Whether to show leading days which do not belong to the current month.\n * @attr hide-leading-days\n */\n @property({ type: Boolean, attribute: 'hide-leading-days' })\n public hideLeadingDays = false;\n\n /**\n * Whether to show trailing days which do not belong to the current month.\n * @attr hide-trailing-days\n */\n @property({ type: Boolean, attribute: 'hide-trailing-days' })\n public hideTrailingDays = false;\n\n /** The range preview date. */\n @property({ attribute: false })\n public set rangePreviewDate(value) {\n this._rangePreviewDate = value ? CalendarDay.from(value) : undefined;\n }\n\n public get rangePreviewDate() {\n return this._rangePreviewDate?.native;\n }\n\n /** The resource strings. */\n @property({ attribute: false })\n public resourceStrings = IgcCalendarResourceStringEN;\n\n /**\n * The format of the days. Defaults to narrow.\n * @attr week-day-format\n */\n @property({ attribute: 'week-day-format' })\n public weekDayFormat: 'long' | 'short' | 'narrow' = 'narrow';\n\n private _intl = createDateTimeFormatters(this.locale, {\n weekday: { weekday: this.weekDayFormat },\n label: { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' },\n ariaWeekday: { weekday: 'long' },\n });\n\n @watch('locale')\n protected localeChange() {\n this._intl.locale = this.locale;\n }\n\n @watch('weekDayFormat')\n protected weekDayFormatChange() {\n this._intl.update({ weekday: { weekday: this.weekDayFormat } });\n }\n\n @watch('weekStart')\n @watch('activeDate')\n protected datesChange() {\n this.dates = Array.from(\n generateMonth(this._activeDate, this._firstDayOfWeek)\n );\n }\n\n constructor() {\n super();\n\n addKeybindings(this, {\n bindingDefaults: { preventDefault: true },\n }).setActivateHandler(this.handleInteraction);\n\n this.addEventListener('click', this.handleInteraction);\n }\n\n public override connectedCallback() {\n super.connectedCallback();\n this.role = 'grid';\n }\n\n /** Focuses the active date. */\n public focusActiveDate(options?: FocusOptions) {\n this.activeDay.focus(options);\n }\n\n protected handleInteraction(event: Event) {\n const value = getViewElement(event);\n\n if (value !== -1) {\n const date = CalendarDay.from(new Date(value));\n\n if (this._rangePreviewDate) {\n this.setRangePreviewDate();\n }\n\n if (this.selectDate(date)) {\n this.emitEvent('igcChange', { detail: date.native });\n }\n\n if (event.type === 'click') {\n // XXX: Why ?\n event.stopPropagation();\n this.emitEvent('igcActiveDateChange', { detail: date.native });\n this._activeDate = date;\n }\n }\n }\n\n private _selectMultiple(day: CalendarDay) {\n const values = this._values;\n const idx = values.findIndex((v) => v.equalTo(day));\n\n idx < 0 ? values.push(day) : values.splice(idx, 1);\n values.sort((a, b) => a.timestamp - b.timestamp);\n this._values = Array.from(values);\n }\n\n private _selectRange(day: CalendarDay) {\n let values = this._values;\n\n if (values.length !== 1) {\n values = [day];\n } else {\n const beginning = first(values);\n\n if (beginning.equalTo(day)) {\n this._values = [];\n return;\n }\n\n values = beginning.greaterThan(day)\n ? Array.from(calendarRange({ start: day, end: beginning }))\n : Array.from(calendarRange({ start: beginning, end: day }));\n\n values.push(last(values).add('day', 1));\n }\n\n this._values = values.filter(\n (v) => !isDateInRanges(v, this._disabledDates)\n );\n }\n\n private selectDate(value: CalendarDay) {\n if (isDateInRanges(value, this._disabledDates)) {\n return false;\n }\n\n if (this._isSingle) {\n if (this._value?.equalTo(value)) {\n return false;\n }\n this._value = value;\n }\n\n if (this._isMultiple) {\n this._selectMultiple(value);\n }\n\n if (this._isRange) {\n this._selectRange(value);\n }\n\n return true;\n }\n\n private isSelected(day: CalendarDay) {\n if (isDateInRanges(day, this._disabledDates)) {\n return false;\n }\n\n if (this._isSingle) {\n return !!this._value && this._value.equalTo(day);\n }\n\n if (!this._hasValues) {\n return false;\n }\n\n if (this._isMultiple) {\n return isDateInRanges(day, [\n {\n type: DateRangeType.Specific,\n dateRange: this.values,\n },\n ]);\n }\n return isDateInRanges(day, [\n {\n type: DateRangeType.Between,\n dateRange: [first(this._values).native, last(this._values).native],\n },\n ]);\n }\n\n // XXX: Range interaction\n private setRangePreviewDate(day?: CalendarDay) {\n this._rangePreviewDate = day;\n this.emitEvent('igcRangePreviewDateChange', {\n detail: day ? day.native : undefined,\n });\n }\n\n private changeRangePreview(day: CalendarDay) {\n if (this._values.length === 1 && !first(this._values).equalTo(day)) {\n this.setRangePreviewDate(day);\n }\n }\n\n private clearRangePreview() {\n if (this._rangePreviewDate) {\n this.setRangePreviewDate();\n }\n }\n\n // XXX: Ranges\n\n private isFirstInRange(day: CalendarDay) {\n if (this._isSingle || !this._hasValues) {\n return false;\n }\n\n const target = this._rangePreviewDate?.lessThan(first(this._values))\n ? this._rangePreviewDate\n : first(this._values);\n\n return target.equalTo(day);\n }\n\n private isLastInRange(day: CalendarDay) {\n if (this._isSingle || !this._hasValues) {\n return false;\n }\n\n const target = this._rangePreviewDate?.greaterThan(last(this._values))\n ? this._rangePreviewDate\n : last(this._values);\n\n return target.equalTo(day);\n }\n\n private isRangeDate(day: CalendarDay) {\n const isSingleRange = this._values.length === 1;\n\n if (!this._hasValues || (isSingleRange && !this._rangePreviewDate)) {\n return false;\n }\n\n const min = first(this._values);\n const max = isSingleRange ? this._rangePreviewDate! : last(this._values);\n\n return isDateInRanges(day, [\n {\n type: DateRangeType.Between,\n dateRange: [min.native, max.native],\n },\n ]);\n }\n\n private isRangePreview(day: CalendarDay) {\n if (!(this._hasValues && this._rangePreviewDate)) {\n return false;\n }\n\n return isDateInRanges(day, [\n {\n type: DateRangeType.Between,\n dateRange: [first(this._values).native, this._rangePreviewDate.native],\n },\n ]);\n }\n\n private intlFormatDay(day: CalendarDay) {\n const fmt = this._intl.get('label');\n\n // Range selection in progress\n if (this._rangePreviewDate?.equalTo(day)) {\n return fmt.formatRange(\n first(this._values).native,\n this._rangePreviewDate.native\n );\n }\n\n // Range selection finished\n if (this.isFirstInRange(day) || this.isLastInRange(day)) {\n return fmt.formatRange(\n first(this._values).native,\n last(this._values).native\n );\n }\n\n // Default\n return fmt.format(day.native);\n }\n\n private getDayHandlers(day: CalendarDay) {\n const range = this._isRange;\n const changePreview = range\n ? this.changeRangePreview.bind(this, day)\n : nothing;\n const clearPreview = range ? this.clearRangePreview : nothing;\n\n return { changePreview, clearPreview };\n }\n\n private getDayProperties(day: CalendarDay, today: CalendarDay) {\n const isRange = this._isRange;\n const disabled = isDateInRanges(day, this._disabledDates);\n\n const hiddenLeading =\n this.hideLeadingDays && isPreviousMonth(day, this._activeDate);\n const hiddenTrailing =\n this.hideTrailingDays && isNextMonth(day, this._activeDate);\n\n const hidden = hiddenLeading || hiddenTrailing;\n const inactive = !areSameMonth(day, this._activeDate);\n\n return {\n disabled: disabled || hidden,\n first: this.isFirstInRange(day),\n last: this.isLastInRange(day),\n range: isRange && this.isRangeDate(day),\n preview: isRange && this.isRangePreview(day),\n current: !inactive && day.equalTo(today),\n inactive,\n hidden,\n weekend: day.weekend,\n single: !isRange,\n selected: !disabled && this.isSelected(day),\n special: isDateInRanges(day, this._specialDates) && !inactive,\n };\n }\n\n protected renderDay(day: CalendarDay, today: CalendarDay) {\n const ariaLabel = this.intlFormatDay(day);\n const { changePreview, clearPreview } = this.getDayHandlers(day);\n\n const props = this.getDayProperties(day, today);\n\n return html`\n <span part=${partMap({ date: true, ...props })}>\n <span\n role=\"gridcell\"\n part=${partMap({ 'date-inner': true, ...props })}\n aria-label=${ariaLabel}\n aria-disabled=${props.disabled}\n aria-selected=${props.selected}\n data-value=${day.timestamp}\n tabindex=${day.equalTo(this._activeDate) ? 0 : -1}\n @focus=${changePreview}\n @blur=${clearPreview}\n @mouseenter=${changePreview}\n @mouseleave=${clearPreview}\n >\n ${day.date}\n </span>\n </span>\n `;\n }\n\n protected renderHeaderWeekNumber() {\n return html`\n <span role=\"columnheader\" part=\"label week-number first\">\n <span part=\"week-number-inner first\">\n ${this.resourceStrings.weekLabel}\n </span>\n </span>\n `;\n }\n\n protected renderWeekNumber(start: CalendarDay, last: boolean) {\n return html`\n <span role=\"rowheader\" part=${partMap({ 'week-number': true, last })}>\n <span part=${partMap({ 'week-number-inner': true, last })}>\n ${start.week}\n </span>\n </span>\n `;\n }\n\n protected renderHeaders() {\n const label = this._intl.get('weekday');\n const aria = this._intl.get('ariaWeekday');\n const days = take(\n generateMonth(this._activeDate, this._firstDayOfWeek),\n daysInWeek\n );\n\n const weekNumber = this.showWeekNumbers\n ? this.renderHeaderWeekNumber()\n : nothing;\n\n const headers = days.map(\n (day) => html`\n <span\n role=\"columnheader\"\n part=\"label\"\n aria-label=${aria.format(day.native)}\n >\n <span part=\"label-inner\">${label.format(day.native)}</span>\n </span>\n `\n );\n\n return html`\n <div role=\"row\" part=\"days-row first\">${weekNumber}${headers}</div>\n `;\n }\n\n protected *renderWeeks() {\n const today = CalendarDay.today;\n const weeks = Array.from(chunk(this.dates, daysInWeek));\n const last = weeks.length - 1;\n\n for (const [idx, week] of weeks.entries()) {\n let hidden = false;\n if (idx === 0 || idx === last) {\n hidden = week.every((day) => this.getDayProperties(day, today).hidden);\n }\n yield html`\n <div role=\"row\" part=\"days-row\" aria-hidden=${hidden}>\n ${this.showWeekNumbers\n ? this.renderWeekNumber(week[0], idx === last)\n : nothing}\n ${week.map((day) => this.renderDay(day, today))}\n </div>\n `;\n }\n }\n\n protected override render() {\n return html`${this.renderHeaders()}${this.renderWeeks()}`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-days-view': IgcDaysViewComponent;\n }\n}\n"]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { DateRangeValue } from '../date-range-picker/date-range-picker.js';
|
|
1
2
|
import { CalendarDay, type CalendarRangeParams, type DayParameter } from './model.js';
|
|
2
3
|
import { type DateRangeDescriptor, type WeekDays } from './types.js';
|
|
3
4
|
export declare const MONTHS_PER_ROW = 3;
|
|
@@ -14,6 +15,15 @@ export declare function parseISODate(string: string): Date | null;
|
|
|
14
15
|
* If the parsing fails, null is returned.
|
|
15
16
|
*/
|
|
16
17
|
export declare function convertToDate(value?: Date | string | null): Date | null;
|
|
18
|
+
/**
|
|
19
|
+
* Converts the given value to a DateRangeValue object.
|
|
20
|
+
*
|
|
21
|
+
* If the value is already a valid DateRangeValue object, it is returned directly.
|
|
22
|
+
* If the value is a string, it is parsed to object and returned if it fields are valid dates.
|
|
23
|
+
* If the value is null or undefined, null is returned.
|
|
24
|
+
* If the parsing fails, null is returned.
|
|
25
|
+
*/
|
|
26
|
+
export declare function convertToDateRange(value?: DateRangeValue | string | null): DateRangeValue | null;
|
|
17
27
|
/**
|
|
18
28
|
* Converts a Date object to an ISO 8601 string.
|
|
19
29
|
*
|
|
@@ -40,8 +50,9 @@ export declare function areSameMonth(first: DayParameter, second: DayParameter):
|
|
|
40
50
|
export declare function isNextMonth(target: DayParameter, origin: DayParameter): boolean;
|
|
41
51
|
export declare function isPreviousMonth(target: DayParameter, origin: DayParameter): boolean;
|
|
42
52
|
/**
|
|
43
|
-
* Returns a generator yielding day values between `start` and `end` (non-inclusive)
|
|
53
|
+
* Returns a generator yielding day values between `start` and `end` (non-inclusive by default)
|
|
44
54
|
* by a given `unit` as a step.
|
|
55
|
+
* To include the end date set the `inclusive` option to true.
|
|
45
56
|
*
|
|
46
57
|
* @remarks
|
|
47
58
|
* By default, `unit` is set to 'day'.
|
|
@@ -33,6 +33,21 @@ export function convertToDate(value) {
|
|
|
33
33
|
}
|
|
34
34
|
return isString(value) ? parseISODate(value) : isValidDate(value);
|
|
35
35
|
}
|
|
36
|
+
export function convertToDateRange(value) {
|
|
37
|
+
if (!value) {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
if (isString(value)) {
|
|
41
|
+
const obj = JSON.parse(value);
|
|
42
|
+
const start = convertToDate(obj.start);
|
|
43
|
+
const end = convertToDate(obj.end);
|
|
44
|
+
return {
|
|
45
|
+
start: start ? CalendarDay.from(start).native : null,
|
|
46
|
+
end: end ? CalendarDay.from(end).native : null,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
return value;
|
|
50
|
+
}
|
|
36
51
|
export function getDateFormValue(value) {
|
|
37
52
|
return value ? value.toISOString() : null;
|
|
38
53
|
}
|
|
@@ -70,16 +85,26 @@ export function isPreviousMonth(target, origin) {
|
|
|
70
85
|
return a.year === b.year ? a.month < b.month : a.year < b.year;
|
|
71
86
|
}
|
|
72
87
|
export function* calendarRange(options) {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
const
|
|
76
|
-
?
|
|
77
|
-
: toCalendarDay(
|
|
78
|
-
const
|
|
79
|
-
const step =
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
88
|
+
const { start, end, unit = 'day', inclusive = false } = options;
|
|
89
|
+
let currentDate = toCalendarDay(start);
|
|
90
|
+
const endDate = typeof end === 'number'
|
|
91
|
+
? toCalendarDay(start).add(unit, end)
|
|
92
|
+
: toCalendarDay(end);
|
|
93
|
+
const isReversed = endDate.lessThan(currentDate);
|
|
94
|
+
const step = isReversed ? -1 : 1;
|
|
95
|
+
const shouldContinue = () => {
|
|
96
|
+
if (inclusive) {
|
|
97
|
+
return isReversed
|
|
98
|
+
? currentDate.greaterThanOrEqual(endDate)
|
|
99
|
+
: currentDate.lessThanOrEqual(endDate);
|
|
100
|
+
}
|
|
101
|
+
return isReversed
|
|
102
|
+
? currentDate.greaterThan(endDate)
|
|
103
|
+
: currentDate.lessThan(endDate);
|
|
104
|
+
};
|
|
105
|
+
while (shouldContinue()) {
|
|
106
|
+
yield currentDate;
|
|
107
|
+
currentDate = currentDate.add(unit, step);
|
|
83
108
|
}
|
|
84
109
|
}
|
|
85
110
|
export function* generateMonth(value, firstWeekDay) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/components/calendar/helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n asNumber,\n findElementFromEventPath,\n first,\n isString,\n last,\n modulo,\n} from '../common/util.js';\nimport {\n CalendarDay,\n type CalendarRangeParams,\n type DayParameter,\n daysInWeek,\n toCalendarDay,\n} from './model.js';\nimport {\n type DateRangeDescriptor,\n DateRangeType,\n type WeekDays,\n} from './types.js';\n\n/* Constants */\n\nexport const MONTHS_PER_ROW = 3;\nexport const YEARS_PER_ROW = 3;\nexport const YEARS_PER_PAGE = 15;\n\nconst DaysMap = {\n sunday: 0,\n monday: 1,\n tuesday: 2,\n wednesday: 3,\n thursday: 4,\n friday: 5,\n saturday: 6,\n};\n\n/* Converter functions */\n\nexport function isValidDate(date: Date) {\n return Number.isNaN(date.valueOf()) ? null : date;\n}\n\nexport function parseISODate(string: string) {\n if (/^\\d{4}/.test(string)) {\n const time = !string.includes('T') ? 'T00:00:00' : '';\n return isValidDate(new Date(`${string}${time}`));\n }\n\n if (/^\\d{2}/.test(string)) {\n const date = first(new Date().toISOString().split('T'));\n return isValidDate(new Date(`${date}T${string}`));\n }\n\n return null;\n}\n\n/**\n * Converts the given value to a Date object.\n *\n * If the value is already a valid Date object, it is returned directly.\n * If the value is a string, it is parsed into a Date object.\n * If the value is null or undefined, null is returned.\n * If the parsing fails, null is returned.\n */\nexport function convertToDate(value?: Date | string | null): Date | null {\n if (!value) {\n return null;\n }\n\n return isString(value) ? parseISODate(value) : isValidDate(value);\n}\n\n/**\n * Converts a Date object to an ISO 8601 string.\n *\n * If the `value` is a `Date` object, it is converted to an ISO 8601 string.\n * If the `value` is null or undefined, null is returned.\n */\nexport function getDateFormValue(value: Date | null) {\n return value ? value.toISOString() : null;\n}\n\n/**\n * Converts a comma-separated string of ISO 8601 dates or an array of Date objects | ISO 8601 strings into\n * an array of Date objects.\n *\n * If the `value` is null or undefined, null is returned.\n * If the `value` is an array of `Date` objects, a filtered array of valid `Date` objects is returned.\n * If the `value` is a string, it is split by commas and each part is parsed into a `Date` object.\n * If the parsing fails for any date, it is skipped.\n */\nexport function convertToDates(value?: (Date | string)[] | string | null) {\n if (!value) {\n return null;\n }\n\n const values: Date[] = [];\n const iterator = isString(value) ? value.split(',') : value;\n\n for (const each of iterator) {\n const date = convertToDate(isString(each) ? each.trim() : each);\n if (date) {\n values.push(date);\n }\n }\n\n return values;\n}\n\n/**\n * Returns the value of the selected/activated element (day/month/year) in the calendar view.\n */\nexport function getViewElement(event: Event) {\n const element = findElementFromEventPath<HTMLElement>('[data-value]', event);\n return element ? asNumber(element.dataset.value, -1) : -1;\n}\n\nexport function getWeekDayNumber(value: WeekDays) {\n return DaysMap[value];\n}\n\nexport function areSameMonth(first: DayParameter, second: DayParameter) {\n const [a, b] = [toCalendarDay(first), toCalendarDay(second)];\n return a.year === b.year && a.month === b.month;\n}\n\nexport function isNextMonth(target: DayParameter, origin: DayParameter) {\n const [a, b] = [toCalendarDay(target), toCalendarDay(origin)];\n return a.year === b.year ? a.month > b.month : a.year > b.year;\n}\n\nexport function isPreviousMonth(target: DayParameter, origin: DayParameter) {\n const [a, b] = [toCalendarDay(target), toCalendarDay(origin)];\n return a.year === b.year ? a.month < b.month : a.year < b.year;\n}\n\n/**\n * Returns a generator yielding day values between `start` and `end` (non-inclusive)\n * by a given `unit` as a step.\n *\n * @remarks\n * By default, `unit` is set to 'day'.\n */\nexport function* calendarRange(options: CalendarRangeParams) {\n let low = toCalendarDay(options.start);\n const unit = options.unit ?? 'day';\n const high =\n typeof options.end === 'number'\n ? low.add(unit, options.end)\n : toCalendarDay(options.end);\n\n const reverse = high.lessThan(low);\n const step = reverse ? -1 : 1;\n\n while (!reverse ? low.lessThan(high) : low.greaterThan(high)) {\n yield low;\n low = low.add(unit, step);\n }\n}\n\nexport function* generateMonth(value: DayParameter, firstWeekDay: number) {\n const { year, month } = toCalendarDay(value);\n\n const start = new CalendarDay({ year, month });\n const offset = modulo(start.day - firstWeekDay, daysInWeek);\n yield* calendarRange({\n start: start.add('day', -offset),\n end: 42,\n });\n}\n\nexport function getYearRange(current: DayParameter, range: number) {\n const year = toCalendarDay(current).year;\n const start = Math.floor(year / range) * range;\n return { start, end: start + range - 1 };\n}\n\nexport function isDateInRanges(\n date: DayParameter,\n ranges: DateRangeDescriptor[]\n) {\n const value = toCalendarDay(date);\n\n return ranges.some((range) => {\n const days = (range.dateRange ?? []).map((day) => toCalendarDay(day));\n\n switch (range.type) {\n case DateRangeType.After:\n return value.greaterThan(first(days));\n\n case DateRangeType.Before:\n return value.lessThan(first(days));\n\n case DateRangeType.Between: {\n const min = Math.min(first(days).timestamp, last(days).timestamp);\n const max = Math.max(first(days).timestamp, last(days).timestamp);\n return value.timestamp >= min && value.timestamp <= max;\n }\n\n case DateRangeType.Specific:\n return days.some((day) => day.equalTo(value));\n\n case DateRangeType.Weekdays:\n return !value.weekend;\n\n case DateRangeType.Weekends:\n return value.weekend;\n\n default:\n return false;\n }\n });\n}\n"]}
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/components/calendar/helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n asNumber,\n findElementFromEventPath,\n first,\n isString,\n last,\n modulo,\n} from '../common/util.js';\nimport type { DateRangeValue } from '../date-range-picker/date-range-picker.js';\nimport {\n CalendarDay,\n type CalendarRangeParams,\n type DayParameter,\n daysInWeek,\n toCalendarDay,\n} from './model.js';\nimport {\n type DateRangeDescriptor,\n DateRangeType,\n type WeekDays,\n} from './types.js';\n\n/* Constants */\n\nexport const MONTHS_PER_ROW = 3;\nexport const YEARS_PER_ROW = 3;\nexport const YEARS_PER_PAGE = 15;\n\nconst DaysMap = {\n sunday: 0,\n monday: 1,\n tuesday: 2,\n wednesday: 3,\n thursday: 4,\n friday: 5,\n saturday: 6,\n};\n\n/* Converter functions */\n\nexport function isValidDate(date: Date) {\n return Number.isNaN(date.valueOf()) ? null : date;\n}\n\nexport function parseISODate(string: string) {\n if (/^\\d{4}/.test(string)) {\n const time = !string.includes('T') ? 'T00:00:00' : '';\n return isValidDate(new Date(`${string}${time}`));\n }\n\n if (/^\\d{2}/.test(string)) {\n const date = first(new Date().toISOString().split('T'));\n return isValidDate(new Date(`${date}T${string}`));\n }\n\n return null;\n}\n\n/**\n * Converts the given value to a Date object.\n *\n * If the value is already a valid Date object, it is returned directly.\n * If the value is a string, it is parsed into a Date object.\n * If the value is null or undefined, null is returned.\n * If the parsing fails, null is returned.\n */\nexport function convertToDate(value?: Date | string | null): Date | null {\n if (!value) {\n return null;\n }\n\n return isString(value) ? parseISODate(value) : isValidDate(value);\n}\n\n/**\n * Converts the given value to a DateRangeValue object.\n *\n * If the value is already a valid DateRangeValue object, it is returned directly.\n * If the value is a string, it is parsed to object and returned if it fields are valid dates.\n * If the value is null or undefined, null is returned.\n * If the parsing fails, null is returned.\n */\nexport function convertToDateRange(\n value?: DateRangeValue | string | null\n): DateRangeValue | null {\n if (!value) {\n return null;\n }\n\n if (isString(value)) {\n const obj = JSON.parse(value);\n const start = convertToDate(obj.start);\n const end = convertToDate(obj.end);\n return {\n start: start ? CalendarDay.from(start).native : null,\n end: end ? CalendarDay.from(end).native : null,\n };\n }\n return value;\n}\n\n/**\n * Converts a Date object to an ISO 8601 string.\n *\n * If the `value` is a `Date` object, it is converted to an ISO 8601 string.\n * If the `value` is null or undefined, null is returned.\n */\nexport function getDateFormValue(value: Date | null) {\n return value ? value.toISOString() : null;\n}\n\n/**\n * Converts a comma-separated string of ISO 8601 dates or an array of Date objects | ISO 8601 strings into\n * an array of Date objects.\n *\n * If the `value` is null or undefined, null is returned.\n * If the `value` is an array of `Date` objects, a filtered array of valid `Date` objects is returned.\n * If the `value` is a string, it is split by commas and each part is parsed into a `Date` object.\n * If the parsing fails for any date, it is skipped.\n */\nexport function convertToDates(value?: (Date | string)[] | string | null) {\n if (!value) {\n return null;\n }\n\n const values: Date[] = [];\n const iterator = isString(value) ? value.split(',') : value;\n\n for (const each of iterator) {\n const date = convertToDate(isString(each) ? each.trim() : each);\n if (date) {\n values.push(date);\n }\n }\n\n return values;\n}\n\n/**\n * Returns the value of the selected/activated element (day/month/year) in the calendar view.\n */\nexport function getViewElement(event: Event) {\n const element = findElementFromEventPath<HTMLElement>('[data-value]', event);\n return element ? asNumber(element.dataset.value, -1) : -1;\n}\n\nexport function getWeekDayNumber(value: WeekDays) {\n return DaysMap[value];\n}\n\nexport function areSameMonth(first: DayParameter, second: DayParameter) {\n const [a, b] = [toCalendarDay(first), toCalendarDay(second)];\n return a.year === b.year && a.month === b.month;\n}\n\nexport function isNextMonth(target: DayParameter, origin: DayParameter) {\n const [a, b] = [toCalendarDay(target), toCalendarDay(origin)];\n return a.year === b.year ? a.month > b.month : a.year > b.year;\n}\n\nexport function isPreviousMonth(target: DayParameter, origin: DayParameter) {\n const [a, b] = [toCalendarDay(target), toCalendarDay(origin)];\n return a.year === b.year ? a.month < b.month : a.year < b.year;\n}\n\n/**\n * Returns a generator yielding day values between `start` and `end` (non-inclusive by default)\n * by a given `unit` as a step.\n * To include the end date set the `inclusive` option to true.\n *\n * @remarks\n * By default, `unit` is set to 'day'.\n */\nexport function* calendarRange(\n options: CalendarRangeParams\n): Generator<CalendarDay, void, unknown> {\n const { start, end, unit = 'day', inclusive = false } = options;\n\n let currentDate = toCalendarDay(start);\n const endDate =\n typeof end === 'number'\n ? toCalendarDay(start).add(unit, end)\n : toCalendarDay(end);\n\n const isReversed = endDate.lessThan(currentDate);\n const step = isReversed ? -1 : 1;\n\n const shouldContinue = () => {\n if (inclusive) {\n return isReversed\n ? currentDate.greaterThanOrEqual(endDate)\n : currentDate.lessThanOrEqual(endDate);\n }\n return isReversed\n ? currentDate.greaterThan(endDate)\n : currentDate.lessThan(endDate);\n };\n\n while (shouldContinue()) {\n yield currentDate;\n currentDate = currentDate.add(unit, step);\n }\n}\n\nexport function* generateMonth(value: DayParameter, firstWeekDay: number) {\n const { year, month } = toCalendarDay(value);\n\n const start = new CalendarDay({ year, month });\n const offset = modulo(start.day - firstWeekDay, daysInWeek);\n yield* calendarRange({\n start: start.add('day', -offset),\n end: 42,\n });\n}\n\nexport function getYearRange(current: DayParameter, range: number) {\n const year = toCalendarDay(current).year;\n const start = Math.floor(year / range) * range;\n return { start, end: start + range - 1 };\n}\n\nexport function isDateInRanges(\n date: DayParameter,\n ranges: DateRangeDescriptor[]\n) {\n const value = toCalendarDay(date);\n\n return ranges.some((range) => {\n const days = (range.dateRange ?? []).map((day) => toCalendarDay(day));\n\n switch (range.type) {\n case DateRangeType.After:\n return value.greaterThan(first(days));\n\n case DateRangeType.Before:\n return value.lessThan(first(days));\n\n case DateRangeType.Between: {\n const min = Math.min(first(days).timestamp, last(days).timestamp);\n const max = Math.max(first(days).timestamp, last(days).timestamp);\n return value.timestamp >= min && value.timestamp <= max;\n }\n\n case DateRangeType.Specific:\n return days.some((day) => day.equalTo(value));\n\n case DateRangeType.Weekdays:\n return !value.weekend;\n\n case DateRangeType.Weekends:\n return value.weekend;\n\n default:\n return false;\n }\n });\n}\n"]}
|
|
@@ -3,6 +3,7 @@ export type CalendarRangeParams = {
|
|
|
3
3
|
start: DayParameter;
|
|
4
4
|
end: DayParameter | number;
|
|
5
5
|
unit?: DayInterval;
|
|
6
|
+
inclusive?: boolean;
|
|
6
7
|
};
|
|
7
8
|
type DayInterval = 'year' | 'quarter' | 'month' | 'week' | 'day';
|
|
8
9
|
type CalendarDayParams = {
|
|
@@ -13,11 +14,22 @@ type CalendarDayParams = {
|
|
|
13
14
|
export declare const daysInWeek = 7;
|
|
14
15
|
export declare function toCalendarDay(date: DayParameter): CalendarDay;
|
|
15
16
|
export declare class CalendarDay {
|
|
16
|
-
private _date;
|
|
17
|
+
private readonly _date;
|
|
17
18
|
/** Constructs and returns the current day. */
|
|
18
19
|
static get today(): CalendarDay;
|
|
19
20
|
/** Constructs a new CalendarDay instance from a Date object. */
|
|
20
21
|
static from(date: Date): CalendarDay;
|
|
22
|
+
/**
|
|
23
|
+
* Compares the date portion of two date objects.
|
|
24
|
+
*
|
|
25
|
+
* @returns
|
|
26
|
+
* ```
|
|
27
|
+
* first === second // 0
|
|
28
|
+
* first > second // 1
|
|
29
|
+
* first < second // -1
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
static compare(first: DayParameter, second: DayParameter): 0 | 1 | -1;
|
|
21
33
|
constructor(args: CalendarDayParams);
|
|
22
34
|
/** Returns a copy of this instance. */
|
|
23
35
|
clone(): CalendarDay;
|
|
@@ -49,7 +61,9 @@ export declare class CalendarDay {
|
|
|
49
61
|
get weekend(): boolean;
|
|
50
62
|
equalTo(value: DayParameter): boolean;
|
|
51
63
|
greaterThan(value: DayParameter): boolean;
|
|
64
|
+
greaterThanOrEqual(value: DayParameter): boolean;
|
|
52
65
|
lessThan(value: DayParameter): boolean;
|
|
66
|
+
lessThanOrEqual(value: DayParameter): boolean;
|
|
53
67
|
toString(): string;
|
|
54
68
|
}
|
|
55
69
|
export {};
|