igniteui-webcomponents 6.5.1 → 7.0.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 +51 -1
- package/README.md +3 -5
- 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.indigo.css.js +1 -1
- package/components/avatar/themes/dark/avatar.indigo.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/avatar/themes/light/avatar.bootstrap.css.js +1 -1
- package/components/avatar/themes/light/avatar.bootstrap.css.js.map +1 -1
- package/components/avatar/themes/light/avatar.fluent.css.js +1 -1
- package/components/avatar/themes/light/avatar.fluent.css.js.map +1 -1
- package/components/avatar/themes/light/avatar.indigo.css.js +1 -1
- package/components/avatar/themes/light/avatar.indigo.css.js.map +1 -1
- package/components/avatar/themes/light/avatar.material.css.js +1 -1
- package/components/avatar/themes/light/avatar.material.css.js.map +1 -1
- package/components/avatar/themes/light/avatar.shared.css.js +1 -1
- package/components/avatar/themes/light/avatar.shared.css.js.map +1 -1
- package/components/badge/badge.d.ts +26 -9
- package/components/badge/badge.js +12 -11
- package/components/badge/badge.js.map +1 -1
- package/components/badge/themes/dark/badge.bootstrap.css.js +1 -1
- package/components/badge/themes/dark/badge.bootstrap.css.js.map +1 -1
- package/components/badge/themes/dark/badge.fluent.css.js +1 -1
- package/components/badge/themes/dark/badge.fluent.css.js.map +1 -1
- package/components/badge/themes/dark/badge.indigo.css.js +1 -1
- package/components/badge/themes/dark/badge.indigo.css.js.map +1 -1
- package/components/badge/themes/dark/badge.material.css.js +1 -1
- package/components/badge/themes/dark/badge.material.css.js.map +1 -1
- package/components/badge/themes/light/badge.bootstrap.css.js +1 -1
- package/components/badge/themes/light/badge.bootstrap.css.js.map +1 -1
- package/components/badge/themes/light/badge.fluent.css.js +1 -1
- package/components/badge/themes/light/badge.fluent.css.js.map +1 -1
- package/components/badge/themes/light/badge.indigo.css.js +1 -1
- package/components/badge/themes/light/badge.indigo.css.js.map +1 -1
- package/components/badge/themes/light/badge.material.css.js +1 -1
- package/components/badge/themes/light/badge.material.css.js.map +1 -1
- package/components/badge/themes/light/badge.shared.css.js +1 -1
- package/components/badge/themes/light/badge.shared.css.js.map +1 -1
- package/components/banner/themes/dark/banner.bootstrap.css.js +1 -1
- package/components/banner/themes/dark/banner.bootstrap.css.js.map +1 -1
- package/components/banner/themes/dark/banner.fluent.css.js +1 -1
- package/components/banner/themes/dark/banner.fluent.css.js.map +1 -1
- package/components/banner/themes/dark/banner.indigo.css.js +1 -1
- package/components/banner/themes/dark/banner.indigo.css.js.map +1 -1
- package/components/banner/themes/dark/banner.material.css.js +1 -1
- package/components/banner/themes/dark/banner.material.css.js.map +1 -1
- package/components/banner/themes/light/banner.bootstrap.css.js +1 -1
- package/components/banner/themes/light/banner.bootstrap.css.js.map +1 -1
- package/components/banner/themes/light/banner.fluent.css.js +1 -1
- package/components/banner/themes/light/banner.fluent.css.js.map +1 -1
- package/components/banner/themes/light/banner.indigo.css.js +1 -1
- package/components/banner/themes/light/banner.indigo.css.js.map +1 -1
- package/components/banner/themes/light/banner.material.css.js +1 -1
- package/components/banner/themes/light/banner.material.css.js.map +1 -1
- package/components/button/themes/button/dark/button.bootstrap.css.js +1 -1
- package/components/button/themes/button/dark/button.bootstrap.css.js.map +1 -1
- package/components/button/themes/button/dark/button.fluent.css.js +1 -1
- package/components/button/themes/button/dark/button.fluent.css.js.map +1 -1
- 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.bootstrap.css.js +1 -1
- package/components/button/themes/button/light/button.bootstrap.css.js.map +1 -1
- package/components/button/themes/button/light/button.fluent.css.js +1 -1
- package/components/button/themes/button/light/button.fluent.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/light/button.shared.css.js +1 -1
- package/components/button/themes/button/light/button.shared.css.js.map +1 -1
- package/components/button/themes/icon-button/dark/icon-button.bootstrap.css.js +1 -1
- package/components/button/themes/icon-button/dark/icon-button.bootstrap.css.js.map +1 -1
- package/components/button/themes/icon-button/dark/icon-button.fluent.css.js +1 -1
- package/components/button/themes/icon-button/dark/icon-button.fluent.css.js.map +1 -1
- package/components/button/themes/icon-button/dark/icon-button.indigo.css.js +1 -1
- package/components/button/themes/icon-button/dark/icon-button.indigo.css.js.map +1 -1
- package/components/button/themes/icon-button/dark/icon-button.material.css.js +1 -1
- package/components/button/themes/icon-button/dark/icon-button.material.css.js.map +1 -1
- package/components/button/themes/icon-button/light/icon-button.bootstrap.css.js +1 -1
- package/components/button/themes/icon-button/light/icon-button.bootstrap.css.js.map +1 -1
- package/components/button/themes/icon-button/light/icon-button.fluent.css.js +1 -1
- package/components/button/themes/icon-button/light/icon-button.fluent.css.js.map +1 -1
- package/components/button/themes/icon-button/light/icon-button.indigo.css.js +1 -1
- package/components/button/themes/icon-button/light/icon-button.indigo.css.js.map +1 -1
- package/components/button/themes/icon-button/light/icon-button.material.css.js +1 -1
- package/components/button/themes/icon-button/light/icon-button.material.css.js.map +1 -1
- package/components/button/themes/icon-button/shared/icon-button.bootstrap.css.js +1 -1
- package/components/button/themes/icon-button/shared/icon-button.bootstrap.css.js.map +1 -1
- package/components/button/themes/icon-button/shared/icon-button.common.css.js +1 -1
- package/components/button/themes/icon-button/shared/icon-button.common.css.js.map +1 -1
- package/components/button/themes/icon-button/shared/icon-button.fluent.css.js +1 -1
- package/components/button/themes/icon-button/shared/icon-button.fluent.css.js.map +1 -1
- package/components/button/themes/icon-button/shared/icon-button.indigo.css.js +1 -1
- package/components/button/themes/icon-button/shared/icon-button.indigo.css.js.map +1 -1
- package/components/button/themes/icon-button/shared/icon-button.material.css.js +1 -1
- package/components/button/themes/icon-button/shared/icon-button.material.css.js.map +1 -1
- package/components/button-group/themes/dark/button-group.bootstrap.css.js +1 -1
- package/components/button-group/themes/dark/button-group.bootstrap.css.js.map +1 -1
- package/components/button-group/themes/dark/button-group.fluent.css.js +1 -1
- package/components/button-group/themes/dark/button-group.fluent.css.js.map +1 -1
- package/components/button-group/themes/dark/button-group.indigo.css.js +1 -1
- package/components/button-group/themes/dark/button-group.indigo.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/dark/button-group.shared.css.js +1 -1
- package/components/button-group/themes/dark/button-group.shared.css.js.map +1 -1
- package/components/button-group/themes/light/button-group.bootstrap.css.js +1 -1
- package/components/button-group/themes/light/button-group.bootstrap.css.js.map +1 -1
- package/components/button-group/themes/light/button-group.fluent.css.js +1 -1
- package/components/button-group/themes/light/button-group.fluent.css.js.map +1 -1
- package/components/button-group/themes/light/button-group.indigo.css.js +1 -1
- package/components/button-group/themes/light/button-group.indigo.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/light/button-group.shared.css.js +1 -1
- package/components/button-group/themes/light/button-group.shared.css.js.map +1 -1
- package/components/calendar/helpers.d.ts +12 -1
- package/components/calendar/helpers.js +33 -5
- package/components/calendar/helpers.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/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/light/calendar.shared.css.js +1 -1
- package/components/calendar/themes/light/calendar.shared.css.js.map +1 -1
- package/components/calendar/themes/shared/bootstrap/calendar.bootstrap.css.js +1 -1
- package/components/calendar/themes/shared/bootstrap/calendar.bootstrap.css.js.map +1 -1
- package/components/card/card.actions.d.ts +20 -6
- package/components/card/card.actions.js.map +1 -1
- package/components/card/card.content.d.ts +12 -2
- package/components/card/card.content.js.map +1 -1
- package/components/card/card.d.ts +27 -4
- package/components/card/card.header.d.ts +20 -6
- package/components/card/card.header.js.map +1 -1
- package/components/card/card.js.map +1 -1
- package/components/card/card.media.d.ts +14 -2
- package/components/card/card.media.js +1 -1
- package/components/card/card.media.js.map +1 -1
- package/components/card/themes/dark/card.bootstrap.css.js +1 -1
- package/components/card/themes/dark/card.bootstrap.css.js.map +1 -1
- package/components/card/themes/dark/card.fluent.css.js +1 -1
- package/components/card/themes/dark/card.fluent.css.js.map +1 -1
- package/components/card/themes/dark/card.indigo.css.js +1 -1
- package/components/card/themes/dark/card.indigo.css.js.map +1 -1
- package/components/card/themes/dark/card.material.css.js +1 -1
- package/components/card/themes/dark/card.material.css.js.map +1 -1
- package/components/card/themes/dark/card.shared.css.js +1 -1
- package/components/card/themes/dark/card.shared.css.js.map +1 -1
- package/components/card/themes/light/container/card.bootstrap.css.js +1 -1
- package/components/card/themes/light/container/card.bootstrap.css.js.map +1 -1
- package/components/card/themes/light/container/card.fluent.css.js +1 -1
- package/components/card/themes/light/container/card.fluent.css.js.map +1 -1
- package/components/card/themes/light/container/card.indigo.css.js +1 -1
- package/components/card/themes/light/container/card.indigo.css.js.map +1 -1
- package/components/card/themes/light/container/card.material.css.js +1 -1
- package/components/card/themes/light/container/card.material.css.js.map +1 -1
- package/components/card/themes/light/container/card.shared.css.js +1 -1
- package/components/card/themes/light/container/card.shared.css.js.map +1 -1
- package/components/carousel/carousel-slide.d.ts +2 -1
- package/components/carousel/carousel-slide.js +16 -16
- package/components/carousel/carousel-slide.js.map +1 -1
- package/components/carousel/carousel.d.ts +1 -0
- package/components/carousel/carousel.js +5 -1
- package/components/carousel/carousel.js.map +1 -1
- package/components/carousel/themes/dark/carousel.bootstrap.css.js +1 -1
- package/components/carousel/themes/dark/carousel.bootstrap.css.js.map +1 -1
- package/components/carousel/themes/dark/carousel.fluent.css.js +1 -1
- package/components/carousel/themes/dark/carousel.fluent.css.js.map +1 -1
- package/components/carousel/themes/dark/carousel.indigo.css.js +1 -1
- package/components/carousel/themes/dark/carousel.indigo.css.js.map +1 -1
- package/components/carousel/themes/dark/carousel.material.css.js +1 -1
- package/components/carousel/themes/dark/carousel.material.css.js.map +1 -1
- package/components/carousel/themes/dark/carousel.shared.css.js +1 -1
- package/components/carousel/themes/dark/carousel.shared.css.js.map +1 -1
- package/components/carousel/themes/light/carousel.bootstrap.css.js +1 -1
- package/components/carousel/themes/light/carousel.bootstrap.css.js.map +1 -1
- package/components/carousel/themes/light/carousel.fluent.css.js +1 -1
- package/components/carousel/themes/light/carousel.fluent.css.js.map +1 -1
- package/components/carousel/themes/light/carousel.indigo.css.js +1 -1
- package/components/carousel/themes/light/carousel.indigo.css.js.map +1 -1
- package/components/carousel/themes/light/carousel.material.css.js +1 -1
- package/components/carousel/themes/light/carousel.material.css.js.map +1 -1
- package/components/carousel/themes/light/carousel.shared.css.js +1 -1
- package/components/carousel/themes/light/carousel.shared.css.js.map +1 -1
- package/components/chat/chat-input.d.ts +3 -1
- package/components/chat/chat-input.js +15 -4
- package/components/chat/chat-input.js.map +1 -1
- package/components/chat/chat-message.d.ts +3 -1
- package/components/chat/chat-message.js +15 -5
- package/components/chat/chat-message.js.map +1 -1
- package/components/chat/chat.js +1 -3
- package/components/chat/chat.js.map +1 -1
- package/components/chat/themes/dark/chat.bootstrap.css.js +1 -1
- package/components/chat/themes/dark/chat.bootstrap.css.js.map +1 -1
- package/components/chat/themes/dark/chat.fluent.css.js +1 -1
- package/components/chat/themes/dark/chat.fluent.css.js.map +1 -1
- package/components/chat/themes/dark/chat.indigo.css.js +1 -1
- package/components/chat/themes/dark/chat.indigo.css.js.map +1 -1
- package/components/chat/themes/dark/chat.material.css.js +1 -1
- package/components/chat/themes/dark/chat.material.css.js.map +1 -1
- package/components/chat/themes/dark/chat.shared.css.js +1 -1
- package/components/chat/themes/dark/chat.shared.css.js.map +1 -1
- package/components/chat/themes/light/chat.bootstrap.css.js +1 -1
- package/components/chat/themes/light/chat.bootstrap.css.js.map +1 -1
- package/components/chat/themes/light/chat.fluent.css.js +1 -1
- package/components/chat/themes/light/chat.fluent.css.js.map +1 -1
- package/components/chat/themes/light/chat.indigo.css.js +1 -1
- package/components/chat/themes/light/chat.indigo.css.js.map +1 -1
- package/components/chat/themes/light/chat.material.css.js +1 -1
- package/components/chat/themes/light/chat.material.css.js.map +1 -1
- package/components/chat/themes/light/chat.shared.css.js +1 -1
- package/components/chat/themes/light/chat.shared.css.js.map +1 -1
- package/components/chat/types.d.ts +0 -8
- package/components/chat/types.js.map +1 -1
- package/components/chat/utils.d.ts +0 -13
- package/components/chat/utils.js +0 -41
- package/components/chat/utils.js.map +1 -1
- package/components/checkbox/themes/dark/checkbox/checkbox.bootstrap.css.js +1 -1
- package/components/checkbox/themes/dark/checkbox/checkbox.bootstrap.css.js.map +1 -1
- package/components/checkbox/themes/dark/checkbox/checkbox.fluent.css.js +1 -1
- package/components/checkbox/themes/dark/checkbox/checkbox.fluent.css.js.map +1 -1
- package/components/checkbox/themes/dark/checkbox/checkbox.indigo.css.js +1 -1
- package/components/checkbox/themes/dark/checkbox/checkbox.indigo.css.js.map +1 -1
- package/components/checkbox/themes/dark/checkbox/checkbox.material.css.js +1 -1
- package/components/checkbox/themes/dark/checkbox/checkbox.material.css.js.map +1 -1
- package/components/checkbox/themes/dark/switch/switch.bootstrap.css.js +1 -1
- package/components/checkbox/themes/dark/switch/switch.bootstrap.css.js.map +1 -1
- package/components/checkbox/themes/dark/switch/switch.fluent.css.js +1 -1
- package/components/checkbox/themes/dark/switch/switch.fluent.css.js.map +1 -1
- package/components/checkbox/themes/dark/switch/switch.indigo.css.js +1 -1
- package/components/checkbox/themes/dark/switch/switch.indigo.css.js.map +1 -1
- package/components/checkbox/themes/dark/switch/switch.material.css.js +1 -1
- package/components/checkbox/themes/dark/switch/switch.material.css.js.map +1 -1
- package/components/checkbox/themes/light/checkbox/checkbox.bootstrap.css.js +1 -1
- package/components/checkbox/themes/light/checkbox/checkbox.bootstrap.css.js.map +1 -1
- package/components/checkbox/themes/light/checkbox/checkbox.fluent.css.js +1 -1
- package/components/checkbox/themes/light/checkbox/checkbox.fluent.css.js.map +1 -1
- package/components/checkbox/themes/light/checkbox/checkbox.indigo.css.js +1 -1
- package/components/checkbox/themes/light/checkbox/checkbox.indigo.css.js.map +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/light/checkbox/checkbox.shared.css.js +1 -1
- package/components/checkbox/themes/light/checkbox/checkbox.shared.css.js.map +1 -1
- package/components/checkbox/themes/light/switch/switch.bootstrap.css.js +1 -1
- package/components/checkbox/themes/light/switch/switch.bootstrap.css.js.map +1 -1
- package/components/checkbox/themes/light/switch/switch.fluent.css.js +1 -1
- package/components/checkbox/themes/light/switch/switch.fluent.css.js.map +1 -1
- package/components/checkbox/themes/light/switch/switch.indigo.css.js +1 -1
- package/components/checkbox/themes/light/switch/switch.indigo.css.js.map +1 -1
- package/components/checkbox/themes/light/switch/switch.material.css.js +1 -1
- package/components/checkbox/themes/light/switch/switch.material.css.js.map +1 -1
- package/components/checkbox/themes/light/switch/switch.shared.css.js +1 -1
- package/components/checkbox/themes/light/switch/switch.shared.css.js.map +1 -1
- package/components/chip/themes/dark/chip.bootstrap.css.js +1 -1
- package/components/chip/themes/dark/chip.bootstrap.css.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/dark/chip.material.css.js +1 -1
- package/components/chip/themes/dark/chip.material.css.js.map +1 -1
- package/components/chip/themes/light/chip.bootstrap.css.js +1 -1
- package/components/chip/themes/light/chip.bootstrap.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.material.css.js +1 -1
- package/components/chip/themes/light/chip.material.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/combo/themes/combo.base.css.js +1 -1
- package/components/combo/themes/combo.base.css.js.map +1 -1
- package/components/combo/themes/dark/combo.bootstrap.css.js +1 -1
- package/components/combo/themes/dark/combo.bootstrap.css.js.map +1 -1
- package/components/combo/themes/dark/combo.fluent.css.js +1 -1
- package/components/combo/themes/dark/combo.fluent.css.js.map +1 -1
- package/components/combo/themes/dark/combo.indigo.css.js +1 -1
- package/components/combo/themes/dark/combo.indigo.css.js.map +1 -1
- package/components/combo/themes/dark/combo.material.css.js +1 -1
- package/components/combo/themes/dark/combo.material.css.js.map +1 -1
- package/components/combo/themes/light/combo.bootstrap.css.js +1 -1
- package/components/combo/themes/light/combo.bootstrap.css.js.map +1 -1
- package/components/combo/themes/light/combo.fluent.css.js +1 -1
- package/components/combo/themes/light/combo.fluent.css.js.map +1 -1
- package/components/combo/themes/light/combo.indigo.css.js +1 -1
- package/components/combo/themes/light/combo.indigo.css.js.map +1 -1
- package/components/combo/themes/light/combo.material.css.js +1 -1
- package/components/combo/themes/light/combo.material.css.js.map +1 -1
- package/components/combo/themes/light/combo.shared.css.js +1 -1
- package/components/combo/themes/light/combo.shared.css.js.map +1 -1
- package/components/common/controllers/adopt-styles.d.ts +124 -0
- package/components/common/controllers/adopt-styles.js +75 -0
- package/components/common/controllers/adopt-styles.js.map +1 -0
- package/components/common/i18n/i18n-controller.d.ts +8 -0
- package/components/common/i18n/i18n-controller.js +37 -2
- package/components/common/i18n/i18n-controller.js.map +1 -1
- package/components/date-picker/date-picker.d.ts +1 -1
- package/components/date-picker/date-picker.js +2 -3
- 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/date-picker.base.css.js +1 -1
- package/components/date-picker/themes/date-picker.base.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/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/themes.js +0 -7
- package/components/date-picker/themes/themes.js.map +1 -1
- package/components/date-range-picker/date-range-picker.base.css.js +1 -1
- package/components/date-range-picker/date-range-picker.base.css.js.map +1 -1
- package/components/date-range-picker/date-range-picker.js +5 -9
- 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/themes/shared/date-range-picker.bootstrap.css.js +1 -1
- package/components/date-range-picker/themes/shared/date-range-picker.bootstrap.css.js.map +1 -1
- package/components/date-range-picker/themes/shared/date-range-picker.common.css.js +1 -1
- package/components/date-range-picker/themes/shared/date-range-picker.common.css.js.map +1 -1
- package/components/date-range-picker/themes/shared/date-range-picker.fluent.css.js +1 -1
- package/components/date-range-picker/themes/shared/date-range-picker.fluent.css.js.map +1 -1
- package/components/date-range-picker/themes/shared/date-range-picker.indigo.css.js +1 -1
- package/components/date-range-picker/themes/shared/date-range-picker.indigo.css.js.map +1 -1
- package/components/date-range-picker/themes/themes.js +0 -7
- package/components/date-range-picker/themes/themes.js.map +1 -1
- package/components/date-time-input/date-part.d.ts +102 -0
- package/components/date-time-input/date-part.js +256 -0
- package/components/date-time-input/date-part.js.map +1 -0
- package/components/date-time-input/date-time-input.d.ts +112 -42
- package/components/date-time-input/date-time-input.js +211 -286
- package/components/date-time-input/date-time-input.js.map +1 -1
- package/components/date-time-input/datetime-mask-parser.d.ts +139 -0
- package/components/date-time-input/datetime-mask-parser.js +230 -0
- package/components/date-time-input/datetime-mask-parser.js.map +1 -0
- package/components/date-time-input/validators.js +3 -3
- package/components/date-time-input/validators.js.map +1 -1
- package/components/dialog/themes/dark/dialog.bootstrap.css.js +1 -1
- package/components/dialog/themes/dark/dialog.bootstrap.css.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/dark/dialog.indigo.css.js +1 -1
- package/components/dialog/themes/dark/dialog.indigo.css.js.map +1 -1
- package/components/dialog/themes/dark/dialog.material.css.js +1 -1
- package/components/dialog/themes/dark/dialog.material.css.js.map +1 -1
- package/components/dialog/themes/dark/dialog.shared.css.js +1 -1
- package/components/dialog/themes/dark/dialog.shared.css.js.map +1 -1
- package/components/dialog/themes/light/dialog.bootstrap.css.js +1 -1
- package/components/dialog/themes/light/dialog.bootstrap.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/light/dialog.indigo.css.js +1 -1
- package/components/dialog/themes/light/dialog.indigo.css.js.map +1 -1
- package/components/dialog/themes/light/dialog.material.css.js +1 -1
- package/components/dialog/themes/light/dialog.material.css.js.map +1 -1
- package/components/dialog/themes/light/dialog.shared.css.js +1 -1
- package/components/dialog/themes/light/dialog.shared.css.js.map +1 -1
- package/components/divider/themes/dark/divider.bootstrap.css.js +1 -1
- package/components/divider/themes/dark/divider.bootstrap.css.js.map +1 -1
- package/components/divider/themes/dark/divider.fluent.css.js +1 -1
- package/components/divider/themes/dark/divider.fluent.css.js.map +1 -1
- package/components/divider/themes/dark/divider.indigo.css.js +1 -1
- package/components/divider/themes/dark/divider.indigo.css.js.map +1 -1
- package/components/divider/themes/dark/divider.material.css.js +1 -1
- package/components/divider/themes/dark/divider.material.css.js.map +1 -1
- package/components/divider/themes/light/divider.bootstrap.css.js +1 -1
- package/components/divider/themes/light/divider.bootstrap.css.js.map +1 -1
- package/components/divider/themes/light/divider.fluent.css.js +1 -1
- package/components/divider/themes/light/divider.fluent.css.js.map +1 -1
- package/components/divider/themes/light/divider.indigo.css.js +1 -1
- package/components/divider/themes/light/divider.indigo.css.js.map +1 -1
- package/components/divider/themes/light/divider.material.css.js +1 -1
- package/components/divider/themes/light/divider.material.css.js.map +1 -1
- package/components/divider/themes/light/divider.shared.css.js +1 -1
- package/components/divider/themes/light/divider.shared.css.js.map +1 -1
- package/components/dropdown/themes/dark/dropdown.bootstrap.css.js +1 -1
- package/components/dropdown/themes/dark/dropdown.bootstrap.css.js.map +1 -1
- package/components/dropdown/themes/dark/dropdown.fluent.css.js +1 -1
- package/components/dropdown/themes/dark/dropdown.fluent.css.js.map +1 -1
- package/components/dropdown/themes/dark/dropdown.indigo.css.js +1 -1
- package/components/dropdown/themes/dark/dropdown.indigo.css.js.map +1 -1
- package/components/dropdown/themes/dark/dropdown.material.css.js +1 -1
- package/components/dropdown/themes/dark/dropdown.material.css.js.map +1 -1
- package/components/dropdown/themes/dark/dropdown.shared.css.js +1 -1
- package/components/dropdown/themes/dark/dropdown.shared.css.js.map +1 -1
- package/components/dropdown/themes/light/dropdown.bootstrap.css.js +1 -1
- package/components/dropdown/themes/light/dropdown.bootstrap.css.js.map +1 -1
- package/components/dropdown/themes/light/dropdown.fluent.css.js +1 -1
- package/components/dropdown/themes/light/dropdown.fluent.css.js.map +1 -1
- package/components/dropdown/themes/light/dropdown.indigo.css.js +1 -1
- package/components/dropdown/themes/light/dropdown.indigo.css.js.map +1 -1
- package/components/dropdown/themes/light/dropdown.material.css.js +1 -1
- package/components/dropdown/themes/light/dropdown.material.css.js.map +1 -1
- package/components/dropdown/themes/light/dropdown.shared.css.js +1 -1
- package/components/dropdown/themes/light/dropdown.shared.css.js.map +1 -1
- package/components/expansion-panel/themes/dark/expansion-panel.bootstrap.css.js +1 -1
- package/components/expansion-panel/themes/dark/expansion-panel.bootstrap.css.js.map +1 -1
- package/components/expansion-panel/themes/dark/expansion-panel.fluent.css.js +1 -1
- package/components/expansion-panel/themes/dark/expansion-panel.fluent.css.js.map +1 -1
- package/components/expansion-panel/themes/dark/expansion-panel.indigo.css.js +1 -1
- package/components/expansion-panel/themes/dark/expansion-panel.indigo.css.js.map +1 -1
- package/components/expansion-panel/themes/dark/expansion-panel.material.css.js +1 -1
- package/components/expansion-panel/themes/dark/expansion-panel.material.css.js.map +1 -1
- package/components/expansion-panel/themes/dark/expansion-panel.shared.css.js +1 -1
- package/components/expansion-panel/themes/dark/expansion-panel.shared.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/expansion-panel/themes/light/expansion-panel.fluent.css.js +1 -1
- package/components/expansion-panel/themes/light/expansion-panel.fluent.css.js.map +1 -1
- package/components/expansion-panel/themes/light/expansion-panel.indigo.css.js +1 -1
- package/components/expansion-panel/themes/light/expansion-panel.indigo.css.js.map +1 -1
- package/components/expansion-panel/themes/light/expansion-panel.material.css.js +1 -1
- package/components/expansion-panel/themes/light/expansion-panel.material.css.js.map +1 -1
- package/components/expansion-panel/themes/light/expansion-panel.shared.css.js +1 -1
- package/components/expansion-panel/themes/light/expansion-panel.shared.css.js.map +1 -1
- package/components/file-input/themes/dark/file-input.bootstrap.css.js +1 -1
- package/components/file-input/themes/dark/file-input.bootstrap.css.js.map +1 -1
- package/components/file-input/themes/dark/file-input.fluent.css.js +1 -1
- package/components/file-input/themes/dark/file-input.fluent.css.js.map +1 -1
- package/components/file-input/themes/dark/file-input.indigo.css.js +1 -1
- package/components/file-input/themes/dark/file-input.indigo.css.js.map +1 -1
- package/components/file-input/themes/dark/file-input.material.css.js +1 -1
- package/components/file-input/themes/dark/file-input.material.css.js.map +1 -1
- package/components/file-input/themes/light/file-input.bootstrap.css.js +1 -1
- package/components/file-input/themes/light/file-input.bootstrap.css.js.map +1 -1
- package/components/file-input/themes/light/file-input.fluent.css.js +1 -1
- package/components/file-input/themes/light/file-input.fluent.css.js.map +1 -1
- package/components/file-input/themes/light/file-input.indigo.css.js +1 -1
- package/components/file-input/themes/light/file-input.indigo.css.js.map +1 -1
- package/components/file-input/themes/light/file-input.material.css.js +1 -1
- package/components/file-input/themes/light/file-input.material.css.js.map +1 -1
- package/components/file-input/themes/light/file-input.shared.css.js +1 -1
- package/components/file-input/themes/light/file-input.shared.css.js.map +1 -1
- package/components/icon/icon-references.d.ts +1 -1
- package/components/icon/icon-references.js +2 -2
- package/components/icon/icon-references.js.map +1 -1
- package/components/icon/icon-state.broadcast.d.ts +34 -10
- package/components/icon/icon-state.broadcast.js +37 -27
- package/components/icon/icon-state.broadcast.js.map +1 -1
- package/components/icon/icon.d.ts +83 -12
- package/components/icon/icon.js +30 -34
- package/components/icon/icon.js.map +1 -1
- package/components/icon/icon.registry.d.ts +218 -10
- package/components/icon/icon.registry.js +58 -46
- package/components/icon/icon.registry.js.map +1 -1
- package/components/icon/registry/default-map.d.ts +86 -11
- package/components/icon/registry/default-map.js +14 -23
- package/components/icon/registry/default-map.js.map +1 -1
- package/components/icon/themes/dark/icon.bootstrap.css.js +1 -1
- package/components/icon/themes/dark/icon.bootstrap.css.js.map +1 -1
- package/components/icon/themes/dark/icon.fluent.css.js +1 -1
- package/components/icon/themes/dark/icon.fluent.css.js.map +1 -1
- package/components/icon/themes/dark/icon.indigo.css.js +1 -1
- package/components/icon/themes/dark/icon.indigo.css.js.map +1 -1
- package/components/icon/themes/dark/icon.material.css.js +1 -1
- package/components/icon/themes/dark/icon.material.css.js.map +1 -1
- package/components/icon/themes/light/icon.bootstrap.css.js +1 -1
- package/components/icon/themes/light/icon.bootstrap.css.js.map +1 -1
- package/components/icon/themes/light/icon.fluent.css.js +1 -1
- package/components/icon/themes/light/icon.fluent.css.js.map +1 -1
- package/components/icon/themes/light/icon.indigo.css.js +1 -1
- package/components/icon/themes/light/icon.indigo.css.js.map +1 -1
- package/components/icon/themes/light/icon.material.css.js +1 -1
- package/components/icon/themes/light/icon.material.css.js.map +1 -1
- package/components/icon/themes/light/icon.shared.css.js +1 -1
- package/components/icon/themes/light/icon.shared.css.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.fluent.css.js +1 -1
- package/components/input/themes/dark/input.fluent.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/dark/input.material.css.js +1 -1
- package/components/input/themes/dark/input.material.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.fluent.css.js +1 -1
- package/components/input/themes/light/input.fluent.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.material.css.js +1 -1
- package/components/input/themes/light/input.material.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.fluent.css.js +1 -1
- package/components/input/themes/shared/input.fluent.css.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/dark/container/list.fluent.css.js +1 -1
- package/components/list/themes/dark/container/list.fluent.css.js.map +1 -1
- package/components/list/themes/dark/container/list.indigo.css.js +1 -1
- package/components/list/themes/dark/container/list.indigo.css.js.map +1 -1
- package/components/list/themes/dark/container/list.material.css.js +1 -1
- package/components/list/themes/dark/container/list.material.css.js.map +1 -1
- package/components/list/themes/dark/container/list.shared.css.js +1 -1
- package/components/list/themes/dark/container/list.shared.css.js.map +1 -1
- package/components/list/themes/light/container/list.bootstrap.css.js +1 -1
- package/components/list/themes/light/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/light/container/list.indigo.css.js +1 -1
- package/components/list/themes/light/container/list.indigo.css.js.map +1 -1
- package/components/list/themes/light/container/list.material.css.js +1 -1
- package/components/list/themes/light/container/list.material.css.js.map +1 -1
- package/components/list/themes/light/container/list.shared.css.js +1 -1
- package/components/list/themes/light/container/list.shared.css.js.map +1 -1
- package/components/mask-input/mask-input-base.d.ts +2 -0
- package/components/mask-input/mask-input-base.js +3 -0
- package/components/mask-input/mask-input-base.js.map +1 -1
- package/components/mask-input/mask-input.js +1 -1
- package/components/mask-input/mask-input.js.map +1 -1
- package/components/nav-drawer/themes/dark/container/nav-drawer.bootstrap.css.js +1 -1
- package/components/nav-drawer/themes/dark/container/nav-drawer.bootstrap.css.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/dark/container/nav-drawer.indigo.css.js +1 -1
- package/components/nav-drawer/themes/dark/container/nav-drawer.indigo.css.js.map +1 -1
- package/components/nav-drawer/themes/dark/container/nav-drawer.material.css.js +1 -1
- package/components/nav-drawer/themes/dark/container/nav-drawer.material.css.js.map +1 -1
- package/components/nav-drawer/themes/dark/container/nav-drawer.shared.css.js +1 -1
- package/components/nav-drawer/themes/dark/container/nav-drawer.shared.css.js.map +1 -1
- package/components/nav-drawer/themes/light/container/nav-drawer.bootstrap.css.js +1 -1
- package/components/nav-drawer/themes/light/container/nav-drawer.bootstrap.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.indigo.css.js +1 -1
- package/components/nav-drawer/themes/light/container/nav-drawer.indigo.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/nav-drawer/themes/light/container/nav-drawer.shared.css.js +1 -1
- package/components/nav-drawer/themes/light/container/nav-drawer.shared.css.js.map +1 -1
- package/components/navbar/themes/dark/navbar.bootstrap.css.js +1 -1
- package/components/navbar/themes/dark/navbar.bootstrap.css.js.map +1 -1
- package/components/navbar/themes/dark/navbar.fluent.css.js +1 -1
- package/components/navbar/themes/dark/navbar.fluent.css.js.map +1 -1
- package/components/navbar/themes/dark/navbar.indigo.css.js +1 -1
- package/components/navbar/themes/dark/navbar.indigo.css.js.map +1 -1
- package/components/navbar/themes/dark/navbar.material.css.js +1 -1
- package/components/navbar/themes/dark/navbar.material.css.js.map +1 -1
- package/components/navbar/themes/light/navbar.bootstrap.css.js +1 -1
- package/components/navbar/themes/light/navbar.bootstrap.css.js.map +1 -1
- package/components/navbar/themes/light/navbar.fluent.css.js +1 -1
- package/components/navbar/themes/light/navbar.fluent.css.js.map +1 -1
- package/components/navbar/themes/light/navbar.indigo.css.js +1 -1
- package/components/navbar/themes/light/navbar.indigo.css.js.map +1 -1
- package/components/navbar/themes/light/navbar.material.css.js +1 -1
- package/components/navbar/themes/light/navbar.material.css.js.map +1 -1
- package/components/navbar/themes/light/navbar.shared.css.js +1 -1
- package/components/navbar/themes/light/navbar.shared.css.js.map +1 -1
- package/components/popover/themes/light/popover.base.css.js +1 -1
- package/components/popover/themes/light/popover.base.css.js.map +1 -1
- package/components/progress/themes/circular/dark/circular.progress.bootstrap.css.js +1 -1
- package/components/progress/themes/circular/dark/circular.progress.bootstrap.css.js.map +1 -1
- package/components/progress/themes/circular/dark/circular.progress.fluent.css.js +1 -1
- package/components/progress/themes/circular/dark/circular.progress.fluent.css.js.map +1 -1
- package/components/progress/themes/circular/dark/circular.progress.indigo.css.js +1 -1
- package/components/progress/themes/circular/dark/circular.progress.indigo.css.js.map +1 -1
- package/components/progress/themes/circular/dark/circular.progress.material.css.js +1 -1
- package/components/progress/themes/circular/dark/circular.progress.material.css.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/circular/light/circular.progress.bootstrap.css.js +1 -1
- package/components/progress/themes/circular/light/circular.progress.bootstrap.css.js.map +1 -1
- package/components/progress/themes/circular/light/circular.progress.fluent.css.js +1 -1
- package/components/progress/themes/circular/light/circular.progress.fluent.css.js.map +1 -1
- package/components/progress/themes/circular/light/circular.progress.indigo.css.js +1 -1
- package/components/progress/themes/circular/light/circular.progress.indigo.css.js.map +1 -1
- package/components/progress/themes/circular/light/circular.progress.material.css.js +1 -1
- package/components/progress/themes/circular/light/circular.progress.material.css.js.map +1 -1
- package/components/progress/themes/circular/light/circular.progress.shared.css.js +1 -1
- package/components/progress/themes/circular/light/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.fluent.css.js +1 -1
- package/components/progress/themes/linear/dark/linear.progress.fluent.css.js.map +1 -1
- package/components/progress/themes/linear/dark/linear.progress.indigo.css.js +1 -1
- package/components/progress/themes/linear/dark/linear.progress.indigo.css.js.map +1 -1
- package/components/progress/themes/linear/dark/linear.progress.material.css.js +1 -1
- package/components/progress/themes/linear/dark/linear.progress.material.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/progress/themes/linear/light/linear.progress.bootstrap.css.js +1 -1
- package/components/progress/themes/linear/light/linear.progress.bootstrap.css.js.map +1 -1
- package/components/progress/themes/linear/light/linear.progress.fluent.css.js +1 -1
- package/components/progress/themes/linear/light/linear.progress.fluent.css.js.map +1 -1
- package/components/progress/themes/linear/light/linear.progress.indigo.css.js +1 -1
- package/components/progress/themes/linear/light/linear.progress.indigo.css.js.map +1 -1
- package/components/progress/themes/linear/light/linear.progress.material.css.js +1 -1
- package/components/progress/themes/linear/light/linear.progress.material.css.js.map +1 -1
- package/components/progress/themes/linear/light/linear.progress.shared.css.js +1 -1
- package/components/progress/themes/linear/light/linear.progress.shared.css.js.map +1 -1
- package/components/radio/themes/dark/radio.bootstrap.css.js +1 -1
- package/components/radio/themes/dark/radio.bootstrap.css.js.map +1 -1
- package/components/radio/themes/dark/radio.fluent.css.js +1 -1
- package/components/radio/themes/dark/radio.fluent.css.js.map +1 -1
- package/components/radio/themes/dark/radio.indigo.css.js +1 -1
- package/components/radio/themes/dark/radio.indigo.css.js.map +1 -1
- package/components/radio/themes/dark/radio.material.css.js +1 -1
- package/components/radio/themes/dark/radio.material.css.js.map +1 -1
- package/components/radio/themes/light/radio.bootstrap.css.js +1 -1
- package/components/radio/themes/light/radio.bootstrap.css.js.map +1 -1
- package/components/radio/themes/light/radio.fluent.css.js +1 -1
- package/components/radio/themes/light/radio.fluent.css.js.map +1 -1
- package/components/radio/themes/light/radio.indigo.css.js +1 -1
- package/components/radio/themes/light/radio.indigo.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/light/radio.shared.css.js +1 -1
- package/components/radio/themes/light/radio.shared.css.js.map +1 -1
- package/components/radio-group/themes/dark/radio-group.bootstrap.css.js +1 -1
- package/components/radio-group/themes/dark/radio-group.bootstrap.css.js.map +1 -1
- package/components/radio-group/themes/dark/radio-group.fluent.css.js +1 -1
- package/components/radio-group/themes/dark/radio-group.fluent.css.js.map +1 -1
- package/components/radio-group/themes/dark/radio-group.indigo.css.js +1 -1
- package/components/radio-group/themes/dark/radio-group.indigo.css.js.map +1 -1
- package/components/radio-group/themes/dark/radio-group.material.css.js +1 -1
- package/components/radio-group/themes/dark/radio-group.material.css.js.map +1 -1
- package/components/radio-group/themes/light/radio-group.bootstrap.css.js +1 -1
- package/components/radio-group/themes/light/radio-group.bootstrap.css.js.map +1 -1
- package/components/radio-group/themes/light/radio-group.fluent.css.js +1 -1
- package/components/radio-group/themes/light/radio-group.fluent.css.js.map +1 -1
- package/components/radio-group/themes/light/radio-group.indigo.css.js +1 -1
- package/components/radio-group/themes/light/radio-group.indigo.css.js.map +1 -1
- package/components/radio-group/themes/light/radio-group.material.css.js +1 -1
- package/components/radio-group/themes/light/radio-group.material.css.js.map +1 -1
- package/components/radio-group/themes/light/radio-group.shared.css.js +1 -1
- package/components/radio-group/themes/light/radio-group.shared.css.js.map +1 -1
- package/components/rating/themes/dark/rating.bootstrap.css.js +1 -1
- package/components/rating/themes/dark/rating.bootstrap.css.js.map +1 -1
- package/components/rating/themes/dark/rating.fluent.css.js +1 -1
- package/components/rating/themes/dark/rating.fluent.css.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/dark/rating.material.css.js +1 -1
- package/components/rating/themes/dark/rating.material.css.js.map +1 -1
- package/components/rating/themes/light/rating.bootstrap.css.js +1 -1
- package/components/rating/themes/light/rating.bootstrap.css.js.map +1 -1
- package/components/rating/themes/light/rating.fluent.css.js +1 -1
- package/components/rating/themes/light/rating.fluent.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/rating/themes/light/rating.material.css.js +1 -1
- package/components/rating/themes/light/rating.material.css.js.map +1 -1
- package/components/rating/themes/light/rating.shared.css.js +1 -1
- package/components/rating/themes/light/rating.shared.css.js.map +1 -1
- package/components/resize-container/themes/dark/resize-indicator.bootstrap.css.js +1 -1
- package/components/resize-container/themes/dark/resize-indicator.bootstrap.css.js.map +1 -1
- package/components/resize-container/themes/dark/resize-indicator.fluent.css.js +1 -1
- package/components/resize-container/themes/dark/resize-indicator.fluent.css.js.map +1 -1
- package/components/resize-container/themes/dark/resize-indicator.indigo.css.js +1 -1
- package/components/resize-container/themes/dark/resize-indicator.indigo.css.js.map +1 -1
- package/components/resize-container/themes/dark/resize-indicator.material.css.js +1 -1
- package/components/resize-container/themes/dark/resize-indicator.material.css.js.map +1 -1
- package/components/resize-container/themes/dark/resize-indicator.shared.css.js +1 -1
- package/components/resize-container/themes/dark/resize-indicator.shared.css.js.map +1 -1
- package/components/resize-container/themes/light/resize-indicator.bootstrap.css.js +1 -1
- package/components/resize-container/themes/light/resize-indicator.bootstrap.css.js.map +1 -1
- package/components/resize-container/themes/light/resize-indicator.fluent.css.js +1 -1
- package/components/resize-container/themes/light/resize-indicator.fluent.css.js.map +1 -1
- package/components/resize-container/themes/light/resize-indicator.indigo.css.js +1 -1
- package/components/resize-container/themes/light/resize-indicator.indigo.css.js.map +1 -1
- package/components/resize-container/themes/light/resize-indicator.material.css.js +1 -1
- package/components/resize-container/themes/light/resize-indicator.material.css.js.map +1 -1
- package/components/resize-container/themes/light/resize-indicator.shared.css.js +1 -1
- package/components/resize-container/themes/light/resize-indicator.shared.css.js.map +1 -1
- package/components/select/themes/dark/select.bootstrap.css.js +1 -1
- package/components/select/themes/dark/select.bootstrap.css.js.map +1 -1
- package/components/select/themes/dark/select.fluent.css.js +1 -1
- package/components/select/themes/dark/select.fluent.css.js.map +1 -1
- package/components/select/themes/dark/select.indigo.css.js +1 -1
- package/components/select/themes/dark/select.indigo.css.js.map +1 -1
- package/components/select/themes/dark/select.material.css.js +1 -1
- package/components/select/themes/dark/select.material.css.js.map +1 -1
- package/components/select/themes/light/select.bootstrap.css.js +1 -1
- package/components/select/themes/light/select.bootstrap.css.js.map +1 -1
- package/components/select/themes/light/select.fluent.css.js +1 -1
- package/components/select/themes/light/select.fluent.css.js.map +1 -1
- package/components/select/themes/light/select.indigo.css.js +1 -1
- package/components/select/themes/light/select.indigo.css.js.map +1 -1
- package/components/select/themes/light/select.material.css.js +1 -1
- package/components/select/themes/light/select.material.css.js.map +1 -1
- package/components/select/themes/light/select.shared.css.js +1 -1
- package/components/select/themes/light/select.shared.css.js.map +1 -1
- package/components/select/themes/shared/select.bootstrap.css.js +1 -1
- package/components/select/themes/shared/select.bootstrap.css.js.map +1 -1
- package/components/select/themes/shared/select.common.css.js +1 -1
- package/components/select/themes/shared/select.common.css.js.map +1 -1
- package/components/slider/themes/dark/slider.bootstrap.css.js +1 -1
- package/components/slider/themes/dark/slider.bootstrap.css.js.map +1 -1
- package/components/slider/themes/dark/slider.fluent.css.js +1 -1
- package/components/slider/themes/dark/slider.fluent.css.js.map +1 -1
- package/components/slider/themes/dark/slider.indigo.css.js +1 -1
- package/components/slider/themes/dark/slider.indigo.css.js.map +1 -1
- package/components/slider/themes/dark/slider.material.css.js +1 -1
- package/components/slider/themes/dark/slider.material.css.js.map +1 -1
- package/components/slider/themes/light/slider.bootstrap.css.js +1 -1
- package/components/slider/themes/light/slider.bootstrap.css.js.map +1 -1
- package/components/slider/themes/light/slider.fluent.css.js +1 -1
- package/components/slider/themes/light/slider.fluent.css.js.map +1 -1
- package/components/slider/themes/light/slider.indigo.css.js +1 -1
- package/components/slider/themes/light/slider.indigo.css.js.map +1 -1
- package/components/slider/themes/light/slider.material.css.js +1 -1
- package/components/slider/themes/light/slider.material.css.js.map +1 -1
- package/components/slider/themes/light/slider.shared.css.js +1 -1
- package/components/slider/themes/light/slider.shared.css.js.map +1 -1
- package/components/snackbar/themes/dark/snackbar.bootstrap.css.js +1 -1
- package/components/snackbar/themes/dark/snackbar.bootstrap.css.js.map +1 -1
- package/components/snackbar/themes/dark/snackbar.fluent.css.js +1 -1
- package/components/snackbar/themes/dark/snackbar.fluent.css.js.map +1 -1
- package/components/snackbar/themes/dark/snackbar.indigo.css.js +1 -1
- package/components/snackbar/themes/dark/snackbar.indigo.css.js.map +1 -1
- package/components/snackbar/themes/dark/snackbar.material.css.js +1 -1
- package/components/snackbar/themes/dark/snackbar.material.css.js.map +1 -1
- package/components/snackbar/themes/light/snackbar.bootstrap.css.js +1 -1
- package/components/snackbar/themes/light/snackbar.bootstrap.css.js.map +1 -1
- package/components/snackbar/themes/light/snackbar.fluent.css.js +1 -1
- package/components/snackbar/themes/light/snackbar.fluent.css.js.map +1 -1
- package/components/snackbar/themes/light/snackbar.indigo.css.js +1 -1
- package/components/snackbar/themes/light/snackbar.indigo.css.js.map +1 -1
- package/components/snackbar/themes/light/snackbar.material.css.js +1 -1
- package/components/snackbar/themes/light/snackbar.material.css.js.map +1 -1
- package/components/snackbar/themes/light/snackbar.shared.css.js +1 -1
- package/components/snackbar/themes/light/snackbar.shared.css.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/dark/step.shared.css.js +1 -1
- package/components/stepper/themes/step/dark/step.shared.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/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/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.fluent.css.js +1 -1
- package/components/textarea/themes/dark/textarea.fluent.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/dark/textarea.material.css.js +1 -1
- package/components/textarea/themes/dark/textarea.material.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.fluent.css.js +1 -1
- package/components/textarea/themes/light/textarea.fluent.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.material.css.js +1 -1
- package/components/textarea/themes/light/textarea.material.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/textarea.base.css.js +1 -1
- package/components/textarea/themes/textarea.base.css.js.map +1 -1
- package/components/tile-manager/themes/dark/tile-manager.bootstrap.css.js +1 -1
- package/components/tile-manager/themes/dark/tile-manager.bootstrap.css.js.map +1 -1
- package/components/tile-manager/themes/dark/tile-manager.fluent.css.js +1 -1
- package/components/tile-manager/themes/dark/tile-manager.fluent.css.js.map +1 -1
- package/components/tile-manager/themes/dark/tile-manager.indigo.css.js +1 -1
- package/components/tile-manager/themes/dark/tile-manager.indigo.css.js.map +1 -1
- package/components/tile-manager/themes/dark/tile-manager.material.css.js +1 -1
- package/components/tile-manager/themes/dark/tile-manager.material.css.js.map +1 -1
- package/components/tile-manager/themes/dark/tile-manager.shared.css.js +1 -1
- package/components/tile-manager/themes/dark/tile-manager.shared.css.js.map +1 -1
- package/components/tile-manager/themes/light/tile-manager.bootstrap.css.js +1 -1
- package/components/tile-manager/themes/light/tile-manager.bootstrap.css.js.map +1 -1
- package/components/tile-manager/themes/light/tile-manager.fluent.css.js +1 -1
- package/components/tile-manager/themes/light/tile-manager.fluent.css.js.map +1 -1
- package/components/tile-manager/themes/light/tile-manager.indigo.css.js +1 -1
- package/components/tile-manager/themes/light/tile-manager.indigo.css.js.map +1 -1
- package/components/tile-manager/themes/light/tile-manager.material.css.js +1 -1
- package/components/tile-manager/themes/light/tile-manager.material.css.js.map +1 -1
- package/components/tile-manager/themes/light/tile-manager.shared.css.js +1 -1
- package/components/tile-manager/themes/light/tile-manager.shared.css.js.map +1 -1
- package/components/toast/themes/dark/toast.bootstrap.css.js +1 -1
- package/components/toast/themes/dark/toast.bootstrap.css.js.map +1 -1
- package/components/toast/themes/dark/toast.fluent.css.js +1 -1
- package/components/toast/themes/dark/toast.fluent.css.js.map +1 -1
- package/components/toast/themes/dark/toast.indigo.css.js +1 -1
- package/components/toast/themes/dark/toast.indigo.css.js.map +1 -1
- package/components/toast/themes/dark/toast.material.css.js +1 -1
- package/components/toast/themes/dark/toast.material.css.js.map +1 -1
- package/components/toast/themes/dark/toast.shared.css.js +1 -1
- package/components/toast/themes/dark/toast.shared.css.js.map +1 -1
- package/components/toast/themes/light/toast.bootstrap.css.js +1 -1
- package/components/toast/themes/light/toast.bootstrap.css.js.map +1 -1
- package/components/toast/themes/light/toast.fluent.css.js +1 -1
- package/components/toast/themes/light/toast.fluent.css.js.map +1 -1
- package/components/toast/themes/light/toast.indigo.css.js +1 -1
- package/components/toast/themes/light/toast.indigo.css.js.map +1 -1
- package/components/toast/themes/light/toast.material.css.js +1 -1
- package/components/toast/themes/light/toast.material.css.js.map +1 -1
- package/components/toast/themes/light/toast.shared.css.js +1 -1
- package/components/toast/themes/light/toast.shared.css.js.map +1 -1
- package/components/tooltip/themes/dark/tooltip.bootstrap.css.js +1 -1
- package/components/tooltip/themes/dark/tooltip.bootstrap.css.js.map +1 -1
- package/components/tooltip/themes/dark/tooltip.fluent.css.js +1 -1
- package/components/tooltip/themes/dark/tooltip.fluent.css.js.map +1 -1
- package/components/tooltip/themes/dark/tooltip.indigo.css.js +1 -1
- package/components/tooltip/themes/dark/tooltip.indigo.css.js.map +1 -1
- package/components/tooltip/themes/dark/tooltip.material.css.js +1 -1
- package/components/tooltip/themes/dark/tooltip.material.css.js.map +1 -1
- package/components/tooltip/themes/light/tooltip.bootstrap.css.js +1 -1
- package/components/tooltip/themes/light/tooltip.bootstrap.css.js.map +1 -1
- package/components/tooltip/themes/light/tooltip.fluent.css.js +1 -1
- package/components/tooltip/themes/light/tooltip.fluent.css.js.map +1 -1
- package/components/tooltip/themes/light/tooltip.indigo.css.js +1 -1
- package/components/tooltip/themes/light/tooltip.indigo.css.js.map +1 -1
- package/components/tooltip/themes/light/tooltip.material.css.js +1 -1
- package/components/tooltip/themes/light/tooltip.material.css.js.map +1 -1
- package/components/tooltip/themes/light/tooltip.shared.css.js +1 -1
- package/components/tooltip/themes/light/tooltip.shared.css.js.map +1 -1
- package/components/tooltip/tooltip.d.ts +0 -12
- package/components/tooltip/tooltip.js +3 -10
- package/components/tooltip/tooltip.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/dark/container.fluent.css.js +1 -1
- package/components/tree/themes/dark/container.fluent.css.js.map +1 -1
- package/components/tree/themes/dark/container.indigo.css.js +1 -1
- package/components/tree/themes/dark/container.indigo.css.js.map +1 -1
- package/components/tree/themes/dark/container.material.css.js +1 -1
- package/components/tree/themes/dark/container.material.css.js.map +1 -1
- package/components/tree/themes/dark/container.shared.css.js +1 -1
- package/components/tree/themes/dark/container.shared.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/themes/light/container.fluent.css.js +1 -1
- package/components/tree/themes/light/container.fluent.css.js.map +1 -1
- package/components/tree/themes/light/container.indigo.css.js +1 -1
- package/components/tree/themes/light/container.indigo.css.js.map +1 -1
- package/components/tree/themes/light/container.material.css.js +1 -1
- package/components/tree/themes/light/container.material.css.js.map +1 -1
- package/components/tree/themes/light/container.shared.css.js +1 -1
- package/components/tree/themes/light/container.shared.css.js.map +1 -1
- package/custom-elements.json +1493 -1130
- package/igniteui-webcomponents.css-data.json +1 -1
- package/igniteui-webcomponents.html-data.json +1 -1
- package/index.d.ts +3 -2
- package/index.js +2 -1
- package/index.js.map +1 -1
- package/package.json +2 -2
- package/skills/README.md +65 -0
- package/skills/igniteui-wc-choose-components/SKILL.md +358 -0
- package/skills/igniteui-wc-customize-component-theme/SKILL.md +615 -0
- package/skills/igniteui-wc-integrate-with-framework/SKILL.md +112 -0
- package/skills/igniteui-wc-integrate-with-framework/references/angular.md +185 -0
- package/skills/igniteui-wc-integrate-with-framework/references/react.md +116 -0
- package/skills/igniteui-wc-integrate-with-framework/references/vanilla-js.md +118 -0
- package/skills/igniteui-wc-integrate-with-framework/references/vue.md +181 -0
- package/skills/igniteui-wc-optimize-bundle-size/SKILL.md +709 -0
- 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/date-picker/themes/light/date-picker.shared.css.d.ts +0 -1
- package/components/date-picker/themes/light/date-picker.shared.css.js +0 -3
- package/components/date-picker/themes/light/date-picker.shared.css.js.map +0 -1
- package/components/date-range-picker/themes/light/date-range-picker.shared.css.d.ts +0 -1
- package/components/date-range-picker/themes/light/date-range-picker.shared.css.js +0 -3
- package/components/date-range-picker/themes/light/date-range-picker.shared.css.js.map +0 -1
- package/components/date-time-input/date-util.d.ts +0 -99
- package/components/date-time-input/date-util.js +0 -391
- package/components/date-time-input/date-util.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-time-input.js","sourceRoot":"","sources":["../../../src/components/date-time-input/date-time-input.ts"],"names":[],"mappings":"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","sourcesContent":["import { getDateFormatter } from 'igniteui-i18n-core';\nimport { html } from 'lit';\nimport { eventOptions, property } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { live } from 'lit/directives/live.js';\nimport { addThemingController } from '../../theming/theming-controller.js';\nimport { convertToDate } from '../calendar/helpers.js';\nimport {\n addKeybindings,\n arrowDown,\n arrowLeft,\n arrowRight,\n arrowUp,\n ctrlKey,\n} from '../common/controllers/key-bindings.js';\nimport { addSlotController, setSlots } from '../common/controllers/slot.js';\nimport { watch } from '../common/decorators/watch.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport { addI18nController } from '../common/i18n/i18n-controller.js';\nimport type { AbstractConstructor } from '../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../common/mixins/event-emitter.js';\nimport { FormValueDateTimeTransformers } from '../common/mixins/forms/form-transformers.js';\nimport { createFormValueState } from '../common/mixins/forms/form-value.js';\nimport { partMap } from '../common/part-map.js';\nimport type { IgcInputComponentEventMap } from '../input/input-base.js';\nimport { styles } from '../input/themes/input.base.css.js';\nimport { styles as shared } from '../input/themes/shared/input.common.css.js';\nimport { all } from '../input/themes/themes.js';\nimport {\n IgcMaskInputBaseComponent,\n type MaskSelection,\n} from '../mask-input/mask-input-base.js';\nimport IgcValidationContainerComponent from '../validation-container/validation-container.js';\nimport {\n DatePart,\n type DatePartDeltas,\n type DatePartInfo,\n DateParts,\n DateTimeUtil,\n} from './date-util.js';\nimport { dateTimeInputValidators } from './validators.js';\n\nexport interface IgcDateTimeInputComponentEventMap extends Omit<\n IgcInputComponentEventMap,\n 'igcChange'\n> {\n igcChange: CustomEvent<Date | null>;\n}\n\nconst Slots = setSlots(\n 'prefix',\n 'suffix',\n 'helper-text',\n 'value-missing',\n 'range-overflow',\n 'range-underflow',\n 'custom-error',\n 'invalid'\n);\n\n/**\n * A date time input is an input field that lets you set and edit the date and time in a chosen input element\n * using customizable display and input formats.\n *\n * @element igc-date-time-input\n *\n * @slot prefix - Renders content before the input.\n * @slot suffix - Renders content after input.\n * @slot helper-text - Renders content below the input.\n * @slot value-missing - Renders content when the required validation fails.\n * @slot range-overflow - Renders content when the max validation fails.\n * @slot range-underflow - Renders content when the min validation fails.\n * @slot custom-error - Renders content when setCustomValidity(message) is set.\n * @slot invalid - Renders content when the component is in invalid state (validity.valid = false).\n *\n * @fires igcInput - Emitted when the control input receives user input.\n * @fires igcChange - Emitted when the control's checked state changes.\n *\n * @csspart container - The main wrapper that holds all main input elements.\n * @csspart input - The native input element.\n * @csspart label - The native label element.\n * @csspart prefix - The prefix wrapper.\n * @csspart suffix - The suffix wrapper.\n * @csspart helper-text - The helper text wrapper.\n */\nexport default class IgcDateTimeInputComponent extends EventEmitterMixin<\n IgcDateTimeInputComponentEventMap,\n AbstractConstructor<IgcMaskInputBaseComponent>\n>(IgcMaskInputBaseComponent) {\n public static readonly tagName = 'igc-date-time-input';\n public static styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(\n IgcDateTimeInputComponent,\n IgcValidationContainerComponent\n );\n }\n\n protected override get __validators() {\n return dateTimeInputValidators;\n }\n\n protected override readonly _themes = addThemingController(this, all);\n\n protected override readonly _slots = addSlotController(this, {\n slots: Slots,\n });\n\n protected override readonly _formValue = createFormValueState(this, {\n initialValue: null,\n transformers: FormValueDateTimeTransformers,\n });\n\n private readonly _i18nController = addI18nController<object>(this, {\n defaultEN: {},\n onResourceChange: () => {\n this.setDefaultMask();\n },\n });\n\n protected _defaultMask!: string;\n private _defaultDisplayFormat!: string;\n private _displayFormat?: string;\n private _oldValue: Date | null = null;\n private _min: Date | null = null;\n private _max: Date | null = null;\n\n private _inputDateParts!: DatePartInfo[];\n private _inputFormat!: string;\n private _datePartDeltas: DatePartDeltas = {\n date: 1,\n month: 1,\n year: 1,\n hours: 1,\n minutes: 1,\n seconds: 1,\n };\n\n /**\n * The date format to apply on the input.\n * @attr input-format\n */\n @property({ attribute: 'input-format' })\n public get inputFormat(): string {\n return this._inputFormat || this._defaultMask;\n }\n\n public set inputFormat(val: string) {\n if (val) {\n this.setMask(val);\n this._inputFormat = val;\n if (this.value) {\n this.updateMask();\n }\n }\n }\n\n public get value(): Date | null {\n return this._formValue.value;\n }\n\n /* @tsTwoWayProperty(true, \"igcChange\", \"detail\", false) */\n /**\n * The value of the input.\n * @attr\n */\n @property({ converter: convertToDate })\n public set value(value: Date | string | null | undefined) {\n this._formValue.setValueAndFormState(value as Date | null);\n this.updateMask();\n }\n\n /**\n * The minimum value required for the input to remain valid.\n * @attr\n */\n @property({ converter: convertToDate })\n public set min(value: Date | string | null | undefined) {\n this._min = convertToDate(value);\n this._validate();\n }\n\n public get min(): Date | null {\n return this._min;\n }\n\n /**\n * The maximum value required for the input to remain valid.\n * @attr\n */\n @property({ converter: convertToDate })\n public set max(value: Date | string | null | undefined) {\n this._max = convertToDate(value);\n this._validate();\n }\n\n public get max(): Date | null {\n return this._max;\n }\n\n /**\n * Format to display the value in when not editing.\n * Defaults to the locale format if not set.\n * @attr display-format\n */\n @property({ attribute: 'display-format' })\n public set displayFormat(value: string) {\n this._displayFormat = value;\n }\n\n public get displayFormat(): string {\n return (\n this._displayFormat ?? this._inputFormat ?? this._defaultDisplayFormat\n );\n }\n\n /**\n * Delta values used to increment or decrement each date part on step actions.\n * All values default to `1`.\n */\n @property({ attribute: false })\n public spinDelta!: DatePartDeltas;\n\n /**\n * Sets whether to loop over the currently spun segment.\n * @attr spin-loop\n */\n @property({ type: Boolean, attribute: 'spin-loop' })\n public spinLoop = true;\n\n /**\n * Gets/Sets the locale used for formatting the display value.\n * @attr locale\n */\n @property()\n public set locale(value: string) {\n this._i18nController.locale = value;\n }\n\n public get locale(): string {\n return this._i18nController.locale;\n }\n\n @watch('locale', { waitUntilFirstUpdate: true })\n protected setDefaultMask(): void {\n this.updateDefaultDisplayFormat();\n\n if (!this._inputFormat) {\n this.updateDefaultMask();\n this.setMask(this._defaultMask);\n }\n\n if (this.value) {\n this.updateMask();\n }\n }\n\n @watch('displayFormat', { waitUntilFirstUpdate: true })\n protected setDisplayFormat(): void {\n this.updateDefaultDisplayFormat();\n if (this.value) {\n this.updateMask();\n }\n }\n\n protected get hasDateParts(): boolean {\n const parts =\n this._inputDateParts ||\n DateTimeUtil.parseDateTimeFormat(this.inputFormat, this.locale);\n\n return parts.some(\n (p) =>\n p.type === DateParts.Date ||\n p.type === DateParts.Month ||\n p.type === DateParts.Year\n );\n }\n\n protected get hasTimeParts(): boolean {\n const parts =\n this._inputDateParts ||\n DateTimeUtil.parseDateTimeFormat(this.inputFormat, this.locale);\n return parts.some(\n (p) =>\n p.type === DateParts.Hours ||\n p.type === DateParts.Minutes ||\n p.type === DateParts.Seconds\n );\n }\n\n private get targetDatePart(): DatePart | undefined {\n let result: DatePart | undefined;\n\n if (this._focused) {\n const partType = this._inputDateParts.find(\n (p) =>\n p.start <= this._inputSelection.start &&\n this._inputSelection.start <= p.end &&\n p.type !== DateParts.Literal\n )?.type as string as DatePart;\n\n if (partType) {\n result = partType;\n }\n } else if (this._inputDateParts.some((p) => p.type === DateParts.Date)) {\n result = DatePart.Date;\n } else if (this._inputDateParts.some((p) => p.type === DateParts.Hours)) {\n result = DatePart.Hours;\n } else {\n result = this._inputDateParts[0].type as string as DatePart;\n }\n\n return result;\n }\n\n private get datePartDeltas(): DatePartDeltas {\n return Object.assign({}, this._datePartDeltas, this.spinDelta);\n }\n\n constructor() {\n super();\n\n addKeybindings(this, {\n skip: () => this.readOnly,\n bindingDefaults: { triggers: ['keydownRepeat'] },\n })\n .set([ctrlKey, ';'], this.setToday)\n .set(arrowUp, this.keyboardSpin.bind(this, 'up'))\n .set(arrowDown, this.keyboardSpin.bind(this, 'down'))\n .set([ctrlKey, arrowLeft], this.navigateParts.bind(this, 0))\n .set([ctrlKey, arrowRight], this.navigateParts.bind(this, 1));\n }\n\n public override connectedCallback() {\n super.connectedCallback();\n this.updateDefaultMask();\n this.updateDefaultDisplayFormat();\n this.setMask(this.inputFormat);\n if (this.value) {\n this.updateMask();\n }\n }\n\n /** Increments a date/time portion. */\n public stepUp(datePart?: DatePart, delta?: number): void {\n const targetPart = datePart || this.targetDatePart;\n\n if (!targetPart) {\n return;\n }\n\n const { start, end } = this._inputSelection;\n const newValue = this.trySpinValue(targetPart, delta);\n this.value = newValue;\n this.updateComplete.then(() => this._input?.setSelectionRange(start, end));\n }\n\n /** Decrements a date/time portion. */\n public stepDown(datePart?: DatePart, delta?: number): void {\n const targetPart = datePart || this.targetDatePart;\n\n if (!targetPart) {\n return;\n }\n\n const { start, end } = this._inputSelection;\n const newValue = this.trySpinValue(targetPart, delta, true);\n this.value = newValue;\n this.updateComplete.then(() => this._input?.setSelectionRange(start, end));\n }\n\n /** Clears the input element of user input. */\n public clear(): void {\n this._maskedValue = '';\n this.value = null;\n }\n\n protected setToday() {\n this.value = new Date();\n this._fireInputEvent();\n }\n\n protected updateMask() {\n if (this._focused) {\n this._maskedValue = this.getMaskedValue();\n } else {\n if (!DateTimeUtil.isValidDate(this.value)) {\n this._maskedValue = '';\n return;\n }\n\n this._maskedValue = DateTimeUtil.formatDisplayDate(\n this.value,\n this.locale,\n this.displayFormat\n );\n }\n }\n\n private _fireInputEvent(): void {\n this._setTouchedState();\n this.emitEvent('igcInput', { detail: this.value?.toString() });\n }\n\n protected handleDragLeave() {\n if (!this._focused) {\n this.updateMask();\n }\n }\n\n protected handleDragEnter() {\n if (!this._focused) {\n this._maskedValue = this.getMaskedValue();\n }\n }\n\n protected async _updateInput(\n text: string,\n { start, end }: MaskSelection\n ): Promise<void> {\n const result = this._parser.replace(this._maskedValue, text, start, end);\n\n this._maskedValue = result.value;\n\n this.updateValue();\n this.requestUpdate();\n\n if (start !== this.inputFormat.length) {\n this._fireInputEvent();\n }\n\n await this.updateComplete;\n this._input?.setSelectionRange(result.end, result.end);\n }\n\n private trySpinValue(\n datePart: DatePart,\n delta?: number,\n negative = false\n ): Date {\n // default to 1 if a delta is set to 0 or any other falsy value\n const _delta =\n delta || this.datePartDeltas[datePart as keyof DatePartDeltas] || 1;\n\n const spinValue = negative ? -Math.abs(_delta) : Math.abs(_delta);\n return this.spinValue(datePart, spinValue);\n }\n\n private spinValue(datePart: DatePart, delta: number): Date {\n if (!(this.value && DateTimeUtil.isValidDate(this.value))) {\n return new Date();\n }\n\n const newDate = new Date(this.value.getTime());\n let formatPart: DatePartInfo | undefined;\n let amPmFromMask: string;\n\n switch (datePart) {\n case DatePart.Date:\n DateTimeUtil.spinDate(delta, newDate, this.spinLoop);\n break;\n case DatePart.Month:\n DateTimeUtil.spinMonth(delta, newDate, this.spinLoop);\n break;\n case DatePart.Year:\n DateTimeUtil.spinYear(delta, newDate);\n break;\n case DatePart.Hours:\n DateTimeUtil.spinHours(delta, newDate, this.spinLoop);\n break;\n case DatePart.Minutes:\n DateTimeUtil.spinMinutes(delta, newDate, this.spinLoop);\n break;\n case DatePart.Seconds:\n DateTimeUtil.spinSeconds(delta, newDate, this.spinLoop);\n break;\n case DatePart.AmPm:\n formatPart = this._inputDateParts.find(\n (dp) => dp.type === DateParts.AmPm\n );\n if (formatPart !== undefined) {\n amPmFromMask = this._maskedValue.substring(\n formatPart!.start,\n formatPart!.end\n );\n return DateTimeUtil.spinAmPm(newDate, this.value, amPmFromMask);\n }\n break;\n }\n\n return newDate;\n }\n\n @eventOptions({ passive: false })\n private async onWheel(event: WheelEvent) {\n if (!this._focused || this.readOnly) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n const { start, end } = this._inputSelection;\n event.deltaY > 0 ? this.stepDown() : this.stepUp();\n this._fireInputEvent();\n\n await this.updateComplete;\n this.setSelectionRange(start, end);\n }\n\n private updateDefaultMask(): void {\n this._defaultMask = DateTimeUtil.getDefaultInputMask(this.locale);\n }\n\n private updateDefaultDisplayFormat(): void {\n this._defaultDisplayFormat = getDateFormatter().getLocaleDateTimeFormat(\n this.locale\n );\n }\n\n private setMask(string: string): void {\n const oldFormat = this._inputDateParts?.map((p) => p.format).join('');\n this._inputDateParts = DateTimeUtil.parseDateTimeFormat(\n string,\n this.locale,\n true\n );\n const value = this._inputDateParts.map((p) => p.format).join('');\n\n this._defaultMask = value;\n\n const newMask = (value || DateTimeUtil.DEFAULT_INPUT_FORMAT).replace(\n new RegExp(/(?=[^t])[\\w]/, 'g'),\n '0'\n );\n\n this.mask = newMask.includes('tt') ? newMask.replace(/tt/g, 'LL') : newMask;\n\n if (!this.placeholder || oldFormat === this.placeholder) {\n this.placeholder = value;\n }\n }\n\n private parseDate(val: string) {\n return val\n ? DateTimeUtil.parseValueFromMask(val, this._inputDateParts, this.prompt)\n : null;\n }\n\n private getMaskedValue(): string {\n let mask = this._parser.emptyMask;\n\n if (DateTimeUtil.isValidDate(this.value)) {\n for (const part of this._inputDateParts) {\n if (part.type === DateParts.Literal) {\n continue;\n }\n\n const targetValue = DateTimeUtil.getPartValue(\n part,\n part.format.length,\n this.value\n );\n\n mask = this._parser.replace(\n mask,\n targetValue,\n part.start,\n part.end\n ).value;\n }\n return mask;\n }\n\n if (this.readOnly) {\n return '';\n }\n\n return this._maskedValue === '' ? mask : this._maskedValue;\n }\n\n private isComplete(): boolean {\n return !this._maskedValue.includes(this.prompt);\n }\n\n private updateValue(): void {\n if (this.isComplete()) {\n const parsedDate = this.parseDate(this._maskedValue);\n this.value = DateTimeUtil.isValidDate(parsedDate) ? parsedDate : null;\n } else {\n this.value = null;\n }\n }\n\n protected override _updateSetRangeTextValue() {\n this.updateValue();\n }\n\n private getNewPosition(value: string, direction = 0): number {\n const cursorPos = this._maskSelection.start;\n\n if (!direction) {\n // Last literal before the current cursor position or start of input value\n const part = this._inputDateParts.findLast(\n (part) => part.type === DateParts.Literal && part.end < cursorPos\n );\n return part?.end ?? 0;\n }\n\n // First literal after the current cursor position or end of input value\n const part = this._inputDateParts.find(\n (part) => part.type === DateParts.Literal && part.start > cursorPos\n );\n return part?.start ?? value.length;\n }\n\n protected async handleFocus() {\n this._focused = true;\n\n if (this.readOnly) {\n return;\n }\n\n this._oldValue = this.value;\n const areFormatsDifferent = this.displayFormat !== this.inputFormat;\n\n if (!this.value) {\n this._maskedValue = this._parser.emptyMask;\n await this.updateComplete;\n this.select();\n } else if (areFormatsDifferent) {\n this.updateMask();\n }\n }\n\n protected handleBlur() {\n const isEmptyMask = this._maskedValue === this._parser.emptyMask;\n\n this._focused = false;\n\n if (!(this.isComplete() || isEmptyMask)) {\n const parse = this.parseDate(this._maskedValue);\n\n if (parse) {\n this.value = parse;\n } else {\n this.value = null;\n this._maskedValue = '';\n }\n } else {\n this.updateMask();\n }\n\n const isSameValue = this._oldValue === this.value;\n\n if (!(this.readOnly || isSameValue)) {\n this.emitEvent('igcChange', { detail: this.value });\n }\n\n super._handleBlur();\n }\n\n protected navigateParts(delta: number) {\n const position = this.getNewPosition(this._input?.value ?? '', delta);\n this.setSelectionRange(position, position);\n }\n\n protected async keyboardSpin(direction: 'up' | 'down') {\n direction === 'up' ? this.stepUp() : this.stepDown();\n this._fireInputEvent();\n await this.updateComplete;\n this.setSelectionRange(this._maskSelection.start, this._maskSelection.end);\n }\n\n protected override _renderInput() {\n return html`\n <input\n type=\"text\"\n part=${partMap(this._resolvePartNames('input'))}\n name=${ifDefined(this.name)}\n .value=${live(this._maskedValue)}\n .placeholder=${this.placeholder || this._parser.emptyMask}\n ?readonly=${this.readOnly}\n ?disabled=${this.disabled}\n @blur=${this.handleBlur}\n @focus=${this.handleFocus}\n @input=${this._handleInput}\n @wheel=${this.onWheel}\n @keydown=${this._setMaskSelection}\n @click=${this._handleClick}\n @cut=${this._setMaskSelection}\n @compositionstart=${this._handleCompositionStart}\n @compositionend=${this._handleCompositionEnd}\n @dragenter=${this.handleDragEnter}\n @dragleave=${this.handleDragLeave}\n @dragstart=${this._setMaskSelection}\n />\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-date-time-input': IgcDateTimeInputComponent;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"date-time-input.js","sourceRoot":"","sources":["../../../src/components/date-time-input/date-time-input.ts"],"names":[],"mappings":"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","sourcesContent":["import { getDateFormatter } from 'igniteui-i18n-core';\nimport { html, type PropertyValues } from 'lit';\nimport { eventOptions, property } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { live } from 'lit/directives/live.js';\nimport { addThemingController } from '../../theming/theming-controller.js';\nimport { convertToDate, isValidDate } from '../calendar/helpers.js';\nimport {\n addKeybindings,\n arrowDown,\n arrowLeft,\n arrowRight,\n arrowUp,\n ctrlKey,\n} from '../common/controllers/key-bindings.js';\nimport { addSlotController, setSlots } from '../common/controllers/slot.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport {\n addI18nController,\n formatDisplayDate,\n getDefaultDateTimeFormat,\n} from '../common/i18n/i18n-controller.js';\nimport type { AbstractConstructor } from '../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../common/mixins/event-emitter.js';\nimport { FormValueDateTimeTransformers } from '../common/mixins/forms/form-transformers.js';\nimport { createFormValueState } from '../common/mixins/forms/form-value.js';\nimport { partMap } from '../common/part-map.js';\nimport type { IgcInputComponentEventMap } from '../input/input-base.js';\nimport { styles } from '../input/themes/input.base.css.js';\nimport { styles as shared } from '../input/themes/shared/input.common.css.js';\nimport { all } from '../input/themes/themes.js';\nimport {\n IgcMaskInputBaseComponent,\n type MaskSelection,\n} from '../mask-input/mask-input-base.js';\nimport IgcValidationContainerComponent from '../validation-container/validation-container.js';\nimport {\n DatePart,\n type DatePartDeltas,\n DEFAULT_DATE_PARTS_SPIN_DELTAS,\n} from './date-part.js';\nimport {\n createDatePart,\n DateParts,\n DateTimeMaskParser,\n} from './datetime-mask-parser.js';\nimport { dateTimeInputValidators } from './validators.js';\n\nexport interface IgcDateTimeInputComponentEventMap extends Omit<\n IgcInputComponentEventMap,\n 'igcChange'\n> {\n igcChange: CustomEvent<Date | null>;\n}\n\nconst Slots = setSlots(\n 'prefix',\n 'suffix',\n 'helper-text',\n 'value-missing',\n 'range-overflow',\n 'range-underflow',\n 'custom-error',\n 'invalid'\n);\n\n/**\n * A date time input is an input field that lets you set and edit the date and time in a chosen input element\n * using customizable display and input formats.\n *\n * @element igc-date-time-input\n *\n * @slot prefix - Renders content before the input.\n * @slot suffix - Renders content after input.\n * @slot helper-text - Renders content below the input.\n * @slot value-missing - Renders content when the required validation fails.\n * @slot range-overflow - Renders content when the max validation fails.\n * @slot range-underflow - Renders content when the min validation fails.\n * @slot custom-error - Renders content when setCustomValidity(message) is set.\n * @slot invalid - Renders content when the component is in invalid state (validity.valid = false).\n *\n * @fires igcInput - Emitted when the control input receives user input.\n * @fires igcChange - Emitted when the control's checked state changes.\n *\n * @csspart container - The main wrapper that holds all main input elements.\n * @csspart input - The native input element.\n * @csspart label - The native label element.\n * @csspart prefix - The prefix wrapper.\n * @csspart suffix - The suffix wrapper.\n * @csspart helper-text - The helper text wrapper.\n */\nexport default class IgcDateTimeInputComponent extends EventEmitterMixin<\n IgcDateTimeInputComponentEventMap,\n AbstractConstructor<IgcMaskInputBaseComponent>\n>(IgcMaskInputBaseComponent) {\n public static readonly tagName = 'igc-date-time-input';\n public static styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(\n IgcDateTimeInputComponent,\n IgcValidationContainerComponent\n );\n }\n\n //#region Private state and properties\n\n protected override readonly _parser = new DateTimeMaskParser();\n\n // Format and mask state\n private _defaultDisplayFormat = '';\n private _displayFormat?: string;\n private _inputFormat?: string;\n\n // Value tracking\n private _oldValue: Date | null = null;\n private _min: Date | null = null;\n private _max: Date | null = null;\n\n private readonly _i18nController = addI18nController(this, {\n defaultEN: {},\n onResourceChange: this._handleResourceChange,\n });\n\n protected override readonly _themes = addThemingController(this, all);\n\n protected override readonly _slots = addSlotController(this, {\n slots: Slots,\n });\n\n protected override readonly _formValue = createFormValueState(this, {\n initialValue: null,\n transformers: FormValueDateTimeTransformers,\n });\n\n protected override get __validators() {\n return dateTimeInputValidators;\n }\n\n /**\n * Determines which date/time part is currently targeted based on cursor position.\n * When focused, returns the part under the cursor.\n * When unfocused, returns a default part based on available parts.\n */\n private get _targetDatePart(): DatePart | undefined {\n return this._focused\n ? this._getDatePartAtCursor()\n : this._getDefaultDatePart();\n }\n\n private get _datePartDeltas(): DatePartDeltas {\n return { ...DEFAULT_DATE_PARTS_SPIN_DELTAS, ...this.spinDelta };\n }\n\n //#endregion\n\n //#region Public attributes and properties\n\n /**\n * The date format to apply on the input.\n * @attr input-format\n */\n @property({ attribute: 'input-format' })\n public set inputFormat(val: string) {\n if (val) {\n this._applyMask(val);\n this._inputFormat = val;\n this._updateMaskDisplay();\n }\n }\n\n public get inputFormat(): string {\n return this._inputFormat || this._parser.mask;\n }\n\n /* @tsTwoWayProperty(true, \"igcChange\", \"detail\", false) */\n /**\n * The value of the input.\n * @attr\n */\n @property({ converter: convertToDate })\n public set value(value: Date | string | null | undefined) {\n this._formValue.setValueAndFormState(value as Date | null);\n this._updateMaskDisplay();\n }\n\n public get value(): Date | null {\n return this._formValue.value;\n }\n\n /**\n * The minimum value required for the input to remain valid.\n * @attr\n */\n @property({ converter: convertToDate })\n public set min(value: Date | string | null | undefined) {\n this._min = convertToDate(value);\n this._validate();\n }\n\n public get min(): Date | null {\n return this._min;\n }\n\n /**\n * The maximum value required for the input to remain valid.\n * @attr\n */\n @property({ converter: convertToDate })\n public set max(value: Date | string | null | undefined) {\n this._max = convertToDate(value);\n this._validate();\n }\n\n public get max(): Date | null {\n return this._max;\n }\n\n /**\n * Format to display the value in when not editing.\n * Defaults to the locale format if not set.\n * @attr display-format\n */\n @property({ attribute: 'display-format' })\n public set displayFormat(value: string) {\n this._displayFormat = value;\n }\n\n public get displayFormat(): string {\n return (\n this._displayFormat ?? this._inputFormat ?? this._defaultDisplayFormat\n );\n }\n\n /**\n * Delta values used to increment or decrement each date part on step actions.\n * All values default to `1`.\n */\n @property({ attribute: false })\n public spinDelta?: DatePartDeltas;\n\n /**\n * Sets whether to loop over the currently spun segment.\n * @attr spin-loop\n */\n @property({ type: Boolean, attribute: 'spin-loop' })\n public spinLoop = true;\n\n /**\n * Gets/Sets the locale used for formatting the display value.\n * @attr locale\n */\n @property()\n public set locale(value: string) {\n this._i18nController.locale = value;\n }\n\n public get locale(): string {\n return this._i18nController.locale;\n }\n\n //#endregion\n\n //#region Lifecycle Hooks\n\n constructor() {\n super();\n\n addKeybindings(this, {\n skip: () => this.readOnly,\n bindingDefaults: { triggers: ['keydownRepeat'] },\n })\n .set([ctrlKey, ';'], this._setCurrentDateTime)\n .set(arrowUp, this._keyboardSpin.bind(this, 'up'))\n .set(arrowDown, this._keyboardSpin.bind(this, 'down'))\n .set([ctrlKey, arrowLeft], this._navigateParts.bind(this, 0))\n .set([ctrlKey, arrowRight], this._navigateParts.bind(this, 1));\n }\n\n protected override update(props: PropertyValues<this>): void {\n if (props.has('displayFormat')) {\n this._updateDefaultDisplayFormat();\n }\n\n if (props.has('locale')) {\n this._initializeDefaultMask();\n }\n\n if (props.has('displayFormat') || props.has('locale')) {\n this._updateMaskDisplay();\n }\n\n super.update(props);\n }\n\n //#endregion\n\n //#region Overrides\n\n protected override _resolvePartNames(base: string) {\n const result = super._resolvePartNames(base);\n // Apply `filled` part when the mask is not empty\n result.filled = result.filled || !this._isEmptyMask;\n return result;\n }\n\n protected override _updateSetRangeTextValue(): void {\n this._updateValueFromMask();\n }\n\n //#endregion\n\n //#region Event handlers\n\n private _emitInputEvent(): void {\n this._setTouchedState();\n this.emitEvent('igcInput', { detail: this.value?.toString() });\n }\n\n private _handleResourceChange(): void {\n this._initializeDefaultMask();\n this._updateMaskDisplay();\n }\n\n protected _handleDragLeave(): void {\n if (!this._focused) {\n this._updateMaskDisplay();\n }\n }\n\n protected _handleDragEnter(): void {\n if (!this._focused) {\n this._maskedValue = this._buildMaskedValue();\n }\n }\n\n @eventOptions({ passive: false })\n private async _handleWheel(event: WheelEvent): Promise<void> {\n if (!this._focused || this.readOnly) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n const { start, end } = this._inputSelection;\n event.deltaY > 0 ? this.stepDown() : this.stepUp();\n this._emitInputEvent();\n\n await this.updateComplete;\n this.setSelectionRange(start, end);\n }\n\n protected async _handleFocus(): Promise<void> {\n this._focused = true;\n\n if (this.readOnly) {\n return;\n }\n\n this._oldValue = this.value;\n\n if (!this.value) {\n this._maskedValue = this._parser.emptyMask;\n await this.updateComplete;\n this.select();\n } else if (this.displayFormat !== this.inputFormat) {\n this._updateMaskDisplay();\n }\n }\n\n protected override _handleBlur(): void {\n this._focused = false;\n\n // Handle incomplete mask input\n if (!(this._isMaskComplete() || this._isEmptyMask)) {\n const parsedDate = this._parser.parseDate(this._maskedValue);\n\n if (parsedDate) {\n this.value = parsedDate;\n } else {\n this.clear();\n }\n } else {\n this._updateMaskDisplay();\n }\n\n // Emit change event if value changed\n if (!this.readOnly && this._oldValue !== this.value) {\n this.emitEvent('igcChange', { detail: this.value });\n }\n\n super._handleBlur();\n }\n\n //#endregion\n\n //#region Keybindings\n\n protected _setCurrentDateTime(): void {\n this.value = new Date();\n this._emitInputEvent();\n }\n\n /**\n * Navigates to the previous or next date part.\n */\n protected _navigateParts(direction: number): void {\n const position = this._calculatePartNavigationPosition(\n this._input?.value ?? '',\n direction\n );\n this.setSelectionRange(position, position);\n }\n\n /**\n * Calculates the new cursor position when navigating between date parts.\n * direction = 0: navigate to start of previous part\n * direction = 1: navigate to start of next part\n */\n private _calculatePartNavigationPosition(\n inputValue: string,\n direction: number\n ): number {\n const cursorPos = this._maskSelection.start;\n const dateParts = this._parser.dateParts;\n\n if (direction === 0) {\n // Navigate backwards: find last literal before cursor\n const part = dateParts.findLast(\n (part) => part.type === DateParts.Literal && part.end < cursorPos\n );\n return part?.end ?? 0;\n }\n\n // Navigate forwards: find first literal after cursor\n const part = dateParts.find(\n (part) => part.type === DateParts.Literal && part.start > cursorPos\n );\n return part?.start ?? inputValue.length;\n }\n\n /**\n * Handles keyboard-triggered spinning (arrow up/down).\n */\n protected async _keyboardSpin(direction: 'up' | 'down'): Promise<void> {\n direction === 'up' ? this.stepUp() : this.stepDown();\n this._emitInputEvent();\n await this.updateComplete;\n this.setSelectionRange(this._maskSelection.start, this._maskSelection.end);\n }\n\n //#endregion\n\n //#region Internal API\n\n /**\n * Updates the displayed mask value based on focus state.\n * When focused, shows the editable mask. When unfocused, shows formatted display value.\n */\n protected _updateMaskDisplay(): void {\n if (this._focused) {\n this._maskedValue = this._buildMaskedValue();\n return;\n }\n\n if (!isValidDate(this.value)) {\n this._maskedValue = '';\n return;\n }\n\n this._maskedValue = formatDisplayDate(\n this.value,\n this.locale,\n this.displayFormat\n );\n }\n\n protected async _updateInput(\n text: string,\n { start, end }: MaskSelection\n ): Promise<void> {\n const result = this._parser.replace(this._maskedValue, text, start, end);\n\n this._maskedValue = result.value;\n\n this._updateValueFromMask();\n this.requestUpdate();\n\n if (start !== this.inputFormat.length) {\n this._emitInputEvent();\n }\n\n await this.updateComplete;\n this._input?.setSelectionRange(result.end, result.end);\n }\n\n /**\n * Common logic for stepping up or down a date part.\n */\n private _performStep(\n datePart: DatePart | undefined,\n delta: number | undefined,\n isDecrement: boolean\n ): void {\n const part = datePart || this._targetDatePart;\n const { start, end } = this._inputSelection;\n\n this.value = this._calculateSpunValue(part!, delta, isDecrement);\n this.updateComplete.then(() => this._input?.setSelectionRange(start, end));\n }\n\n /**\n * Calculates the new date value after spinning a date part.\n */\n private _calculateSpunValue(\n datePart: DatePart,\n delta: number | undefined,\n isDecrement: boolean\n ): Date {\n // Default to 1 if delta is 0 or undefined\n const effectiveDelta =\n delta || this._datePartDeltas[datePart as keyof DatePartDeltas] || 1;\n\n const spinAmount = isDecrement\n ? -Math.abs(effectiveDelta)\n : Math.abs(effectiveDelta);\n\n return this._spinDatePart(datePart, spinAmount);\n }\n\n /**\n * Spins a specific date part by the given delta.\n */\n private _spinDatePart(datePart: DatePart, delta: number): Date {\n if (!isValidDate(this.value)) {\n return new Date();\n }\n\n const newDate = new Date(this.value.getTime());\n const partType = datePart as unknown as DateParts;\n\n // Get the part instance from the parser, or create one for explicit spin operations\n let part = this._parser.getPartByType(partType);\n if (!part) {\n // For explicit spin operations (e.g., stepDown(DatePart.Minutes)),\n // create a temporary part even if not in the format\n part = createDatePart(partType, { start: 0, end: 0, format: '' });\n }\n\n // For AM/PM, we need to extract the current AM/PM value from the mask\n let amPmValue: string | undefined;\n if (datePart === DatePart.AmPm) {\n const formatPart = this._parser.getPartByType(DateParts.AmPm);\n if (formatPart) {\n amPmValue = this._maskedValue.substring(\n formatPart.start,\n formatPart.end\n );\n }\n }\n\n part.spin(delta, {\n date: newDate,\n spinLoop: this.spinLoop,\n amPmValue,\n originalDate: this.value,\n });\n\n return newDate;\n }\n\n /**\n * Updates the default display format based on current locale.\n */\n private _updateDefaultDisplayFormat(): void {\n this._defaultDisplayFormat = getDateFormatter().getLocaleDateTimeFormat(\n this.locale\n );\n }\n\n /**\n * Applies a mask pattern to the input, parsing the format string into date parts.\n */\n private _applyMask(formatString: string): void {\n const previous = this._parser.mask;\n this._parser.mask = formatString;\n\n // Update placeholder if not set or if it matches the old format\n if (!this.placeholder || previous === this.placeholder) {\n this.placeholder = this._parser.mask;\n }\n }\n\n /**\n * Builds the masked value string from the current date value.\n * Returns empty mask if no value, or existing masked value if incomplete.\n */\n private _buildMaskedValue(): string {\n return isValidDate(this.value)\n ? this._parser.formatDate(this.value)\n : this._maskedValue || this._parser.emptyMask;\n }\n\n protected _initializeDefaultMask(): void {\n this._updateDefaultDisplayFormat();\n\n if (!this._inputFormat) {\n this._applyMask(getDefaultDateTimeFormat(this.locale));\n }\n }\n\n /**\n * Gets the date part at the current cursor position.\n * Uses inclusive end to handle cursor at the end of the last part.\n * Returns undefined if cursor is not within a valid date part.\n */\n private _getDatePartAtCursor(): DatePart | undefined {\n return this._parser.getDatePartForCursor(this._inputSelection.start)\n ?.type as DatePart | undefined;\n }\n\n /**\n * Gets the default date part to target when the input is not focused.\n * Prioritizes: Date > Hours > First available part\n */\n private _getDefaultDatePart(): DatePart | undefined {\n return (this._parser.getPartByType(DateParts.Date)?.type ??\n this._parser.getPartByType(DateParts.Hours)?.type ??\n this._parser.getFirstDatePart()?.type) as DatePart | undefined;\n }\n\n /**\n * Checks if all mask positions are filled (no prompt characters remain).\n */\n private _isMaskComplete(): boolean {\n return !this._maskedValue.includes(this.prompt);\n }\n\n /**\n * Updates the internal value based on the current masked input.\n * Only sets a value if the mask is complete and parses to a valid date.\n */\n private _updateValueFromMask(): void {\n if (!this._isMaskComplete()) {\n this.value = null;\n return;\n }\n\n const parsedDate = this._parser.parseDate(this._maskedValue);\n this.value = isValidDate(parsedDate) ? parsedDate : null;\n }\n\n //#endregion\n\n //#region Public API\n\n /** Increments a date/time portion. */\n public stepUp(datePart?: DatePart, delta?: number): void {\n this._performStep(datePart, delta, false);\n }\n\n /** Decrements a date/time portion. */\n public stepDown(datePart?: DatePart, delta?: number): void {\n this._performStep(datePart, delta, true);\n }\n\n /** Clears the input element of user input. */\n public clear(): void {\n this._maskedValue = '';\n this.value = null;\n }\n\n /* blazorSuppress */\n /**\n * Checks whether the current format includes date parts (day, month, year).\n * @internal\n */\n public hasDateParts(): boolean {\n return this._parser.hasDateParts();\n }\n\n /* blazorSuppress */\n /**\n * Checks whether the current format includes time parts (hours, minutes, seconds).\n * @internal\n */\n public hasTimeParts(): boolean {\n return this._parser.hasTimeParts();\n }\n\n //#endregion\n\n protected override _renderInput() {\n return html`\n <input\n type=\"text\"\n part=${partMap(this._resolvePartNames('input'))}\n name=${ifDefined(this.name)}\n .value=${live(this._maskedValue)}\n .placeholder=${this.placeholder || this._parser.emptyMask}\n ?readonly=${this.readOnly}\n ?disabled=${this.disabled}\n @blur=${this._handleBlur}\n @focus=${this._handleFocus}\n @input=${this._handleInput}\n @wheel=${this._handleWheel}\n @keydown=${this._setMaskSelection}\n @click=${this._handleClick}\n @cut=${this._setMaskSelection}\n @compositionstart=${this._handleCompositionStart}\n @compositionend=${this._handleCompositionEnd}\n @dragenter=${this._handleDragEnter}\n @dragleave=${this._handleDragLeave}\n @dragstart=${this._setMaskSelection}\n />\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-date-time-input': IgcDateTimeInputComponent;\n }\n}\n"]}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { MaskParser } from '../mask-input/mask-parser.js';
|
|
2
|
+
import { createDatePart, DatePartType, type IDatePart } from './date-part.js';
|
|
3
|
+
/**
|
|
4
|
+
* Types of date/time parts that can appear in a format string.
|
|
5
|
+
* Re-exported from date-part.ts for backward compatibility.
|
|
6
|
+
*/
|
|
7
|
+
export { DatePartType as DateParts };
|
|
8
|
+
/**
|
|
9
|
+
* Re-export createDatePart factory for creating standalone parts.
|
|
10
|
+
*/
|
|
11
|
+
export { createDatePart };
|
|
12
|
+
/**
|
|
13
|
+
* Information about a parsed date part within a format string.
|
|
14
|
+
* This is a type alias for IDatePart for backward compatibility.
|
|
15
|
+
*/
|
|
16
|
+
export type DatePartInfo = IDatePart;
|
|
17
|
+
/** Options for the DateTimeMaskParser */
|
|
18
|
+
export interface DateTimeMaskOptions {
|
|
19
|
+
/** The date/time format string (e.g., 'MM/dd/yyyy', 'HH:mm:ss') */
|
|
20
|
+
format?: string;
|
|
21
|
+
/** The prompt character for unfilled positions */
|
|
22
|
+
promptCharacter?: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* A specialized mask parser for date/time input fields.
|
|
26
|
+
* Extends MaskParser to handle date-specific format patterns and validation.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```ts
|
|
30
|
+
* const parser = new DateTimeMaskParser({ format: 'MM/dd/yyyy' });
|
|
31
|
+
* parser.apply('12252023'); // Returns '12/25/2023'
|
|
32
|
+
* parser.parseDate('12/25/2023'); // Returns Date object
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export declare class DateTimeMaskParser extends MaskParser {
|
|
36
|
+
/** Parsed date parts from the format string */
|
|
37
|
+
private _dateParts;
|
|
38
|
+
/**
|
|
39
|
+
* Gets the parsed date parts from the format string.
|
|
40
|
+
* Each part contains type, position, and format information.
|
|
41
|
+
*/
|
|
42
|
+
get dateParts(): ReadonlyArray<IDatePart>;
|
|
43
|
+
constructor(options?: DateTimeMaskOptions);
|
|
44
|
+
/**
|
|
45
|
+
* Sets a new date/time format and re-parses the date parts.
|
|
46
|
+
*/
|
|
47
|
+
set mask(value: string);
|
|
48
|
+
get mask(): string;
|
|
49
|
+
/**
|
|
50
|
+
* Parses the format string into IDatePart objects.
|
|
51
|
+
* This identifies each date/time component and its position.
|
|
52
|
+
*/
|
|
53
|
+
private _parseDateFormat;
|
|
54
|
+
/**
|
|
55
|
+
* Normalizes year format to 'yyyy' for editing (except for 'yy').
|
|
56
|
+
* Also updates the end position to account for the expanded format.
|
|
57
|
+
*/
|
|
58
|
+
private _normalizeYearFormatBuilder;
|
|
59
|
+
/**
|
|
60
|
+
* Parses a masked string into a Date object.
|
|
61
|
+
* Returns null if the string cannot be parsed into a valid date.
|
|
62
|
+
*
|
|
63
|
+
* @param masked - The masked input string to parse
|
|
64
|
+
* @returns A Date object or null if parsing fails
|
|
65
|
+
*/
|
|
66
|
+
parseDate(masked: string): Date | null;
|
|
67
|
+
/**
|
|
68
|
+
* Extracts numeric values from the masked string for each date part.
|
|
69
|
+
*/
|
|
70
|
+
private _extractDateValues;
|
|
71
|
+
/**
|
|
72
|
+
* Validates that parsed date parts are within valid ranges.
|
|
73
|
+
* Only validates parts that are present in the format.
|
|
74
|
+
* Uses the validate() method on each date part instance.
|
|
75
|
+
*/
|
|
76
|
+
private _validateDateParts;
|
|
77
|
+
/**
|
|
78
|
+
* Applies AM/PM conversion to hours if format includes AM/PM.
|
|
79
|
+
*/
|
|
80
|
+
private _applyAmPmConversion;
|
|
81
|
+
/**
|
|
82
|
+
* Creates a Date object from parsed parts with defaults for missing values.
|
|
83
|
+
*/
|
|
84
|
+
private _createDateFromParts;
|
|
85
|
+
/**
|
|
86
|
+
* Gets the number of days in a specific month/year.
|
|
87
|
+
*/
|
|
88
|
+
private _daysInMonth;
|
|
89
|
+
/**
|
|
90
|
+
* Formats a Date object into a masked string according to the current format.
|
|
91
|
+
*
|
|
92
|
+
* @param date - The date to format
|
|
93
|
+
* @returns The formatted masked string
|
|
94
|
+
*/
|
|
95
|
+
formatDate(date: Date | null): string;
|
|
96
|
+
/**
|
|
97
|
+
* Finds the date part at a given cursor position.
|
|
98
|
+
* Uses exclusive end (position < end) for precise character targeting.
|
|
99
|
+
*
|
|
100
|
+
* @param position - The cursor position to check
|
|
101
|
+
* @returns The DatePartInfo at that position, or undefined if not found
|
|
102
|
+
*/
|
|
103
|
+
getDatePartAtPosition(position: number): DatePartInfo | undefined;
|
|
104
|
+
/**
|
|
105
|
+
* Finds the date part for a cursor position, using inclusive end.
|
|
106
|
+
* This handles the edge case where cursor is at the end of the mask
|
|
107
|
+
* (position equals the end of the last part).
|
|
108
|
+
*
|
|
109
|
+
* @param position - The cursor position to check
|
|
110
|
+
* @returns The DatePartInfo at that position, or undefined if not found
|
|
111
|
+
*/
|
|
112
|
+
getDatePartForCursor(position: number): DatePartInfo | undefined;
|
|
113
|
+
/**
|
|
114
|
+
* Checks if the format includes any date parts (day, month, year).
|
|
115
|
+
*/
|
|
116
|
+
hasDateParts(): boolean;
|
|
117
|
+
/**
|
|
118
|
+
* Checks if the format includes any time parts (hours, minutes, seconds).
|
|
119
|
+
*/
|
|
120
|
+
hasTimeParts(): boolean;
|
|
121
|
+
/**
|
|
122
|
+
* Gets the first non-literal date part (useful for default selection).
|
|
123
|
+
*/
|
|
124
|
+
getFirstDatePart(): DatePartInfo | undefined;
|
|
125
|
+
/**
|
|
126
|
+
* Gets a specific type of date part.
|
|
127
|
+
*/
|
|
128
|
+
getPartByType(type: DatePartType): DatePartInfo | undefined;
|
|
129
|
+
/**
|
|
130
|
+
* Builds the internal mask pattern from the date format.
|
|
131
|
+
* Converts date format characters to mask pattern characters.
|
|
132
|
+
*/
|
|
133
|
+
protected _parseMaskLiterals(): void;
|
|
134
|
+
/**
|
|
135
|
+
* Converts a date format string to a mask format string.
|
|
136
|
+
* Date format chars become '0' (numeric) or 'L' (alpha for AM/PM).
|
|
137
|
+
*/
|
|
138
|
+
private _convertToMaskFormat;
|
|
139
|
+
}
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
import { asNumber, clamp } from '../common/util.js';
|
|
2
|
+
import { MaskParser } from '../mask-input/mask-parser.js';
|
|
3
|
+
import { createDatePart, DatePartType } from './date-part.js';
|
|
4
|
+
export { DatePartType as DateParts };
|
|
5
|
+
export { createDatePart };
|
|
6
|
+
const FORMAT_CHAR_TO_DATE_PART = new Map([
|
|
7
|
+
['d', DatePartType.Date],
|
|
8
|
+
['D', DatePartType.Date],
|
|
9
|
+
['M', DatePartType.Month],
|
|
10
|
+
['y', DatePartType.Year],
|
|
11
|
+
['Y', DatePartType.Year],
|
|
12
|
+
['h', DatePartType.Hours],
|
|
13
|
+
['H', DatePartType.Hours],
|
|
14
|
+
['m', DatePartType.Minutes],
|
|
15
|
+
['s', DatePartType.Seconds],
|
|
16
|
+
['S', DatePartType.Seconds],
|
|
17
|
+
['t', DatePartType.AmPm],
|
|
18
|
+
['T', DatePartType.AmPm],
|
|
19
|
+
]);
|
|
20
|
+
const DATE_FORMAT_CHARS = new Set(FORMAT_CHAR_TO_DATE_PART.keys());
|
|
21
|
+
const CENTURY_THRESHOLD = 50;
|
|
22
|
+
const CENTURY_BASE = 2000;
|
|
23
|
+
const DEFAULT_DATE_VALUES = {
|
|
24
|
+
year: 2000,
|
|
25
|
+
month: 0,
|
|
26
|
+
date: 1,
|
|
27
|
+
hours: 0,
|
|
28
|
+
minutes: 0,
|
|
29
|
+
seconds: 0,
|
|
30
|
+
};
|
|
31
|
+
const DEFAULT_DATETIME_FORMAT = 'MM/dd/yyyy';
|
|
32
|
+
export class DateTimeMaskParser extends MaskParser {
|
|
33
|
+
get dateParts() {
|
|
34
|
+
return this._dateParts;
|
|
35
|
+
}
|
|
36
|
+
constructor(options) {
|
|
37
|
+
const format = options?.format || DEFAULT_DATETIME_FORMAT;
|
|
38
|
+
super(options?.promptCharacter
|
|
39
|
+
? { format, promptCharacter: options.promptCharacter }
|
|
40
|
+
: { format });
|
|
41
|
+
}
|
|
42
|
+
set mask(value) {
|
|
43
|
+
super.mask = value;
|
|
44
|
+
this._parseDateFormat();
|
|
45
|
+
}
|
|
46
|
+
get mask() {
|
|
47
|
+
return super.mask;
|
|
48
|
+
}
|
|
49
|
+
_parseDateFormat() {
|
|
50
|
+
const format = this.mask;
|
|
51
|
+
const builders = [];
|
|
52
|
+
const chars = Array.from(format);
|
|
53
|
+
const length = chars.length;
|
|
54
|
+
let currentBuilder = null;
|
|
55
|
+
let position = 0;
|
|
56
|
+
for (let i = 0; i < length; i++, position++) {
|
|
57
|
+
const char = chars[i];
|
|
58
|
+
const partType = FORMAT_CHAR_TO_DATE_PART.get(char);
|
|
59
|
+
if (partType) {
|
|
60
|
+
if (currentBuilder?.format.includes(char)) {
|
|
61
|
+
currentBuilder.end = position + 1;
|
|
62
|
+
currentBuilder.format += char;
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
if (currentBuilder) {
|
|
66
|
+
builders.push(currentBuilder);
|
|
67
|
+
}
|
|
68
|
+
currentBuilder = {
|
|
69
|
+
type: partType,
|
|
70
|
+
start: position,
|
|
71
|
+
end: position + 1,
|
|
72
|
+
format: char,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
if (currentBuilder) {
|
|
78
|
+
builders.push(currentBuilder);
|
|
79
|
+
currentBuilder = null;
|
|
80
|
+
}
|
|
81
|
+
builders.push({
|
|
82
|
+
type: DatePartType.Literal,
|
|
83
|
+
start: position,
|
|
84
|
+
end: position + 1,
|
|
85
|
+
format: char,
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
if (currentBuilder) {
|
|
90
|
+
builders.push(currentBuilder);
|
|
91
|
+
}
|
|
92
|
+
this._normalizeYearFormatBuilder(builders);
|
|
93
|
+
this._dateParts = builders.map((b) => createDatePart(b.type, { start: b.start, end: b.end, format: b.format }));
|
|
94
|
+
}
|
|
95
|
+
_normalizeYearFormatBuilder(builders) {
|
|
96
|
+
const yearBuilder = builders.find((b) => b.type === DatePartType.Year);
|
|
97
|
+
if (yearBuilder && yearBuilder.format.length !== 2) {
|
|
98
|
+
const expansion = 4 - yearBuilder.format.length;
|
|
99
|
+
yearBuilder.end += expansion;
|
|
100
|
+
yearBuilder.format = 'yyyy';
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
parseDate(masked) {
|
|
104
|
+
const parts = this._extractDateValues(masked);
|
|
105
|
+
if (parts[DatePartType.Month] !== undefined) {
|
|
106
|
+
parts[DatePartType.Month] -= 1;
|
|
107
|
+
}
|
|
108
|
+
if (parts[DatePartType.Year] !== undefined &&
|
|
109
|
+
parts[DatePartType.Year] < CENTURY_THRESHOLD) {
|
|
110
|
+
parts[DatePartType.Year] += CENTURY_BASE;
|
|
111
|
+
}
|
|
112
|
+
if (!this._validateDateParts(parts)) {
|
|
113
|
+
return null;
|
|
114
|
+
}
|
|
115
|
+
this._applyAmPmConversion(parts, masked);
|
|
116
|
+
return this._createDateFromParts(parts);
|
|
117
|
+
}
|
|
118
|
+
_extractDateValues(masked) {
|
|
119
|
+
const parts = {};
|
|
120
|
+
const prompt = this.prompt;
|
|
121
|
+
for (const datePart of this._dateParts) {
|
|
122
|
+
if (datePart.type === DatePartType.Literal)
|
|
123
|
+
continue;
|
|
124
|
+
const isMonthOrDate = datePart.type === DatePartType.Date ||
|
|
125
|
+
datePart.type === DatePartType.Month;
|
|
126
|
+
const raw = masked.substring(datePart.start, datePart.end);
|
|
127
|
+
const cleaned = raw.replaceAll(prompt, '');
|
|
128
|
+
const value = asNumber(cleaned);
|
|
129
|
+
parts[datePart.type] = clamp(value, isMonthOrDate ? 1 : 0, Number.MAX_SAFE_INTEGER);
|
|
130
|
+
}
|
|
131
|
+
return parts;
|
|
132
|
+
}
|
|
133
|
+
_validateDateParts(parts) {
|
|
134
|
+
const context = {
|
|
135
|
+
year: parts[DatePartType.Year],
|
|
136
|
+
month: parts[DatePartType.Month],
|
|
137
|
+
};
|
|
138
|
+
for (const datePart of this._dateParts) {
|
|
139
|
+
if (datePart.type === DatePartType.Literal)
|
|
140
|
+
continue;
|
|
141
|
+
const value = parts[datePart.type];
|
|
142
|
+
if (value === undefined)
|
|
143
|
+
continue;
|
|
144
|
+
if (!datePart.validate(value, context)) {
|
|
145
|
+
return false;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
if (parts[DatePartType.Date] !== undefined &&
|
|
149
|
+
parts[DatePartType.Month] !== undefined &&
|
|
150
|
+
parts[DatePartType.Year] !== undefined) {
|
|
151
|
+
if (parts[DatePartType.Date] >
|
|
152
|
+
this._daysInMonth(parts[DatePartType.Year], parts[DatePartType.Month])) {
|
|
153
|
+
return false;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
return true;
|
|
157
|
+
}
|
|
158
|
+
_applyAmPmConversion(parts, masked) {
|
|
159
|
+
const amPmPart = this._dateParts.find((p) => p.type === DatePartType.AmPm);
|
|
160
|
+
if (!amPmPart)
|
|
161
|
+
return;
|
|
162
|
+
parts[DatePartType.Hours] %= 12;
|
|
163
|
+
const amPmValue = masked
|
|
164
|
+
.substring(amPmPart.start, amPmPart.end)
|
|
165
|
+
.replaceAll(this.prompt, '');
|
|
166
|
+
if (amPmValue.toLowerCase() === 'pm') {
|
|
167
|
+
parts[DatePartType.Hours] += 12;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
_createDateFromParts(parts) {
|
|
171
|
+
const d = DEFAULT_DATE_VALUES;
|
|
172
|
+
return new Date(parts[DatePartType.Year] ?? d.year, parts[DatePartType.Month] ?? d.month, parts[DatePartType.Date] ?? d.date, parts[DatePartType.Hours] ?? d.hours, parts[DatePartType.Minutes] ?? d.minutes, parts[DatePartType.Seconds] ?? d.seconds);
|
|
173
|
+
}
|
|
174
|
+
_daysInMonth(year, month) {
|
|
175
|
+
return new Date(year, month + 1, 0).getDate();
|
|
176
|
+
}
|
|
177
|
+
formatDate(date) {
|
|
178
|
+
return date
|
|
179
|
+
? this._dateParts.map((part) => part.getValue(date)).join('')
|
|
180
|
+
: this.emptyMask;
|
|
181
|
+
}
|
|
182
|
+
getDatePartAtPosition(position) {
|
|
183
|
+
return this._dateParts.find((p) => p.type !== DatePartType.Literal &&
|
|
184
|
+
position >= p.start &&
|
|
185
|
+
position < p.end);
|
|
186
|
+
}
|
|
187
|
+
getDatePartForCursor(position) {
|
|
188
|
+
return this._dateParts.find((p) => p.type !== DatePartType.Literal &&
|
|
189
|
+
position >= p.start &&
|
|
190
|
+
position <= p.end);
|
|
191
|
+
}
|
|
192
|
+
hasDateParts() {
|
|
193
|
+
return this._dateParts.some((p) => p.type === DatePartType.Date ||
|
|
194
|
+
p.type === DatePartType.Month ||
|
|
195
|
+
p.type === DatePartType.Year);
|
|
196
|
+
}
|
|
197
|
+
hasTimeParts() {
|
|
198
|
+
return this._dateParts.some((p) => p.type === DatePartType.Hours ||
|
|
199
|
+
p.type === DatePartType.Minutes ||
|
|
200
|
+
p.type === DatePartType.Seconds);
|
|
201
|
+
}
|
|
202
|
+
getFirstDatePart() {
|
|
203
|
+
return this._dateParts.find((p) => p.type !== DatePartType.Literal);
|
|
204
|
+
}
|
|
205
|
+
getPartByType(type) {
|
|
206
|
+
return this._dateParts.find((p) => p.type === type);
|
|
207
|
+
}
|
|
208
|
+
_parseMaskLiterals() {
|
|
209
|
+
const dateFormat = this._options.format;
|
|
210
|
+
const maskFormat = this._convertToMaskFormat(dateFormat);
|
|
211
|
+
const originalFormat = this._options.format;
|
|
212
|
+
this._options.format = maskFormat;
|
|
213
|
+
super._parseMaskLiterals();
|
|
214
|
+
this._options.format = originalFormat;
|
|
215
|
+
this._parseDateFormat();
|
|
216
|
+
}
|
|
217
|
+
_convertToMaskFormat(dateFormat) {
|
|
218
|
+
let result = '';
|
|
219
|
+
for (const char of dateFormat) {
|
|
220
|
+
if (DATE_FORMAT_CHARS.has(char)) {
|
|
221
|
+
result += char === 't' || char === 'T' ? 'L' : '0';
|
|
222
|
+
}
|
|
223
|
+
else {
|
|
224
|
+
result += char;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
return result;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
//# sourceMappingURL=datetime-mask-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"datetime-mask-parser.js","sourceRoot":"","sources":["../../../src/components/date-time-input/datetime-mask-parser.ts"],"names":[],"mappings":"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","sourcesContent":["import { asNumber, clamp } from '../common/util.js';\nimport { MaskParser } from '../mask-input/mask-parser.js';\nimport { createDatePart, DatePartType, type IDatePart } from './date-part.js';\n\n//#region Types and Enums\n\n/**\n * Types of date/time parts that can appear in a format string.\n * Re-exported from date-part.ts for backward compatibility.\n */\nexport { DatePartType as DateParts };\n\n/**\n * Re-export createDatePart factory for creating standalone parts.\n */\nexport { createDatePart };\n\n/**\n * Information about a parsed date part within a format string.\n * This is a type alias for IDatePart for backward compatibility.\n */\nexport type DatePartInfo = IDatePart;\n\n/** Options for the DateTimeMaskParser */\nexport interface DateTimeMaskOptions {\n /** The date/time format string (e.g., 'MM/dd/yyyy', 'HH:mm:ss') */\n format?: string;\n /** The prompt character for unfilled positions */\n promptCharacter?: string;\n}\n\n//#endregion\n\n//#region Constants\n\n/** Maps format characters to their corresponding DatePartType */\nconst FORMAT_CHAR_TO_DATE_PART = new Map<string, DatePartType>([\n ['d', DatePartType.Date],\n ['D', DatePartType.Date],\n ['M', DatePartType.Month],\n ['y', DatePartType.Year],\n ['Y', DatePartType.Year],\n ['h', DatePartType.Hours],\n ['H', DatePartType.Hours],\n ['m', DatePartType.Minutes],\n ['s', DatePartType.Seconds],\n ['S', DatePartType.Seconds],\n ['t', DatePartType.AmPm],\n ['T', DatePartType.AmPm],\n]);\n\n/** Set of valid date/time format characters */\nconst DATE_FORMAT_CHARS = new Set(FORMAT_CHAR_TO_DATE_PART.keys());\n\n/** Century threshold for two-digit year interpretation */\nconst CENTURY_THRESHOLD = 50;\nconst CENTURY_BASE = 2000;\n\n/** Default values for missing date parts */\nconst DEFAULT_DATE_VALUES = {\n year: 2000,\n month: 0,\n date: 1,\n hours: 0,\n minutes: 0,\n seconds: 0,\n} as const;\n\n/** Default date/time format */\nconst DEFAULT_DATETIME_FORMAT = 'MM/dd/yyyy';\n\n//#endregion\n\n/**\n * A specialized mask parser for date/time input fields.\n * Extends MaskParser to handle date-specific format patterns and validation.\n *\n * @example\n * ```ts\n * const parser = new DateTimeMaskParser({ format: 'MM/dd/yyyy' });\n * parser.apply('12252023'); // Returns '12/25/2023'\n * parser.parseDate('12/25/2023'); // Returns Date object\n * ```\n */\nexport class DateTimeMaskParser extends MaskParser {\n /** Parsed date parts from the format string */\n private _dateParts!: IDatePart[];\n\n /**\n * Gets the parsed date parts from the format string.\n * Each part contains type, position, and format information.\n */\n public get dateParts(): ReadonlyArray<IDatePart> {\n return this._dateParts;\n }\n\n constructor(options?: DateTimeMaskOptions) {\n const format = options?.format || DEFAULT_DATETIME_FORMAT;\n\n super(\n options?.promptCharacter\n ? { format, promptCharacter: options.promptCharacter }\n : { format }\n );\n }\n\n /**\n * Sets a new date/time format and re-parses the date parts.\n */\n public override set mask(value: string) {\n super.mask = value;\n this._parseDateFormat();\n }\n\n public override get mask(): string {\n return super.mask;\n }\n\n //#region Date Format Parsing\n\n /**\n * Parses the format string into IDatePart objects.\n * This identifies each date/time component and its position.\n */\n private _parseDateFormat(): void {\n const format = this.mask;\n const builders: Array<{\n type: DatePartType;\n start: number;\n end: number;\n format: string;\n }> = [];\n const chars = Array.from(format);\n const length = chars.length;\n\n let currentBuilder: (typeof builders)[0] | null = null;\n let position = 0;\n\n for (let i = 0; i < length; i++, position++) {\n const char = chars[i];\n const partType = FORMAT_CHAR_TO_DATE_PART.get(char);\n\n if (partType) {\n // Date/time format character\n if (currentBuilder?.format.includes(char)) {\n // Continue building the same part\n currentBuilder.end = position + 1;\n currentBuilder.format += char;\n } else {\n // Start a new part\n if (currentBuilder) {\n builders.push(currentBuilder);\n }\n currentBuilder = {\n type: partType,\n start: position,\n end: position + 1,\n format: char,\n };\n }\n } else {\n // Literal character\n if (currentBuilder) {\n builders.push(currentBuilder);\n currentBuilder = null;\n }\n builders.push({\n type: DatePartType.Literal,\n start: position,\n end: position + 1,\n format: char,\n });\n }\n }\n\n // Don't forget the last part\n if (currentBuilder) {\n builders.push(currentBuilder);\n }\n\n // Normalize year format for editing (except 'yy')\n this._normalizeYearFormatBuilder(builders);\n\n // Create immutable date parts from builders using factory\n this._dateParts = builders.map((b) =>\n createDatePart(b.type, { start: b.start, end: b.end, format: b.format })\n );\n }\n\n /**\n * Normalizes year format to 'yyyy' for editing (except for 'yy').\n * Also updates the end position to account for the expanded format.\n */\n private _normalizeYearFormatBuilder(\n builders: Array<{ type: DatePartType; end: number; format: string }>\n ): void {\n const yearBuilder = builders.find((b) => b.type === DatePartType.Year);\n if (yearBuilder && yearBuilder.format.length !== 2) {\n const expansion = 4 - yearBuilder.format.length;\n yearBuilder.end += expansion;\n yearBuilder.format = 'yyyy';\n }\n }\n\n //#endregion\n\n //#region Date Parsing\n\n /**\n * Parses a masked string into a Date object.\n * Returns null if the string cannot be parsed into a valid date.\n *\n * @param masked - The masked input string to parse\n * @returns A Date object or null if parsing fails\n */\n public parseDate(masked: string): Date | null {\n const parts = this._extractDateValues(masked);\n\n // Convert to zero-based month (only if month is in format)\n if (parts[DatePartType.Month] !== undefined) {\n parts[DatePartType.Month]! -= 1;\n }\n\n // Apply century threshold for two-digit years (only if year is in format)\n if (\n parts[DatePartType.Year] !== undefined &&\n parts[DatePartType.Year]! < CENTURY_THRESHOLD\n ) {\n parts[DatePartType.Year]! += CENTURY_BASE;\n }\n\n if (!this._validateDateParts(parts)) {\n return null;\n }\n\n // Handle AM/PM conversion\n this._applyAmPmConversion(parts, masked);\n\n return this._createDateFromParts(parts);\n }\n\n /**\n * Extracts numeric values from the masked string for each date part.\n */\n private _extractDateValues(\n masked: string\n ): Partial<Record<DatePartType, number>> {\n const parts: Partial<Record<DatePartType, number>> = {};\n const prompt = this.prompt;\n\n for (const datePart of this._dateParts) {\n if (datePart.type === DatePartType.Literal) continue;\n\n const isMonthOrDate =\n datePart.type === DatePartType.Date ||\n datePart.type === DatePartType.Month;\n\n const raw = masked.substring(datePart.start, datePart.end);\n const cleaned = raw.replaceAll(prompt, '');\n const value = asNumber(cleaned);\n\n parts[datePart.type] = clamp(\n value,\n isMonthOrDate ? 1 : 0,\n Number.MAX_SAFE_INTEGER\n );\n }\n\n return parts;\n }\n\n /**\n * Validates that parsed date parts are within valid ranges.\n * Only validates parts that are present in the format.\n * Uses the validate() method on each date part instance.\n */\n private _validateDateParts(\n parts: Partial<Record<DatePartType, number>>\n ): boolean {\n // Build validation context for date-dependent validation\n const context = {\n year: parts[DatePartType.Year],\n month: parts[DatePartType.Month],\n };\n\n // Validate each parsed value using its corresponding part instance\n for (const datePart of this._dateParts) {\n if (datePart.type === DatePartType.Literal) continue;\n\n const value = parts[datePart.type];\n if (value === undefined) continue;\n\n if (!datePart.validate(value, context)) {\n return false;\n }\n }\n\n // Additional check: validate date against month/year context\n // (the part's validate method needs both year and month for proper validation)\n if (\n parts[DatePartType.Date] !== undefined &&\n parts[DatePartType.Month] !== undefined &&\n parts[DatePartType.Year] !== undefined\n ) {\n if (\n parts[DatePartType.Date]! >\n this._daysInMonth(parts[DatePartType.Year]!, parts[DatePartType.Month]!)\n ) {\n return false;\n }\n }\n\n return true;\n }\n\n /**\n * Applies AM/PM conversion to hours if format includes AM/PM.\n */\n private _applyAmPmConversion(\n parts: Partial<Record<DatePartType, number>>,\n masked: string\n ): void {\n const amPmPart = this._dateParts.find((p) => p.type === DatePartType.AmPm);\n if (!amPmPart) return;\n\n parts[DatePartType.Hours]! %= 12;\n\n const amPmValue = masked\n .substring(amPmPart.start, amPmPart.end)\n .replaceAll(this.prompt, '');\n\n if (amPmValue.toLowerCase() === 'pm') {\n parts[DatePartType.Hours]! += 12;\n }\n }\n\n /**\n * Creates a Date object from parsed parts with defaults for missing values.\n */\n private _createDateFromParts(\n parts: Partial<Record<DatePartType, number>>\n ): Date {\n const d = DEFAULT_DATE_VALUES;\n return new Date(\n parts[DatePartType.Year] ?? d.year,\n parts[DatePartType.Month] ?? d.month,\n parts[DatePartType.Date] ?? d.date,\n parts[DatePartType.Hours] ?? d.hours,\n parts[DatePartType.Minutes] ?? d.minutes,\n parts[DatePartType.Seconds] ?? d.seconds\n );\n }\n\n /**\n * Gets the number of days in a specific month/year.\n */\n private _daysInMonth(year: number, month: number): number {\n return new Date(year, month + 1, 0).getDate();\n }\n\n //#endregion\n\n //#region Date Formatting\n\n /**\n * Formats a Date object into a masked string according to the current format.\n *\n * @param date - The date to format\n * @returns The formatted masked string\n */\n public formatDate(date: Date | null): string {\n return date\n ? this._dateParts.map((part) => part.getValue(date)).join('')\n : this.emptyMask;\n }\n\n //#endregion\n\n //#region Part Queries\n\n /**\n * Finds the date part at a given cursor position.\n * Uses exclusive end (position < end) for precise character targeting.\n *\n * @param position - The cursor position to check\n * @returns The DatePartInfo at that position, or undefined if not found\n */\n public getDatePartAtPosition(position: number): DatePartInfo | undefined {\n return this._dateParts.find(\n (p) =>\n p.type !== DatePartType.Literal &&\n position >= p.start &&\n position < p.end\n );\n }\n\n /**\n * Finds the date part for a cursor position, using inclusive end.\n * This handles the edge case where cursor is at the end of the mask\n * (position equals the end of the last part).\n *\n * @param position - The cursor position to check\n * @returns The DatePartInfo at that position, or undefined if not found\n */\n public getDatePartForCursor(position: number): DatePartInfo | undefined {\n return this._dateParts.find(\n (p) =>\n p.type !== DatePartType.Literal &&\n position >= p.start &&\n position <= p.end\n );\n }\n\n /**\n * Checks if the format includes any date parts (day, month, year).\n */\n public hasDateParts(): boolean {\n return this._dateParts.some(\n (p) =>\n p.type === DatePartType.Date ||\n p.type === DatePartType.Month ||\n p.type === DatePartType.Year\n );\n }\n\n /**\n * Checks if the format includes any time parts (hours, minutes, seconds).\n */\n public hasTimeParts(): boolean {\n return this._dateParts.some(\n (p) =>\n p.type === DatePartType.Hours ||\n p.type === DatePartType.Minutes ||\n p.type === DatePartType.Seconds\n );\n }\n\n /**\n * Gets the first non-literal date part (useful for default selection).\n */\n public getFirstDatePart(): DatePartInfo | undefined {\n return this._dateParts.find((p) => p.type !== DatePartType.Literal);\n }\n\n /**\n * Gets a specific type of date part.\n */\n public getPartByType(type: DatePartType): DatePartInfo | undefined {\n return this._dateParts.find((p) => p.type === type);\n }\n\n //#endregion\n\n //#region Override for Date-Specific Mask\n\n /**\n * Builds the internal mask pattern from the date format.\n * Converts date format characters to mask pattern characters.\n */\n protected override _parseMaskLiterals(): void {\n // First, convert date format to mask format\n const dateFormat = this._options.format;\n const maskFormat = this._convertToMaskFormat(dateFormat);\n\n // Temporarily set the converted format for the base class parsing\n const originalFormat = this._options.format;\n this._options.format = maskFormat;\n\n super._parseMaskLiterals();\n\n // Restore the original date format\n this._options.format = originalFormat;\n\n // Parse date-specific format structure\n this._parseDateFormat();\n }\n\n /**\n * Converts a date format string to a mask format string.\n * Date format chars become '0' (numeric) or 'L' (alpha for AM/PM).\n */\n private _convertToMaskFormat(dateFormat: string): string {\n let result = '';\n\n for (const char of dateFormat) {\n if (DATE_FORMAT_CHARS.has(char)) {\n // AM/PM markers are alphabetic, others are numeric\n result += char === 't' || char === 'T' ? 'L' : '0';\n } else {\n result += char;\n }\n }\n\n return result;\n }\n\n //#endregion\n}\n"]}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
+
import { isDateExceedingMax, isDateLessThanMin } from '../calendar/helpers.js';
|
|
1
2
|
import { maxDateValidator, minDateValidator, requiredValidator, } from '../common/validators.js';
|
|
2
|
-
import { DateTimeUtil } from './date-util.js';
|
|
3
3
|
export const dateTimeInputValidators = [
|
|
4
4
|
requiredValidator,
|
|
5
5
|
{
|
|
6
6
|
...minDateValidator,
|
|
7
7
|
isValid: (host) => host.value && host.min
|
|
8
|
-
? !
|
|
8
|
+
? !isDateLessThanMin(host.value, host.min, host.hasTimeParts(), host.hasDateParts())
|
|
9
9
|
: true,
|
|
10
10
|
},
|
|
11
11
|
{
|
|
12
12
|
...maxDateValidator,
|
|
13
13
|
isValid: (host) => host.value && host.max
|
|
14
|
-
? !
|
|
14
|
+
? !isDateExceedingMax(host.value, host.max, host.hasTimeParts(), host.hasDateParts())
|
|
15
15
|
: true,
|
|
16
16
|
},
|
|
17
17
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../../src/components/date-time-input/validators.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../../src/components/date-time-input/validators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,GAElB,MAAM,yBAAyB,CAAC;AAGjC,MAAM,CAAC,MAAM,uBAAuB,GAA2C;IAC7E,iBAAiB;IACjB;QACE,GAAG,gBAAgB;QACnB,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAChB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG;YACpB,CAAC,CAAC,CAAC,iBAAiB,CAChB,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,GAAG,EACR,IAAI,CAAC,YAAY,EAAE,EACnB,IAAI,CAAC,YAAY,EAAE,CACpB;YACH,CAAC,CAAC,IAAI;KACX;IACD;QACE,GAAG,gBAAgB;QACnB,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAChB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG;YACpB,CAAC,CAAC,CAAC,kBAAkB,CACjB,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,GAAG,EACR,IAAI,CAAC,YAAY,EAAE,EACnB,IAAI,CAAC,YAAY,EAAE,CACpB;YACH,CAAC,CAAC,IAAI;KACX;CACF,CAAC","sourcesContent":["import { isDateExceedingMax, isDateLessThanMin } from '../calendar/helpers.js';\nimport {\n maxDateValidator,\n minDateValidator,\n requiredValidator,\n type Validator,\n} from '../common/validators.js';\nimport type IgcDateTimeInputComponent from './date-time-input.js';\n\nexport const dateTimeInputValidators: Validator<IgcDateTimeInputComponent>[] = [\n requiredValidator,\n {\n ...minDateValidator,\n isValid: (host) =>\n host.value && host.min\n ? !isDateLessThanMin(\n host.value,\n host.min,\n host.hasTimeParts(),\n host.hasDateParts()\n )\n : true,\n },\n {\n ...maxDateValidator,\n isValid: (host) =>\n host.value && host.max\n ? !isDateExceedingMax(\n host.value,\n host.max,\n host.hasTimeParts(),\n host.hasDateParts()\n )\n : true,\n },\n];\n"]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { css } from 'lit';
|
|
2
|
-
export const styles = css `:host{--elevation: var(--ig-dialog-elevation, var(--ig-elevation-0));--background: var(--ig-dialog-background, var(--ig-surface-500));--title-color: var(--ig-dialog-title-color, var(--ig-gray-900));--border-color: var(--ig-dialog-border-color, var(--ig-gray-300));--backdrop: var(--ig-dialog-backdrop, hsl(from var(--ig-gray-500) h s l/0.54));--border-radius: var(--ig-dialog-border-radius, clamp(0rem, calc(var(--ig-radius-factor, 0.1111111111) * 2.25rem), 2.25rem));--default-size: var(--ig-dialog-default-size, 2);--ig-theme: bootstrap}`;
|
|
2
|
+
export const styles = css `:host{--elevation: var(--ig-dialog-elevation, var(--ig-elevation-0));--background: var(--ig-dialog-background, var(--ig-surface-500));--title-color: var(--ig-dialog-title-color, var(--ig-gray-900));--border-color: var(--ig-dialog-border-color, var(--ig-gray-300));--backdrop: var(--ig-dialog-backdrop, hsl(from var(--ig-gray-500) h s l/0.54));--border-radius: var(--ig-dialog-border-radius, clamp(0rem, calc(var(--ig-radius-factor, 0.1111111111) * 2.25rem), 2.25rem));--default-size: var(--ig-dialog-default-size, 2);--ig-theme: bootstrap;--ig-theme-variant: dark}`;
|
|
3
3
|
//# sourceMappingURL=dialog.bootstrap.css.js.map
|