igniteui-webcomponents 7.2.4 → 7.3.0-beta.1
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 +162 -0
- package/animations/player.d.ts +7 -2
- package/animations/player.js +2 -3
- package/animations/player.js.map +1 -1
- package/animations/view-transition.js +1 -1
- package/animations/view-transition.js.map +1 -1
- package/components/accordion/accordion.d.ts +1 -1
- package/components/accordion/accordion.js +11 -22
- package/components/accordion/accordion.js.map +1 -1
- package/components/avatar/avatar.d.ts +0 -1
- package/components/avatar/avatar.js +8 -12
- package/components/avatar/avatar.js.map +1 -1
- package/components/avatar/themes/themes.d.ts +1 -1
- package/components/avatar/themes/themes.js.map +1 -1
- package/components/badge/badge.d.ts +2 -4
- package/components/badge/badge.js +9 -13
- package/components/badge/badge.js.map +1 -1
- package/components/badge/themes/themes.d.ts +1 -1
- package/components/badge/themes/themes.js.map +1 -1
- package/components/banner/banner.d.ts +8 -7
- package/components/banner/banner.js +27 -25
- package/components/banner/banner.js.map +1 -1
- package/components/banner/themes/themes.d.ts +1 -1
- package/components/banner/themes/themes.js.map +1 -1
- package/components/button/button-base.d.ts +3 -3
- package/components/button/button-base.js +9 -8
- package/components/button/button-base.js.map +1 -1
- package/components/button/button.d.ts +3 -3
- package/components/button/button.js +2 -2
- package/components/button/button.js.map +1 -1
- package/components/button/icon-button.js +3 -3
- package/components/button/icon-button.js.map +1 -1
- package/components/button/themes/button/themes.d.ts +1 -1
- package/components/button/themes/button/themes.js.map +1 -1
- package/components/button/themes/icon-button/themes.d.ts +1 -1
- package/components/button/themes/icon-button/themes.js.map +1 -1
- package/components/button-group/button-group.d.ts +41 -21
- package/components/button-group/button-group.js +95 -105
- package/components/button-group/button-group.js.map +1 -1
- package/components/button-group/themes/button.d.ts +1 -1
- package/components/button-group/themes/button.js.map +1 -1
- package/components/button-group/themes/group.d.ts +1 -1
- package/components/button-group/themes/group.js.map +1 -1
- package/components/button-group/toggle-button.d.ts +17 -10
- package/components/button-group/toggle-button.js +28 -13
- package/components/button-group/toggle-button.js.map +1 -1
- package/components/calendar/base.d.ts +28 -19
- package/components/calendar/base.js +20 -44
- package/components/calendar/base.js.map +1 -1
- package/components/calendar/calendar.d.ts +38 -7
- package/components/calendar/calendar.js +96 -85
- package/components/calendar/calendar.js.map +1 -1
- package/components/calendar/days-view/days-view.d.ts +49 -22
- package/components/calendar/days-view/days-view.js +102 -163
- package/components/calendar/days-view/days-view.js.map +1 -1
- package/components/calendar/helpers.d.ts +3 -62
- package/components/calendar/helpers.js +6 -110
- package/components/calendar/helpers.js.map +1 -1
- package/components/calendar/months-view/months-view.d.ts +8 -22
- package/components/calendar/months-view/months-view.js +30 -83
- package/components/calendar/months-view/months-view.js.map +1 -1
- package/components/calendar/selection.d.ts +21 -0
- package/components/calendar/selection.js +42 -0
- package/components/calendar/selection.js.map +1 -0
- package/components/calendar/themes/calendar.d.ts +1 -1
- package/components/calendar/themes/calendar.js.map +1 -1
- package/components/calendar/themes/days.d.ts +1 -1
- package/components/calendar/themes/days.js.map +1 -1
- package/components/calendar/themes/year-month.d.ts +1 -1
- package/components/calendar/themes/year-month.js.map +1 -1
- package/components/calendar/types.d.ts +18 -0
- package/components/calendar/types.js.map +1 -1
- package/components/calendar/year-month-view.base.d.ts +44 -0
- package/components/calendar/year-month-view.base.js +89 -0
- package/components/calendar/year-month-view.base.js.map +1 -0
- package/components/calendar/years-view/years-view.d.ts +7 -20
- package/components/calendar/years-view/years-view.js +25 -79
- package/components/calendar/years-view/years-view.js.map +1 -1
- package/components/card/card.actions.js +2 -2
- package/components/card/card.actions.js.map +1 -1
- package/components/card/card.content.d.ts +1 -1
- package/components/card/card.content.js +2 -2
- package/components/card/card.content.js.map +1 -1
- package/components/card/card.d.ts +1 -1
- package/components/card/card.header.js +2 -2
- package/components/card/card.header.js.map +1 -1
- package/components/card/card.js +2 -2
- package/components/card/card.js.map +1 -1
- package/components/card/card.media.d.ts +1 -1
- package/components/card/card.media.js +1 -1
- package/components/card/card.media.js.map +1 -1
- package/components/card/themes/actions.d.ts +1 -1
- package/components/card/themes/actions.js.map +1 -1
- package/components/card/themes/container.d.ts +1 -1
- package/components/card/themes/container.js.map +1 -1
- package/components/card/themes/content.d.ts +1 -1
- package/components/card/themes/content.js.map +1 -1
- package/components/card/themes/header.d.ts +1 -1
- package/components/card/themes/header.js.map +1 -1
- package/components/carousel/animations.d.ts +1 -1
- package/components/carousel/animations.js +2 -2
- package/components/carousel/animations.js.map +1 -1
- package/components/carousel/carousel-indicator-container.js +4 -4
- package/components/carousel/carousel-indicator-container.js.map +1 -1
- package/components/carousel/carousel-indicator.d.ts +2 -2
- package/components/carousel/carousel-indicator.js +17 -17
- package/components/carousel/carousel-indicator.js.map +1 -1
- package/components/carousel/carousel-slide.d.ts +1 -3
- package/components/carousel/carousel-slide.js +16 -18
- package/components/carousel/carousel-slide.js.map +1 -1
- package/components/carousel/carousel.d.ts +58 -41
- package/components/carousel/carousel.js +170 -145
- package/components/carousel/carousel.js.map +1 -1
- package/components/carousel/themes/carousel.base.css.js +1 -1
- package/components/carousel/themes/carousel.base.css.js.map +1 -1
- package/components/carousel/themes/container.d.ts +1 -1
- package/components/carousel/themes/container.js.map +1 -1
- package/components/carousel/themes/indicator-container.d.ts +1 -1
- package/components/carousel/themes/indicator-container.js.map +1 -1
- package/components/chat/chat-input.d.ts +4 -4
- package/components/chat/chat-input.js +28 -27
- package/components/chat/chat-input.js.map +1 -1
- package/components/chat/chat-message.d.ts +1 -1
- package/components/chat/chat-message.js +7 -6
- package/components/chat/chat-message.js.map +1 -1
- package/components/chat/chat-state.d.ts +2 -2
- package/components/chat/chat-state.js +2 -1
- package/components/chat/chat-state.js.map +1 -1
- package/components/chat/chat.d.ts +4 -6
- package/components/chat/chat.js +13 -19
- package/components/chat/chat.js.map +1 -1
- package/components/chat/message-attachments.js +5 -5
- package/components/chat/message-attachments.js.map +1 -1
- package/components/chat/themes/attachments.d.ts +1 -1
- package/components/chat/themes/attachments.js.map +1 -1
- package/components/chat/themes/input.d.ts +1 -1
- package/components/chat/themes/input.js.map +1 -1
- package/components/chat/themes/message.d.ts +1 -1
- package/components/chat/themes/message.js.map +1 -1
- package/components/chat/themes/themes.d.ts +1 -1
- package/components/chat/themes/themes.js.map +1 -1
- package/components/chat/types.d.ts +2 -2
- package/components/chat/types.js.map +1 -1
- package/components/chat/utils.d.ts +1 -1
- package/components/chat/utils.js +3 -3
- package/components/chat/utils.js.map +1 -1
- package/components/checkbox/checkbox-base.d.ts +7 -7
- package/components/checkbox/checkbox-base.js +7 -7
- package/components/checkbox/checkbox-base.js.map +1 -1
- package/components/checkbox/checkbox.d.ts +3 -5
- package/components/checkbox/checkbox.js +40 -50
- package/components/checkbox/checkbox.js.map +1 -1
- package/components/checkbox/switch.d.ts +1 -1
- package/components/checkbox/switch.js +30 -40
- package/components/checkbox/switch.js.map +1 -1
- package/components/checkbox/themes/checkbox-themes.d.ts +1 -1
- package/components/checkbox/themes/checkbox-themes.js.map +1 -1
- package/components/checkbox/themes/switch-themes.d.ts +1 -1
- package/components/checkbox/themes/switch-themes.js.map +1 -1
- package/components/checkbox/validators.d.ts +1 -1
- package/components/checkbox/validators.js +1 -1
- package/components/checkbox/validators.js.map +1 -1
- package/components/chip/chip.d.ts +9 -16
- package/components/chip/chip.js +21 -38
- package/components/chip/chip.js.map +1 -1
- package/components/chip/themes/chip.base.css.js +1 -1
- package/components/chip/themes/chip.base.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/chip/themes/shared/chip.bootstrap.css.js +1 -1
- package/components/chip/themes/shared/chip.bootstrap.css.js.map +1 -1
- package/components/chip/themes/shared/chip.common.css.js +1 -1
- package/components/chip/themes/shared/chip.common.css.js.map +1 -1
- package/components/chip/themes/shared/chip.fluent.css.js +1 -1
- package/components/chip/themes/shared/chip.fluent.css.js.map +1 -1
- package/components/chip/themes/shared/chip.indigo.css.js +1 -1
- package/components/chip/themes/shared/chip.indigo.css.js.map +1 -1
- package/components/chip/themes/themes.d.ts +1 -1
- package/components/chip/themes/themes.js.map +1 -1
- package/components/combo/combo-header.js +2 -2
- package/components/combo/combo-header.js.map +1 -1
- package/components/combo/combo-item.d.ts +1 -5
- package/components/combo/combo-item.js +8 -18
- package/components/combo/combo-item.js.map +1 -1
- package/components/combo/combo.d.ts +89 -45
- package/components/combo/combo.js +244 -229
- package/components/combo/combo.js.map +1 -1
- package/components/combo/controllers/data.d.ts +30 -3
- package/components/combo/controllers/data.js +34 -9
- package/components/combo/controllers/data.js.map +1 -1
- package/components/combo/controllers/navigation.d.ts +8 -2
- package/components/combo/controllers/navigation.js +11 -12
- package/components/combo/controllers/navigation.js.map +1 -1
- package/components/combo/operations/filter.d.ts +17 -1
- package/components/combo/operations/filter.js +29 -9
- package/components/combo/operations/filter.js.map +1 -1
- package/components/combo/operations/group.js +1 -1
- package/components/combo/operations/group.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/themes.d.ts +1 -1
- package/components/combo/themes/themes.js.map +1 -1
- package/components/combo/types.d.ts +8 -4
- package/components/combo/types.js.map +1 -1
- package/components/combo/validators.d.ts +1 -1
- package/components/combo/validators.js.map +1 -1
- package/components/date-picker/date-picker.base.d.ts +297 -0
- package/components/date-picker/date-picker.base.js +473 -0
- package/components/date-picker/date-picker.base.js.map +1 -0
- package/components/date-picker/date-picker.d.ts +53 -174
- package/components/date-picker/date-picker.js +90 -403
- package/components/date-picker/date-picker.js.map +1 -1
- package/components/date-picker/themes/themes.d.ts +1 -1
- package/components/date-picker/themes/themes.js.map +1 -1
- package/components/date-picker/validators.d.ts +1 -1
- package/components/date-picker/validators.js +2 -2
- package/components/date-picker/validators.js.map +1 -1
- package/components/date-range-picker/date-range-input.d.ts +14 -18
- package/components/date-range-picker/date-range-input.js +39 -126
- package/components/date-range-picker/date-range-input.js.map +1 -1
- package/components/date-range-picker/date-range-mask-parser.d.ts +22 -34
- package/components/date-range-picker/date-range-mask-parser.js +38 -69
- package/components/date-range-picker/date-range-mask-parser.js.map +1 -1
- package/components/date-range-picker/date-range-picker.d.ts +93 -190
- package/components/date-range-picker/date-range-picker.js +208 -543
- package/components/date-range-picker/date-range-picker.js.map +1 -1
- package/components/date-range-picker/predefined-ranges-area.d.ts +4 -4
- package/components/date-range-picker/predefined-ranges-area.js +8 -10
- package/components/date-range-picker/predefined-ranges-area.js.map +1 -1
- package/components/date-range-picker/themes/ranges-themes.d.ts +1 -1
- package/components/date-range-picker/themes/ranges-themes.js.map +1 -1
- package/components/date-range-picker/themes/themes.d.ts +1 -1
- package/components/date-range-picker/themes/themes.js.map +1 -1
- package/components/date-range-picker/validators.d.ts +1 -1
- package/components/date-range-picker/validators.js +10 -30
- package/components/date-range-picker/validators.js.map +1 -1
- package/components/date-time-input/date-part.d.ts +20 -2
- package/components/date-time-input/date-part.js +48 -75
- package/components/date-time-input/date-part.js.map +1 -1
- package/components/date-time-input/date-time-input.base.d.ts +101 -35
- package/components/date-time-input/date-time-input.base.js +142 -46
- package/components/date-time-input/date-time-input.base.js.map +1 -1
- package/components/date-time-input/date-time-input.d.ts +14 -26
- package/components/date-time-input/date-time-input.js +37 -90
- package/components/date-time-input/date-time-input.js.map +1 -1
- package/components/date-time-input/datetime-mask-parser.d.ts +53 -109
- package/components/date-time-input/datetime-mask-parser.js +93 -144
- package/components/date-time-input/datetime-mask-parser.js.map +1 -1
- package/components/date-time-input/validators.d.ts +1 -1
- package/components/date-time-input/validators.js +3 -14
- package/components/date-time-input/validators.js.map +1 -1
- package/components/dialog/dialog.d.ts +8 -9
- package/components/dialog/dialog.js +38 -44
- package/components/dialog/dialog.js.map +1 -1
- package/components/dialog/themes/themes.d.ts +1 -1
- package/components/dialog/themes/themes.js.map +1 -1
- package/components/divider/divider.d.ts +3 -5
- package/components/divider/divider.js +11 -20
- package/components/divider/divider.js.map +1 -1
- package/components/divider/themes/themes.d.ts +1 -1
- package/components/divider/themes/themes.js.map +1 -1
- package/components/dropdown/dropdown-group.d.ts +10 -3
- package/components/dropdown/dropdown-group.js +16 -5
- package/components/dropdown/dropdown-group.js.map +1 -1
- package/components/dropdown/dropdown-header.d.ts +2 -2
- package/components/dropdown/dropdown-header.js +7 -2
- package/components/dropdown/dropdown-header.js.map +1 -1
- package/components/dropdown/dropdown-item.d.ts +4 -4
- package/components/dropdown/dropdown-item.js +3 -3
- package/components/dropdown/dropdown-item.js.map +1 -1
- package/components/dropdown/dropdown.d.ts +75 -32
- package/components/dropdown/dropdown.js +189 -110
- package/components/dropdown/dropdown.js.map +1 -1
- package/components/dropdown/themes/container.d.ts +1 -1
- package/components/dropdown/themes/container.js.map +1 -1
- package/components/dropdown/themes/group.d.ts +1 -1
- package/components/dropdown/themes/group.js.map +1 -1
- package/components/dropdown/themes/header.d.ts +1 -1
- package/components/dropdown/themes/header.js.map +1 -1
- package/components/dropdown/themes/item.d.ts +1 -1
- package/components/dropdown/themes/item.js.map +1 -1
- package/components/expansion-panel/expansion-panel.d.ts +27 -8
- package/components/expansion-panel/expansion-panel.js +33 -43
- package/components/expansion-panel/expansion-panel.js.map +1 -1
- package/components/expansion-panel/themes/themes.d.ts +1 -1
- package/components/expansion-panel/themes/themes.js.map +1 -1
- package/components/file-input/file-input.d.ts +19 -23
- package/components/file-input/file-input.js +21 -34
- package/components/file-input/file-input.js.map +1 -1
- package/components/file-input/themes/themes.d.ts +1 -1
- package/components/file-input/themes/themes.js.map +1 -1
- package/components/file-input/validators.d.ts +1 -1
- package/components/file-input/validators.js +1 -1
- package/components/file-input/validators.js.map +1 -1
- package/components/focus-trap/focus-trap.js +3 -2
- package/components/focus-trap/focus-trap.js.map +1 -1
- package/components/highlight/highlight.d.ts +6 -8
- package/components/highlight/highlight.js +14 -22
- package/components/highlight/highlight.js.map +1 -1
- package/components/highlight/service.d.ts +4 -1
- package/components/highlight/service.js +23 -7
- package/components/highlight/service.js.map +1 -1
- package/components/highlight/themes/themes.d.ts +1 -1
- package/components/highlight/themes/themes.js.map +1 -1
- package/components/icon/icon-references.d.ts +3 -2
- package/components/icon/icon-references.js +103 -491
- package/components/icon/icon-references.js.map +1 -1
- package/components/icon/icon-state.broadcast.d.ts +14 -17
- package/components/icon/icon-state.broadcast.js +19 -20
- package/components/icon/icon-state.broadcast.js.map +1 -1
- package/components/icon/icon.d.ts +11 -23
- package/components/icon/icon.js +36 -28
- package/components/icon/icon.js.map +1 -1
- package/components/icon/icon.registry.d.ts +69 -131
- package/components/icon/icon.registry.js +51 -53
- package/components/icon/icon.registry.js.map +1 -1
- package/components/icon/internal-icons-lib.js +2 -2
- package/components/icon/internal-icons-lib.js.map +1 -1
- package/components/icon/registry/parser.d.ts +15 -3
- package/components/icon/registry/parser.js +36 -11
- package/components/icon/registry/parser.js.map +1 -1
- package/components/icon/registry/types.d.ts +55 -11
- package/components/icon/registry/types.js.map +1 -1
- package/components/icon/themes/icon.base.css.js +1 -1
- package/components/icon/themes/icon.base.css.js.map +1 -1
- package/components/icon/themes/shared/icon.common.css.js +1 -1
- package/components/icon/themes/shared/icon.common.css.js.map +1 -1
- package/components/icon/themes/themes.d.ts +1 -1
- package/components/icon/themes/themes.js.map +1 -1
- package/components/input/input-base.d.ts +10 -25
- package/components/input/input-base.js +14 -23
- package/components/input/input-base.js.map +1 -1
- package/components/input/input.d.ts +23 -30
- package/components/input/input.js +38 -69
- package/components/input/input.js.map +1 -1
- package/components/input/themes/input.base.css.js +1 -1
- package/components/input/themes/input.base.css.js.map +1 -1
- package/components/input/themes/shared/input.bootstrap.css.js +1 -1
- package/components/input/themes/shared/input.bootstrap.css.js.map +1 -1
- package/components/input/themes/shared/input.common.css.js +1 -1
- package/components/input/themes/shared/input.common.css.js.map +1 -1
- package/components/input/themes/shared/input.fluent.css.js +1 -1
- package/components/input/themes/shared/input.fluent.css.js.map +1 -1
- package/components/input/themes/shared/input.indigo.css.js +1 -1
- package/components/input/themes/shared/input.indigo.css.js.map +1 -1
- package/components/input/themes/shared/input.material.css.js +1 -1
- package/components/input/themes/shared/input.material.css.js.map +1 -1
- package/components/input/themes/themes.d.ts +1 -1
- package/components/input/themes/themes.js.map +1 -1
- package/components/input/validators.d.ts +1 -1
- package/components/input/validators.js +1 -1
- package/components/input/validators.js.map +1 -1
- package/components/list/list-header.js +3 -3
- package/components/list/list-header.js.map +1 -1
- package/components/list/list-item.js +3 -3
- package/components/list/list-item.js.map +1 -1
- package/components/list/list.js +3 -3
- package/components/list/list.js.map +1 -1
- package/components/list/themes/container.d.ts +1 -1
- package/components/list/themes/container.js.map +1 -1
- package/components/list/themes/header.d.ts +1 -1
- package/components/list/themes/header.js.map +1 -1
- package/components/list/themes/item.d.ts +1 -1
- package/components/list/themes/item.js.map +1 -1
- package/components/mask-input/mask-history.d.ts +99 -0
- package/components/mask-input/mask-history.js +95 -0
- package/components/mask-input/mask-history.js.map +1 -0
- package/components/mask-input/mask-input.d.ts +14 -9
- package/components/mask-input/mask-input.js +20 -26
- package/components/mask-input/mask-input.js.map +1 -1
- package/components/mask-input/mask-parser.d.ts +20 -2
- package/components/mask-input/mask-parser.js +21 -13
- package/components/mask-input/mask-parser.js.map +1 -1
- package/components/mask-input/validators.d.ts +1 -1
- package/components/mask-input/validators.js +1 -1
- package/components/mask-input/validators.js.map +1 -1
- package/components/nav-drawer/nav-drawer-header-item.d.ts +1 -1
- package/components/nav-drawer/nav-drawer-header-item.js +2 -2
- package/components/nav-drawer/nav-drawer-header-item.js.map +1 -1
- package/components/nav-drawer/nav-drawer-item.d.ts +2 -2
- package/components/nav-drawer/nav-drawer-item.js +4 -4
- package/components/nav-drawer/nav-drawer-item.js.map +1 -1
- package/components/nav-drawer/nav-drawer.d.ts +10 -10
- package/components/nav-drawer/nav-drawer.js +23 -37
- package/components/nav-drawer/nav-drawer.js.map +1 -1
- package/components/nav-drawer/themes/container.base.css.js +1 -1
- package/components/nav-drawer/themes/container.base.css.js.map +1 -1
- package/components/nav-drawer/themes/container.d.ts +1 -1
- package/components/nav-drawer/themes/container.js +2 -3
- package/components/nav-drawer/themes/container.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/header-item.d.ts +1 -1
- package/components/nav-drawer/themes/header-item.js.map +1 -1
- package/components/nav-drawer/themes/item.d.ts +1 -1
- package/components/nav-drawer/themes/item.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.shared.css.js +1 -1
- package/components/nav-drawer/themes/light/container/nav-drawer.shared.css.js.map +1 -1
- package/components/nav-drawer/themes/shared/container/nav-drawer.bootstrap.css.js +1 -1
- package/components/nav-drawer/themes/shared/container/nav-drawer.bootstrap.css.js.map +1 -1
- package/components/nav-drawer/themes/shared/container/nav-drawer.indigo.css.js +1 -1
- package/components/nav-drawer/themes/shared/container/nav-drawer.indigo.css.js.map +1 -1
- package/components/nav-drawer/themes/shared/container/nav-drawer.material.css.js +1 -1
- package/components/nav-drawer/themes/shared/container/nav-drawer.material.css.js.map +1 -1
- package/components/navbar/navbar.js +2 -2
- package/components/navbar/navbar.js.map +1 -1
- package/components/navbar/themes/themes.d.ts +1 -1
- package/components/navbar/themes/themes.js.map +1 -1
- package/components/popover/popover.d.ts +10 -3
- package/components/popover/popover.js +114 -99
- package/components/popover/popover.js.map +1 -1
- package/components/progress/base.d.ts +5 -8
- package/components/progress/base.js +25 -48
- package/components/progress/base.js.map +1 -1
- package/components/progress/circular-gradient.d.ts +2 -2
- package/components/progress/circular-gradient.js +1 -1
- package/components/progress/circular-gradient.js.map +1 -1
- package/components/progress/circular-progress.d.ts +15 -15
- package/components/progress/circular-progress.js +7 -6
- package/components/progress/circular-progress.js.map +1 -1
- package/components/progress/linear-progress.d.ts +12 -12
- package/components/progress/linear-progress.js +4 -4
- package/components/progress/linear-progress.js.map +1 -1
- package/components/progress/themes/circular/circular.progress.base.css.js +1 -1
- package/components/progress/themes/circular/circular.progress.base.css.js.map +1 -1
- package/components/progress/themes/circular/themes.d.ts +1 -1
- package/components/progress/themes/circular/themes.js.map +1 -1
- package/components/progress/themes/linear/linear.progress.base.css.js +1 -1
- package/components/progress/themes/linear/linear.progress.base.css.js.map +1 -1
- package/components/progress/themes/linear/themes.d.ts +1 -1
- package/components/progress/themes/linear/themes.js.map +1 -1
- package/components/qr-code/model/encode.d.ts +20 -0
- package/components/qr-code/model/encode.js +166 -0
- package/components/qr-code/model/encode.js.map +1 -0
- package/components/qr-code/model/error-correction.d.ts +15 -0
- package/components/qr-code/model/error-correction.js +1114 -0
- package/components/qr-code/model/error-correction.js.map +1 -0
- package/components/qr-code/model/mask.d.ts +11 -0
- package/components/qr-code/model/mask.js +161 -0
- package/components/qr-code/model/mask.js.map +1 -0
- package/components/qr-code/model/matrix.d.ts +15 -0
- package/components/qr-code/model/matrix.js +277 -0
- package/components/qr-code/model/matrix.js.map +1 -0
- package/components/qr-code/qr-code.d.ts +134 -0
- package/components/qr-code/qr-code.js +222 -0
- package/components/qr-code/qr-code.js.map +1 -0
- package/components/qr-code/renderer/constants.d.ts +26 -0
- package/components/qr-code/renderer/constants.js +5 -0
- package/components/qr-code/renderer/constants.js.map +1 -0
- package/components/qr-code/renderer/corner.d.ts +23 -0
- package/components/qr-code/renderer/corner.js +25 -0
- package/components/qr-code/renderer/corner.js.map +1 -0
- package/components/qr-code/renderer/dots.d.ts +14 -0
- package/components/qr-code/renderer/dots.js +7 -0
- package/components/qr-code/renderer/dots.js.map +1 -0
- package/components/qr-code/renderer/helpers.d.ts +18 -0
- package/components/qr-code/renderer/helpers.js +158 -0
- package/components/qr-code/renderer/helpers.js.map +1 -0
- package/components/qr-code/renderer/image.d.ts +23 -0
- package/components/qr-code/renderer/image.js +29 -0
- package/components/qr-code/renderer/image.js.map +1 -0
- package/components/qr-code/themes/dark/qr-code.bootstrap.css.js +3 -0
- package/components/qr-code/themes/dark/qr-code.bootstrap.css.js.map +1 -0
- package/components/qr-code/themes/dark/qr-code.fluent.css.d.ts +1 -0
- package/components/qr-code/themes/dark/qr-code.fluent.css.js +3 -0
- package/components/qr-code/themes/dark/qr-code.fluent.css.js.map +1 -0
- package/components/qr-code/themes/dark/qr-code.indigo.css.d.ts +1 -0
- package/components/qr-code/themes/dark/qr-code.indigo.css.js +3 -0
- package/components/qr-code/themes/dark/qr-code.indigo.css.js.map +1 -0
- package/components/qr-code/themes/dark/qr-code.material.css.d.ts +1 -0
- package/components/qr-code/themes/dark/qr-code.material.css.js +3 -0
- package/components/qr-code/themes/dark/qr-code.material.css.js.map +1 -0
- package/components/qr-code/themes/light/qr-code.bootstrap.css.d.ts +1 -0
- package/components/qr-code/themes/light/qr-code.bootstrap.css.js +3 -0
- package/components/qr-code/themes/light/qr-code.bootstrap.css.js.map +1 -0
- package/components/qr-code/themes/light/qr-code.fluent.css.d.ts +1 -0
- package/components/qr-code/themes/light/qr-code.fluent.css.js +3 -0
- package/components/qr-code/themes/light/qr-code.fluent.css.js.map +1 -0
- package/components/qr-code/themes/light/qr-code.indigo.css.d.ts +1 -0
- package/components/qr-code/themes/light/qr-code.indigo.css.js +3 -0
- package/components/qr-code/themes/light/qr-code.indigo.css.js.map +1 -0
- package/components/qr-code/themes/light/qr-code.material.css.d.ts +1 -0
- package/components/qr-code/themes/light/qr-code.material.css.js +3 -0
- package/components/qr-code/themes/light/qr-code.material.css.js.map +1 -0
- package/components/qr-code/themes/light/qr-code.shared.css.d.ts +1 -0
- package/components/qr-code/themes/light/qr-code.shared.css.js +3 -0
- package/components/qr-code/themes/light/qr-code.shared.css.js.map +1 -0
- package/components/qr-code/themes/qr-code.base.css.d.ts +1 -0
- package/components/qr-code/themes/qr-code.base.css.js +3 -0
- package/components/qr-code/themes/qr-code.base.css.js.map +1 -0
- package/components/qr-code/themes/shared/qr-code.common.css.d.ts +1 -0
- package/components/qr-code/themes/shared/qr-code.common.css.js +3 -0
- package/components/qr-code/themes/shared/qr-code.common.css.js.map +1 -0
- package/components/qr-code/themes/themes.d.ts +2 -0
- package/components/qr-code/themes/themes.js +46 -0
- package/components/qr-code/themes/themes.js.map +1 -0
- package/components/qr-code/types.d.ts +16 -0
- package/components/qr-code/types.js +2 -0
- package/components/qr-code/types.js.map +1 -0
- package/components/radio/controller.d.ts +7 -0
- package/components/radio/controller.js +14 -0
- package/components/radio/controller.js.map +1 -0
- package/components/radio/radio.d.ts +30 -18
- package/components/radio/radio.js +90 -89
- package/components/radio/radio.js.map +1 -1
- package/components/radio/themes/themes.d.ts +1 -1
- package/components/radio/themes/themes.js.map +1 -1
- package/components/radio/validators.d.ts +1 -1
- package/components/radio/validators.js +5 -3
- package/components/radio/validators.js.map +1 -1
- package/components/radio-group/radio-group.d.ts +17 -9
- package/components/radio-group/radio-group.js +46 -44
- package/components/radio-group/radio-group.js.map +1 -1
- package/components/radio-group/themes/themes.d.ts +1 -1
- package/components/radio-group/themes/themes.js.map +1 -1
- package/components/rating/rating-symbol.d.ts +1 -1
- package/components/rating/rating-symbol.js +1 -1
- package/components/rating/rating-symbol.js.map +1 -1
- package/components/rating/rating.d.ts +30 -18
- package/components/rating/rating.js +90 -81
- package/components/rating/rating.js.map +1 -1
- package/components/rating/themes/themes.d.ts +1 -1
- package/components/rating/themes/themes.js.map +1 -1
- package/components/resize-container/default-ghost.js +4 -3
- package/components/resize-container/default-ghost.js.map +1 -1
- package/components/resize-container/resize-container.d.ts +3 -3
- package/components/resize-container/resize-container.js +9 -7
- package/components/resize-container/resize-container.js.map +1 -1
- package/components/resize-container/resize-controller.js +6 -5
- package/components/resize-container/resize-controller.js.map +1 -1
- package/components/resize-container/themes/themes.d.ts +1 -1
- package/components/resize-container/themes/themes.js.map +1 -1
- package/components/ripple/ripple.d.ts +1 -1
- package/components/ripple/ripple.js +3 -2
- package/components/ripple/ripple.js.map +1 -1
- package/components/select/select-group.d.ts +11 -3
- package/components/select/select-group.js +21 -9
- package/components/select/select-group.js.map +1 -1
- package/components/select/select-header.d.ts +1 -1
- package/components/select/select-header.js +7 -2
- package/components/select/select-header.js.map +1 -1
- package/components/select/select-item.d.ts +4 -4
- package/components/select/select-item.js +3 -3
- package/components/select/select-item.js.map +1 -1
- package/components/select/select.d.ts +48 -28
- package/components/select/select.js +143 -94
- package/components/select/select.js.map +1 -1
- package/components/select/themes/select.base.css.js +1 -1
- package/components/select/themes/select.base.css.js.map +1 -1
- package/components/select/themes/themes.d.ts +1 -1
- package/components/select/themes/themes.js.map +1 -1
- package/components/select/validators.d.ts +1 -1
- package/components/select/validators.js +1 -1
- package/components/select/validators.js.map +1 -1
- package/components/slider/range-slider.d.ts +5 -4
- package/components/slider/range-slider.js +25 -73
- package/components/slider/range-slider.js.map +1 -1
- package/components/slider/slider-base.d.ts +9 -6
- package/components/slider/slider-base.js +35 -32
- package/components/slider/slider-base.js.map +1 -1
- package/components/slider/slider-label.js +1 -1
- package/components/slider/slider-label.js.map +1 -1
- package/components/slider/slider.d.ts +3 -3
- package/components/slider/slider.js +15 -11
- package/components/slider/slider.js.map +1 -1
- package/components/slider/themes/themes.d.ts +1 -1
- package/components/slider/themes/themes.js.map +1 -1
- package/components/snackbar/snackbar.d.ts +3 -3
- package/components/snackbar/snackbar.js +4 -4
- package/components/snackbar/snackbar.js.map +1 -1
- package/components/snackbar/themes/themes.d.ts +1 -1
- package/components/snackbar/themes/themes.js.map +1 -1
- package/components/splitter/splitter.d.ts +107 -24
- package/components/splitter/splitter.js +234 -147
- package/components/splitter/splitter.js.map +1 -1
- package/components/splitter/themes/themes.d.ts +1 -1
- package/components/splitter/themes/themes.js.map +1 -1
- package/components/splitter/types.d.ts +14 -3
- package/components/splitter/types.js.map +1 -1
- package/components/stepper/common/animations.d.ts +1 -1
- package/components/stepper/common/animations.js +2 -2
- package/components/stepper/common/animations.js.map +1 -1
- package/components/stepper/step.d.ts +4 -1
- package/components/stepper/step.js +16 -12
- package/components/stepper/step.js.map +1 -1
- package/components/stepper/stepper.d.ts +5 -16
- package/components/stepper/stepper.js +27 -89
- package/components/stepper/stepper.js.map +1 -1
- package/components/stepper/themes/step/themes.d.ts +1 -1
- package/components/stepper/themes/step/themes.js.map +1 -1
- package/components/tabs/tab-dom.d.ts +31 -28
- package/components/tabs/tab-dom.js +84 -34
- package/components/tabs/tab-dom.js.map +1 -1
- package/components/tabs/tab.d.ts +24 -6
- package/components/tabs/tab.js +36 -14
- package/components/tabs/tab.js.map +1 -1
- package/components/tabs/tabs.d.ts +37 -27
- package/components/tabs/tabs.js +118 -129
- package/components/tabs/tabs.js.map +1 -1
- package/components/tabs/themes/shared/tabs/tabs.indigo.css.js +1 -1
- package/components/tabs/themes/shared/tabs/tabs.indigo.css.js.map +1 -1
- package/components/tabs/themes/tab-themes.d.ts +1 -1
- package/components/tabs/themes/tab-themes.js.map +1 -1
- package/components/tabs/themes/tabs-themes.d.ts +1 -1
- package/components/tabs/themes/tabs-themes.js.map +1 -1
- package/components/tabs/themes/tabs.base.css.js +1 -1
- package/components/tabs/themes/tabs.base.css.js.map +1 -1
- package/components/textarea/textarea.d.ts +24 -20
- package/components/textarea/textarea.js +25 -27
- package/components/textarea/textarea.js.map +1 -1
- package/components/textarea/themes/themes.d.ts +1 -1
- package/components/textarea/themes/themes.js.map +1 -1
- package/components/textarea/validators.d.ts +1 -1
- package/components/textarea/validators.js +1 -1
- package/components/textarea/validators.js.map +1 -1
- package/components/theme-provider/theme-provider.d.ts +3 -5
- package/components/theme-provider/theme-provider.js +13 -23
- package/components/theme-provider/theme-provider.js.map +1 -1
- package/components/tile-manager/position.d.ts +1 -1
- package/components/tile-manager/position.js +2 -2
- package/components/tile-manager/position.js.map +1 -1
- package/components/tile-manager/resize-state.js +4 -3
- package/components/tile-manager/resize-state.js.map +1 -1
- package/components/tile-manager/themes/container.d.ts +1 -1
- package/components/tile-manager/themes/container.js.map +1 -1
- package/components/tile-manager/themes/tile.d.ts +1 -1
- package/components/tile-manager/themes/tile.js.map +1 -1
- package/components/tile-manager/tile-ghost-util.js +1 -1
- package/components/tile-manager/tile-ghost-util.js.map +1 -1
- package/components/tile-manager/tile-manager.d.ts +11 -22
- package/components/tile-manager/tile-manager.js +50 -81
- package/components/tile-manager/tile-manager.js.map +1 -1
- package/components/tile-manager/tile.d.ts +14 -22
- package/components/tile-manager/tile.js +66 -80
- package/components/tile-manager/tile.js.map +1 -1
- package/components/toast/themes/themes.d.ts +1 -1
- package/components/toast/themes/themes.js.map +1 -1
- package/components/toast/toast.d.ts +1 -1
- package/components/toast/toast.js +3 -3
- package/components/toast/toast.js.map +1 -1
- package/components/tooltip/controller.d.ts +18 -16
- package/components/tooltip/controller.js +62 -41
- package/components/tooltip/controller.js.map +1 -1
- package/components/tooltip/service.d.ts +2 -1
- package/components/tooltip/service.js +10 -15
- package/components/tooltip/service.js.map +1 -1
- package/components/tooltip/themes/shared/tooltip.common.css.js +1 -1
- package/components/tooltip/themes/shared/tooltip.common.css.js.map +1 -1
- package/components/tooltip/themes/shared/tooltip.indigo.css.js +1 -1
- package/components/tooltip/themes/shared/tooltip.indigo.css.js.map +1 -1
- package/components/tooltip/themes/themes.d.ts +1 -1
- package/components/tooltip/themes/themes.js.map +1 -1
- package/components/tooltip/themes/tooltip.base.css.js +1 -1
- package/components/tooltip/themes/tooltip.base.css.js.map +1 -1
- package/components/tooltip/tooltip.d.ts +68 -25
- package/components/tooltip/tooltip.js +130 -88
- package/components/tooltip/tooltip.js.map +1 -1
- package/components/tree/themes/container.base.css.js +1 -1
- package/components/tree/themes/container.base.css.js.map +1 -1
- package/components/tree/themes/container.d.ts +1 -1
- package/components/tree/themes/container.js.map +1 -1
- package/components/tree/themes/item.base.css.js +1 -1
- package/components/tree/themes/item.base.css.js.map +1 -1
- package/components/tree/themes/item.d.ts +1 -1
- package/components/tree/themes/item.js.map +1 -1
- package/components/tree/tree-item.d.ts +62 -36
- package/components/tree/tree-item.js +198 -208
- package/components/tree/tree-item.js.map +1 -1
- package/components/tree/tree.common.d.ts +16 -1
- package/components/tree/tree.common.js +40 -1
- package/components/tree/tree.common.js.map +1 -1
- package/components/tree/tree.d.ts +17 -23
- package/components/tree/tree.js +68 -94
- package/components/tree/tree.js.map +1 -1
- package/components/tree/tree.navigation.d.ts +39 -29
- package/components/tree/tree.navigation.js +140 -192
- package/components/tree/tree.navigation.js.map +1 -1
- package/components/tree/tree.selection.d.ts +32 -31
- package/components/tree/tree.selection.js +184 -178
- package/components/tree/tree.selection.js.map +1 -1
- package/components/types.js.map +1 -1
- package/components/validation-container/validation-container.d.ts +2 -3
- package/components/validation-container/validation-container.js +7 -6
- package/components/validation-container/validation-container.js.map +1 -1
- package/components/virtualization/engine.d.ts +94 -0
- package/components/virtualization/engine.js +217 -0
- package/components/virtualization/engine.js.map +1 -0
- package/components/virtualization/types.d.ts +54 -0
- package/components/virtualization/types.js +14 -0
- package/components/virtualization/types.js.map +1 -0
- package/components/virtualization/virtualization.d.ts +249 -0
- package/components/virtualization/virtualization.js +482 -0
- package/components/virtualization/virtualization.js.map +1 -0
- package/components/visually-hidden/visually-hidden.js +1 -1
- package/components/visually-hidden/visually-hidden.js.map +1 -1
- package/custom-elements.json +50649 -38832
- package/extras/chat-markdown-renderer.d.ts +1 -1
- package/extras/chat-markdown-renderer.js.map +1 -1
- package/igniteui-webcomponents.css-data.json +2 -2
- package/igniteui-webcomponents.html-data.json +1 -1
- package/index.d.ts +17 -12
- package/index.js +11 -9
- package/index.js.map +1 -1
- package/internals/abort-handler.js.map +1 -0
- package/internals/context.d.ts +39 -0
- package/{components/common → internals}/context.js +2 -1
- package/internals/context.js.map +1 -0
- package/internals/controllers/adopt-styles.d.ts +76 -0
- package/internals/controllers/adopt-styles.js +173 -0
- package/internals/controllers/adopt-styles.js.map +1 -0
- package/internals/controllers/aria-projection.d.ts +144 -0
- package/internals/controllers/aria-projection.js +138 -0
- package/internals/controllers/aria-projection.js.map +1 -0
- package/{components/common → internals}/controllers/async-consumer.js +8 -7
- package/internals/controllers/async-consumer.js.map +1 -0
- package/internals/controllers/command.js.map +1 -0
- package/internals/controllers/context-provider.d.ts +48 -0
- package/internals/controllers/context-provider.js +29 -0
- package/internals/controllers/context-provider.js.map +1 -0
- package/{components/common → internals}/controllers/drag.js +8 -7
- package/internals/controllers/drag.js.map +1 -0
- package/{components/common → internals}/controllers/focus-ring.js +5 -2
- package/internals/controllers/focus-ring.js.map +1 -0
- package/{components/common → internals}/controllers/fullscreen.js +6 -3
- package/internals/controllers/fullscreen.js.map +1 -0
- package/{components/common → internals}/controllers/gestures.d.ts +1 -1
- package/{components/common → internals}/controllers/gestures.js +7 -4
- package/internals/controllers/gestures.js.map +1 -0
- package/internals/controllers/group.d.ts +64 -0
- package/internals/controllers/group.js +104 -0
- package/internals/controllers/group.js.map +1 -0
- package/{components/common → internals}/controllers/id-resolver.js +15 -21
- package/internals/controllers/id-resolver.js.map +1 -0
- package/{components/common → internals}/controllers/internals.d.ts +52 -3
- package/{components/common → internals}/controllers/internals.js +35 -0
- package/internals/controllers/internals.js.map +1 -0
- package/{components/common → internals}/controllers/key-bindings.d.ts +8 -5
- package/{components/common → internals}/controllers/key-bindings.js +46 -29
- package/internals/controllers/key-bindings.js.map +1 -0
- package/{components/common → internals}/controllers/mutation-observer.d.ts +3 -2
- package/{components/common → internals}/controllers/mutation-observer.js +24 -22
- package/internals/controllers/mutation-observer.js.map +1 -0
- package/{components/common → internals}/controllers/resize-observer.d.ts +11 -1
- package/{components/common → internals}/controllers/resize-observer.js +13 -2
- package/internals/controllers/resize-observer.js.map +1 -0
- package/{components/common → internals}/controllers/root-click.js +8 -13
- package/internals/controllers/root-click.js.map +1 -0
- package/{components/common → internals}/controllers/root-scroll.d.ts +11 -8
- package/internals/controllers/root-scroll.js +71 -0
- package/internals/controllers/root-scroll.js.map +1 -0
- package/internals/controllers/roving-focus.d.ts +72 -0
- package/internals/controllers/roving-focus.js +61 -0
- package/internals/controllers/roving-focus.js.map +1 -0
- package/{components/common → internals}/controllers/slot.d.ts +25 -1
- package/{components/common → internals}/controllers/slot.js +22 -6
- package/internals/controllers/slot.js.map +1 -0
- package/internals/controllers/toggle.d.ts +96 -0
- package/internals/controllers/toggle.js +65 -0
- package/internals/controllers/toggle.js.map +1 -0
- package/internals/date/compare.d.ts +2 -0
- package/internals/date/compare.js +23 -0
- package/internals/date/compare.js.map +1 -0
- package/internals/date/converters.d.ts +18 -0
- package/internals/date/converters.js +70 -0
- package/internals/date/converters.js.map +1 -0
- package/{components/calendar → internals/date}/model.d.ts +10 -3
- package/{components/calendar → internals/date}/model.js +29 -0
- package/internals/date/model.js.map +1 -0
- package/internals/decorators/blazorAdditionalDependencies.js.map +1 -0
- package/internals/decorators/blazorDeepImport.js.map +1 -0
- package/internals/decorators/blazorInclude.js.map +1 -0
- package/internals/decorators/blazorIndirectRender.js.map +1 -0
- package/internals/decorators/blazorSuppressComponent.js.map +1 -0
- package/internals/decorators/coerced-property.d.ts +47 -0
- package/internals/decorators/coerced-property.js +36 -0
- package/internals/decorators/coerced-property.js.map +1 -0
- package/internals/decorators/shadow-options.js.map +1 -0
- package/internals/definitions/defineAllComponents.js +153 -0
- package/internals/definitions/defineAllComponents.js.map +1 -0
- package/internals/definitions/defineComponents.js.map +1 -0
- package/internals/definitions/register.js.map +1 -0
- package/{components/common → internals}/i18n/EN/calendar.resources.js +1 -1
- package/internals/i18n/EN/calendar.resources.js.map +1 -0
- package/internals/i18n/EN/chat.resources.js.map +1 -0
- package/internals/i18n/EN/date-picker.resources.js.map +1 -0
- package/internals/i18n/EN/date-range-picker.resources.js.map +1 -0
- package/{components/common → internals}/i18n/i18n-controller.d.ts +22 -3
- package/{components/common → internals}/i18n/i18n-controller.js +28 -6
- package/internals/i18n/i18n-controller.js.map +1 -0
- package/{components/common → internals}/i18n/utils.js +1 -1
- package/internals/i18n/utils.js.map +1 -0
- package/{components/common → internals}/mixins/alert.d.ts +3 -3
- package/{components/common → internals}/mixins/alert.js +8 -6
- package/internals/mixins/alert.js.map +1 -0
- package/{components/common → internals}/mixins/combo-box.d.ts +13 -14
- package/{components/common → internals}/mixins/combo-box.js +15 -36
- package/internals/mixins/combo-box.js.map +1 -0
- package/internals/mixins/constructor.js.map +1 -0
- package/internals/mixins/event-emitter.js.map +1 -0
- package/{components/common → internals}/mixins/forms/associated-required.js +10 -19
- package/internals/mixins/forms/associated-required.js.map +1 -0
- package/{components/common → internals}/mixins/forms/associated.js +63 -38
- package/internals/mixins/forms/associated.js.map +1 -0
- package/{components/common → internals}/mixins/forms/form-transformers.d.ts +1 -1
- package/{components/common → internals}/mixins/forms/form-transformers.js +2 -2
- package/internals/mixins/forms/form-transformers.js.map +1 -0
- package/internals/mixins/forms/form-value.js.map +1 -0
- package/{components/common → internals}/mixins/forms/types.d.ts +25 -7
- package/internals/mixins/forms/types.js.map +1 -0
- package/internals/mixins/i18n.d.ts +31 -0
- package/internals/mixins/i18n.js +36 -0
- package/internals/mixins/i18n.js.map +1 -0
- package/{components/common → internals}/mixins/mask-behavior.d.ts +17 -8
- package/{components/common → internals}/mixins/mask-behavior.js +118 -31
- package/internals/mixins/mask-behavior.js.map +1 -0
- package/{components/common → internals}/mixins/option.d.ts +0 -2
- package/{components/common → internals}/mixins/option.js +5 -6
- package/internals/mixins/option.js.map +1 -0
- package/internals/part-map.js.map +1 -0
- package/{components/common → internals}/templates/input-shell.d.ts +8 -1
- package/{components/common → internals}/templates/input-shell.js +14 -4
- package/internals/templates/input-shell.js.map +1 -0
- package/{components/common → internals}/templates/masked-input.d.ts +8 -4
- package/{components/common → internals}/templates/masked-input.js +4 -3
- package/internals/templates/masked-input.js.map +1 -0
- package/internals/templates/slotted-icon.d.ts +32 -0
- package/internals/templates/slotted-icon.js +19 -0
- package/internals/templates/slotted-icon.js.map +1 -0
- package/internals/templates/toggle-shell.d.ts +46 -0
- package/internals/templates/toggle-shell.js +38 -0
- package/internals/templates/toggle-shell.js.map +1 -0
- package/internals/timing.d.ts +32 -0
- package/internals/timing.js +20 -0
- package/internals/timing.js.map +1 -0
- package/internals/utils/arrays.d.ts +53 -0
- package/internals/utils/arrays.js +31 -0
- package/internals/utils/arrays.js.map +1 -0
- package/internals/utils/dom.d.ts +114 -0
- package/internals/utils/dom.js +157 -0
- package/internals/utils/dom.js.map +1 -0
- package/internals/utils/events.d.ts +41 -0
- package/internals/utils/events.js +37 -0
- package/internals/utils/events.js.map +1 -0
- package/internals/utils/lit.d.ts +8 -0
- package/internals/utils/lit.js +15 -0
- package/internals/utils/lit.js.map +1 -0
- package/internals/utils/math.d.ts +50 -0
- package/internals/utils/math.js +38 -0
- package/internals/utils/math.js.map +1 -0
- package/internals/utils/objects.d.ts +25 -0
- package/internals/utils/objects.js +125 -0
- package/internals/utils/objects.js.map +1 -0
- package/internals/utils/strings.d.ts +44 -0
- package/internals/utils/strings.js +46 -0
- package/internals/utils/strings.js.map +1 -0
- package/internals/utils/types.d.ts +13 -0
- package/internals/utils/types.js +31 -0
- package/internals/utils/types.js.map +1 -0
- package/{components/common → internals}/validators.d.ts +24 -1
- package/{components/common → internals}/validators.js +25 -2
- package/internals/validators.js.map +1 -0
- package/package.json +15 -7
- package/themes/dark/bootstrap.css +1 -1
- package/themes/dark/fluent.css +1 -1
- package/themes/dark/indigo.css +1 -1
- package/themes/dark/material.css +1 -1
- package/themes/light/bootstrap.css +1 -1
- package/themes/light/fluent.css +1 -1
- package/themes/light/indigo.css +1 -1
- package/themes/light/material.css +1 -1
- package/theming/theming-controller.d.ts +5 -5
- package/theming/theming-controller.js.map +1 -1
- package/web-types.json +3 -3
- package/components/calendar/model.js.map +0 -1
- package/components/combo/combo-list.d.ts +0 -11
- package/components/combo/combo-list.js +0 -13
- package/components/combo/combo-list.js.map +0 -1
- package/components/common/abort-handler.js.map +0 -1
- package/components/common/context.d.ts +0 -25
- package/components/common/context.js.map +0 -1
- package/components/common/controllers/adopt-styles.d.ts +0 -124
- package/components/common/controllers/adopt-styles.js +0 -75
- package/components/common/controllers/adopt-styles.js.map +0 -1
- package/components/common/controllers/async-consumer.js.map +0 -1
- package/components/common/controllers/command.js.map +0 -1
- package/components/common/controllers/drag.js.map +0 -1
- package/components/common/controllers/focus-ring.js.map +0 -1
- package/components/common/controllers/fullscreen.js.map +0 -1
- package/components/common/controllers/gestures.js.map +0 -1
- package/components/common/controllers/id-resolver.js.map +0 -1
- package/components/common/controllers/internals.js.map +0 -1
- package/components/common/controllers/key-bindings.js.map +0 -1
- package/components/common/controllers/mutation-observer.js.map +0 -1
- package/components/common/controllers/resize-observer.js.map +0 -1
- package/components/common/controllers/root-click.js.map +0 -1
- package/components/common/controllers/root-scroll.js +0 -63
- package/components/common/controllers/root-scroll.js.map +0 -1
- package/components/common/controllers/slot.js.map +0 -1
- package/components/common/decorators/blazorAdditionalDependencies.js.map +0 -1
- package/components/common/decorators/blazorDeepImport.js.map +0 -1
- package/components/common/decorators/blazorInclude.js.map +0 -1
- package/components/common/decorators/blazorIndirectRender.js.map +0 -1
- package/components/common/decorators/blazorSuppressComponent.js.map +0 -1
- package/components/common/decorators/shadow-options.js.map +0 -1
- package/components/common/decorators/watch.d.ts +0 -5
- package/components/common/decorators/watch.js +0 -19
- package/components/common/decorators/watch.js.map +0 -1
- package/components/common/definitions/defineAllComponents.js +0 -151
- package/components/common/definitions/defineAllComponents.js.map +0 -1
- package/components/common/definitions/defineComponents.js.map +0 -1
- package/components/common/definitions/register.js.map +0 -1
- package/components/common/i18n/EN/calendar.resources.js.map +0 -1
- package/components/common/i18n/EN/chat.resources.js.map +0 -1
- package/components/common/i18n/EN/date-picker.resources.js.map +0 -1
- package/components/common/i18n/EN/date-range-picker.resources.js.map +0 -1
- package/components/common/i18n/i18n-controller.js.map +0 -1
- package/components/common/i18n/utils.js.map +0 -1
- package/components/common/mixins/alert.js.map +0 -1
- package/components/common/mixins/combo-box.js.map +0 -1
- package/components/common/mixins/constructor.js.map +0 -1
- package/components/common/mixins/event-emitter.js.map +0 -1
- package/components/common/mixins/forms/associated-required.js.map +0 -1
- package/components/common/mixins/forms/associated.js.map +0 -1
- package/components/common/mixins/forms/form-transformers.js.map +0 -1
- package/components/common/mixins/forms/form-value.js.map +0 -1
- package/components/common/mixins/forms/types.js.map +0 -1
- package/components/common/mixins/mask-behavior.js.map +0 -1
- package/components/common/mixins/option.js.map +0 -1
- package/components/common/part-map.js.map +0 -1
- package/components/common/templates/input-shell.js.map +0 -1
- package/components/common/templates/masked-input.js.map +0 -1
- package/components/common/util.d.ts +0 -196
- package/components/common/util.js +0 -390
- package/components/common/util.js.map +0 -1
- package/components/common/validators.js.map +0 -1
- package/components/icon/registry/default-map.d.ts +0 -107
- package/components/icon/registry/default-map.js +0 -25
- package/components/icon/registry/default-map.js.map +0 -1
- package/components/nav-drawer/themes/shared/container/nav-drawer.fluent.css.js +0 -3
- package/components/nav-drawer/themes/shared/container/nav-drawer.fluent.css.js.map +0 -1
- package/components/radio/utils.d.ts +0 -13
- package/components/radio/utils.js +0 -37
- package/components/radio/utils.js.map +0 -1
- /package/components/{nav-drawer/themes/shared/container/nav-drawer.fluent.css.d.ts → qr-code/themes/dark/qr-code.bootstrap.css.d.ts} +0 -0
- /package/{components/common → internals}/abort-handler.d.ts +0 -0
- /package/{components/common → internals}/abort-handler.js +0 -0
- /package/{components/common → internals}/controllers/async-consumer.d.ts +0 -0
- /package/{components/common → internals}/controllers/command.d.ts +0 -0
- /package/{components/common → internals}/controllers/command.js +0 -0
- /package/{components/common → internals}/controllers/drag.d.ts +0 -0
- /package/{components/common → internals}/controllers/focus-ring.d.ts +0 -0
- /package/{components/common → internals}/controllers/fullscreen.d.ts +0 -0
- /package/{components/common → internals}/controllers/id-resolver.d.ts +0 -0
- /package/{components/common → internals}/controllers/root-click.d.ts +0 -0
- /package/{components/common → internals}/decorators/blazorAdditionalDependencies.d.ts +0 -0
- /package/{components/common → internals}/decorators/blazorAdditionalDependencies.js +0 -0
- /package/{components/common → internals}/decorators/blazorDeepImport.d.ts +0 -0
- /package/{components/common → internals}/decorators/blazorDeepImport.js +0 -0
- /package/{components/common → internals}/decorators/blazorInclude.d.ts +0 -0
- /package/{components/common → internals}/decorators/blazorInclude.js +0 -0
- /package/{components/common → internals}/decorators/blazorIndirectRender.d.ts +0 -0
- /package/{components/common → internals}/decorators/blazorIndirectRender.js +0 -0
- /package/{components/common → internals}/decorators/blazorSuppressComponent.d.ts +0 -0
- /package/{components/common → internals}/decorators/blazorSuppressComponent.js +0 -0
- /package/{components/common → internals}/decorators/shadow-options.d.ts +0 -0
- /package/{components/common → internals}/decorators/shadow-options.js +0 -0
- /package/{components/common → internals}/definitions/defineAllComponents.d.ts +0 -0
- /package/{components/common → internals}/definitions/defineComponents.d.ts +0 -0
- /package/{components/common → internals}/definitions/defineComponents.js +0 -0
- /package/{components/common → internals}/definitions/register.d.ts +0 -0
- /package/{components/common → internals}/definitions/register.js +0 -0
- /package/{components/common → internals}/i18n/EN/calendar.resources.d.ts +0 -0
- /package/{components/common → internals}/i18n/EN/chat.resources.d.ts +0 -0
- /package/{components/common → internals}/i18n/EN/chat.resources.js +0 -0
- /package/{components/common → internals}/i18n/EN/date-picker.resources.d.ts +0 -0
- /package/{components/common → internals}/i18n/EN/date-picker.resources.js +0 -0
- /package/{components/common → internals}/i18n/EN/date-range-picker.resources.d.ts +0 -0
- /package/{components/common → internals}/i18n/EN/date-range-picker.resources.js +0 -0
- /package/{components/common → internals}/i18n/utils.d.ts +0 -0
- /package/{components/common → internals}/mixins/constructor.d.ts +0 -0
- /package/{components/common → internals}/mixins/constructor.js +0 -0
- /package/{components/common → internals}/mixins/event-emitter.d.ts +0 -0
- /package/{components/common → internals}/mixins/event-emitter.js +0 -0
- /package/{components/common → internals}/mixins/forms/associated-required.d.ts +0 -0
- /package/{components/common → internals}/mixins/forms/associated.d.ts +0 -0
- /package/{components/common → internals}/mixins/forms/form-value.d.ts +0 -0
- /package/{components/common → internals}/mixins/forms/form-value.js +0 -0
- /package/{components/common → internals}/mixins/forms/types.js +0 -0
- /package/{components/common → internals}/part-map.d.ts +0 -0
- /package/{components/common → internals}/part-map.js +0 -0
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { asNumber, clamp } from '
|
|
1
|
+
import { asNumber, clamp } from '#internals/utils/math.js';
|
|
2
2
|
import { MaskParser } from '../mask-input/mask-parser.js';
|
|
3
|
-
import { createDatePart, DatePartType } from './date-part.js';
|
|
4
|
-
|
|
5
|
-
export const FORMAT_CHAR_TO_DATE_PART = new Map([
|
|
3
|
+
import { createDatePart, DATE_PART_TYPES, DatePartType, TIME_PART_TYPES, } from './date-part.js';
|
|
4
|
+
const FORMAT_CHAR_TO_DATE_PART = new Map([
|
|
6
5
|
['d', DatePartType.Date],
|
|
7
6
|
['D', DatePartType.Date],
|
|
8
7
|
['M', DatePartType.Month],
|
|
@@ -16,7 +15,6 @@ export const FORMAT_CHAR_TO_DATE_PART = new Map([
|
|
|
16
15
|
['t', DatePartType.AmPm],
|
|
17
16
|
['T', DatePartType.AmPm],
|
|
18
17
|
]);
|
|
19
|
-
export const DATE_FORMAT_CHARS = new Set(FORMAT_CHAR_TO_DATE_PART.keys());
|
|
20
18
|
const CENTURY_THRESHOLD = 50;
|
|
21
19
|
const CENTURY_BASE = 2000;
|
|
22
20
|
const DEFAULT_DATE_VALUES = {
|
|
@@ -28,76 +26,96 @@ const DEFAULT_DATE_VALUES = {
|
|
|
28
26
|
seconds: 0,
|
|
29
27
|
};
|
|
30
28
|
export const DEFAULT_DATETIME_FORMAT = 'MM/dd/yyyy';
|
|
31
|
-
export
|
|
32
|
-
|
|
33
|
-
|
|
29
|
+
export function toMaskFormat(dateFormat) {
|
|
30
|
+
let result = '';
|
|
31
|
+
for (const char of dateFormat) {
|
|
32
|
+
const type = FORMAT_CHAR_TO_DATE_PART.get(char);
|
|
33
|
+
result += type ? (type === DatePartType.AmPm ? 'L' : '0') : char;
|
|
34
34
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
35
|
+
return result;
|
|
36
|
+
}
|
|
37
|
+
function normalizeYearFormat(builders) {
|
|
38
|
+
const year = builders.find((part) => part.type === DatePartType.Year);
|
|
39
|
+
if (year && year.format.length !== 2) {
|
|
40
|
+
year.end += 4 - year.format.length;
|
|
41
|
+
year.format = 'yyyy';
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
export class DateFormatMaskParser extends MaskParser {
|
|
45
|
+
get parts() {
|
|
46
|
+
this._parts ??= this._buildParts();
|
|
47
|
+
return this._parts;
|
|
48
|
+
}
|
|
49
|
+
_toMaskFormat(format) {
|
|
50
|
+
return toMaskFormat(format);
|
|
51
|
+
}
|
|
52
|
+
_invalidate() {
|
|
53
|
+
super._invalidate();
|
|
54
|
+
this._parts = undefined;
|
|
55
|
+
}
|
|
56
|
+
getPartForCursor(position) {
|
|
57
|
+
return this.parts.find((part) => part.type !== DatePartType.Literal &&
|
|
58
|
+
position >= part.start &&
|
|
59
|
+
position <= part.end);
|
|
60
|
+
}
|
|
61
|
+
getPartByType(type) {
|
|
62
|
+
return this.parts.find((part) => part.type === type);
|
|
63
|
+
}
|
|
64
|
+
getFirstPart() {
|
|
65
|
+
return this.parts.find((part) => part.type !== DatePartType.Literal);
|
|
66
|
+
}
|
|
67
|
+
isBlank(masked) {
|
|
68
|
+
return this.parts.every((part) => part.type === DatePartType.Literal || !this._typedPart(masked, part));
|
|
69
|
+
}
|
|
70
|
+
hasDateParts() {
|
|
71
|
+
return this.parts.some((part) => DATE_PART_TYPES.has(part.type));
|
|
72
|
+
}
|
|
73
|
+
hasTimeParts() {
|
|
74
|
+
return this.parts.some((part) => TIME_PART_TYPES.has(part.type));
|
|
40
75
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
this._parseDateFormat();
|
|
76
|
+
_typedPart(masked, part) {
|
|
77
|
+
return masked.substring(part.start, part.end).replaceAll(this.prompt, '');
|
|
44
78
|
}
|
|
45
|
-
|
|
46
|
-
|
|
79
|
+
}
|
|
80
|
+
export class DateTimeMaskParser extends DateFormatMaskParser {
|
|
81
|
+
constructor(options) {
|
|
82
|
+
super({ ...options, format: options?.format || DEFAULT_DATETIME_FORMAT });
|
|
47
83
|
}
|
|
48
|
-
|
|
49
|
-
const format = this.mask;
|
|
84
|
+
_buildParts() {
|
|
50
85
|
const builders = [];
|
|
51
|
-
|
|
52
|
-
const length = chars.length;
|
|
53
|
-
let currentBuilder = null;
|
|
86
|
+
let run = null;
|
|
54
87
|
let position = 0;
|
|
55
|
-
for (
|
|
56
|
-
const
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
if (currentBuilder) {
|
|
65
|
-
builders.push(currentBuilder);
|
|
66
|
-
}
|
|
67
|
-
currentBuilder = {
|
|
68
|
-
type: partType,
|
|
69
|
-
start: position,
|
|
70
|
-
end: position + 1,
|
|
71
|
-
format: char,
|
|
72
|
-
};
|
|
73
|
-
}
|
|
88
|
+
for (const char of this.mask) {
|
|
89
|
+
const type = FORMAT_CHAR_TO_DATE_PART.get(char);
|
|
90
|
+
if (run && !(type && run.format.includes(char))) {
|
|
91
|
+
builders.push(run);
|
|
92
|
+
run = null;
|
|
93
|
+
}
|
|
94
|
+
if (run) {
|
|
95
|
+
run.end = position + 1;
|
|
96
|
+
run.format += char;
|
|
74
97
|
}
|
|
75
98
|
else {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
currentBuilder = null;
|
|
79
|
-
}
|
|
80
|
-
builders.push({
|
|
81
|
-
type: DatePartType.Literal,
|
|
99
|
+
const builder = {
|
|
100
|
+
type: type ?? DatePartType.Literal,
|
|
82
101
|
start: position,
|
|
83
102
|
end: position + 1,
|
|
84
103
|
format: char,
|
|
85
|
-
}
|
|
104
|
+
};
|
|
105
|
+
if (type) {
|
|
106
|
+
run = builder;
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
builders.push(builder);
|
|
110
|
+
}
|
|
86
111
|
}
|
|
112
|
+
position++;
|
|
87
113
|
}
|
|
88
|
-
if (
|
|
89
|
-
builders.push(
|
|
90
|
-
}
|
|
91
|
-
this._normalizeYearFormatBuilder(builders);
|
|
92
|
-
this._dateParts = builders.map((b) => createDatePart(b.type, { start: b.start, end: b.end, format: b.format }));
|
|
93
|
-
}
|
|
94
|
-
_normalizeYearFormatBuilder(builders) {
|
|
95
|
-
const yearBuilder = builders.find((b) => b.type === DatePartType.Year);
|
|
96
|
-
if (yearBuilder && yearBuilder.format.length !== 2) {
|
|
97
|
-
const expansion = 4 - yearBuilder.format.length;
|
|
98
|
-
yearBuilder.end += expansion;
|
|
99
|
-
yearBuilder.format = 'yyyy';
|
|
114
|
+
if (run) {
|
|
115
|
+
builders.push(run);
|
|
100
116
|
}
|
|
117
|
+
normalizeYearFormat(builders);
|
|
118
|
+
return builders.map(({ type, ...options }) => createDatePart(type, options));
|
|
101
119
|
}
|
|
102
120
|
parseDate(masked) {
|
|
103
121
|
const parts = this._extractDateValues(masked);
|
|
@@ -116,16 +134,12 @@ export class DateTimeMaskParser extends MaskParser {
|
|
|
116
134
|
}
|
|
117
135
|
_extractDateValues(masked) {
|
|
118
136
|
const parts = {};
|
|
119
|
-
const
|
|
120
|
-
for (const datePart of this._dateParts) {
|
|
137
|
+
for (const datePart of this.parts) {
|
|
121
138
|
if (datePart.type === DatePartType.Literal)
|
|
122
139
|
continue;
|
|
123
140
|
const isMonthOrDate = datePart.type === DatePartType.Date ||
|
|
124
141
|
datePart.type === DatePartType.Month;
|
|
125
|
-
|
|
126
|
-
const cleaned = raw.replaceAll(prompt, '');
|
|
127
|
-
const value = asNumber(cleaned);
|
|
128
|
-
parts[datePart.type] = clamp(value, isMonthOrDate ? 1 : 0, Number.MAX_SAFE_INTEGER);
|
|
142
|
+
parts[datePart.type] = clamp(asNumber(this._typedPart(masked, datePart)), isMonthOrDate ? 1 : 0, Number.MAX_SAFE_INTEGER);
|
|
129
143
|
}
|
|
130
144
|
return parts;
|
|
131
145
|
}
|
|
@@ -134,96 +148,31 @@ export class DateTimeMaskParser extends MaskParser {
|
|
|
134
148
|
year: parts[DatePartType.Year],
|
|
135
149
|
month: parts[DatePartType.Month],
|
|
136
150
|
};
|
|
137
|
-
|
|
138
|
-
if (datePart.type === DatePartType.Literal)
|
|
139
|
-
continue;
|
|
151
|
+
return this.parts.every((datePart) => {
|
|
140
152
|
const value = parts[datePart.type];
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
if (parts[DatePartType.Date] !== undefined &&
|
|
148
|
-
parts[DatePartType.Month] !== undefined &&
|
|
149
|
-
parts[DatePartType.Year] !== undefined) {
|
|
150
|
-
if (parts[DatePartType.Date] >
|
|
151
|
-
this._daysInMonth(parts[DatePartType.Year], parts[DatePartType.Month])) {
|
|
152
|
-
return false;
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
return true;
|
|
153
|
+
return datePart.type === DatePartType.Literal || value === undefined
|
|
154
|
+
? true
|
|
155
|
+
: datePart.validate(value, context);
|
|
156
|
+
});
|
|
156
157
|
}
|
|
157
158
|
_applyAmPmConversion(parts, masked) {
|
|
158
|
-
const
|
|
159
|
-
|
|
159
|
+
const amPm = this.getPartByType(DatePartType.AmPm);
|
|
160
|
+
const hours = parts[DatePartType.Hours];
|
|
161
|
+
if (!amPm || hours === undefined) {
|
|
160
162
|
return;
|
|
161
|
-
parts[DatePartType.Hours] %= 12;
|
|
162
|
-
const amPmValue = masked
|
|
163
|
-
.substring(amPmPart.start, amPmPart.end)
|
|
164
|
-
.replaceAll(this.prompt, '');
|
|
165
|
-
if (amPmValue.toLowerCase() === 'pm') {
|
|
166
|
-
parts[DatePartType.Hours] += 12;
|
|
167
163
|
}
|
|
164
|
+
const marker = this._typedPart(masked, amPm);
|
|
165
|
+
parts[DatePartType.Hours] =
|
|
166
|
+
(hours % 12) + (marker.toLowerCase() === 'pm' ? 12 : 0);
|
|
168
167
|
}
|
|
169
168
|
_createDateFromParts(parts) {
|
|
170
169
|
const d = DEFAULT_DATE_VALUES;
|
|
171
170
|
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);
|
|
172
171
|
}
|
|
173
|
-
_daysInMonth(year, month) {
|
|
174
|
-
return new Date(year, month + 1, 0).getDate();
|
|
175
|
-
}
|
|
176
172
|
formatDate(date) {
|
|
177
173
|
return date
|
|
178
|
-
? this.
|
|
174
|
+
? this.parts.map((part) => part.getValue(date)).join('')
|
|
179
175
|
: this.emptyMask;
|
|
180
176
|
}
|
|
181
|
-
getDatePartAtPosition(position) {
|
|
182
|
-
return this._dateParts.find((p) => p.type !== DatePartType.Literal &&
|
|
183
|
-
position >= p.start &&
|
|
184
|
-
position < p.end);
|
|
185
|
-
}
|
|
186
|
-
getDatePartForCursor(position) {
|
|
187
|
-
return this._dateParts.find((p) => p.type !== DatePartType.Literal &&
|
|
188
|
-
position >= p.start &&
|
|
189
|
-
position <= p.end);
|
|
190
|
-
}
|
|
191
|
-
hasDateParts() {
|
|
192
|
-
return this._dateParts.some((p) => p.type === DatePartType.Date ||
|
|
193
|
-
p.type === DatePartType.Month ||
|
|
194
|
-
p.type === DatePartType.Year);
|
|
195
|
-
}
|
|
196
|
-
hasTimeParts() {
|
|
197
|
-
return this._dateParts.some((p) => p.type === DatePartType.Hours ||
|
|
198
|
-
p.type === DatePartType.Minutes ||
|
|
199
|
-
p.type === DatePartType.Seconds);
|
|
200
|
-
}
|
|
201
|
-
getFirstDatePart() {
|
|
202
|
-
return this._dateParts.find((p) => p.type !== DatePartType.Literal);
|
|
203
|
-
}
|
|
204
|
-
getPartByType(type) {
|
|
205
|
-
return this._dateParts.find((p) => p.type === type);
|
|
206
|
-
}
|
|
207
|
-
_parseMaskLiterals() {
|
|
208
|
-
const dateFormat = this._options.format;
|
|
209
|
-
const maskFormat = DateTimeMaskParser.convertDateFormatToMaskFormat(dateFormat);
|
|
210
|
-
const originalFormat = this._options.format;
|
|
211
|
-
this._options.format = maskFormat;
|
|
212
|
-
super._parseMaskLiterals();
|
|
213
|
-
this._options.format = originalFormat;
|
|
214
|
-
this._parseDateFormat();
|
|
215
|
-
}
|
|
216
|
-
static convertDateFormatToMaskFormat(dateFormat) {
|
|
217
|
-
let result = '';
|
|
218
|
-
for (const char of dateFormat) {
|
|
219
|
-
if (DATE_FORMAT_CHARS.has(char)) {
|
|
220
|
-
result += char === 't' || char === 'T' ? 'L' : '0';
|
|
221
|
-
}
|
|
222
|
-
else {
|
|
223
|
-
result += char;
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
return result;
|
|
227
|
-
}
|
|
228
177
|
}
|
|
229
178
|
//# sourceMappingURL=datetime-mask-parser.js.map
|
|
@@ -1 +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 */\n/**\n * Re-export createDatePart factory for creating standalone parts.\n */\nexport { createDatePart, DatePartType as DateParts };\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 */\nexport const 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 */\nexport const 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 */\nexport const 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 =\n DateTimeMaskParser.convertDateFormatToMaskFormat(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 //#endregion\n\n //#region Static Utilities\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 * This is a static utility that can be reused by other parsers.\n *\n * @param dateFormat - The date format string to convert (e.g., 'MM/dd/yyyy')\n * @returns The mask format string (e.g., '00/00/0000')\n */\n public static convertDateFormatToMaskFormat(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
|
+
{"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 '#internals/utils/math.js';\nimport { type MaskOptions, MaskParser } from '../mask-input/mask-parser.js';\nimport {\n createDatePart,\n DATE_PART_TYPES,\n type DatePartOptions,\n DatePartType,\n type IDatePart,\n TIME_PART_TYPES,\n} from './date-part.js';\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/** 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 */\nexport const DEFAULT_DATETIME_FORMAT = 'MM/dd/yyyy';\n\n//#endregion\n\n//#region Format conversion\n\n/** A mutable date part under construction, before it is handed to `createDatePart`. */\ntype PartBuilder = DatePartOptions & { type: DatePartType };\n\n/**\n * Converts a date format string into a mask pattern. Date characters become `0`, or `L`\n * for the alphabetic AM/PM marker; everything else is carried over as a literal.\n *\n * @example\n * ```ts\n * toMaskFormat('MM/dd/yyyy'); // '00/00/0000'\n * ```\n */\nexport function toMaskFormat(dateFormat: string): string {\n let result = '';\n\n for (const char of dateFormat) {\n const type = FORMAT_CHAR_TO_DATE_PART.get(char);\n result += type ? (type === DatePartType.AmPm ? 'L' : '0') : char;\n }\n\n return result;\n}\n\n/**\n * Widens a short year format to `yyyy` for editing purposes, `yy` excluded - a two digit\n * year is edited as two digits.\n */\nfunction normalizeYearFormat(builders: PartBuilder[]): void {\n const year = builders.find((part) => part.type === DatePartType.Year);\n\n if (year && year.format.length !== 2) {\n year.end += 4 - year.format.length;\n year.format = 'yyyy';\n }\n}\n\n//#endregion\n\n/**\n * Base for parsers whose public format is a date/time format string rather than a mask\n * pattern. Owns the translation between the two and the list of positioned parts.\n */\nexport abstract class DateFormatMaskParser<\n T extends IDatePart = IDatePart,\n> extends MaskParser {\n /**\n * Built on first read, because {@link MaskParser} parses the mask from its constructor -\n * before any subclass field exists. Declared without an initializer so that it survives\n * the `_invalidate` call made from there.\n */\n private _parts?: T[];\n\n /** The positioned parts of the current format, literals included. */\n public get parts(): ReadonlyArray<T> {\n this._parts ??= this._buildParts();\n return this._parts;\n }\n\n protected abstract _buildParts(): T[];\n\n protected override _toMaskFormat(format: string): string {\n return toMaskFormat(format);\n }\n\n protected override _invalidate(): void {\n super._invalidate();\n this._parts = undefined;\n }\n\n /**\n * The part at a cursor position. The end is inclusive, so a caret resting at the end of\n * a part still resolves to it.\n */\n public getPartForCursor(position: number): T | undefined {\n return this.parts.find(\n (part) =>\n part.type !== DatePartType.Literal &&\n position >= part.start &&\n position <= part.end\n );\n }\n\n /** The first part of the given type, if the format contains one. */\n public getPartByType(type: DatePartType): T | undefined {\n return this.parts.find((part) => part.type === type);\n }\n\n /** The first non-literal part - the default target when nothing is focused. */\n public getFirstPart(): T | undefined {\n return this.parts.find((part) => part.type !== DatePartType.Literal);\n }\n\n /**\n * Whether the masked string holds nothing typed at all - every date/time position\n * is still a prompt. Unlike a partially filled mask, there is no value in it to\n * complete from the part defaults.\n */\n public isBlank(masked: string): boolean {\n return this.parts.every(\n (part) =>\n part.type === DatePartType.Literal || !this._typedPart(masked, part)\n );\n }\n\n /** Whether the format contains a day, month or year part. */\n public hasDateParts(): boolean {\n return this.parts.some((part) => DATE_PART_TYPES.has(part.type));\n }\n\n /** Whether the format contains an hours, minutes or seconds part. */\n public hasTimeParts(): boolean {\n return this.parts.some((part) => TIME_PART_TYPES.has(part.type));\n }\n\n /** The characters typed into `part`, the prompts of the unfilled positions removed. */\n protected _typedPart(masked: string, part: T): string {\n return masked.substring(part.start, part.end).replaceAll(this.prompt, '');\n }\n}\n\n/**\n * A mask parser for date/time input fields.\n *\n * @example\n * ```ts\n * const parser = new DateTimeMaskParser({ format: 'MM/dd/yyyy' });\n * parser.apply('12252023'); // '12/25/2023'\n * parser.parseDate('12/25/2023'); // Date\n * ```\n */\nexport class DateTimeMaskParser extends DateFormatMaskParser {\n constructor(options?: MaskOptions) {\n super({ ...options, format: options?.format || DEFAULT_DATETIME_FORMAT });\n }\n\n //#region Date Format Parsing\n\n protected override _buildParts(): IDatePart[] {\n const builders: PartBuilder[] = [];\n\n let run: PartBuilder | null = null;\n let position = 0;\n\n for (const char of this.mask) {\n const type = FORMAT_CHAR_TO_DATE_PART.get(char);\n\n // A part runs only while the same format character repeats - 'MM' is one part,\n // 'Mm' is two - and any literal closes it.\n if (run && !(type && run.format.includes(char))) {\n builders.push(run);\n run = null;\n }\n\n if (run) {\n run.end = position + 1;\n run.format += char;\n } else {\n const builder: PartBuilder = {\n type: type ?? DatePartType.Literal,\n start: position,\n end: position + 1,\n format: char,\n };\n\n if (type) {\n run = builder;\n } else {\n builders.push(builder);\n }\n }\n\n position++;\n }\n\n if (run) {\n builders.push(run);\n }\n\n normalizeYearFormat(builders);\n\n return builders.map(({ type, ...options }) =>\n createDatePart(type, options)\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 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 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\n for (const datePart of this.parts) {\n if (datePart.type === DatePartType.Literal) continue;\n\n const isMonthOrDate =\n datePart.type === DatePartType.Date ||\n datePart.type === DatePartType.Month;\n\n parts[datePart.type] = clamp(\n asNumber(this._typedPart(masked, datePart)),\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 */\n private _validateDateParts(\n parts: Partial<Record<DatePartType, number>>\n ): boolean {\n // Day-of-month validation needs both, so the context is built up front.\n const context = {\n year: parts[DatePartType.Year],\n month: parts[DatePartType.Month],\n };\n\n return this.parts.every((datePart) => {\n const value = parts[datePart.type];\n\n return datePart.type === DatePartType.Literal || value === undefined\n ? true\n : datePart.validate(value, context);\n });\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 amPm = this.getPartByType(DatePartType.AmPm);\n const hours = parts[DatePartType.Hours];\n\n // A format can carry an AM/PM marker without an hours part; there is nothing to shift.\n if (!amPm || hours === undefined) {\n return;\n }\n\n const marker = this._typedPart(masked, amPm);\n\n parts[DatePartType.Hours] =\n (hours % 12) + (marker.toLowerCase() === 'pm' ? 12 : 0);\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 //#endregion\n\n //#region Date Formatting\n\n /**\n * Formats a Date object into a masked string according to the current format.\n */\n public formatDate(date: Date | null): string {\n return date\n ? this.parts.map((part) => part.getValue(date)).join('')\n : this.emptyMask;\n }\n\n //#endregion\n}\n"]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { type Validator } from '
|
|
1
|
+
import { type Validator } from '#internals/validators.js';
|
|
2
2
|
import type IgcDateTimeInputComponent from './date-time-input.js';
|
|
3
3
|
export declare const dateTimeInputValidators: Validator<IgcDateTimeInputComponent>[];
|
|
@@ -1,18 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { maxDateValidator, minDateValidator, requiredValidator, } from '../common/validators.js';
|
|
1
|
+
import { createMaxDateTimeValidator, createMinDateTimeValidator, requiredValidator, } from '#internals/validators.js';
|
|
3
2
|
export const dateTimeInputValidators = [
|
|
4
3
|
requiredValidator,
|
|
5
|
-
{
|
|
6
|
-
|
|
7
|
-
isValid: (host) => host.value && host.min
|
|
8
|
-
? !isDateLessThanMin(host.value, host.min, host.hasTimeParts(), host.hasDateParts())
|
|
9
|
-
: true,
|
|
10
|
-
},
|
|
11
|
-
{
|
|
12
|
-
...maxDateValidator,
|
|
13
|
-
isValid: (host) => host.value && host.max
|
|
14
|
-
? !isDateExceedingMax(host.value, host.max, host.hasTimeParts(), host.hasDateParts())
|
|
15
|
-
: true,
|
|
16
|
-
},
|
|
4
|
+
createMinDateTimeValidator(({ value }) => [value]),
|
|
5
|
+
createMaxDateTimeValidator(({ value }) => [value]),
|
|
17
6
|
];
|
|
18
7
|
//# sourceMappingURL=validators.js.map
|
|
@@ -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,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,iBAAiB,GAElB,MAAM,0BAA0B,CAAC;AAGlC,MAAM,CAAC,MAAM,uBAAuB,GAA2C;IAC7E,iBAAiB;IACjB,0BAA0B,CAA4B,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;IAC7E,0BAA0B,CAA4B,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;CAC9E,CAAC","sourcesContent":["import {\n createMaxDateTimeValidator,\n createMinDateTimeValidator,\n requiredValidator,\n type Validator,\n} from '#internals/validators.js';\nimport type IgcDateTimeInputComponent from './date-time-input.js';\n\nexport const dateTimeInputValidators: Validator<IgcDateTimeInputComponent>[] = [\n requiredValidator,\n createMinDateTimeValidator<IgcDateTimeInputComponent>(({ value }) => [value]),\n createMaxDateTimeValidator<IgcDateTimeInputComponent>(({ value }) => [value]),\n];\n"]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { LitElement, type PropertyValues } from 'lit';
|
|
2
|
-
import type { Constructor } from '
|
|
2
|
+
import type { Constructor } from '#internals/mixins/constructor.js';
|
|
3
3
|
export interface IgcDialogComponentEventMap {
|
|
4
4
|
igcClosing: CustomEvent<void>;
|
|
5
5
|
igcClosed: CustomEvent<void>;
|
|
6
6
|
}
|
|
7
|
-
declare const IgcDialogComponent_base: Constructor<import("
|
|
7
|
+
declare const IgcDialogComponent_base: Constructor<import("#internals/mixins/event-emitter.js").EventEmitterInterface<IgcDialogComponentEventMap>> & Constructor<LitElement>;
|
|
8
8
|
/**
|
|
9
9
|
* A modal dialog component built on the native `<dialog>` element.
|
|
10
10
|
*
|
|
@@ -21,7 +21,7 @@ declare const IgcDialogComponent_base: Constructor<import("../common/mixins/even
|
|
|
21
21
|
*
|
|
22
22
|
* @element igc-dialog
|
|
23
23
|
*
|
|
24
|
-
* @fires igcClosing - Emitted just before the dialog closes. Cancelable
|
|
24
|
+
* @fires igcClosing - Emitted just before the dialog closes. Cancelable -
|
|
25
25
|
* call `event.preventDefault()` to abort the closing sequence.
|
|
26
26
|
* @fires igcClosed - Emitted after the dialog has fully closed and its
|
|
27
27
|
* exit animation has completed.
|
|
@@ -50,6 +50,7 @@ export default class IgcDialogComponent extends IgcDialogComponent_base {
|
|
|
50
50
|
private readonly _slots;
|
|
51
51
|
private readonly _dialogRef;
|
|
52
52
|
private readonly _player;
|
|
53
|
+
private readonly _toggleController;
|
|
53
54
|
/**
|
|
54
55
|
* Backdrop animation helper.
|
|
55
56
|
*/
|
|
@@ -115,21 +116,19 @@ export default class IgcDialogComponent extends IgcDialogComponent_base {
|
|
|
115
116
|
private _handleCancel;
|
|
116
117
|
private _handleClose;
|
|
117
118
|
private _handleClick;
|
|
118
|
-
private _hide;
|
|
119
|
-
private _emitClosing;
|
|
120
119
|
private _closeWithEvent;
|
|
121
120
|
/**
|
|
122
121
|
* Opens the dialog with an animated fade-in transition.
|
|
123
122
|
*
|
|
124
|
-
* Returns `true` when the dialog was successfully opened, or `false` if
|
|
125
|
-
*
|
|
123
|
+
* Returns `true` when the dialog was successfully opened, or `false` if it
|
|
124
|
+
* was already open or the transition was superseded by a newer one.
|
|
126
125
|
*/
|
|
127
126
|
show(): Promise<boolean>;
|
|
128
127
|
/**
|
|
129
128
|
* Closes the dialog with an animated fade-out transition.
|
|
130
129
|
*
|
|
131
|
-
* Returns `true` when the dialog was successfully closed, or `false` if
|
|
132
|
-
*
|
|
130
|
+
* Returns `true` when the dialog was successfully closed, or `false` if it
|
|
131
|
+
* was already closed or the transition was superseded by a newer one.
|
|
133
132
|
*/
|
|
134
133
|
hide(): Promise<boolean>;
|
|
135
134
|
/**
|
|
@@ -7,20 +7,23 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
7
|
import { html, LitElement, nothing } from 'lit';
|
|
8
8
|
import { property, state } from 'lit/decorators.js';
|
|
9
9
|
import { createRef, ref } from 'lit/directives/ref.js';
|
|
10
|
-
import { addAnimationController } from '
|
|
11
|
-
import { fadeIn, fadeOut } from '
|
|
12
|
-
import {
|
|
10
|
+
import { addAnimationController } from '#animations/player.js';
|
|
11
|
+
import { fadeIn, fadeOut } from '#animations/presets/fade/index.js';
|
|
12
|
+
import { addCommandController } from '#internals/controllers/command.js';
|
|
13
|
+
import { addSlotController, setSlots } from '#internals/controllers/slot.js';
|
|
14
|
+
import { addToggleController } from '#internals/controllers/toggle.js';
|
|
15
|
+
import { registerComponent } from '#internals/definitions/register.js';
|
|
16
|
+
import { EventEmitterMixin } from '#internals/mixins/event-emitter.js';
|
|
17
|
+
import { partMap } from '#internals/part-map.js';
|
|
18
|
+
import { isPointInsideElement } from '#internals/utils/dom.js';
|
|
19
|
+
import { bindIf } from '#internals/utils/lit.js';
|
|
20
|
+
import { createIdGenerator } from '#internals/utils/strings.js';
|
|
21
|
+
import { addThemingController } from '#theming/theming-controller.js';
|
|
13
22
|
import IgcButtonComponent from '../button/button.js';
|
|
14
|
-
import { addCommandController } from '../common/controllers/command.js';
|
|
15
|
-
import { addSlotController, setSlots } from '../common/controllers/slot.js';
|
|
16
|
-
import { registerComponent } from '../common/definitions/register.js';
|
|
17
|
-
import { EventEmitterMixin } from '../common/mixins/event-emitter.js';
|
|
18
|
-
import { partMap } from '../common/part-map.js';
|
|
19
|
-
import { bindIf, numberInRangeInclusive } from '../common/util.js';
|
|
20
23
|
import { styles } from './themes/dialog.base.css.js';
|
|
21
24
|
import { styles as shared } from './themes/shared/dialog.common.css.js';
|
|
22
25
|
import { all } from './themes/themes.js';
|
|
23
|
-
|
|
26
|
+
const nextId = createIdGenerator('title');
|
|
24
27
|
export default class IgcDialogComponent extends EventEmitterMixin(LitElement) {
|
|
25
28
|
static { this.tagName = 'igc-dialog'; }
|
|
26
29
|
static { this.styles = [styles, shared]; }
|
|
@@ -32,12 +35,28 @@ export default class IgcDialogComponent extends EventEmitterMixin(LitElement) {
|
|
|
32
35
|
}
|
|
33
36
|
constructor() {
|
|
34
37
|
super();
|
|
35
|
-
this._titleId =
|
|
38
|
+
this._titleId = nextId();
|
|
36
39
|
this._slots = addSlotController(this, {
|
|
37
40
|
slots: setSlots('title', 'message', 'footer'),
|
|
38
41
|
});
|
|
39
42
|
this._dialogRef = createRef();
|
|
40
43
|
this._player = addAnimationController(this, this._dialogRef);
|
|
44
|
+
this._toggleController = addToggleController(this, {
|
|
45
|
+
transition: async (open) => {
|
|
46
|
+
if (open) {
|
|
47
|
+
this.open = true;
|
|
48
|
+
this._animating = false;
|
|
49
|
+
return this._player.playExclusive(fadeIn());
|
|
50
|
+
}
|
|
51
|
+
this._animating = true;
|
|
52
|
+
const completed = await this._player.playExclusive(fadeOut());
|
|
53
|
+
this._animating = false;
|
|
54
|
+
if (completed) {
|
|
55
|
+
this.open = false;
|
|
56
|
+
}
|
|
57
|
+
return completed;
|
|
58
|
+
},
|
|
59
|
+
});
|
|
41
60
|
this._animating = false;
|
|
42
61
|
this.keepOpenOnEscape = false;
|
|
43
62
|
this.closeOnOutsideClick = false;
|
|
@@ -77,48 +96,23 @@ export default class IgcDialogComponent extends EventEmitterMixin(LitElement) {
|
|
|
77
96
|
}
|
|
78
97
|
}
|
|
79
98
|
_handleClick({ clientX, clientY, target }) {
|
|
80
|
-
if (this.closeOnOutsideClick &&
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
if (!(inX && inY)) {
|
|
85
|
-
this._closeWithEvent();
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
async _hide(emitEvent = false) {
|
|
90
|
-
if (!this.open || (emitEvent && !this._emitClosing())) {
|
|
91
|
-
return false;
|
|
92
|
-
}
|
|
93
|
-
this._animating = true;
|
|
94
|
-
await this._player.playExclusive(fadeOut());
|
|
95
|
-
this.open = false;
|
|
96
|
-
this._animating = false;
|
|
97
|
-
if (emitEvent) {
|
|
98
|
-
await this.updateComplete;
|
|
99
|
-
this.emitEvent('igcClosed');
|
|
99
|
+
if (this.closeOnOutsideClick &&
|
|
100
|
+
this._dialog === target &&
|
|
101
|
+
!isPointInsideElement(this._dialog, clientX, clientY)) {
|
|
102
|
+
this._closeWithEvent();
|
|
100
103
|
}
|
|
101
|
-
return true;
|
|
102
|
-
}
|
|
103
|
-
_emitClosing() {
|
|
104
|
-
return this.emitEvent('igcClosing', { cancelable: true });
|
|
105
104
|
}
|
|
106
105
|
_closeWithEvent() {
|
|
107
|
-
this.
|
|
106
|
+
this._toggleController.hide(true);
|
|
108
107
|
}
|
|
109
108
|
async show() {
|
|
110
|
-
|
|
111
|
-
return false;
|
|
112
|
-
}
|
|
113
|
-
this.open = true;
|
|
114
|
-
await this._player.playExclusive(fadeIn());
|
|
115
|
-
return true;
|
|
109
|
+
return this._toggleController.show();
|
|
116
110
|
}
|
|
117
111
|
async hide() {
|
|
118
|
-
return this.
|
|
112
|
+
return this._toggleController.hide();
|
|
119
113
|
}
|
|
120
114
|
async toggle() {
|
|
121
|
-
return this.
|
|
115
|
+
return this._toggleController.toggle();
|
|
122
116
|
}
|
|
123
117
|
_renderBackdrop() {
|
|
124
118
|
return html `
|