igniteui-webcomponents 6.4.0-alpha.4 → 6.5.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 +141 -2
- package/README.md +65 -56
- package/components/button/themes/button/dark/button.indigo.css.js +1 -1
- package/components/button/themes/button/dark/button.indigo.css.js.map +1 -1
- package/components/button/themes/button/dark/button.material.css.js +1 -1
- package/components/button/themes/button/dark/button.material.css.js.map +1 -1
- package/components/button/themes/button/light/button.indigo.css.js +1 -1
- package/components/button/themes/button/light/button.indigo.css.js.map +1 -1
- package/components/button/themes/button/light/button.material.css.js +1 -1
- package/components/button/themes/button/light/button.material.css.js.map +1 -1
- package/components/button/themes/button/shared/button.bootstrap.css.js +1 -1
- package/components/button/themes/button/shared/button.bootstrap.css.js.map +1 -1
- package/components/button/themes/button/shared/button.common.css.js +1 -1
- package/components/button/themes/button/shared/button.common.css.js.map +1 -1
- package/components/button/themes/button/shared/button.fluent.css.js +1 -1
- package/components/button/themes/button/shared/button.fluent.css.js.map +1 -1
- package/components/button/themes/button/shared/button.indigo.css.js +1 -1
- package/components/button/themes/button/shared/button.indigo.css.js.map +1 -1
- package/components/button/themes/button/shared/button.material.css.js +1 -1
- package/components/button/themes/button/shared/button.material.css.js.map +1 -1
- package/components/button-group/themes/dark/button-group.material.css.js +1 -1
- package/components/button-group/themes/dark/button-group.material.css.js.map +1 -1
- package/components/button-group/themes/light/button-group.material.css.js +1 -1
- package/components/button-group/themes/light/button-group.material.css.js.map +1 -1
- package/components/button-group/themes/shared/button/button.bootstrap.css.js +1 -1
- package/components/button-group/themes/shared/button/button.bootstrap.css.js.map +1 -1
- package/components/button-group/themes/shared/button/button.material.css.js +1 -1
- package/components/button-group/themes/shared/button/button.material.css.js.map +1 -1
- package/components/calendar/base.d.ts +7 -3
- package/components/calendar/base.js +10 -14
- package/components/calendar/base.js.map +1 -1
- package/components/calendar/calendar.d.ts +48 -44
- package/components/calendar/calendar.js +263 -259
- package/components/calendar/calendar.js.map +1 -1
- package/components/calendar/days-view/days-view.d.ts +49 -27
- package/components/calendar/days-view/days-view.js +170 -168
- package/components/calendar/days-view/days-view.js.map +1 -1
- package/components/calendar/helpers.js +40 -28
- package/components/calendar/helpers.js.map +1 -1
- package/components/calendar/model.d.ts +9 -3
- package/components/calendar/model.js +29 -19
- package/components/calendar/model.js.map +1 -1
- package/components/calendar/months-view/months-view.d.ts +6 -8
- package/components/calendar/months-view/months-view.js +25 -38
- package/components/calendar/months-view/months-view.js.map +1 -1
- package/components/calendar/themes/dark/calendar.bootstrap.css.js +1 -1
- package/components/calendar/themes/dark/calendar.bootstrap.css.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/dark/calendar.indigo.css.js +1 -1
- package/components/calendar/themes/dark/calendar.indigo.css.js.map +1 -1
- package/components/calendar/themes/dark/calendar.material.css.js +1 -1
- package/components/calendar/themes/dark/calendar.material.css.js.map +1 -1
- package/components/calendar/themes/days.js +8 -23
- package/components/calendar/themes/days.js.map +1 -1
- package/components/calendar/themes/light/calendar.bootstrap.css.js +1 -1
- package/components/calendar/themes/light/calendar.bootstrap.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.indigo.css.js +1 -1
- package/components/calendar/themes/light/calendar.indigo.css.js.map +1 -1
- package/components/calendar/themes/light/calendar.material.css.js +1 -1
- package/components/calendar/themes/light/calendar.material.css.js.map +1 -1
- package/components/calendar/themes/shared/bootstrap/days-view.bootstrap.css.js +1 -1
- package/components/calendar/themes/shared/bootstrap/days-view.bootstrap.css.js.map +1 -1
- package/components/calendar/themes/shared/bootstrap/year-month-view.bootstrap.css.js +1 -1
- package/components/calendar/themes/shared/bootstrap/year-month-view.bootstrap.css.js.map +1 -1
- package/components/calendar/themes/shared/fluent/days-view.fluent.css.js +1 -1
- package/components/calendar/themes/shared/fluent/days-view.fluent.css.js.map +1 -1
- package/components/calendar/themes/shared/indigo/days-view.indigo.css.js +1 -1
- package/components/calendar/themes/shared/indigo/days-view.indigo.css.js.map +1 -1
- package/components/calendar/themes/shared/material/days-view.material.css.js +1 -1
- package/components/calendar/themes/shared/material/days-view.material.css.js.map +1 -1
- package/components/calendar/themes/year-month.js +8 -23
- package/components/calendar/themes/year-month.js.map +1 -1
- package/components/calendar/years-view/years-view.d.ts +6 -5
- package/components/calendar/years-view/years-view.js +11 -14
- package/components/calendar/years-view/years-view.js.map +1 -1
- package/components/carousel/carousel.d.ts +2 -1
- package/components/carousel/carousel.js.map +1 -1
- package/components/checkbox/checkbox-base.d.ts +1 -1
- package/components/checkbox/themes/light/checkbox/checkbox.material.css.js +1 -1
- package/components/checkbox/themes/light/checkbox/checkbox.material.css.js.map +1 -1
- package/components/checkbox/themes/shared/switch/switch.bootstrap.css.js +1 -1
- package/components/checkbox/themes/shared/switch/switch.bootstrap.css.js.map +1 -1
- package/components/checkbox/themes/shared/switch/switch.common.css.js +1 -1
- package/components/checkbox/themes/shared/switch/switch.common.css.js.map +1 -1
- package/components/checkbox/themes/shared/switch/switch.fluent.css.js +1 -1
- package/components/checkbox/themes/shared/switch/switch.fluent.css.js.map +1 -1
- package/components/checkbox/themes/shared/switch/switch.indigo.css.js +1 -1
- package/components/checkbox/themes/shared/switch/switch.indigo.css.js.map +1 -1
- package/components/checkbox/themes/shared/switch/switch.material.css.js +1 -1
- package/components/checkbox/themes/shared/switch/switch.material.css.js.map +1 -1
- package/components/chip/chip.d.ts +2 -1
- package/components/chip/chip.js.map +1 -1
- package/components/chip/themes/dark/chip.fluent.css.js +1 -1
- package/components/chip/themes/dark/chip.fluent.css.js.map +1 -1
- package/components/chip/themes/dark/chip.indigo.css.js +1 -1
- package/components/chip/themes/dark/chip.indigo.css.js.map +1 -1
- package/components/chip/themes/light/chip.fluent.css.js +1 -1
- package/components/chip/themes/light/chip.fluent.css.js.map +1 -1
- package/components/chip/themes/light/chip.indigo.css.js +1 -1
- package/components/chip/themes/light/chip.indigo.css.js.map +1 -1
- package/components/chip/themes/light/chip.shared.css.js +1 -1
- package/components/chip/themes/light/chip.shared.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 +3 -2
- package/components/combo/combo.js +7 -0
- package/components/combo/combo.js.map +1 -1
- package/components/combo/controllers/selection.js.map +1 -1
- package/components/combo/validators.js +2 -2
- package/components/combo/validators.js.map +1 -1
- package/components/common/controllers/async-consumer.js.map +1 -1
- package/components/common/controllers/focus-ring.js +1 -5
- package/components/common/controllers/focus-ring.js.map +1 -1
- package/components/common/controllers/root-click.js +46 -21
- package/components/common/controllers/root-click.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/EN/calendar.resources.js +4 -1
- package/components/common/i18n/EN/calendar.resources.js.map +1 -1
- package/components/common/i18n/EN/date-range-picker.resources.js.map +1 -1
- package/components/common/i18n/i18n-controller.js +6 -9
- package/components/common/i18n/i18n-controller.js.map +1 -1
- package/components/common/i18n/utils.d.ts +0 -12
- package/components/common/i18n/utils.js +0 -12
- package/components/common/i18n/utils.js.map +1 -1
- package/components/common/mixins/forms/associated.js +3 -23
- package/components/common/mixins/forms/associated.js.map +1 -1
- package/components/common/util.d.ts +5 -0
- package/components/common/util.js +5 -0
- package/components/common/util.js.map +1 -1
- package/components/common/validators.d.ts +2 -4
- package/components/common/validators.js +13 -19
- package/components/common/validators.js.map +1 -1
- package/components/date-picker/date-picker.d.ts +7 -3
- package/components/date-picker/date-picker.js +2 -2
- 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/validators.js +2 -3
- package/components/date-picker/validators.js.map +1 -1
- package/components/date-range-picker/date-range-picker.d.ts +7 -2
- package/components/date-range-picker/date-range-picker.js +13 -10
- package/components/date-range-picker/date-range-picker.js.map +1 -1
- package/components/date-range-picker/themes/dark/date-range-picker.bootstrap.css.js +1 -1
- package/components/date-range-picker/themes/dark/date-range-picker.bootstrap.css.js.map +1 -1
- package/components/date-range-picker/themes/dark/date-range-picker.fluent.css.js +1 -1
- package/components/date-range-picker/themes/dark/date-range-picker.fluent.css.js.map +1 -1
- package/components/date-range-picker/themes/dark/date-range-picker.indigo.css.js +1 -1
- package/components/date-range-picker/themes/dark/date-range-picker.indigo.css.js.map +1 -1
- package/components/date-range-picker/themes/dark/date-range-picker.material.css.js +1 -1
- package/components/date-range-picker/themes/dark/date-range-picker.material.css.js.map +1 -1
- package/components/date-range-picker/themes/light/date-range-picker.bootstrap.css.js +1 -1
- package/components/date-range-picker/themes/light/date-range-picker.bootstrap.css.js.map +1 -1
- package/components/date-range-picker/themes/light/date-range-picker.fluent.css.js +1 -1
- package/components/date-range-picker/themes/light/date-range-picker.fluent.css.js.map +1 -1
- package/components/date-range-picker/themes/light/date-range-picker.indigo.css.js +1 -1
- package/components/date-range-picker/themes/light/date-range-picker.indigo.css.js.map +1 -1
- package/components/date-range-picker/themes/light/date-range-picker.material.css.js +1 -1
- package/components/date-range-picker/themes/light/date-range-picker.material.css.js.map +1 -1
- package/components/date-range-picker/validators.js +5 -8
- package/components/date-range-picker/validators.js.map +1 -1
- package/components/date-time-input/date-time-input.d.ts +10 -3
- package/components/date-time-input/date-time-input.js +39 -21
- package/components/date-time-input/date-time-input.js.map +1 -1
- package/components/date-time-input/date-util.d.ts +11 -9
- package/components/date-time-input/date-util.js +23 -219
- package/components/date-time-input/date-util.js.map +1 -1
- package/components/dialog/dialog.d.ts +2 -0
- package/components/dialog/dialog.js +18 -9
- package/components/dialog/dialog.js.map +1 -1
- package/components/dialog/themes/dark/dialog.fluent.css.js +1 -1
- package/components/dialog/themes/dark/dialog.fluent.css.js.map +1 -1
- package/components/dialog/themes/light/dialog.fluent.css.js +1 -1
- package/components/dialog/themes/light/dialog.fluent.css.js.map +1 -1
- package/components/dialog/themes/shared/dialog.bootstrap.css.js +1 -1
- package/components/dialog/themes/shared/dialog.bootstrap.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/expansion-panel/themes/light/expansion-panel.bootstrap.css.js +1 -1
- package/components/expansion-panel/themes/light/expansion-panel.bootstrap.css.js.map +1 -1
- package/components/file-input/file-input.d.ts +28 -13
- package/components/file-input/file-input.js +73 -46
- package/components/file-input/file-input.js.map +1 -1
- package/components/input/input-base.d.ts +31 -34
- package/components/input/input-base.js +58 -83
- package/components/input/input-base.js.map +1 -1
- package/components/input/input.d.ts +18 -7
- package/components/input/input.js +34 -19
- package/components/input/input.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/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/input/validators.js +3 -3
- package/components/input/validators.js.map +1 -1
- package/components/list/themes/dark/container/list.bootstrap.css.js +1 -1
- package/components/list/themes/dark/container/list.bootstrap.css.js.map +1 -1
- package/components/list/themes/light/container/list.fluent.css.js +1 -1
- package/components/list/themes/light/container/list.fluent.css.js.map +1 -1
- package/components/list/themes/shared/item/list-item.common.css.js +1 -1
- package/components/list/themes/shared/item/list-item.common.css.js.map +1 -1
- package/components/list/themes/shared/item/list-item.indigo.css.js +1 -1
- package/components/list/themes/shared/item/list-item.indigo.css.js.map +1 -1
- package/components/mask-input/mask-input-base.d.ts +10 -4
- package/components/mask-input/mask-input-base.js +21 -16
- package/components/mask-input/mask-input-base.js.map +1 -1
- package/components/mask-input/mask-input.d.ts +9 -3
- package/components/mask-input/mask-input.js +26 -6
- package/components/mask-input/mask-input.js.map +1 -1
- package/components/mask-input/mask-parser.d.ts +30 -7
- package/components/mask-input/mask-parser.js +70 -42
- package/components/mask-input/mask-parser.js.map +1 -1
- package/components/mask-input/validators.js +3 -3
- package/components/mask-input/validators.js.map +1 -1
- package/components/nav-drawer/themes/dark/container/nav-drawer.fluent.css.js +1 -1
- package/components/nav-drawer/themes/dark/container/nav-drawer.fluent.css.js.map +1 -1
- package/components/nav-drawer/themes/light/container/nav-drawer.fluent.css.js +1 -1
- package/components/nav-drawer/themes/light/container/nav-drawer.fluent.css.js.map +1 -1
- package/components/nav-drawer/themes/light/container/nav-drawer.material.css.js +1 -1
- package/components/nav-drawer/themes/light/container/nav-drawer.material.css.js.map +1 -1
- package/components/navbar/themes/shared/navbar.common.css.js +1 -1
- package/components/navbar/themes/shared/navbar.common.css.js.map +1 -1
- package/components/radio/themes/light/radio.material.css.js +1 -1
- package/components/radio/themes/light/radio.material.css.js.map +1 -1
- package/components/radio/themes/shared/radio.bootstrap.css.js +1 -1
- package/components/radio/themes/shared/radio.bootstrap.css.js.map +1 -1
- package/components/radio/themes/shared/radio.common.css.js +1 -1
- package/components/radio/themes/shared/radio.common.css.js.map +1 -1
- package/components/radio/themes/shared/radio.fluent.css.js +1 -1
- package/components/radio/themes/shared/radio.fluent.css.js.map +1 -1
- package/components/radio/themes/shared/radio.indigo.css.js +1 -1
- package/components/radio/themes/shared/radio.indigo.css.js.map +1 -1
- package/components/radio/themes/shared/radio.material.css.js +1 -1
- package/components/radio/themes/shared/radio.material.css.js.map +1 -1
- package/components/radio/validators.js +2 -2
- package/components/radio/validators.js.map +1 -1
- package/components/rating/themes/dark/rating.indigo.css.js +1 -1
- package/components/rating/themes/dark/rating.indigo.css.js.map +1 -1
- package/components/rating/themes/light/rating.indigo.css.js +1 -1
- package/components/rating/themes/light/rating.indigo.css.js.map +1 -1
- package/components/ripple/ripple.d.ts +3 -3
- package/components/ripple/ripple.js +34 -31
- package/components/ripple/ripple.js.map +1 -1
- package/components/stepper/step.js +2 -2
- package/components/stepper/step.js.map +1 -1
- package/components/stepper/themes/step/dark/step.bootstrap.css.js +1 -1
- package/components/stepper/themes/step/dark/step.bootstrap.css.js.map +1 -1
- package/components/stepper/themes/step/dark/step.fluent.css.js +1 -1
- package/components/stepper/themes/step/dark/step.fluent.css.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/dark/step.material.css.js +1 -1
- package/components/stepper/themes/step/dark/step.material.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/stepper/themes/step/shared/step.common.css.js +1 -1
- package/components/stepper/themes/step/shared/step.common.css.js.map +1 -1
- package/components/stepper/themes/step/shared/step.indigo.css.js +1 -1
- package/components/stepper/themes/step/shared/step.indigo.css.js.map +1 -1
- package/components/tabs/tab-dom.js +8 -9
- package/components/tabs/tab-dom.js.map +1 -1
- package/components/tabs/themes/dark/tab.bootstrap.css.js +1 -1
- package/components/tabs/themes/dark/tab.bootstrap.css.js.map +1 -1
- package/components/tabs/themes/dark/tab.fluent.css.js +1 -1
- package/components/tabs/themes/dark/tab.fluent.css.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/dark/tab.material.css.js +1 -1
- package/components/tabs/themes/dark/tab.material.css.js.map +1 -1
- package/components/tabs/themes/dark/tab.shared.css.js +1 -1
- package/components/tabs/themes/dark/tab.shared.css.js.map +1 -1
- package/components/tabs/themes/light/tab.bootstrap.css.js +1 -1
- package/components/tabs/themes/light/tab.bootstrap.css.js.map +1 -1
- package/components/tabs/themes/light/tab.fluent.css.js +1 -1
- package/components/tabs/themes/light/tab.fluent.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/light/tab.material.css.js +1 -1
- package/components/tabs/themes/light/tab.material.css.js.map +1 -1
- package/components/tabs/themes/light/tab.shared.css.js +1 -1
- package/components/tabs/themes/light/tab.shared.css.js.map +1 -1
- package/components/tabs/themes/shared/tab/tab.bootstrap.css.js +1 -1
- package/components/tabs/themes/shared/tab/tab.bootstrap.css.js.map +1 -1
- package/components/tabs/themes/shared/tab/tab.common.css.js +1 -1
- package/components/tabs/themes/shared/tab/tab.common.css.js.map +1 -1
- package/components/tabs/themes/shared/tab/tab.fluent.css.js +1 -1
- package/components/tabs/themes/shared/tab/tab.fluent.css.js.map +1 -1
- package/components/tabs/themes/shared/tab/tab.indigo.css.js +1 -1
- package/components/tabs/themes/shared/tab/tab.indigo.css.js.map +1 -1
- package/components/tabs/themes/shared/tab/tab.material.css.js +1 -1
- package/components/tabs/themes/shared/tab/tab.material.css.js.map +1 -1
- package/components/tabs/themes/shared/tabs/tabs.bootstrap.css.js +1 -1
- package/components/tabs/themes/shared/tabs/tabs.bootstrap.css.js.map +1 -1
- package/components/tabs/themes/shared/tabs/tabs.common.css.js +1 -1
- package/components/tabs/themes/shared/tabs/tabs.common.css.js.map +1 -1
- package/components/tabs/themes/shared/tabs/tabs.indigo.css.js +1 -1
- package/components/tabs/themes/shared/tabs/tabs.indigo.css.js.map +1 -1
- package/components/tabs/themes/shared/tabs/tabs.material.css.js +1 -1
- package/components/tabs/themes/shared/tabs/tabs.material.css.js.map +1 -1
- package/components/tabs/themes/tabs.base.css.js +1 -1
- package/components/tabs/themes/tabs.base.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.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.common.css.js +1 -1
- package/components/textarea/themes/shared/textarea.common.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/theme-provider/theme-provider.d.ts +65 -0
- package/components/theme-provider/theme-provider.js +58 -0
- package/components/theme-provider/theme-provider.js.map +1 -0
- package/components/tile-manager/tile.js +6 -3
- package/components/tile-manager/tile.js.map +1 -1
- package/components/tree/themes/dark/container.bootstrap.css.js +1 -1
- package/components/tree/themes/dark/container.bootstrap.css.js.map +1 -1
- package/components/tree/themes/light/container.bootstrap.css.js +1 -1
- package/components/tree/themes/light/container.bootstrap.css.js.map +1 -1
- package/components/tree/tree-item.js +4 -0
- package/components/tree/tree-item.js.map +1 -1
- package/components/tree/tree.d.ts +14 -0
- package/components/tree/tree.js +23 -0
- package/components/tree/tree.js.map +1 -1
- package/components/validation-container/validation-container.d.ts +0 -1
- package/components/validation-container/validation-container.js +6 -9
- package/components/validation-container/validation-container.js.map +1 -1
- package/custom-elements.json +3176 -2986
- package/extras/chat-markdown-renderer.d.ts +72 -4
- package/extras/chat-markdown-renderer.js +19 -7
- package/extras/chat-markdown-renderer.js.map +1 -1
- package/igniteui-webcomponents.html-data.json +1 -1
- package/index.d.ts +5 -1
- package/index.js +4 -1
- package/index.js.map +1 -1
- package/package.json +9 -4
- 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/theming/context.d.ts +36 -0
- package/theming/context.js +3 -0
- package/theming/context.js.map +1 -0
- package/theming/theming-controller.d.ts +7 -1
- package/theming/theming-controller.js +48 -12
- package/theming/theming-controller.js.map +1 -1
- package/theming/utils.d.ts +10 -0
- package/theming/utils.js +8 -42
- package/theming/utils.js.map +1 -1
- package/web-types.json +1 -1
- package/components/common/localization/intl-formatters.d.ts +0 -17
- package/components/common/localization/intl-formatters.js +0 -46
- package/components/common/localization/intl-formatters.js.map +0 -1
- package/components/validation-container/themes/dark/validator.bootstrap.css.d.ts +0 -1
- package/components/validation-container/themes/dark/validator.bootstrap.css.js +0 -3
- package/components/validation-container/themes/dark/validator.bootstrap.css.js.map +0 -1
- package/components/validation-container/themes/dark/validator.fluent.css.d.ts +0 -1
- package/components/validation-container/themes/dark/validator.fluent.css.js +0 -3
- package/components/validation-container/themes/dark/validator.fluent.css.js.map +0 -1
- package/components/validation-container/themes/dark/validator.indigo.css.d.ts +0 -1
- package/components/validation-container/themes/dark/validator.indigo.css.js +0 -3
- package/components/validation-container/themes/dark/validator.indigo.css.js.map +0 -1
- package/components/validation-container/themes/dark/validator.material.css.d.ts +0 -1
- package/components/validation-container/themes/dark/validator.material.css.js +0 -3
- package/components/validation-container/themes/dark/validator.material.css.js.map +0 -1
- package/components/validation-container/themes/light/validator.bootstrap.css.d.ts +0 -1
- package/components/validation-container/themes/light/validator.bootstrap.css.js +0 -3
- package/components/validation-container/themes/light/validator.bootstrap.css.js.map +0 -1
- package/components/validation-container/themes/light/validator.fluent.css.d.ts +0 -1
- package/components/validation-container/themes/light/validator.fluent.css.js +0 -3
- package/components/validation-container/themes/light/validator.fluent.css.js.map +0 -1
- package/components/validation-container/themes/light/validator.indigo.css.d.ts +0 -1
- package/components/validation-container/themes/light/validator.indigo.css.js +0 -3
- package/components/validation-container/themes/light/validator.indigo.css.js.map +0 -1
- package/components/validation-container/themes/light/validator.material.css.d.ts +0 -1
- package/components/validation-container/themes/light/validator.material.css.js +0 -3
- package/components/validation-container/themes/light/validator.material.css.js.map +0 -1
- package/components/validation-container/themes/light/validator.shared.css.d.ts +0 -1
- package/components/validation-container/themes/light/validator.shared.css.js +0 -3
- package/components/validation-container/themes/light/validator.shared.css.js.map +0 -1
- package/components/validation-container/themes/themes.d.ts +0 -2
- package/components/validation-container/themes/themes.js +0 -46
- package/components/validation-container/themes/themes.js.map +0 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { getDateFormatter } from 'igniteui-i18n-core';
|
|
1
2
|
import { parseISODate } from '../calendar/helpers.js';
|
|
2
3
|
import { clamp } from '../common/util.js';
|
|
3
4
|
export var FormatDesc;
|
|
@@ -33,8 +34,6 @@ function isDate(value) {
|
|
|
33
34
|
export class DateTimeUtil {
|
|
34
35
|
static { this.DEFAULT_INPUT_FORMAT = 'MM/dd/yyyy'; }
|
|
35
36
|
static { this.DEFAULT_TIME_INPUT_FORMAT = 'hh:mm tt'; }
|
|
36
|
-
static { this.SEPARATOR = 'literal'; }
|
|
37
|
-
static { this.DEFAULT_LOCALE = 'en'; }
|
|
38
37
|
static { this.PREDEFINED_FORMATS = new Set([
|
|
39
38
|
'short',
|
|
40
39
|
'medium',
|
|
@@ -78,20 +77,11 @@ export class DateTimeUtil {
|
|
|
78
77
|
}
|
|
79
78
|
return new Date(parts[DateParts.Year] || 2000, parts[DateParts.Month] || 0, parts[DateParts.Date] || 1, parts[DateParts.Hours] || 0, parts[DateParts.Minutes] || 0, parts[DateParts.Seconds] || 0);
|
|
80
79
|
}
|
|
81
|
-
static
|
|
82
|
-
|
|
83
|
-
if (parts !== undefined) {
|
|
84
|
-
parts.forEach((p) => {
|
|
85
|
-
if (p.type !== DateParts.Year && p.type !== DateTimeUtil.SEPARATOR) {
|
|
86
|
-
p.formatType = FormatDesc.TwoDigits;
|
|
87
|
-
}
|
|
88
|
-
});
|
|
89
|
-
return DateTimeUtil.getMask(parts);
|
|
90
|
-
}
|
|
91
|
-
return '';
|
|
80
|
+
static getDefaultInputMask(locale) {
|
|
81
|
+
return getDateFormatter().getLocaleDateTimeFormat(locale, true);
|
|
92
82
|
}
|
|
93
|
-
static parseDateTimeFormat(mask, locale
|
|
94
|
-
const format = mask || DateTimeUtil.
|
|
83
|
+
static parseDateTimeFormat(mask, locale, leadingZero = false) {
|
|
84
|
+
const format = mask || DateTimeUtil.getDefaultInputMask(locale);
|
|
95
85
|
const dateTimeParts = [];
|
|
96
86
|
const formatArray = Array.from(format);
|
|
97
87
|
let currentPart = null;
|
|
@@ -105,7 +95,7 @@ export class DateTimeUtil {
|
|
|
105
95
|
continue;
|
|
106
96
|
}
|
|
107
97
|
}
|
|
108
|
-
DateTimeUtil.addCurrentPart(currentPart, dateTimeParts,
|
|
98
|
+
DateTimeUtil.addCurrentPart(currentPart, dateTimeParts, leadingZero);
|
|
109
99
|
position = currentPart.end;
|
|
110
100
|
}
|
|
111
101
|
currentPart = {
|
|
@@ -117,7 +107,7 @@ export class DateTimeUtil {
|
|
|
117
107
|
}
|
|
118
108
|
if (!dateTimeParts.filter((p) => p.format.includes(currentPart.format))
|
|
119
109
|
.length) {
|
|
120
|
-
DateTimeUtil.addCurrentPart(currentPart, dateTimeParts,
|
|
110
|
+
DateTimeUtil.addCurrentPart(currentPart, dateTimeParts, leadingZero);
|
|
121
111
|
}
|
|
122
112
|
const yearPart = dateTimeParts.filter((p) => p.type === DateParts.Year)[0];
|
|
123
113
|
if (yearPart && yearPart.format !== 'yy') {
|
|
@@ -135,41 +125,34 @@ export class DateTimeUtil {
|
|
|
135
125
|
}
|
|
136
126
|
return false;
|
|
137
127
|
}
|
|
138
|
-
static
|
|
128
|
+
static formatDisplayDate(value, locale, displayFormat) {
|
|
139
129
|
const options = {};
|
|
140
|
-
|
|
141
|
-
switch (format) {
|
|
130
|
+
switch (displayFormat) {
|
|
142
131
|
case 'short':
|
|
143
132
|
case 'long':
|
|
144
133
|
case 'medium':
|
|
145
134
|
case 'full':
|
|
146
|
-
options.dateStyle =
|
|
147
|
-
options.timeStyle =
|
|
135
|
+
options.dateStyle = displayFormat;
|
|
136
|
+
options.timeStyle = displayFormat;
|
|
148
137
|
break;
|
|
149
138
|
case 'shortDate':
|
|
150
139
|
case 'longDate':
|
|
151
140
|
case 'mediumDate':
|
|
152
141
|
case 'fullDate':
|
|
153
|
-
options.dateStyle =
|
|
142
|
+
options.dateStyle = displayFormat.toLowerCase().split('date')[0];
|
|
154
143
|
break;
|
|
155
144
|
case 'shortTime':
|
|
156
145
|
case 'longTime':
|
|
157
146
|
case 'mediumTime':
|
|
158
147
|
case 'fullTime':
|
|
159
|
-
options.timeStyle =
|
|
148
|
+
options.timeStyle = displayFormat.toLowerCase().split('time')[0];
|
|
160
149
|
break;
|
|
161
150
|
default:
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
try {
|
|
166
|
-
formatter = new Intl.DateTimeFormat(locale, options);
|
|
167
|
-
}
|
|
168
|
-
catch {
|
|
169
|
-
formatter = new Intl.DateTimeFormat(DateTimeUtil.DEFAULT_LOCALE, options);
|
|
151
|
+
if (displayFormat) {
|
|
152
|
+
return getDateFormatter().formatDateCustomFormat(value, displayFormat, { locale });
|
|
153
|
+
}
|
|
170
154
|
}
|
|
171
|
-
|
|
172
|
-
return formattedDate;
|
|
155
|
+
return getDateFormatter().formatDateTime(value, locale, options);
|
|
173
156
|
}
|
|
174
157
|
static getPartValue(datePartInfo, partLength, _dateValue) {
|
|
175
158
|
let maskedValue;
|
|
@@ -270,9 +253,11 @@ export class DateTimeUtil {
|
|
|
270
253
|
static spinAmPm(newDate, currentDate, amPmFromMask) {
|
|
271
254
|
let date = new Date(newDate);
|
|
272
255
|
switch (amPmFromMask) {
|
|
256
|
+
case 'am':
|
|
273
257
|
case 'AM':
|
|
274
258
|
date = new Date(newDate.setHours(newDate.getHours() + 12));
|
|
275
259
|
break;
|
|
260
|
+
case 'pm':
|
|
276
261
|
case 'PM':
|
|
277
262
|
date = new Date(newDate.setHours(newDate.getHours() - 12));
|
|
278
263
|
break;
|
|
@@ -339,130 +324,19 @@ export class DateTimeUtil {
|
|
|
339
324
|
? `${format}Date`
|
|
340
325
|
: format;
|
|
341
326
|
}
|
|
342
|
-
static
|
|
343
|
-
|
|
344
|
-
const parts = DateTimeUtil.parseDateTimeFormat(format, locale, noLeadingZero);
|
|
345
|
-
const datePartFormatOptionMap = new Map([
|
|
346
|
-
[DateParts.Date, 'day'],
|
|
347
|
-
[DateParts.Month, 'month'],
|
|
348
|
-
[DateParts.Year, 'year'],
|
|
349
|
-
[DateParts.Hours, 'hour'],
|
|
350
|
-
[DateParts.Minutes, 'minute'],
|
|
351
|
-
[DateParts.Seconds, 'second'],
|
|
352
|
-
[DateParts.AmPm, 'dayPeriod'],
|
|
353
|
-
]);
|
|
354
|
-
const dateFormatMap = new Map([
|
|
355
|
-
['d', 'numeric'],
|
|
356
|
-
['dd', '2-digit'],
|
|
357
|
-
['M', 'numeric'],
|
|
358
|
-
['MM', '2-digit'],
|
|
359
|
-
['MMM', 'short'],
|
|
360
|
-
['MMMM', 'long'],
|
|
361
|
-
['MMMMM', 'narrow'],
|
|
362
|
-
['y', 'numeric'],
|
|
363
|
-
['yy', '2-digit'],
|
|
364
|
-
['yyy', 'numeric'],
|
|
365
|
-
['yyyy', 'numeric'],
|
|
366
|
-
['h', 'numeric'],
|
|
367
|
-
['hh', '2-digit'],
|
|
368
|
-
['H', 'numeric'],
|
|
369
|
-
['HH', '2-digit'],
|
|
370
|
-
['m', 'numeric'],
|
|
371
|
-
['mm', '2-digit'],
|
|
372
|
-
['s', 'numeric'],
|
|
373
|
-
['ss', '2-digit'],
|
|
374
|
-
['ttt', 'short'],
|
|
375
|
-
['tttt', 'long'],
|
|
376
|
-
['ttttt', 'narrow'],
|
|
377
|
-
]);
|
|
378
|
-
for (const part of parts) {
|
|
379
|
-
if (part.type !== DateParts.Literal) {
|
|
380
|
-
const option = datePartFormatOptionMap.get(part.type);
|
|
381
|
-
const format = dateFormatMap.get(part.format) ||
|
|
382
|
-
dateFormatMap.get(part.format.substring(0, 2));
|
|
383
|
-
if (option && format) {
|
|
384
|
-
options[option] = format;
|
|
385
|
-
if (part.type === DateParts.Hours) {
|
|
386
|
-
if (part.format.charAt(0) === 'h') {
|
|
387
|
-
options.hourCycle = 'h12';
|
|
388
|
-
}
|
|
389
|
-
else {
|
|
390
|
-
options.hourCycle = 'h23';
|
|
391
|
-
}
|
|
392
|
-
}
|
|
393
|
-
}
|
|
394
|
-
if (part.type === DateParts.AmPm && part.format.length <= 2) {
|
|
395
|
-
options.hour = '2-digit';
|
|
396
|
-
options.hourCycle = 'h12';
|
|
397
|
-
}
|
|
398
|
-
}
|
|
399
|
-
}
|
|
400
|
-
let formatter;
|
|
401
|
-
try {
|
|
402
|
-
formatter = new Intl.DateTimeFormat(locale, options);
|
|
403
|
-
}
|
|
404
|
-
catch {
|
|
405
|
-
formatter = new Intl.DateTimeFormat(DateTimeUtil.DEFAULT_LOCALE, options);
|
|
406
|
-
}
|
|
407
|
-
const formattedParts = formatter.formatToParts(value);
|
|
408
|
-
let result = '';
|
|
409
|
-
for (const part of parts) {
|
|
410
|
-
if (part.type === DateParts.Literal) {
|
|
411
|
-
result += part.format;
|
|
412
|
-
continue;
|
|
413
|
-
}
|
|
414
|
-
const option = datePartFormatOptionMap.get(part.type);
|
|
415
|
-
result += formattedParts.filter((p) => p.type === option)[0]?.value || '';
|
|
416
|
-
}
|
|
417
|
-
return result;
|
|
418
|
-
}
|
|
419
|
-
static getMask(dateStruct) {
|
|
420
|
-
const mask = [];
|
|
421
|
-
for (const part of dateStruct) {
|
|
422
|
-
switch (part.formatType) {
|
|
423
|
-
case FormatDesc.Numeric: {
|
|
424
|
-
if (part.type === DateParts.Day) {
|
|
425
|
-
mask.push('d');
|
|
426
|
-
}
|
|
427
|
-
else if (part.type === DateParts.Month) {
|
|
428
|
-
mask.push('M');
|
|
429
|
-
}
|
|
430
|
-
else {
|
|
431
|
-
mask.push('yyyy');
|
|
432
|
-
}
|
|
433
|
-
break;
|
|
434
|
-
}
|
|
435
|
-
case FormatDesc.TwoDigits: {
|
|
436
|
-
if (part.type === DateParts.Day) {
|
|
437
|
-
mask.push('dd');
|
|
438
|
-
}
|
|
439
|
-
else if (part.type === DateParts.Month) {
|
|
440
|
-
mask.push('MM');
|
|
441
|
-
}
|
|
442
|
-
else {
|
|
443
|
-
mask.push('yy');
|
|
444
|
-
}
|
|
445
|
-
}
|
|
446
|
-
}
|
|
447
|
-
if (part.type === DateTimeUtil.SEPARATOR) {
|
|
448
|
-
mask.push(part.value);
|
|
449
|
-
}
|
|
450
|
-
}
|
|
451
|
-
return mask.join('');
|
|
452
|
-
}
|
|
453
|
-
static addCurrentPart(currentPart, dateTimeParts, noLeadingZero = false) {
|
|
454
|
-
DateTimeUtil.ensureLeadingZero(currentPart, noLeadingZero);
|
|
327
|
+
static addCurrentPart(currentPart, dateTimeParts, leadingZero = false) {
|
|
328
|
+
DateTimeUtil.ensureLeadingZero(currentPart, leadingZero);
|
|
455
329
|
currentPart.end = currentPart.start + currentPart.format.length;
|
|
456
330
|
dateTimeParts.push(currentPart);
|
|
457
331
|
}
|
|
458
|
-
static ensureLeadingZero(part,
|
|
332
|
+
static ensureLeadingZero(part, leadingZero = false) {
|
|
459
333
|
switch (part.type) {
|
|
460
334
|
case DateParts.Date:
|
|
461
335
|
case DateParts.Month:
|
|
462
336
|
case DateParts.Hours:
|
|
463
337
|
case DateParts.Minutes:
|
|
464
338
|
case DateParts.Seconds:
|
|
465
|
-
if (part.format.length === 1 &&
|
|
339
|
+
if (part.format.length === 1 && leadingZero) {
|
|
466
340
|
part.format = part.format.repeat(2);
|
|
467
341
|
}
|
|
468
342
|
break;
|
|
@@ -493,76 +367,6 @@ export class DateTimeUtil {
|
|
|
493
367
|
return DateParts.Literal;
|
|
494
368
|
}
|
|
495
369
|
}
|
|
496
|
-
static getDefaultLocaleMask(locale) {
|
|
497
|
-
const dateStruct = [];
|
|
498
|
-
let formatter;
|
|
499
|
-
try {
|
|
500
|
-
formatter = new Intl.DateTimeFormat(locale);
|
|
501
|
-
}
|
|
502
|
-
catch {
|
|
503
|
-
return;
|
|
504
|
-
}
|
|
505
|
-
const formatToParts = formatter.formatToParts(new Date());
|
|
506
|
-
for (const part of formatToParts) {
|
|
507
|
-
if (part.type === DateTimeUtil.SEPARATOR) {
|
|
508
|
-
dateStruct.push({
|
|
509
|
-
type: DateTimeUtil.SEPARATOR,
|
|
510
|
-
value: part.value,
|
|
511
|
-
});
|
|
512
|
-
}
|
|
513
|
-
else {
|
|
514
|
-
dateStruct.push({
|
|
515
|
-
type: part.type,
|
|
516
|
-
});
|
|
517
|
-
}
|
|
518
|
-
}
|
|
519
|
-
const formatterOptions = formatter.resolvedOptions();
|
|
520
|
-
for (const part of dateStruct) {
|
|
521
|
-
switch (part.type) {
|
|
522
|
-
case DateParts.Day: {
|
|
523
|
-
part.formatType = formatterOptions.day;
|
|
524
|
-
break;
|
|
525
|
-
}
|
|
526
|
-
case DateParts.Month: {
|
|
527
|
-
part.formatType = formatterOptions.month;
|
|
528
|
-
break;
|
|
529
|
-
}
|
|
530
|
-
case DateParts.Year: {
|
|
531
|
-
part.formatType = formatterOptions.year;
|
|
532
|
-
break;
|
|
533
|
-
}
|
|
534
|
-
}
|
|
535
|
-
}
|
|
536
|
-
DateTimeUtil.fillDatePartsPositions(dateStruct);
|
|
537
|
-
return dateStruct;
|
|
538
|
-
}
|
|
539
|
-
static fillDatePartsPositions(dateArray) {
|
|
540
|
-
let currentPos = 0;
|
|
541
|
-
for (const part of dateArray) {
|
|
542
|
-
if (part.type === DateParts.Day || part.type === DateParts.Month) {
|
|
543
|
-
part.position = [currentPos, currentPos + 2];
|
|
544
|
-
currentPos += 2;
|
|
545
|
-
}
|
|
546
|
-
else if (part.type === DateParts.Year) {
|
|
547
|
-
switch (part.formatType) {
|
|
548
|
-
case FormatDesc.Numeric: {
|
|
549
|
-
part.position = [currentPos, currentPos + 4];
|
|
550
|
-
currentPos += 4;
|
|
551
|
-
break;
|
|
552
|
-
}
|
|
553
|
-
case FormatDesc.TwoDigits: {
|
|
554
|
-
part.position = [currentPos, currentPos + 2];
|
|
555
|
-
currentPos += 2;
|
|
556
|
-
break;
|
|
557
|
-
}
|
|
558
|
-
}
|
|
559
|
-
}
|
|
560
|
-
else if (part.type === DateTimeUtil.SEPARATOR) {
|
|
561
|
-
part.position = [currentPos, currentPos + 1];
|
|
562
|
-
currentPos++;
|
|
563
|
-
}
|
|
564
|
-
}
|
|
565
|
-
}
|
|
566
370
|
static getCleanVal(inputData, datePart, prompt) {
|
|
567
371
|
return DateTimeUtil.trimEmptyPlaceholders(inputData.substring(datePart.start, datePart.end), prompt);
|
|
568
372
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-util.js","sourceRoot":"","sources":["../../../src/components/date-time-input/date-util.ts"],"names":[],"mappings":"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","sourcesContent":["import { parseISODate } from '../calendar/helpers.js';\nimport { clamp } from '../common/util.js';\n\nexport enum FormatDesc {\n Numeric = 'numeric',\n TwoDigits = '2-digit',\n}\n\nexport enum DateParts {\n Day = 'day',\n Month = 'month',\n Year = 'year',\n Date = 'date',\n Hours = 'hours',\n Minutes = 'minutes',\n Seconds = 'seconds',\n AmPm = 'amPm',\n Literal = 'literal',\n}\n\nexport enum DatePart {\n Month = 'month',\n Year = 'year',\n Date = 'date',\n Hours = 'hours',\n Minutes = 'minutes',\n Seconds = 'seconds',\n AmPm = 'amPm',\n}\n\n/** @ignore */\nexport interface DatePartInfo {\n type: DateParts;\n start: number;\n end: number;\n format: string;\n}\n\nexport interface DatePartDeltas {\n date?: number;\n month?: number;\n year?: number;\n hours?: number;\n minutes?: number;\n seconds?: number;\n}\n\nfunction isDate(value: unknown): value is Date {\n return value instanceof Date;\n}\n\nexport abstract class DateTimeUtil {\n public static readonly DEFAULT_INPUT_FORMAT = 'MM/dd/yyyy';\n public static readonly DEFAULT_TIME_INPUT_FORMAT = 'hh:mm tt';\n private static readonly SEPARATOR = 'literal';\n private static readonly DEFAULT_LOCALE = 'en';\n private static readonly PREDEFINED_FORMATS = new Set([\n 'short',\n 'medium',\n 'long',\n 'full',\n ]);\n\n public static parseValueFromMask(\n inputData: string,\n dateTimeParts: DatePartInfo[],\n promptChar?: string\n ): Date | null {\n const parts: { [key in DateParts]: number } = {} as any;\n dateTimeParts.forEach((dp) => {\n let value = Number.parseInt(\n DateTimeUtil.getCleanVal(inputData, dp, promptChar),\n 10\n );\n if (!value) {\n value =\n dp.type === DateParts.Date || dp.type === DateParts.Month ? 1 : 0;\n }\n parts[dp.type] = value;\n });\n parts[DateParts.Month] -= 1;\n\n if (parts[DateParts.Month] < 0 || 11 < parts[DateParts.Month]) {\n return null;\n }\n\n // TODO: Century threshold\n if (parts[DateParts.Year] < 50) {\n parts[DateParts.Year] += 2000;\n }\n\n if (\n parts[DateParts.Date] >\n DateTimeUtil.daysInMonth(parts[DateParts.Year], parts[DateParts.Month])\n ) {\n return null;\n }\n\n if (\n parts[DateParts.Hours] > 23 ||\n parts[DateParts.Minutes] > 59 ||\n parts[DateParts.Seconds] > 59\n ) {\n return null;\n }\n\n const amPm = dateTimeParts.find((p) => p.type === DateParts.AmPm);\n if (amPm) {\n parts[DateParts.Hours] %= 12;\n }\n\n if (\n amPm &&\n DateTimeUtil.getCleanVal(inputData, amPm, promptChar).toLowerCase() ===\n 'pm'\n ) {\n parts[DateParts.Hours] += 12;\n }\n\n return new Date(\n parts[DateParts.Year] || 2000,\n parts[DateParts.Month] || 0,\n parts[DateParts.Date] || 1,\n parts[DateParts.Hours] || 0,\n parts[DateParts.Minutes] || 0,\n parts[DateParts.Seconds] || 0\n );\n }\n\n public static getDefaultMask(locale: string): string {\n const parts = DateTimeUtil.getDefaultLocaleMask(\n locale || DateTimeUtil.DEFAULT_LOCALE\n );\n\n if (parts !== undefined) {\n parts.forEach((p: any) => {\n if (p.type !== DateParts.Year && p.type !== DateTimeUtil.SEPARATOR) {\n p.formatType = FormatDesc.TwoDigits;\n }\n });\n\n return DateTimeUtil.getMask(parts);\n }\n\n return '';\n }\n\n public static parseDateTimeFormat(\n mask: string,\n locale: string = DateTimeUtil.DEFAULT_LOCALE,\n noLeadingZero = false\n ): DatePartInfo[] {\n const format = mask || DateTimeUtil.getDefaultMask(locale);\n const dateTimeParts: DatePartInfo[] = [];\n const formatArray = Array.from(format);\n let currentPart: DatePartInfo | null = null;\n let position = 0;\n\n for (let i = 0; i < formatArray.length; i++, position++) {\n const type = DateTimeUtil.determineDatePart(formatArray[i]);\n if (currentPart) {\n if (currentPart.type === type) {\n currentPart.format += formatArray[i];\n if (i < formatArray.length - 1) {\n continue;\n }\n }\n\n DateTimeUtil.addCurrentPart(currentPart, dateTimeParts, noLeadingZero);\n position = currentPart.end;\n }\n\n currentPart = {\n start: position,\n end: position + formatArray[i].length,\n type,\n format: formatArray[i],\n };\n }\n\n // make sure the last member of a format like H:m:s is not omitted\n if (\n !dateTimeParts.filter((p) => p.format.includes(currentPart!.format))\n .length\n ) {\n DateTimeUtil.addCurrentPart(currentPart!, dateTimeParts, noLeadingZero);\n }\n // formats like \"y\" or \"yyy\" are treated like \"yyyy\" while editing\n const yearPart = dateTimeParts.filter((p) => p.type === DateParts.Year)[0];\n if (yearPart && yearPart.format !== 'yy') {\n yearPart.end += 4 - yearPart.format.length;\n yearPart.format = 'yyyy';\n }\n\n return dateTimeParts;\n }\n\n public static parseIsoDate(value: string): Date | null {\n return parseISODate(value);\n }\n\n public static isValidDate(value: any): value is Date {\n if (isDate(value)) {\n return !Number.isNaN(value.getTime());\n }\n\n return false;\n }\n\n public static formatDate(\n value: Date,\n locale: string,\n format: string,\n noLeadingZero = false\n ): string {\n const options: any = {};\n let formattedDate = '';\n\n switch (format) {\n case 'short':\n case 'long':\n case 'medium':\n case 'full':\n options.dateStyle = format;\n options.timeStyle = format;\n break;\n case 'shortDate':\n case 'longDate':\n case 'mediumDate':\n case 'fullDate':\n options.dateStyle = format.toLowerCase().split('date')[0];\n break;\n case 'shortTime':\n case 'longTime':\n case 'mediumTime':\n case 'fullTime':\n options.timeStyle = format.toLowerCase().split('time')[0];\n break;\n default:\n return DateTimeUtil.setDisplayFormatOptions(\n value,\n format,\n locale,\n noLeadingZero\n );\n }\n\n let formatter: Intl.DateTimeFormat;\n try {\n formatter = new Intl.DateTimeFormat(locale, options);\n } catch {\n formatter = new Intl.DateTimeFormat(DateTimeUtil.DEFAULT_LOCALE, options);\n }\n\n formattedDate = formatter.format(value);\n\n return formattedDate;\n }\n\n public static getPartValue(\n datePartInfo: DatePartInfo,\n partLength: number,\n _dateValue: Date | null\n ): string {\n let maskedValue: any;\n const datePart = datePartInfo.type;\n\n switch (datePart) {\n case DateParts.Date:\n maskedValue = _dateValue!.getDate();\n break;\n case DateParts.Month:\n // months are zero based\n maskedValue = _dateValue!.getMonth() + 1;\n break;\n case DateParts.Year:\n if (partLength === 2) {\n maskedValue = DateTimeUtil.prependValue(\n Number.parseInt(_dateValue!.getFullYear().toString().slice(-2), 10),\n partLength,\n '0'\n );\n } else {\n maskedValue = _dateValue!.getFullYear();\n }\n break;\n case DateParts.Hours:\n if (datePartInfo.format.indexOf('h') !== -1) {\n maskedValue = DateTimeUtil.prependValue(\n DateTimeUtil.toTwelveHourFormat(_dateValue!.getHours()),\n partLength,\n '0'\n );\n } else {\n maskedValue = _dateValue!.getHours();\n }\n break;\n case DateParts.Minutes:\n maskedValue = _dateValue!.getMinutes();\n break;\n case DateParts.Seconds:\n maskedValue = _dateValue!.getSeconds();\n break;\n case DateParts.AmPm:\n maskedValue = _dateValue!.getHours() >= 12 ? 'PM' : 'AM';\n break;\n }\n\n if (datePartInfo.type !== DateParts.AmPm) {\n return DateTimeUtil.prependValue(maskedValue, partLength, '0');\n }\n\n return maskedValue;\n }\n\n private static _spinTimePart(\n newDate: Date,\n delta: number,\n max: number,\n min: number,\n setter: (value: number) => number,\n getter: () => number,\n spinLoop: boolean\n ): void {\n const range = max - min + 1;\n let newValue = getter.call(newDate) + delta;\n\n if (spinLoop) {\n newValue = min + ((((newValue - min) % range) + range) % range);\n } else {\n newValue = clamp(newValue, min, max);\n }\n\n setter.call(newDate, newValue);\n }\n\n public static spinYear(delta: number, newDate: Date): Date {\n const maxDate = DateTimeUtil.daysInMonth(\n newDate.getFullYear() + delta,\n newDate.getMonth()\n );\n if (newDate.getDate() > maxDate) {\n // clip to max to avoid leap year change shifting the entire value\n newDate.setDate(maxDate);\n }\n newDate.setFullYear(newDate.getFullYear() + delta);\n\n return newDate;\n }\n\n public static spinMonth(\n delta: number,\n newDate: Date,\n spinLoop: boolean\n ): void {\n const maxDate = DateTimeUtil.daysInMonth(\n newDate.getFullYear(),\n newDate.getMonth() + delta\n );\n if (newDate.getDate() > maxDate) {\n newDate.setDate(maxDate);\n }\n\n const maxMonth = 11;\n const minMonth = 0;\n let month = newDate.getMonth() + delta;\n if (month > maxMonth) {\n month = spinLoop ? (month % maxMonth) - 1 : maxMonth;\n } else if (month < minMonth) {\n month = spinLoop ? maxMonth + (month % maxMonth) + 1 : minMonth;\n }\n\n newDate.setMonth(month);\n }\n\n public static spinDate(\n delta: number,\n newDate: Date,\n spinLoop: boolean\n ): void {\n const maxDate = DateTimeUtil.daysInMonth(\n newDate.getFullYear(),\n newDate.getMonth()\n );\n let date = newDate.getDate() + delta;\n if (date > maxDate) {\n date = spinLoop ? date % maxDate : maxDate;\n } else if (date < 1) {\n date = spinLoop ? maxDate + (date % maxDate) : 1;\n }\n\n newDate.setDate(date);\n }\n\n public static spinHours(\n delta: number,\n newDate: Date,\n spinLoop: boolean\n ): void {\n DateTimeUtil._spinTimePart(\n newDate,\n delta,\n 23,\n 0,\n newDate.setHours,\n newDate.getHours,\n spinLoop\n );\n }\n\n public static spinMinutes(\n delta: number,\n newDate: Date,\n spinLoop: boolean\n ): void {\n DateTimeUtil._spinTimePart(\n newDate,\n delta,\n 59,\n 0,\n newDate.setMinutes,\n newDate.getMinutes,\n spinLoop\n );\n }\n\n public static spinSeconds(\n delta: number,\n newDate: Date,\n spinLoop: boolean\n ): void {\n DateTimeUtil._spinTimePart(\n newDate,\n delta,\n 59,\n 0,\n newDate.setSeconds,\n newDate.getSeconds,\n spinLoop\n );\n }\n\n public static spinAmPm(\n newDate: Date,\n currentDate: Date,\n amPmFromMask: string\n ): Date {\n let date = new Date(newDate);\n\n switch (amPmFromMask) {\n case 'AM':\n date = new Date(newDate.setHours(newDate.getHours() + 12));\n break;\n case 'PM':\n date = new Date(newDate.setHours(newDate.getHours() - 12));\n break;\n }\n if (date.getDate() !== currentDate.getDate()) {\n return currentDate;\n }\n\n return date;\n }\n\n public static greaterThanMaxValue(\n value: Date,\n maxValue: Date,\n includeTime = true,\n includeDate = true\n ): boolean {\n if (includeTime && includeDate) {\n return value.getTime() > maxValue.getTime();\n }\n\n const _value = new Date(value.getTime());\n const _maxValue = new Date(maxValue.getTime());\n if (!includeTime) {\n _value.setHours(0, 0, 0, 0);\n _maxValue.setHours(0, 0, 0, 0);\n }\n if (!includeDate) {\n _value.setFullYear(0, 0, 0);\n _maxValue.setFullYear(0, 0, 0);\n }\n\n return _value.getTime() > _maxValue.getTime();\n }\n\n /**\n * Determines whether the provided value is less than the provided min value.\n *\n * @param includeTime set to false if you want to exclude time portion of the two dates\n * @param includeDate set to false if you want to exclude the date portion of the two dates\n * @returns true if provided value is less than provided minValue\n */\n public static lessThanMinValue(\n value: Date,\n minValue: Date,\n includeTime = true,\n includeDate = true\n ): boolean {\n if (includeTime && includeDate) {\n return value.getTime() < minValue.getTime();\n }\n\n const _value = new Date(value.getTime());\n const _minValue = new Date(minValue.getTime());\n if (!includeTime) {\n _value.setHours(0, 0, 0, 0);\n _minValue.setHours(0, 0, 0, 0);\n }\n if (!includeDate) {\n _value.setFullYear(0, 0, 0);\n _minValue.setFullYear(0, 0, 0);\n }\n\n return _value.getTime() < _minValue.getTime();\n }\n\n /**\n * Validates a value within a given min and max value range.\n *\n * @param value The value to validate\n * @param minValue The lowest possible value that `value` can take\n * @param maxValue The largest possible value that `value` can take\n */\n public static validateMinMax(\n value: Date,\n minValue: Date | string,\n maxValue: Date | string,\n includeTime = true,\n includeDate = true\n ) {\n // if (!value) {\n // return null;\n // }\n const errors = {};\n const min = DateTimeUtil.isValidDate(minValue)\n ? minValue\n : DateTimeUtil.parseIsoDate(minValue);\n const max = DateTimeUtil.isValidDate(maxValue)\n ? maxValue\n : DateTimeUtil.parseIsoDate(maxValue);\n if (\n min &&\n value &&\n DateTimeUtil.lessThanMinValue(value, min, includeTime, includeDate)\n ) {\n Object.assign(errors, { minValue: true });\n }\n if (\n max &&\n value &&\n DateTimeUtil.greaterThanMaxValue(value, max, includeTime, includeDate)\n ) {\n Object.assign(errors, { maxValue: true });\n }\n\n return errors;\n }\n\n /**\n * Transforms the predefined format to a display format containing only date parts.\n *\n * @param format The format to check and transform\n */\n public static predefinedToDateDisplayFormat(format?: string) {\n return format && DateTimeUtil.PREDEFINED_FORMATS.has(format)\n ? `${format}Date`\n : format;\n }\n\n private static setDisplayFormatOptions(\n value: Date,\n format: string,\n locale: string,\n noLeadingZero = false\n ) {\n const options: any = {};\n const parts = DateTimeUtil.parseDateTimeFormat(\n format,\n locale,\n noLeadingZero\n );\n\n const datePartFormatOptionMap = new Map([\n [DateParts.Date, 'day'],\n [DateParts.Month, 'month'],\n [DateParts.Year, 'year'],\n [DateParts.Hours, 'hour'],\n [DateParts.Minutes, 'minute'],\n [DateParts.Seconds, 'second'],\n [DateParts.AmPm, 'dayPeriod'],\n ]);\n\n const dateFormatMap = new Map([\n ['d', 'numeric'],\n ['dd', '2-digit'],\n ['M', 'numeric'],\n ['MM', '2-digit'],\n ['MMM', 'short'],\n ['MMMM', 'long'],\n ['MMMMM', 'narrow'],\n ['y', 'numeric'],\n ['yy', '2-digit'],\n ['yyy', 'numeric'],\n ['yyyy', 'numeric'],\n ['h', 'numeric'],\n ['hh', '2-digit'],\n ['H', 'numeric'],\n ['HH', '2-digit'],\n ['m', 'numeric'],\n ['mm', '2-digit'],\n ['s', 'numeric'],\n ['ss', '2-digit'],\n ['ttt', 'short'],\n ['tttt', 'long'],\n ['ttttt', 'narrow'],\n ]);\n\n for (const part of parts) {\n if (part.type !== DateParts.Literal) {\n const option = datePartFormatOptionMap.get(part.type);\n const format =\n dateFormatMap.get(part.format) ||\n dateFormatMap.get(part.format.substring(0, 2));\n\n if (option && format) {\n options[option] = format;\n\n if (part.type === DateParts.Hours) {\n if (part.format.charAt(0) === 'h') {\n options.hourCycle = 'h12';\n } else {\n options.hourCycle = 'h23';\n }\n }\n }\n\n // Need to be set if we have 't' or 'tt'.\n if (part.type === DateParts.AmPm && part.format.length <= 2) {\n options.hour = '2-digit';\n options.hourCycle = 'h12';\n }\n }\n }\n\n let formatter: Intl.DateTimeFormat;\n try {\n formatter = new Intl.DateTimeFormat(\n locale,\n options as Intl.DateTimeFormatOptions\n );\n } catch {\n formatter = new Intl.DateTimeFormat(DateTimeUtil.DEFAULT_LOCALE, options);\n }\n\n const formattedParts = formatter.formatToParts(value);\n\n let result = '';\n\n for (const part of parts) {\n if (part.type === DateParts.Literal) {\n result += part.format;\n continue;\n }\n\n const option = datePartFormatOptionMap.get(part.type)!;\n result += formattedParts.filter((p) => p.type === option)[0]?.value || '';\n }\n\n return result;\n }\n\n private static getMask(dateStruct: any[]): string {\n const mask = [];\n\n for (const part of dateStruct) {\n switch (part.formatType) {\n case FormatDesc.Numeric: {\n if (part.type === DateParts.Day) {\n mask.push('d');\n } else if (part.type === DateParts.Month) {\n mask.push('M');\n } else {\n mask.push('yyyy');\n }\n break;\n }\n case FormatDesc.TwoDigits: {\n if (part.type === DateParts.Day) {\n mask.push('dd');\n } else if (part.type === DateParts.Month) {\n mask.push('MM');\n } else {\n mask.push('yy');\n }\n }\n }\n\n if (part.type === DateTimeUtil.SEPARATOR) {\n mask.push(part.value);\n }\n }\n\n return mask.join('');\n }\n\n private static addCurrentPart(\n currentPart: DatePartInfo,\n dateTimeParts: DatePartInfo[],\n noLeadingZero = false\n ): void {\n DateTimeUtil.ensureLeadingZero(currentPart, noLeadingZero);\n currentPart.end = currentPart.start + currentPart.format.length;\n dateTimeParts.push(currentPart);\n }\n\n private static ensureLeadingZero(part: DatePartInfo, noLeadingZero = false) {\n switch (part.type) {\n case DateParts.Date:\n case DateParts.Month:\n case DateParts.Hours:\n case DateParts.Minutes:\n case DateParts.Seconds:\n if (part.format.length === 1 && !noLeadingZero) {\n part.format = part.format.repeat(2);\n }\n break;\n }\n }\n\n private static determineDatePart(char: string): DateParts {\n switch (char) {\n case 'd':\n case 'D':\n return DateParts.Date;\n case 'M':\n return DateParts.Month;\n case 'y':\n case 'Y':\n return DateParts.Year;\n case 'h':\n case 'H':\n return DateParts.Hours;\n case 'm':\n return DateParts.Minutes;\n case 's':\n case 'S':\n return DateParts.Seconds;\n case 't':\n case 'T':\n return DateParts.AmPm;\n default:\n return DateParts.Literal;\n }\n }\n\n private static getDefaultLocaleMask(locale: string) {\n const dateStruct: any = [];\n let formatter: Intl.DateTimeFormat;\n try {\n formatter = new Intl.DateTimeFormat(locale);\n } catch {\n return;\n }\n\n const formatToParts = formatter.formatToParts(new Date());\n\n for (const part of formatToParts) {\n if (part.type === DateTimeUtil.SEPARATOR) {\n dateStruct.push({\n type: DateTimeUtil.SEPARATOR,\n value: part.value,\n });\n } else {\n dateStruct.push({\n type: part.type,\n });\n }\n }\n\n const formatterOptions = formatter.resolvedOptions();\n\n for (const part of dateStruct) {\n switch (part.type) {\n case DateParts.Day: {\n part.formatType = formatterOptions.day;\n break;\n }\n case DateParts.Month: {\n part.formatType = formatterOptions.month;\n break;\n }\n case DateParts.Year: {\n part.formatType = formatterOptions.year;\n break;\n }\n }\n }\n\n DateTimeUtil.fillDatePartsPositions(dateStruct);\n return dateStruct;\n }\n\n private static fillDatePartsPositions(dateArray: any[]): void {\n let currentPos = 0;\n\n for (const part of dateArray) {\n // Day|Month part positions\n if (part.type === DateParts.Day || part.type === DateParts.Month) {\n // Offset 2 positions for number\n part.position = [currentPos, currentPos + 2];\n currentPos += 2;\n } else if (part.type === DateParts.Year) {\n // Year part positions\n switch (part.formatType) {\n case FormatDesc.Numeric: {\n // Offset 4 positions for full year\n part.position = [currentPos, currentPos + 4];\n currentPos += 4;\n break;\n }\n case FormatDesc.TwoDigits: {\n // Offset 2 positions for short year\n part.position = [currentPos, currentPos + 2];\n currentPos += 2;\n break;\n }\n }\n } else if (part.type === DateTimeUtil.SEPARATOR) {\n // Separator positions\n part.position = [currentPos, currentPos + 1];\n currentPos++;\n }\n }\n }\n\n private static getCleanVal(\n inputData: string,\n datePart: DatePartInfo,\n prompt?: string\n ): string {\n return DateTimeUtil.trimEmptyPlaceholders(\n inputData.substring(datePart.start, datePart.end),\n prompt\n );\n }\n\n private static escapeRegExp(string: string) {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n }\n\n private static trimEmptyPlaceholders(value: string, prompt?: string): string {\n const result = value.replace(\n new RegExp(DateTimeUtil.escapeRegExp(prompt ?? '_'), 'g'),\n ''\n );\n return result;\n }\n\n private static daysInMonth(fullYear: number, month: number): number {\n return new Date(fullYear, month + 1, 0).getDate();\n }\n\n private static prependValue(\n value: number,\n partLength: number,\n prependChar: string\n ): string {\n return (prependChar + value.toString()).slice(-partLength);\n }\n\n private static toTwelveHourFormat(value: number): number {\n const hour12 = value % 12;\n return hour12 === 0 ? 12 : hour12;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"date-util.js","sourceRoot":"","sources":["../../../src/components/date-time-input/date-util.ts"],"names":[],"mappings":"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","sourcesContent":["import { getDateFormatter } from 'igniteui-i18n-core';\nimport { parseISODate } from '../calendar/helpers.js';\nimport { clamp } from '../common/util.js';\n\nexport enum FormatDesc {\n Numeric = 'numeric',\n TwoDigits = '2-digit',\n}\n\nexport enum DateParts {\n Day = 'day',\n Month = 'month',\n Year = 'year',\n Date = 'date',\n Hours = 'hours',\n Minutes = 'minutes',\n Seconds = 'seconds',\n AmPm = 'amPm',\n Literal = 'literal',\n}\n\nexport enum DatePart {\n Month = 'month',\n Year = 'year',\n Date = 'date',\n Hours = 'hours',\n Minutes = 'minutes',\n Seconds = 'seconds',\n AmPm = 'amPm',\n}\n\n/** @ignore */\nexport interface DatePartInfo {\n type: DateParts;\n start: number;\n end: number;\n format: string;\n}\n\nexport interface DatePartDeltas {\n date?: number;\n month?: number;\n year?: number;\n hours?: number;\n minutes?: number;\n seconds?: number;\n}\n\nfunction isDate(value: unknown): value is Date {\n return value instanceof Date;\n}\n\nexport abstract class DateTimeUtil {\n public static readonly DEFAULT_INPUT_FORMAT = 'MM/dd/yyyy';\n public static readonly DEFAULT_TIME_INPUT_FORMAT = 'hh:mm tt';\n private static readonly PREDEFINED_FORMATS = new Set([\n 'short',\n 'medium',\n 'long',\n 'full',\n ]);\n\n public static parseValueFromMask(\n inputData: string,\n dateTimeParts: DatePartInfo[],\n promptChar?: string\n ): Date | null {\n const parts: { [key in DateParts]: number } = {} as any;\n dateTimeParts.forEach((dp) => {\n let value = Number.parseInt(\n DateTimeUtil.getCleanVal(inputData, dp, promptChar),\n 10\n );\n if (!value) {\n value =\n dp.type === DateParts.Date || dp.type === DateParts.Month ? 1 : 0;\n }\n parts[dp.type] = value;\n });\n parts[DateParts.Month] -= 1;\n\n if (parts[DateParts.Month] < 0 || 11 < parts[DateParts.Month]) {\n return null;\n }\n\n // TODO: Century threshold\n if (parts[DateParts.Year] < 50) {\n parts[DateParts.Year] += 2000;\n }\n\n if (\n parts[DateParts.Date] >\n DateTimeUtil.daysInMonth(parts[DateParts.Year], parts[DateParts.Month])\n ) {\n return null;\n }\n\n if (\n parts[DateParts.Hours] > 23 ||\n parts[DateParts.Minutes] > 59 ||\n parts[DateParts.Seconds] > 59\n ) {\n return null;\n }\n\n const amPm = dateTimeParts.find((p) => p.type === DateParts.AmPm);\n if (amPm) {\n parts[DateParts.Hours] %= 12;\n }\n\n if (\n amPm &&\n DateTimeUtil.getCleanVal(inputData, amPm, promptChar).toLowerCase() ===\n 'pm'\n ) {\n parts[DateParts.Hours] += 12;\n }\n\n return new Date(\n parts[DateParts.Year] || 2000,\n parts[DateParts.Month] || 0,\n parts[DateParts.Date] || 1,\n parts[DateParts.Hours] || 0,\n parts[DateParts.Minutes] || 0,\n parts[DateParts.Seconds] || 0\n );\n }\n\n public static getDefaultInputMask(locale: string): string {\n return getDateFormatter().getLocaleDateTimeFormat(locale, true);\n }\n\n public static parseDateTimeFormat(\n mask: string,\n locale: string,\n leadingZero = false\n ): DatePartInfo[] {\n const format = mask || DateTimeUtil.getDefaultInputMask(locale);\n const dateTimeParts: DatePartInfo[] = [];\n const formatArray = Array.from(format);\n let currentPart: DatePartInfo | null = null;\n let position = 0;\n\n for (let i = 0; i < formatArray.length; i++, position++) {\n const type = DateTimeUtil.determineDatePart(formatArray[i]);\n if (currentPart) {\n if (currentPart.type === type) {\n currentPart.format += formatArray[i];\n if (i < formatArray.length - 1) {\n continue;\n }\n }\n\n DateTimeUtil.addCurrentPart(currentPart, dateTimeParts, leadingZero);\n position = currentPart.end;\n }\n\n currentPart = {\n start: position,\n end: position + formatArray[i].length,\n type,\n format: formatArray[i],\n };\n }\n\n // make sure the last member of a format like H:m:s is not omitted\n if (\n !dateTimeParts.filter((p) => p.format.includes(currentPart!.format))\n .length\n ) {\n DateTimeUtil.addCurrentPart(currentPart!, dateTimeParts, leadingZero);\n }\n // formats like \"y\" or \"yyy\" are treated like \"yyyy\" while editing\n const yearPart = dateTimeParts.filter((p) => p.type === DateParts.Year)[0];\n if (yearPart && yearPart.format !== 'yy') {\n yearPart.end += 4 - yearPart.format.length;\n yearPart.format = 'yyyy';\n }\n\n return dateTimeParts;\n }\n\n public static parseIsoDate(value: string): Date | null {\n return parseISODate(value);\n }\n\n public static isValidDate(value: any): value is Date {\n if (isDate(value)) {\n return !Number.isNaN(value.getTime());\n }\n\n return false;\n }\n\n /**\n * Format date for display.\n * @param value Date value\n * @param locale Locale of the component\n * @param displayFormat Display format specified by the user. Can be undefined.\n * @param inputFormat Input format, so it is not calculated again and used for leading zero format.\n * @returns\n */\n public static formatDisplayDate(\n value: Date,\n locale: string,\n displayFormat: string | undefined\n ): string {\n const options: Intl.DateTimeFormatOptions = {};\n switch (displayFormat) {\n case 'short':\n case 'long':\n case 'medium':\n case 'full':\n options.dateStyle = displayFormat;\n options.timeStyle = displayFormat;\n break;\n case 'shortDate':\n case 'longDate':\n case 'mediumDate':\n case 'fullDate':\n options.dateStyle = displayFormat.toLowerCase().split('date')[0] as any;\n break;\n case 'shortTime':\n case 'longTime':\n case 'mediumTime':\n case 'fullTime':\n options.timeStyle = displayFormat.toLowerCase().split('time')[0] as any;\n break;\n default:\n if (displayFormat) {\n return getDateFormatter().formatDateCustomFormat(\n value,\n displayFormat,\n { locale }\n );\n }\n }\n\n return getDateFormatter().formatDateTime(value, locale, options);\n }\n\n public static getPartValue(\n datePartInfo: DatePartInfo,\n partLength: number,\n _dateValue: Date | null\n ): string {\n let maskedValue: any;\n const datePart = datePartInfo.type;\n\n switch (datePart) {\n case DateParts.Date:\n maskedValue = _dateValue!.getDate();\n break;\n case DateParts.Month:\n // months are zero based\n maskedValue = _dateValue!.getMonth() + 1;\n break;\n case DateParts.Year:\n if (partLength === 2) {\n maskedValue = DateTimeUtil.prependValue(\n Number.parseInt(_dateValue!.getFullYear().toString().slice(-2), 10),\n partLength,\n '0'\n );\n } else {\n maskedValue = _dateValue!.getFullYear();\n }\n break;\n case DateParts.Hours:\n if (datePartInfo.format.indexOf('h') !== -1) {\n maskedValue = DateTimeUtil.prependValue(\n DateTimeUtil.toTwelveHourFormat(_dateValue!.getHours()),\n partLength,\n '0'\n );\n } else {\n maskedValue = _dateValue!.getHours();\n }\n break;\n case DateParts.Minutes:\n maskedValue = _dateValue!.getMinutes();\n break;\n case DateParts.Seconds:\n maskedValue = _dateValue!.getSeconds();\n break;\n case DateParts.AmPm:\n maskedValue = _dateValue!.getHours() >= 12 ? 'PM' : 'AM';\n break;\n }\n\n if (datePartInfo.type !== DateParts.AmPm) {\n return DateTimeUtil.prependValue(maskedValue, partLength, '0');\n }\n\n return maskedValue;\n }\n\n private static _spinTimePart(\n newDate: Date,\n delta: number,\n max: number,\n min: number,\n setter: (value: number) => number,\n getter: () => number,\n spinLoop: boolean\n ): void {\n const range = max - min + 1;\n let newValue = getter.call(newDate) + delta;\n\n if (spinLoop) {\n newValue = min + ((((newValue - min) % range) + range) % range);\n } else {\n newValue = clamp(newValue, min, max);\n }\n\n setter.call(newDate, newValue);\n }\n\n public static spinYear(delta: number, newDate: Date): Date {\n const maxDate = DateTimeUtil.daysInMonth(\n newDate.getFullYear() + delta,\n newDate.getMonth()\n );\n if (newDate.getDate() > maxDate) {\n // clip to max to avoid leap year change shifting the entire value\n newDate.setDate(maxDate);\n }\n newDate.setFullYear(newDate.getFullYear() + delta);\n\n return newDate;\n }\n\n public static spinMonth(\n delta: number,\n newDate: Date,\n spinLoop: boolean\n ): void {\n const maxDate = DateTimeUtil.daysInMonth(\n newDate.getFullYear(),\n newDate.getMonth() + delta\n );\n if (newDate.getDate() > maxDate) {\n newDate.setDate(maxDate);\n }\n\n const maxMonth = 11;\n const minMonth = 0;\n let month = newDate.getMonth() + delta;\n if (month > maxMonth) {\n month = spinLoop ? (month % maxMonth) - 1 : maxMonth;\n } else if (month < minMonth) {\n month = spinLoop ? maxMonth + (month % maxMonth) + 1 : minMonth;\n }\n\n newDate.setMonth(month);\n }\n\n public static spinDate(\n delta: number,\n newDate: Date,\n spinLoop: boolean\n ): void {\n const maxDate = DateTimeUtil.daysInMonth(\n newDate.getFullYear(),\n newDate.getMonth()\n );\n let date = newDate.getDate() + delta;\n if (date > maxDate) {\n date = spinLoop ? date % maxDate : maxDate;\n } else if (date < 1) {\n date = spinLoop ? maxDate + (date % maxDate) : 1;\n }\n\n newDate.setDate(date);\n }\n\n public static spinHours(\n delta: number,\n newDate: Date,\n spinLoop: boolean\n ): void {\n DateTimeUtil._spinTimePart(\n newDate,\n delta,\n 23,\n 0,\n newDate.setHours,\n newDate.getHours,\n spinLoop\n );\n }\n\n public static spinMinutes(\n delta: number,\n newDate: Date,\n spinLoop: boolean\n ): void {\n DateTimeUtil._spinTimePart(\n newDate,\n delta,\n 59,\n 0,\n newDate.setMinutes,\n newDate.getMinutes,\n spinLoop\n );\n }\n\n public static spinSeconds(\n delta: number,\n newDate: Date,\n spinLoop: boolean\n ): void {\n DateTimeUtil._spinTimePart(\n newDate,\n delta,\n 59,\n 0,\n newDate.setSeconds,\n newDate.getSeconds,\n spinLoop\n );\n }\n\n public static spinAmPm(\n newDate: Date,\n currentDate: Date,\n amPmFromMask: string\n ): Date {\n let date = new Date(newDate);\n\n switch (amPmFromMask) {\n case 'am':\n case 'AM':\n date = new Date(newDate.setHours(newDate.getHours() + 12));\n break;\n case 'pm':\n case 'PM':\n date = new Date(newDate.setHours(newDate.getHours() - 12));\n break;\n }\n if (date.getDate() !== currentDate.getDate()) {\n return currentDate;\n }\n\n return date;\n }\n\n public static greaterThanMaxValue(\n value: Date,\n maxValue: Date,\n includeTime = true,\n includeDate = true\n ): boolean {\n if (includeTime && includeDate) {\n return value.getTime() > maxValue.getTime();\n }\n\n const _value = new Date(value.getTime());\n const _maxValue = new Date(maxValue.getTime());\n if (!includeTime) {\n _value.setHours(0, 0, 0, 0);\n _maxValue.setHours(0, 0, 0, 0);\n }\n if (!includeDate) {\n _value.setFullYear(0, 0, 0);\n _maxValue.setFullYear(0, 0, 0);\n }\n\n return _value.getTime() > _maxValue.getTime();\n }\n\n /**\n * Determines whether the provided value is less than the provided min value.\n *\n * @param includeTime set to false if you want to exclude time portion of the two dates\n * @param includeDate set to false if you want to exclude the date portion of the two dates\n * @returns true if provided value is less than provided minValue\n */\n public static lessThanMinValue(\n value: Date,\n minValue: Date,\n includeTime = true,\n includeDate = true\n ): boolean {\n if (includeTime && includeDate) {\n return value.getTime() < minValue.getTime();\n }\n\n const _value = new Date(value.getTime());\n const _minValue = new Date(minValue.getTime());\n if (!includeTime) {\n _value.setHours(0, 0, 0, 0);\n _minValue.setHours(0, 0, 0, 0);\n }\n if (!includeDate) {\n _value.setFullYear(0, 0, 0);\n _minValue.setFullYear(0, 0, 0);\n }\n\n return _value.getTime() < _minValue.getTime();\n }\n\n /**\n * Validates a value within a given min and max value range.\n *\n * @param value The value to validate\n * @param minValue The lowest possible value that `value` can take\n * @param maxValue The largest possible value that `value` can take\n */\n public static validateMinMax(\n value: Date,\n minValue: Date | string,\n maxValue: Date | string,\n includeTime = true,\n includeDate = true\n ) {\n // if (!value) {\n // return null;\n // }\n const errors = {};\n const min = DateTimeUtil.isValidDate(minValue)\n ? minValue\n : DateTimeUtil.parseIsoDate(minValue);\n const max = DateTimeUtil.isValidDate(maxValue)\n ? maxValue\n : DateTimeUtil.parseIsoDate(maxValue);\n if (\n min &&\n value &&\n DateTimeUtil.lessThanMinValue(value, min, includeTime, includeDate)\n ) {\n Object.assign(errors, { minValue: true });\n }\n if (\n max &&\n value &&\n DateTimeUtil.greaterThanMaxValue(value, max, includeTime, includeDate)\n ) {\n Object.assign(errors, { maxValue: true });\n }\n\n return errors;\n }\n\n /**\n * Transforms the predefined format to a display format containing only date parts.\n *\n * @param format The format to check and transform\n */\n public static predefinedToDateDisplayFormat(format?: string) {\n return format && DateTimeUtil.PREDEFINED_FORMATS.has(format)\n ? `${format}Date`\n : format;\n }\n\n private static addCurrentPart(\n currentPart: DatePartInfo,\n dateTimeParts: DatePartInfo[],\n leadingZero = false\n ): void {\n DateTimeUtil.ensureLeadingZero(currentPart, leadingZero);\n currentPart.end = currentPart.start + currentPart.format.length;\n dateTimeParts.push(currentPart);\n }\n\n private static ensureLeadingZero(part: DatePartInfo, leadingZero = false) {\n switch (part.type) {\n case DateParts.Date:\n case DateParts.Month:\n case DateParts.Hours:\n case DateParts.Minutes:\n case DateParts.Seconds:\n if (part.format.length === 1 && leadingZero) {\n part.format = part.format.repeat(2);\n }\n break;\n }\n }\n\n private static determineDatePart(char: string): DateParts {\n switch (char) {\n case 'd':\n case 'D':\n return DateParts.Date;\n case 'M':\n return DateParts.Month;\n case 'y':\n case 'Y':\n return DateParts.Year;\n case 'h':\n case 'H':\n return DateParts.Hours;\n case 'm':\n return DateParts.Minutes;\n case 's':\n case 'S':\n return DateParts.Seconds;\n case 't':\n case 'T':\n return DateParts.AmPm;\n default:\n return DateParts.Literal;\n }\n }\n\n private static getCleanVal(\n inputData: string,\n datePart: DatePartInfo,\n prompt?: string\n ): string {\n return DateTimeUtil.trimEmptyPlaceholders(\n inputData.substring(datePart.start, datePart.end),\n prompt\n );\n }\n\n private static escapeRegExp(string: string) {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n }\n\n private static trimEmptyPlaceholders(value: string, prompt?: string): string {\n const result = value.replace(\n new RegExp(DateTimeUtil.escapeRegExp(prompt ?? '_'), 'g'),\n ''\n );\n return result;\n }\n\n private static daysInMonth(fullYear: number, month: number): number {\n return new Date(fullYear, month + 1, 0).getDate();\n }\n\n private static prependValue(\n value: number,\n partLength: number,\n prependChar: string\n ): string {\n return (prependChar + value.toString()).slice(-partLength);\n }\n\n private static toTwelveHourFormat(value: number): number {\n const hour12 = value % 12;\n return hour12 === 0 ? 12 : hour12;\n }\n}\n"]}
|
|
@@ -71,8 +71,10 @@ export default class IgcDialogComponent extends IgcDialogComponent_base {
|
|
|
71
71
|
protected _handleOpenState(): void;
|
|
72
72
|
private _emitClosing;
|
|
73
73
|
private _hide;
|
|
74
|
+
private _closeWithEvent;
|
|
74
75
|
protected _handleFormSubmit(event: SubmitEvent): void;
|
|
75
76
|
private _handleCancel;
|
|
77
|
+
private _handleClose;
|
|
76
78
|
private _handleClick;
|
|
77
79
|
/** Opens the dialog. */
|
|
78
80
|
show(): Promise<boolean>;
|
|
@@ -16,7 +16,7 @@ import { watch } from '../common/decorators/watch.js';
|
|
|
16
16
|
import { registerComponent } from '../common/definitions/register.js';
|
|
17
17
|
import { EventEmitterMixin } from '../common/mixins/event-emitter.js';
|
|
18
18
|
import { partMap } from '../common/part-map.js';
|
|
19
|
-
import { numberInRangeInclusive } from '../common/util.js';
|
|
19
|
+
import { bindIf, numberInRangeInclusive } from '../common/util.js';
|
|
20
20
|
import { styles } from './themes/dialog.base.css.js';
|
|
21
21
|
import { styles as shared } from './themes/shared/dialog.common.css.js';
|
|
22
22
|
import { all } from './themes/themes.js';
|
|
@@ -47,11 +47,11 @@ export default class IgcDialogComponent extends EventEmitterMixin(LitElement) {
|
|
|
47
47
|
}
|
|
48
48
|
firstUpdated() {
|
|
49
49
|
if (this.open) {
|
|
50
|
-
this._dialog
|
|
50
|
+
this._dialog?.showModal();
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
_handleOpenState() {
|
|
54
|
-
this.open ? this._dialog
|
|
54
|
+
this.open ? this._dialog?.showModal() : this._dialog?.close();
|
|
55
55
|
}
|
|
56
56
|
_emitClosing() {
|
|
57
57
|
return this.emitEvent('igcClosing', { cancelable: true });
|
|
@@ -70,6 +70,9 @@ export default class IgcDialogComponent extends EventEmitterMixin(LitElement) {
|
|
|
70
70
|
}
|
|
71
71
|
return true;
|
|
72
72
|
}
|
|
73
|
+
_closeWithEvent() {
|
|
74
|
+
this._hide(true);
|
|
75
|
+
}
|
|
73
76
|
_handleFormSubmit(event) {
|
|
74
77
|
const form = event.target;
|
|
75
78
|
if (form.method === 'dialog') {
|
|
@@ -77,14 +80,19 @@ export default class IgcDialogComponent extends EventEmitterMixin(LitElement) {
|
|
|
77
80
|
this.returnValue = event.submitter.value ?? '';
|
|
78
81
|
}
|
|
79
82
|
if (!event.defaultPrevented) {
|
|
80
|
-
this.
|
|
83
|
+
this._closeWithEvent();
|
|
81
84
|
}
|
|
82
85
|
}
|
|
83
86
|
}
|
|
84
87
|
_handleCancel(event) {
|
|
85
88
|
event.preventDefault();
|
|
86
89
|
if (!this.keepOpenOnEscape) {
|
|
87
|
-
this.
|
|
90
|
+
this._closeWithEvent();
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
_handleClose() {
|
|
94
|
+
if (this.open) {
|
|
95
|
+
this._dialog?.showModal();
|
|
88
96
|
}
|
|
89
97
|
}
|
|
90
98
|
_handleClick({ clientX, clientY, target }) {
|
|
@@ -93,7 +101,7 @@ export default class IgcDialogComponent extends EventEmitterMixin(LitElement) {
|
|
|
93
101
|
const inX = numberInRangeInclusive(clientX, rect.left, rect.right);
|
|
94
102
|
const inY = numberInRangeInclusive(clientY, rect.top, rect.bottom);
|
|
95
103
|
if (!(inX && inY)) {
|
|
96
|
-
this.
|
|
104
|
+
this._closeWithEvent();
|
|
97
105
|
}
|
|
98
106
|
}
|
|
99
107
|
}
|
|
@@ -144,7 +152,7 @@ export default class IgcDialogComponent extends EventEmitterMixin(LitElement) {
|
|
|
144
152
|
${this.hideDefaultAction
|
|
145
153
|
? nothing
|
|
146
154
|
: html `
|
|
147
|
-
<igc-button variant="flat" @click=${
|
|
155
|
+
<igc-button variant="flat" @click=${this._closeWithEvent}>
|
|
148
156
|
OK
|
|
149
157
|
</igc-button>
|
|
150
158
|
`}
|
|
@@ -162,10 +170,11 @@ export default class IgcDialogComponent extends EventEmitterMixin(LitElement) {
|
|
|
162
170
|
${ref(this._dialogRef)}
|
|
163
171
|
part=${partMap({ base: true, titled: hasTitle, footed: hasFooter })}
|
|
164
172
|
role="dialog"
|
|
165
|
-
aria-label=${this.ariaLabel
|
|
166
|
-
aria-labelledby=${labelledBy
|
|
173
|
+
aria-label=${bindIf(this.ariaLabel, this.ariaLabel)}
|
|
174
|
+
aria-labelledby=${bindIf(labelledBy, labelledBy)}
|
|
167
175
|
@click=${this._handleClick}
|
|
168
176
|
@cancel=${this._handleCancel}
|
|
177
|
+
@close=${bindIf(this.keepOpenOnEscape, this._handleClose)}
|
|
169
178
|
>
|
|
170
179
|
${this._renderHeader()} ${this._renderContent()} ${this._renderFooter()}
|
|
171
180
|
</dialog>
|