igniteui-webcomponents 7.3.2 → 7.4.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 +87 -0
- package/animations/easings.d.ts +21 -31
- package/animations/easings.js +21 -34
- package/animations/easings.js.map +1 -1
- package/animations/player.d.ts +8 -16
- package/animations/player.js +5 -8
- package/animations/player.js.map +1 -1
- package/animations/view-transition.d.ts +10 -10
- package/animations/view-transition.js +26 -37
- package/animations/view-transition.js.map +1 -1
- package/components/breadcrumb/breadcrumb.d.ts +74 -0
- package/components/breadcrumb/breadcrumb.js +107 -0
- package/components/breadcrumb/breadcrumb.js.map +1 -0
- package/components/breadcrumb/breadcrumbs.d.ts +60 -0
- package/components/breadcrumb/breadcrumbs.js +50 -0
- package/components/breadcrumb/breadcrumbs.js.map +1 -0
- package/components/breadcrumb/themes/breadcrumb.base.css.js +3 -0
- package/components/breadcrumb/themes/breadcrumb.base.css.js.map +1 -0
- package/components/breadcrumb/themes/breadcrumbs.base.css.d.ts +1 -0
- package/components/{resize-container/themes/resize-container.base.css.js → breadcrumb/themes/breadcrumbs.base.css.js} +2 -2
- package/components/breadcrumb/themes/breadcrumbs.base.css.js.map +1 -0
- package/components/breadcrumb/themes/dark/breadcrumb.bootstrap.css.d.ts +1 -0
- package/components/breadcrumb/themes/dark/breadcrumb.bootstrap.css.js +3 -0
- package/components/breadcrumb/themes/dark/breadcrumb.bootstrap.css.js.map +1 -0
- package/components/breadcrumb/themes/dark/breadcrumb.fluent.css.d.ts +1 -0
- package/components/breadcrumb/themes/dark/breadcrumb.fluent.css.js +3 -0
- package/components/breadcrumb/themes/dark/breadcrumb.fluent.css.js.map +1 -0
- package/components/breadcrumb/themes/dark/breadcrumb.indigo.css.d.ts +1 -0
- package/components/breadcrumb/themes/dark/breadcrumb.indigo.css.js +3 -0
- package/components/breadcrumb/themes/dark/breadcrumb.indigo.css.js.map +1 -0
- package/components/breadcrumb/themes/dark/breadcrumb.material.css.d.ts +1 -0
- package/components/breadcrumb/themes/dark/breadcrumb.material.css.js +3 -0
- package/components/breadcrumb/themes/dark/breadcrumb.material.css.js.map +1 -0
- package/components/breadcrumb/themes/light/breadcrumb.bootstrap.css.d.ts +1 -0
- package/components/breadcrumb/themes/light/breadcrumb.bootstrap.css.js +3 -0
- package/components/breadcrumb/themes/light/breadcrumb.bootstrap.css.js.map +1 -0
- package/components/breadcrumb/themes/light/breadcrumb.fluent.css.d.ts +1 -0
- package/components/breadcrumb/themes/light/breadcrumb.fluent.css.js +3 -0
- package/components/breadcrumb/themes/light/breadcrumb.fluent.css.js.map +1 -0
- package/components/breadcrumb/themes/light/breadcrumb.indigo.css.d.ts +1 -0
- package/components/breadcrumb/themes/light/breadcrumb.indigo.css.js +3 -0
- package/components/breadcrumb/themes/light/breadcrumb.indigo.css.js.map +1 -0
- package/components/breadcrumb/themes/light/breadcrumb.material.css.d.ts +1 -0
- package/components/breadcrumb/themes/light/breadcrumb.material.css.js +3 -0
- package/components/breadcrumb/themes/light/breadcrumb.material.css.js.map +1 -0
- package/components/breadcrumb/themes/light/breadcrumb.shared.css.d.ts +1 -0
- package/components/breadcrumb/themes/light/breadcrumb.shared.css.js +3 -0
- package/components/breadcrumb/themes/light/breadcrumb.shared.css.js.map +1 -0
- package/components/breadcrumb/themes/shared/breadcrumb.bootstrap.css.d.ts +1 -0
- package/components/breadcrumb/themes/shared/breadcrumb.bootstrap.css.js +3 -0
- package/components/breadcrumb/themes/shared/breadcrumb.bootstrap.css.js.map +1 -0
- package/components/breadcrumb/themes/shared/breadcrumb.common.css.d.ts +1 -0
- package/components/breadcrumb/themes/shared/breadcrumb.common.css.js +3 -0
- package/components/breadcrumb/themes/shared/breadcrumb.common.css.js.map +1 -0
- package/components/breadcrumb/themes/shared/breadcrumb.fluent.css.d.ts +1 -0
- package/components/breadcrumb/themes/shared/breadcrumb.fluent.css.js +3 -0
- package/components/breadcrumb/themes/shared/breadcrumb.fluent.css.js.map +1 -0
- package/components/breadcrumb/themes/shared/breadcrumb.indigo.css.d.ts +1 -0
- package/components/breadcrumb/themes/shared/breadcrumb.indigo.css.js +3 -0
- package/components/breadcrumb/themes/shared/breadcrumb.indigo.css.js.map +1 -0
- package/components/breadcrumb/themes/shared/breadcrumb.material.css.d.ts +1 -0
- package/components/breadcrumb/themes/shared/breadcrumb.material.css.js +3 -0
- package/components/breadcrumb/themes/shared/breadcrumb.material.css.js.map +1 -0
- package/components/breadcrumb/themes/themes.d.ts +2 -0
- package/components/breadcrumb/themes/themes.js +50 -0
- package/components/breadcrumb/themes/themes.js.map +1 -0
- package/components/button/button.d.ts +0 -2
- package/components/button/button.js.map +1 -1
- package/components/button-group/button-group.d.ts +42 -12
- package/components/button-group/button-group.js +82 -34
- package/components/button-group/button-group.js.map +1 -1
- package/components/button-group/toggle-button.d.ts +6 -1
- package/components/button-group/toggle-button.js +28 -2
- package/components/button-group/toggle-button.js.map +1 -1
- package/components/calendar/base.js +2 -1
- package/components/calendar/base.js.map +1 -1
- package/components/calendar/calendar.d.ts +2 -3
- package/components/calendar/calendar.js.map +1 -1
- package/components/calendar/days-view/days-view.d.ts +2 -2
- package/components/calendar/days-view/days-view.js.map +1 -1
- package/components/carousel/carousel-indicator.js +1 -0
- package/components/carousel/carousel-indicator.js.map +1 -1
- package/components/carousel/carousel-slide.d.ts +1 -1
- package/components/carousel/carousel-slide.js.map +1 -1
- package/components/carousel/carousel.d.ts +3 -3
- package/components/carousel/carousel.js.map +1 -1
- package/components/chat/chat-input.d.ts +1 -2
- package/components/chat/chat-input.js +1 -1
- package/components/chat/chat-input.js.map +1 -1
- package/components/chat/chat-state.d.ts +8 -9
- package/components/chat/chat-state.js.map +1 -1
- package/components/chat/chat.d.ts +1 -3
- package/components/chat/chat.js +2 -2
- package/components/chat/chat.js.map +1 -1
- package/components/chat/message-attachments.d.ts +6 -15
- package/components/chat/message-attachments.js.map +1 -1
- package/components/chat/utils.d.ts +0 -1
- package/components/chat/utils.js +1 -1
- package/components/chat/utils.js.map +1 -1
- package/components/checkbox/checkbox-base.d.ts +3 -1
- package/components/checkbox/checkbox-base.js +4 -0
- package/components/checkbox/checkbox-base.js.map +1 -1
- package/components/checkbox/checkbox.js +4 -12
- package/components/checkbox/checkbox.js.map +1 -1
- package/components/checkbox/switch.js +1 -8
- package/components/checkbox/switch.js.map +1 -1
- package/components/chip/chip.d.ts +2 -2
- package/components/chip/chip.js.map +1 -1
- package/components/color-picker/color-picker.d.ts +35 -34
- package/components/color-picker/color-picker.js +12 -7
- package/components/color-picker/color-picker.js.map +1 -1
- package/components/color-picker/common.d.ts +0 -2
- package/components/color-picker/common.js +2 -2
- package/components/color-picker/common.js.map +1 -1
- package/components/color-picker/converters.js.map +1 -1
- package/components/color-picker/picker-canvas.js.map +1 -1
- package/components/combo/combo.d.ts +24 -24
- package/components/combo/combo.js +21 -26
- package/components/combo/combo.js.map +1 -1
- package/components/combo/controllers/data.d.ts +7 -10
- package/components/combo/controllers/data.js.map +1 -1
- package/components/date-picker/date-picker.base.d.ts +22 -27
- package/components/date-picker/date-picker.base.js +9 -3
- package/components/date-picker/date-picker.base.js.map +1 -1
- package/components/date-picker/date-picker.d.ts +1 -1
- package/components/date-picker/date-picker.js +5 -3
- package/components/date-picker/date-picker.js.map +1 -1
- package/components/date-range-picker/date-range-input.d.ts +0 -2
- package/components/date-range-picker/date-range-input.js +0 -6
- package/components/date-range-picker/date-range-input.js.map +1 -1
- package/components/date-range-picker/date-range-picker.d.ts +22 -31
- package/components/date-range-picker/date-range-picker.js +7 -7
- package/components/date-range-picker/date-range-picker.js.map +1 -1
- package/components/date-range-picker/i18n.d.ts +21 -0
- package/components/date-range-picker/i18n.js +10 -0
- package/components/date-range-picker/i18n.js.map +1 -0
- package/components/date-range-picker/predefined-ranges-area.d.ts +3 -3
- package/components/date-range-picker/predefined-ranges-area.js +2 -5
- package/components/date-range-picker/predefined-ranges-area.js.map +1 -1
- package/components/date-range-picker/validators.d.ts +0 -4
- package/components/date-range-picker/validators.js +4 -4
- package/components/date-range-picker/validators.js.map +1 -1
- package/components/date-time-input/date-time-input.base.d.ts +42 -40
- package/components/date-time-input/date-time-input.base.js +9 -5
- package/components/date-time-input/date-time-input.base.js.map +1 -1
- package/components/date-time-input/date-time-input.d.ts +1 -11
- package/components/date-time-input/date-time-input.js +0 -6
- package/components/date-time-input/date-time-input.js.map +1 -1
- package/components/date-time-input/datetime-mask-parser.d.ts +0 -10
- package/components/date-time-input/datetime-mask-parser.js +1 -1
- package/components/date-time-input/datetime-mask-parser.js.map +1 -1
- package/components/dialog/dialog.js.map +1 -1
- package/components/dropdown/dropdown-group.d.ts +2 -10
- package/components/dropdown/dropdown-group.js +2 -27
- package/components/dropdown/dropdown-group.js.map +1 -1
- package/components/dropdown/dropdown.d.ts +17 -23
- package/components/dropdown/dropdown.js +5 -17
- package/components/dropdown/dropdown.js.map +1 -1
- package/components/file-input/file-input.d.ts +7 -2
- package/components/file-input/file-input.js +4 -0
- package/components/file-input/file-input.js.map +1 -1
- package/components/icon/icon.d.ts +1 -1
- package/components/icon/icon.registry.d.ts +6 -6
- package/components/icon/icon.registry.js.map +1 -1
- package/components/input/input-base.d.ts +2 -2
- package/components/input/input-base.js +3 -5
- package/components/input/input-base.js.map +1 -1
- package/components/input/input.d.ts +3 -3
- package/components/input/input.js.map +1 -1
- package/components/mask-input/mask-history.d.ts +22 -18
- package/components/mask-input/mask-history.js.map +1 -1
- package/components/mask-input/mask-input.d.ts +1 -1
- package/components/mask-input/mask-parser.d.ts +11 -13
- package/components/mask-input/mask-parser.js.map +1 -1
- package/components/popover/popover.d.ts +45 -34
- package/components/popover/popover.js +54 -122
- package/components/popover/popover.js.map +1 -1
- package/components/popover/position/arrow.d.ts +19 -0
- package/components/popover/position/arrow.js +33 -0
- package/components/popover/position/arrow.js.map +1 -0
- package/components/popover/position/floating.d.ts +40 -0
- package/components/popover/position/floating.js +146 -0
- package/components/popover/position/floating.js.map +1 -0
- package/components/popover/position/native.d.ts +45 -0
- package/components/popover/position/native.js +158 -0
- package/components/popover/position/native.js.map +1 -0
- package/components/popover/position/strategy.d.ts +37 -0
- package/components/popover/position/strategy.js +21 -0
- package/components/popover/position/strategy.js.map +1 -0
- package/components/popover/position/types.d.ts +26 -0
- package/components/popover/position/types.js +15 -0
- package/components/popover/position/types.js.map +1 -0
- package/components/popover/themes/light/popover.base.css.js +1 -1
- package/components/popover/themes/light/popover.base.css.js.map +1 -1
- package/components/progress/circular-progress.d.ts +0 -5
- package/components/progress/circular-progress.js.map +1 -1
- package/components/qr-code/qr-code.d.ts +1 -1
- package/components/radio/radio.d.ts +6 -4
- package/components/radio/radio.js +24 -25
- package/components/radio/radio.js.map +1 -1
- package/components/radio-group/radio-group.js.map +1 -1
- package/components/rating/rating.d.ts +9 -6
- package/components/rating/rating.js +17 -18
- package/components/rating/rating.js.map +1 -1
- package/components/select/select-group.d.ts +5 -10
- package/components/select/select-group.js +10 -34
- package/components/select/select-group.js.map +1 -1
- package/components/select/select.d.ts +12 -20
- package/components/select/select.js +5 -15
- package/components/select/select.js.map +1 -1
- package/components/slider/range-slider.d.ts +0 -1
- package/components/slider/range-slider.js +6 -11
- package/components/slider/range-slider.js.map +1 -1
- package/components/slider/slider-base.d.ts +4 -1
- package/components/slider/slider-base.js +20 -18
- package/components/slider/slider-base.js.map +1 -1
- package/components/slider/slider.d.ts +2 -0
- package/components/slider/slider.js +5 -1
- package/components/slider/slider.js.map +1 -1
- package/components/splitter/splitter.d.ts +6 -6
- package/components/splitter/splitter.js.map +1 -1
- package/components/textarea/textarea.d.ts +2 -5
- package/components/textarea/textarea.js +3 -5
- package/components/textarea/textarea.js.map +1 -1
- package/components/tile-manager/tile-manager.d.ts +6 -7
- package/components/tile-manager/tile-manager.js.map +1 -1
- package/components/tile-manager/tile.d.ts +3 -3
- package/components/tile-manager/tile.js.map +1 -1
- package/components/toast/toast.d.ts +0 -2
- package/components/toast/toast.js.map +1 -1
- package/components/tooltip/controller.js.map +1 -1
- package/components/tooltip/service.js +4 -5
- package/components/tooltip/service.js.map +1 -1
- package/components/tooltip/tooltip.d.ts +34 -13
- package/components/tooltip/tooltip.js +8 -4
- package/components/tooltip/tooltip.js.map +1 -1
- package/components/tree/tree-item.d.ts +6 -6
- package/components/tree/tree-item.js.map +1 -1
- package/components/tree/tree.navigation.d.ts +5 -6
- package/components/tree/tree.navigation.js.map +1 -1
- package/components/tree/tree.selection.js.map +1 -1
- package/components/types.d.ts +1 -1
- package/components/types.js.map +1 -1
- package/components/validation-container/validation-container.js +2 -1
- package/components/validation-container/validation-container.js.map +1 -1
- package/components/virtualization/engine.d.ts +40 -9
- package/components/virtualization/engine.js +126 -61
- package/components/virtualization/engine.js.map +1 -1
- package/components/virtualization/recycle.d.ts +13 -0
- package/components/virtualization/recycle.js +152 -0
- package/components/virtualization/recycle.js.map +1 -0
- package/components/virtualization/virtualization.d.ts +84 -65
- package/components/virtualization/virtualization.js +20 -16
- package/components/virtualization/virtualization.js.map +1 -1
- package/custom-elements.json +18455 -19551
- package/igniteui-webcomponents.css-data.json +2 -2
- package/igniteui-webcomponents.html-data.json +1 -1
- package/index.d.ts +3 -1
- package/index.js +2 -0
- package/index.js.map +1 -1
- package/internals/abort-handler.d.ts +13 -25
- package/internals/abort-handler.js +4 -6
- package/internals/abort-handler.js.map +1 -1
- package/internals/context.d.ts +13 -7
- package/internals/context.js +2 -1
- package/internals/context.js.map +1 -1
- package/internals/controllers/adopt-styles.d.ts +19 -20
- package/internals/controllers/adopt-styles.js +3 -8
- package/internals/controllers/adopt-styles.js.map +1 -1
- package/internals/controllers/aria-projection.d.ts +100 -61
- package/internals/controllers/aria-projection.js +81 -31
- package/internals/controllers/aria-projection.js.map +1 -1
- package/internals/controllers/async-consumer.js.map +1 -1
- package/internals/controllers/command.d.ts +15 -30
- package/internals/controllers/command.js +2 -7
- package/internals/controllers/command.js.map +1 -1
- package/internals/controllers/context-provider.d.ts +7 -13
- package/internals/controllers/context-provider.js.map +1 -1
- package/internals/controllers/focus-ring.d.ts +10 -30
- package/internals/controllers/focus-ring.js +6 -12
- package/internals/controllers/focus-ring.js.map +1 -1
- package/internals/controllers/fullscreen.d.ts +7 -23
- package/internals/controllers/fullscreen.js +3 -9
- package/internals/controllers/fullscreen.js.map +1 -1
- package/internals/controllers/gestures.d.ts +10 -29
- package/internals/controllers/gestures.js +1 -3
- package/internals/controllers/gestures.js.map +1 -1
- package/internals/controllers/group.d.ts +13 -30
- package/internals/controllers/group.js.map +1 -1
- package/internals/controllers/host-listeners.d.ts +28 -0
- package/internals/controllers/host-listeners.js +27 -0
- package/internals/controllers/host-listeners.js.map +1 -0
- package/internals/controllers/id-resolver.d.ts +8 -9
- package/internals/controllers/id-resolver.js +6 -14
- package/internals/controllers/id-resolver.js.map +1 -1
- package/internals/controllers/internals.d.ts +53 -104
- package/internals/controllers/internals.js +40 -13
- package/internals/controllers/internals.js.map +1 -1
- package/internals/controllers/key-bindings.d.ts +61 -158
- package/internals/controllers/key-bindings.js +68 -67
- package/internals/controllers/key-bindings.js.map +1 -1
- package/internals/controllers/keys.d.ts +32 -0
- package/internals/controllers/keys.js +20 -0
- package/internals/controllers/keys.js.map +1 -0
- package/internals/controllers/mutation-observer.d.ts +14 -37
- package/internals/controllers/mutation-observer.js +1 -1
- package/internals/controllers/mutation-observer.js.map +1 -1
- package/internals/controllers/resize-observer.d.ts +9 -19
- package/internals/controllers/resize-observer.js.map +1 -1
- package/internals/controllers/root-click.d.ts +11 -42
- package/internals/controllers/root-click.js +4 -6
- package/internals/controllers/root-click.js.map +1 -1
- package/internals/controllers/roving-focus.d.ts +16 -35
- package/internals/controllers/roving-focus.js.map +1 -1
- package/internals/controllers/slot.d.ts +25 -54
- package/internals/controllers/slot.js +6 -6
- package/internals/controllers/slot.js.map +1 -1
- package/internals/controllers/toggle.d.ts +44 -48
- package/internals/controllers/toggle.js.map +1 -1
- package/internals/date/compare.js.map +1 -1
- package/internals/date/converters.d.ts +10 -7
- package/internals/date/converters.js.map +1 -1
- package/internals/date/model.d.ts +9 -16
- package/internals/date/model.js +22 -25
- package/internals/date/model.js.map +1 -1
- package/internals/decorators/blazorAdditionalDependencies.d.ts +4 -2
- package/internals/decorators/blazorAdditionalDependencies.js.map +1 -1
- package/internals/decorators/blazorDeepImport.d.ts +1 -3
- package/internals/decorators/blazorDeepImport.js.map +1 -1
- package/internals/decorators/blazorInclude.d.ts +3 -2
- package/internals/decorators/blazorInclude.js.map +1 -1
- package/internals/decorators/blazorIndirectRender.d.ts +1 -3
- package/internals/decorators/blazorIndirectRender.js.map +1 -1
- package/internals/decorators/blazorSuppressComponent.d.ts +1 -3
- package/internals/decorators/blazorSuppressComponent.js.map +1 -1
- package/internals/decorators/coerced-property.d.ts +14 -20
- package/internals/decorators/coerced-property.js.map +1 -1
- package/internals/decorators/shadow-options.d.ts +2 -5
- package/internals/decorators/shadow-options.js.map +1 -1
- package/internals/definitions/defineAllComponents.js +2 -0
- package/internals/definitions/defineAllComponents.js.map +1 -1
- package/internals/directives/drag.d.ts +51 -81
- package/internals/directives/drag.js +27 -89
- package/internals/directives/drag.js.map +1 -1
- package/internals/directives/pointer-operation.d.ts +75 -0
- package/internals/directives/pointer-operation.js +92 -0
- package/internals/directives/pointer-operation.js.map +1 -0
- package/internals/directives/resize.d.ts +36 -64
- package/internals/directives/resize.js +18 -85
- package/internals/directives/resize.js.map +1 -1
- package/internals/i18n/EN/calendar.resources.d.ts +8 -2
- package/internals/i18n/EN/calendar.resources.js +2 -2
- package/internals/i18n/EN/calendar.resources.js.map +1 -1
- package/internals/i18n/EN/chat.resources.d.ts +8 -2
- package/internals/i18n/EN/chat.resources.js +3 -10
- package/internals/i18n/EN/chat.resources.js.map +1 -1
- package/internals/i18n/EN/date-picker.resources.d.ts +6 -4
- package/internals/i18n/EN/date-picker.resources.js +1 -7
- package/internals/i18n/EN/date-picker.resources.js.map +1 -1
- package/internals/i18n/EN/date-range-picker.resources.d.ts +9 -2
- package/internals/i18n/EN/date-range-picker.resources.js +2 -2
- package/internals/i18n/EN/date-range-picker.resources.js.map +1 -1
- package/internals/i18n/i18n-controller.d.ts +44 -46
- package/internals/i18n/i18n-controller.js +46 -33
- package/internals/i18n/i18n-controller.js.map +1 -1
- package/internals/i18n/utils.d.ts +9 -4
- package/internals/i18n/utils.js +4 -27
- package/internals/i18n/utils.js.map +1 -1
- package/internals/mixins/alert.d.ts +10 -25
- package/internals/mixins/alert.js.map +1 -1
- package/internals/mixins/combo-box.d.ts +21 -11
- package/internals/mixins/combo-box.js +16 -22
- package/internals/mixins/combo-box.js.map +1 -1
- package/internals/mixins/event-emitter.js +9 -11
- package/internals/mixins/event-emitter.js.map +1 -1
- package/internals/mixins/forms/associated-required.d.ts +4 -4
- package/internals/mixins/forms/associated-required.js.map +1 -1
- package/internals/mixins/forms/associated.d.ts +4 -2
- package/internals/mixins/forms/associated.js +42 -19
- package/internals/mixins/forms/associated.js.map +1 -1
- package/internals/mixins/forms/form-transformers.js.map +1 -1
- package/internals/mixins/forms/types.d.ts +27 -78
- package/internals/mixins/forms/types.js.map +1 -1
- package/internals/mixins/group.d.ts +18 -0
- package/internals/mixins/group.js +37 -0
- package/internals/mixins/group.js.map +1 -0
- package/internals/mixins/i18n.d.ts +10 -16
- package/internals/mixins/i18n.js.map +1 -1
- package/internals/mixins/mask-behavior.d.ts +8 -22
- package/internals/mixins/mask-behavior.js +1 -2
- package/internals/mixins/mask-behavior.js.map +1 -1
- package/internals/mixins/option.d.ts +1 -2
- package/internals/mixins/option.js +2 -1
- package/internals/mixins/option.js.map +1 -1
- package/internals/part-map.d.ts +4 -2
- package/internals/part-map.js +1 -1
- package/internals/part-map.js.map +1 -1
- package/internals/templates/input-shell.d.ts +8 -17
- package/internals/templates/input-shell.js +4 -1
- package/internals/templates/input-shell.js.map +1 -1
- package/internals/templates/masked-input.d.ts +7 -8
- package/internals/templates/masked-input.js.map +1 -1
- package/internals/templates/slotted-icon.d.ts +7 -12
- package/internals/templates/slotted-icon.js.map +1 -1
- package/internals/templates/toggle-shell.d.ts +19 -19
- package/internals/templates/toggle-shell.js +12 -8
- package/internals/templates/toggle-shell.js.map +1 -1
- package/internals/timing.d.ts +5 -14
- package/internals/timing.js.map +1 -1
- package/internals/utils/arrays.d.ts +21 -21
- package/internals/utils/arrays.js +14 -0
- package/internals/utils/arrays.js.map +1 -1
- package/internals/utils/dom.d.ts +53 -41
- package/internals/utils/dom.js +3 -4
- package/internals/utils/dom.js.map +1 -1
- package/internals/utils/events.d.ts +29 -16
- package/internals/utils/events.js +9 -1
- package/internals/utils/events.js.map +1 -1
- package/internals/utils/lit.d.ts +5 -2
- package/internals/utils/lit.js.map +1 -1
- package/internals/utils/math.d.ts +8 -6
- package/internals/utils/math.js.map +1 -1
- package/internals/utils/objects.d.ts +3 -20
- package/internals/utils/objects.js +1 -39
- package/internals/utils/objects.js.map +1 -1
- package/internals/utils/strings.d.ts +9 -11
- package/internals/utils/strings.js.map +1 -1
- package/internals/utils/types.d.ts +16 -3
- package/internals/utils/types.js +3 -0
- package/internals/utils/types.js.map +1 -1
- package/internals/validators.d.ts +9 -8
- package/internals/validators.js +12 -6
- package/internals/validators.js.map +1 -1
- package/package.json +1 -1
- package/skills/README.md +4 -3
- package/skills/igniteui-wc-choose-components/SKILL.md +2 -1
- package/skills/igniteui-wc-customize-component-theme/SKILL.md +2 -1
- package/skills/igniteui-wc-figma-to-app/SKILL.md +328 -0
- package/skills/igniteui-wc-figma-to-app/references/asset-extraction.md +343 -0
- package/skills/igniteui-wc-figma-to-app/references/design-provenance.md +199 -0
- package/skills/igniteui-wc-figma-to-app/references/design-token-bridge.md +489 -0
- package/skills/igniteui-wc-figma-to-app/references/figma-component-map.md +370 -0
- package/skills/igniteui-wc-figma-to-app/references/figma-exploration.md +222 -0
- package/skills/igniteui-wc-figma-to-app/references/mcp-setup.md +363 -0
- package/skills/igniteui-wc-figma-to-app/references/project-setup.md +105 -0
- package/skills/igniteui-wc-figma-to-app/references/theme-generation.md +180 -0
- package/skills/igniteui-wc-figma-to-app/references/validation-patterns.md +370 -0
- package/skills/igniteui-wc-generate-from-image-design/SKILL.md +2 -1
- package/skills/igniteui-wc-generate-from-image-design/references/gotchas.md +3 -3
- package/skills/igniteui-wc-grids/SKILL.md +133 -0
- package/skills/igniteui-wc-integrate-with-framework/SKILL.md +2 -1
- package/skills/igniteui-wc-migrate-grid-lite-to-premium/SKILL.md +2 -1
- package/skills/igniteui-wc-optimize-bundle-size/SKILL.md +2 -1
- package/theming/config.d.ts +14 -5
- package/theming/config.js +38 -18
- package/theming/config.js.map +1 -1
- package/theming/context.d.ts +1 -23
- package/theming/context.js.map +1 -1
- package/theming/theming-controller.d.ts +2 -32
- package/theming/theming-controller.js +15 -21
- package/theming/theming-controller.js.map +1 -1
- package/theming/theming-event.d.ts +0 -7
- package/theming/theming-event.js +0 -13
- package/theming/theming-event.js.map +1 -1
- package/theming/types.d.ts +1 -8
- package/theming/types.js.map +1 -1
- package/web-types.json +3 -3
- package/animations/presets/slide/index.d.ts +0 -3
- package/animations/presets/slide/index.js +0 -16
- package/animations/presets/slide/index.js.map +0 -1
- package/components/resize-container/themes/resize-container.base.css.js.map +0 -1
- package/internals/controllers/root-scroll.d.ts +0 -31
- package/internals/controllers/root-scroll.js +0 -71
- package/internals/controllers/root-scroll.js.map +0 -1
- package/theming/utils.d.ts +0 -11
- package/theming/utils.js +0 -20
- package/theming/utils.js.map +0 -1
- /package/components/{resize-container/themes/resize-container.base.css.d.ts → breadcrumb/themes/breadcrumb.base.css.d.ts} +0 -0
|
@@ -148,12 +148,6 @@ export default class IgcDateRangeInputComponent extends EventEmitterMixin(IgcDat
|
|
|
148
148
|
stepDown(datePart, delta) {
|
|
149
149
|
super.stepDown(datePart, delta);
|
|
150
150
|
}
|
|
151
|
-
hasDateParts() {
|
|
152
|
-
return this._parser.hasDateParts();
|
|
153
|
-
}
|
|
154
|
-
hasTimeParts() {
|
|
155
|
-
return this._parser.hasTimeParts();
|
|
156
|
-
}
|
|
157
151
|
}
|
|
158
152
|
__decorate([
|
|
159
153
|
property({ attribute: false })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-range-input.js","sourceRoot":"","sources":["../../../src/components/date-range-picker/date-range-input.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAEvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,8BAA8B,EAAE,MAAM,8CAA8C,CAAC;AAC9F,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAGL,YAAY,GACb,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,6BAA6B,EAAE,MAAM,4CAA4C,CAAC;AAC3F,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAC3D,OAAO,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,4CAA4C,CAAC;AAC9E,OAAO,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAC;AAEhD,OAAO,EACL,mBAAmB,EAEnB,iBAAiB,GAClB,MAAM,6BAA6B,CAAC;AAerC,MAAM,CAAC,OAAO,OAAO,0BAA2B,SAAQ,iBAAiB,CAGvE,6BAA6B,CAAC;IAHhC;;QAc8B,eAAU,GAAG,oBAAoB,CAAC,IAAI,EAAE;YAClE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE;YACxC,YAAY,EAAE,8BAA8B;SAC7C,CAAC,CAAC;QAEyB,YAAO,GAAG,oBAAoB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC1C,YAAO,GAAG,IAAI,mBAAmB,EAAE,CAAC;IA0OlE,CAAC;aA1PwB,YAAO,GAAG,sBAAsB,AAAzB,CAA0B;aAC1C,WAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,AAAnB,CAAoB;IAGjC,MAAM,CAAC,QAAQ;QACpB,iBAAiB,CAAC,0BAA0B,CAAC,CAAC;IAChD,CAAC;IA2BD,IAAoB,KAAK,CAAC,KAA4B;QACpD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED,IAAoB,KAAK;QACvB,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;IAC/B,CAAC;IAMe,iBAAiB;QAC/B,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAMkB,aAAa;QAC9B,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/D,CAAC;IAMkB,mBAAmB;QACpC,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC;QACvC,IAAI,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;QAClD,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAEkB,gCAAgC,CACjD,UAAkB,EAClB,SAAiB;QAEjB,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;QAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QAEtC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAE7D,MAAM,gBAAgB,GACpB,WAAW;YACX,CAAC,WAAW,CAAC,QAAQ,KAAK,iBAAiB,CAAC,KAAK;gBAC/C,WAAW,CAAC,QAAQ,KAAK,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAEpD,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;YAEpB,IAAI,gBAAgB,IAAI,SAAS,KAAK,WAAW,CAAC,KAAK,EAAE,CAAC;gBACxD,OAAO,WAAW,CAAC,KAAK,CAAC;YAC3B,CAAC;YACD,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAClC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,GAAG,SAAS,CAC5D,CAAC;YACF,OAAO,QAAQ,EAAE,KAAK,IAAI,CAAC,CAAC;QAC9B,CAAC;QAGD,IAAI,gBAAgB,IAAI,SAAS,KAAK,WAAW,CAAC,GAAG,EAAE,CAAC;YACtD,OAAO,WAAW,CAAC,GAAG,CAAC;QACzB,CAAC;QACD,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAC9B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK,GAAG,SAAS,CAC9D,CAAC;QACF,OAAO,QAAQ,EAAE,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC;IAC5C,CAAC;IAMkB,YAAY,CAC7B,QAAiB,EACjB,KAAyB,EACzB,WAAoB;QAGpB,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAEvC,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC;YACrC,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC;YACvC,IAAI,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;YAClD,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC;YAC5C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,CAC5B,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC,KAAK,EAAE,GAAG,CAAC,CAC3C,CAAC;YACF,OAAO;QACT,CAAC;QAED,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;IACnD,CAAC;IAEkB,kBAAkB;QACnC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC;YAC3C,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAClC,MAAM,QAAQ,GAAG,KAAK;YACpB,CAAC,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC;YAC3D,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,MAAM,GAAG,GAAG;YAChB,CAAC,CAAC,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC;YACzD,CAAC,CAAC,EAAE,CAAC;QACP,OAAO,QAAQ,IAAI,MAAM;YACvB,CAAC,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,MAAM,EAAE;YACjD,CAAC,CAAC,QAAQ,IAAI,MAAM,CAAC;IACzB,CAAC;IAEkB,mBAAmB,CACpC,QAAiB,EACjB,KAAyB,EACzB,WAAoB;QAEpB,MAAM,KAAK,GAAG,QAAyB,CAAC;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAChD,KAAK,CAAC,IAAoB,EAC1B,KAAK,CAAC,QAAQ,CACf,CAAC;QAEF,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC;QACvC,MAAM,YAAY,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAEvC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,OAAO,IAAI,YAAY,CAAC;QACjC,CAAC;QAED,MAAM,cAAc,GAClB,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAA4B,CAAC,IAAI,CAAC,CAAC;QACzE,MAAM,UAAU,GAAG,cAAc,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAG3D,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAE/C,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,CACnC,IAAI,EACJ,UAAU,EACV,OAAO,EACP,IAAI,CAAC,QAAQ,EACb,SAAS,CACV,CAAC;IACJ,CAAC;IAMkB,oBAAoB;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAEvE,OAAO,IAAI;YACT,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAgB,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE;YAC1D,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IAMkB,mBAAmB;QACpC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,2BAA2B,CACxD,iBAAiB,CAAC,KAAK,CACxB,CAAC;QACF,IAAI,SAAS,EAAE,CAAC;YACd,OAAO;gBACL,IAAI,EAAE,SAAS,CAAC,IAAgB;gBAChC,QAAQ,EAAE,iBAAiB,CAAC,KAAK;aAClC,CAAC;QACJ,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAEkB,UAAU,CAAC,MAAe;QAC3C,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC9D,OAAO,MAAM,EAAE,KAAK,IAAI,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IACtD,CAAC;IAEkB,YAAY,CAAC,KAA4B;QAC1D,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;IAEkB,UAAU,CAAC,YAAoB;QAChD,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAC/B,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IACpC,CAAC;IAKe,MAAM,CAAC,QAAwB,EAAE,KAAc;QAC7D,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC;IAGe,QAAQ,CAAC,QAAwB,EAAE,KAAc;QAC/D,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;IAEe,YAAY;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;IACrC,CAAC;IAEe,YAAY;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;IACrC,CAAC;;AAtND;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;uDAG9B","sourcesContent":["import { property } from 'lit/decorators.js';\nimport { CalendarDay } from '#internals/date/model.js';\nimport { registerComponent } from '#internals/definitions/register.js';\nimport { formatDisplayDate } from '#internals/i18n/i18n-controller.js';\nimport type { AbstractConstructor } from '#internals/mixins/constructor.js';\nimport { EventEmitterMixin } from '#internals/mixins/event-emitter.js';\nimport { FormValueDateRangeTransformers } from '#internals/mixins/forms/form-transformers.js';\nimport { createFormValueState } from '#internals/mixins/forms/form-value.js';\nimport { addThemingController } from '#theming/theming-controller.js';\nimport {\n type DatePart,\n type DatePartDeltas,\n DatePartType,\n} from '../date-time-input/date-part.js';\nimport { IgcDateTimeInputBaseComponent } from '../date-time-input/date-time-input.base.js';\nimport { styles } from '../input/themes/input.base.css.js';\nimport { styles as shared } from '../input/themes/shared/input.common.css.js';\nimport { all } from '../input/themes/themes.js';\nimport type { DateRangeValue } from '../types.js';\nimport {\n DateRangeMaskParser,\n type DateRangePart,\n DateRangePosition,\n} from './date-range-mask-parser.js';\n\nexport interface IgcDateRangeInputComponentEventMap {\n /* alternateName: inputOcurred */\n igcInput: CustomEvent<string>;\n /* blazorSuppress */\n igcChange: CustomEvent<DateRangeValue | null>;\n // For analyzer meta only:\n /* skipWCPrefix */\n focus: FocusEvent;\n /* skipWCPrefix */\n blur: FocusEvent;\n}\n\n/* blazorSuppress */\nexport default class IgcDateRangeInputComponent extends EventEmitterMixin<\n IgcDateRangeInputComponentEventMap,\n AbstractConstructor<IgcDateTimeInputBaseComponent<DateRangeValue>>\n>(IgcDateTimeInputBaseComponent) {\n public static readonly tagName = 'igc-date-range-input';\n public static styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(IgcDateRangeInputComponent);\n }\n\n //#region Private state and properties\n\n protected override readonly _formValue = createFormValueState(this, {\n initialValue: { start: null, end: null },\n transformers: FormValueDateRangeTransformers,\n });\n\n protected override readonly _themes = addThemingController(this, all);\n protected override readonly _parser = new DateRangeMaskParser();\n\n // #endregion\n\n // #region Public attributes and properties\n\n /* @tsTwoWayProperty(true, \"igcChange\", \"detail\", false, true) */\n /**\n * The value of the date range input.\n *\n * Only ever holds a committed value. While the user is typing, the intermediate\n * state lives in the masked text and is committed - together with an `igcChange`\n * event - when the edit is committed on blur.\n *\n * @attr\n */\n @property({ attribute: false })\n public override set value(value: DateRangeValue | null) {\n this._applyValue(value);\n }\n\n public override get value(): DateRangeValue | null {\n return this._formValue.value;\n }\n\n // #endregion\n\n // #region Lifecycle Hooks\n\n public override connectedCallback(): void {\n super.connectedCallback();\n this._initializeDefaultMask();\n this._updateMaskDisplay();\n }\n\n // #endregion\n\n // #region Event Handlers Overrides\n\n protected override _isValueEmpty(): boolean {\n return !this.value || (!this.value.start && !this.value.end);\n }\n\n // #endregion\n\n // #region Keybindings overrides\n\n protected override _setCurrentDateTime(): void {\n const today = CalendarDay.today.native;\n this._setDraftValue({ start: today, end: today });\n this._emitInputEvent();\n }\n\n protected override _calculatePartNavigationPosition(\n inputValue: string,\n direction: number\n ): number {\n const cursorPos = this._maskSelection.start;\n const rangeParts = this._parser.parts;\n\n const currentPart = this._parser.getPartForCursor(cursorPos);\n\n const isStartOrEndPart =\n currentPart &&\n (currentPart.position === DateRangePosition.Start ||\n currentPart.position === DateRangePosition.End);\n\n if (direction === 0) {\n // Backward: if inside a start/end part, move to its start; else, move to previous part's start\n if (isStartOrEndPart && cursorPos !== currentPart.start) {\n return currentPart.start;\n }\n const prevPart = rangeParts.findLast(\n (p) => p.type !== DatePartType.Literal && p.end < cursorPos\n );\n return prevPart?.start ?? 0;\n }\n\n // Forward: if inside a start/end part, move to its end; else, move to next part's end\n if (isStartOrEndPart && cursorPos !== currentPart.end) {\n return currentPart.end;\n }\n const nextPart = rangeParts.find(\n (p) => p.type !== DatePartType.Literal && p.start > cursorPos\n );\n return nextPart?.end ?? inputValue.length;\n }\n\n // #endregion\n\n // #region Internal API Overrides\n\n protected override _performStep(\n datePart: unknown,\n delta: number | undefined,\n isDecrement: boolean\n ): void {\n // If no value exists, set to today's date first\n const current = this._uncommittedValue;\n\n if (!current?.start && !current?.end) {\n const today = CalendarDay.today.native;\n this._setDraftValue({ start: today, end: today });\n const { start, end } = this._inputSelection;\n this.updateComplete.then(() =>\n this._input?.setSelectionRange(start, end)\n );\n return;\n }\n\n super._performStep(datePart, delta, isDecrement);\n }\n\n protected override _buildDisplayValue(): string {\n if (!this.value?.start && !this.value?.end) {\n return '';\n }\n\n const { start, end } = this.value;\n const startStr = start\n ? formatDisplayDate(start, this.locale, this.displayFormat)\n : '';\n const endStr = end\n ? formatDisplayDate(end, this.locale, this.displayFormat)\n : '';\n return startStr && endStr\n ? `${startStr}${this._parser.separator}${endStr}`\n : startStr || endStr;\n }\n\n protected override _calculateSpunValue(\n datePart: unknown,\n delta: number | undefined,\n isDecrement: boolean\n ): DateRangeValue {\n const range = datePart as DateRangePart;\n const part = this._parser.getPartByTypeAndPosition(\n range.part as DatePartType,\n range.position\n );\n\n const today = CalendarDay.today.native;\n const defaultValue = { start: today, end: today };\n const current = this._uncommittedValue;\n\n if (!part) {\n return current || defaultValue;\n }\n\n const effectiveDelta =\n delta ?? this._datePartDeltas[range.part as keyof DatePartDeltas] ?? 1;\n const spinAmount = effectiveDelta * (isDecrement ? -1 : 1);\n\n // For AM/PM spinning, extract the current AM/PM value from the mask\n const amPmValue = this._readAmPmFromMask(part);\n\n return this._parser.spinDateRangePart(\n part,\n spinAmount,\n current,\n this.spinLoop,\n amPmValue\n );\n }\n\n /**\n * Gets the date range part at the current cursor position.\n * Returns undefined if the cursor sits outside any part - in the separator, say.\n */\n protected override _getDatePartAtCursor(): DateRangePart | undefined {\n const part = this._parser.getPartForCursor(this._inputSelection.start);\n\n return part\n ? { part: part.type as DatePart, position: part.position }\n : undefined;\n }\n\n /**\n * Gets the default date range part to target when the input is not focused.\n * Returns the first date part at the start position.\n */\n protected override _getDefaultDatePart(): DateRangePart | undefined {\n const firstPart = this._parser.getFirstDatePartForPosition(\n DateRangePosition.Start\n );\n if (firstPart) {\n return {\n part: firstPart.type as DatePart,\n position: DateRangePosition.Start,\n };\n }\n\n return undefined;\n }\n\n protected override _parseMask(strict: boolean): DateRangeValue | null {\n if (strict && !this._isMaskComplete()) {\n return null;\n }\n\n const parsed = this._parser.parseDateRange(this._maskedValue);\n return parsed?.start || parsed?.end ? parsed : null;\n }\n\n protected override _formatValue(value: DateRangeValue | null): string {\n return this._parser.formatDateRange(value);\n }\n\n protected override _applyMask(formatString: string): void {\n super._applyMask(formatString);\n this._parser.prompt = this.prompt;\n }\n\n // #region Public API Overrides\n\n /** Increments a date/time portion. */\n public override stepUp(datePart?: DateRangePart, delta?: number): void {\n super.stepUp(datePart, delta);\n }\n\n /** Decrements a date/time portion. */\n public override stepDown(datePart?: DateRangePart, delta?: number): void {\n super.stepDown(datePart, delta);\n }\n\n public override hasDateParts(): boolean {\n return this._parser.hasDateParts();\n }\n\n public override hasTimeParts(): boolean {\n return this._parser.hasTimeParts();\n }\n\n // #endregion\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-date-range-input': IgcDateRangeInputComponent;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"date-range-input.js","sourceRoot":"","sources":["../../../src/components/date-range-picker/date-range-input.ts"],"names":[],"mappings":"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","sourcesContent":["import { property } from 'lit/decorators.js';\nimport { CalendarDay } from '#internals/date/model.js';\nimport { registerComponent } from '#internals/definitions/register.js';\nimport { formatDisplayDate } from '#internals/i18n/i18n-controller.js';\nimport type { AbstractConstructor } from '#internals/mixins/constructor.js';\nimport { EventEmitterMixin } from '#internals/mixins/event-emitter.js';\nimport { FormValueDateRangeTransformers } from '#internals/mixins/forms/form-transformers.js';\nimport { createFormValueState } from '#internals/mixins/forms/form-value.js';\nimport { addThemingController } from '#theming/theming-controller.js';\nimport {\n type DatePart,\n type DatePartDeltas,\n DatePartType,\n} from '../date-time-input/date-part.js';\nimport { IgcDateTimeInputBaseComponent } from '../date-time-input/date-time-input.base.js';\nimport { styles } from '../input/themes/input.base.css.js';\nimport { styles as shared } from '../input/themes/shared/input.common.css.js';\nimport { all } from '../input/themes/themes.js';\nimport type { DateRangeValue } from '../types.js';\nimport {\n DateRangeMaskParser,\n type DateRangePart,\n DateRangePosition,\n} from './date-range-mask-parser.js';\n\nexport interface IgcDateRangeInputComponentEventMap {\n /* alternateName: inputOcurred */\n igcInput: CustomEvent<string>;\n /* blazorSuppress */\n igcChange: CustomEvent<DateRangeValue | null>;\n // For analyzer meta only:\n /* skipWCPrefix */\n focus: FocusEvent;\n /* skipWCPrefix */\n blur: FocusEvent;\n}\n\n/* blazorSuppress */\nexport default class IgcDateRangeInputComponent extends EventEmitterMixin<\n IgcDateRangeInputComponentEventMap,\n AbstractConstructor<IgcDateTimeInputBaseComponent<DateRangeValue>>\n>(IgcDateTimeInputBaseComponent) {\n public static readonly tagName = 'igc-date-range-input';\n public static styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(IgcDateRangeInputComponent);\n }\n\n //#region Private state and properties\n\n protected override readonly _formValue = createFormValueState(this, {\n initialValue: { start: null, end: null },\n transformers: FormValueDateRangeTransformers,\n });\n\n protected override readonly _themes = addThemingController(this, all);\n protected override readonly _parser = new DateRangeMaskParser();\n\n // #endregion\n\n // #region Public attributes and properties\n\n /* @tsTwoWayProperty(true, \"igcChange\", \"detail\", false, true) */\n /**\n * The value of the date range input.\n *\n * Only ever holds a committed value. While the user is typing, the intermediate\n * state lives in the masked text and is committed - together with an `igcChange`\n * event - when the edit is committed on blur.\n *\n * @attr\n */\n @property({ attribute: false })\n public override set value(value: DateRangeValue | null) {\n this._applyValue(value);\n }\n\n public override get value(): DateRangeValue | null {\n return this._formValue.value;\n }\n\n // #endregion\n\n // #region Lifecycle Hooks\n\n public override connectedCallback(): void {\n super.connectedCallback();\n this._initializeDefaultMask();\n this._updateMaskDisplay();\n }\n\n // #endregion\n\n // #region Event Handlers Overrides\n\n protected override _isValueEmpty(): boolean {\n return !this.value || (!this.value.start && !this.value.end);\n }\n\n // #endregion\n\n // #region Keybindings overrides\n\n protected override _setCurrentDateTime(): void {\n const today = CalendarDay.today.native;\n this._setDraftValue({ start: today, end: today });\n this._emitInputEvent();\n }\n\n protected override _calculatePartNavigationPosition(\n inputValue: string,\n direction: number\n ): number {\n const cursorPos = this._maskSelection.start;\n const rangeParts = this._parser.parts;\n\n const currentPart = this._parser.getPartForCursor(cursorPos);\n\n const isStartOrEndPart =\n currentPart &&\n (currentPart.position === DateRangePosition.Start ||\n currentPart.position === DateRangePosition.End);\n\n if (direction === 0) {\n // Backward: if inside a start/end part, move to its start; else, move to previous part's start\n if (isStartOrEndPart && cursorPos !== currentPart.start) {\n return currentPart.start;\n }\n const prevPart = rangeParts.findLast(\n (p) => p.type !== DatePartType.Literal && p.end < cursorPos\n );\n return prevPart?.start ?? 0;\n }\n\n // Forward: if inside a start/end part, move to its end; else, move to next part's end\n if (isStartOrEndPart && cursorPos !== currentPart.end) {\n return currentPart.end;\n }\n const nextPart = rangeParts.find(\n (p) => p.type !== DatePartType.Literal && p.start > cursorPos\n );\n return nextPart?.end ?? inputValue.length;\n }\n\n // #endregion\n\n // #region Internal API Overrides\n\n protected override _performStep(\n datePart: unknown,\n delta: number | undefined,\n isDecrement: boolean\n ): void {\n // If no value exists, set to today's date first\n const current = this._uncommittedValue;\n\n if (!current?.start && !current?.end) {\n const today = CalendarDay.today.native;\n this._setDraftValue({ start: today, end: today });\n const { start, end } = this._inputSelection;\n this.updateComplete.then(() =>\n this._input?.setSelectionRange(start, end)\n );\n return;\n }\n\n super._performStep(datePart, delta, isDecrement);\n }\n\n protected override _buildDisplayValue(): string {\n if (!this.value?.start && !this.value?.end) {\n return '';\n }\n\n const { start, end } = this.value;\n const startStr = start\n ? formatDisplayDate(start, this.locale, this.displayFormat)\n : '';\n const endStr = end\n ? formatDisplayDate(end, this.locale, this.displayFormat)\n : '';\n return startStr && endStr\n ? `${startStr}${this._parser.separator}${endStr}`\n : startStr || endStr;\n }\n\n protected override _calculateSpunValue(\n datePart: unknown,\n delta: number | undefined,\n isDecrement: boolean\n ): DateRangeValue {\n const range = datePart as DateRangePart;\n const part = this._parser.getPartByTypeAndPosition(\n range.part as DatePartType,\n range.position\n );\n\n const today = CalendarDay.today.native;\n const defaultValue = { start: today, end: today };\n const current = this._uncommittedValue;\n\n if (!part) {\n return current || defaultValue;\n }\n\n const effectiveDelta =\n delta ?? this._datePartDeltas[range.part as keyof DatePartDeltas] ?? 1;\n const spinAmount = effectiveDelta * (isDecrement ? -1 : 1);\n\n // For AM/PM spinning, extract the current AM/PM value from the mask\n const amPmValue = this._readAmPmFromMask(part);\n\n return this._parser.spinDateRangePart(\n part,\n spinAmount,\n current,\n this.spinLoop,\n amPmValue\n );\n }\n\n /**\n * Gets the date range part at the current cursor position.\n * Returns undefined if the cursor sits outside any part - in the separator, say.\n */\n protected override _getDatePartAtCursor(): DateRangePart | undefined {\n const part = this._parser.getPartForCursor(this._inputSelection.start);\n\n return part\n ? { part: part.type as DatePart, position: part.position }\n : undefined;\n }\n\n /**\n * Gets the default date range part to target when the input is not focused.\n * Returns the first date part at the start position.\n */\n protected override _getDefaultDatePart(): DateRangePart | undefined {\n const firstPart = this._parser.getFirstDatePartForPosition(\n DateRangePosition.Start\n );\n if (firstPart) {\n return {\n part: firstPart.type as DatePart,\n position: DateRangePosition.Start,\n };\n }\n\n return undefined;\n }\n\n protected override _parseMask(strict: boolean): DateRangeValue | null {\n if (strict && !this._isMaskComplete()) {\n return null;\n }\n\n const parsed = this._parser.parseDateRange(this._maskedValue);\n return parsed?.start || parsed?.end ? parsed : null;\n }\n\n protected override _formatValue(value: DateRangeValue | null): string {\n return this._parser.formatDateRange(value);\n }\n\n protected override _applyMask(formatString: string): void {\n super._applyMask(formatString);\n this._parser.prompt = this.prompt;\n }\n\n // #region Public API Overrides\n\n /** Increments a date/time portion. */\n public override stepUp(datePart?: DateRangePart, delta?: number): void {\n super.stepUp(datePart, delta);\n }\n\n /** Decrements a date/time portion. */\n public override stepDown(datePart?: DateRangePart, delta?: number): void {\n super.stepDown(datePart, delta);\n }\n\n // #endregion\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-date-range-input': IgcDateRangeInputComponent;\n }\n}\n"]}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
import { type ICalendarResourceStrings, type IDateRangePickerResourceStrings } from 'igniteui-i18n-core';
|
|
2
1
|
import { nothing, type PropertyValues, type TemplateResult } from 'lit';
|
|
3
|
-
import type { IgcDateRangePickerResourceStrings } from '#internals/i18n/EN/date-range-picker.resources.js';
|
|
4
2
|
import type { AbstractConstructor } from '#internals/mixins/constructor.js';
|
|
5
3
|
import type { CalendarSelection } from '../calendar/types.js';
|
|
6
4
|
import { IgcDatePickerBaseComponent, type IgcPickerBaseEventMap } from '../date-picker/date-picker.base.js';
|
|
7
5
|
import type { DateRangeValue } from '../types.js';
|
|
8
6
|
import IgcDateRangeInputComponent from './date-range-input.js';
|
|
9
7
|
import { DateRangePosition } from './date-range-mask-parser.js';
|
|
8
|
+
import { type DateRangePickerResourceStringsType, type DateRangeResourceStrings, type IgcDateRangePickerResourceStrings } from './i18n.js';
|
|
10
9
|
export type { DateRangeValue } from '../types.js';
|
|
11
10
|
/** A predefined date range with label for {@link IgcDateRangePickerComponent.customRanges} */
|
|
12
11
|
export interface CustomDateRange {
|
|
@@ -14,7 +13,7 @@ export interface CustomDateRange {
|
|
|
14
13
|
dateRange: DateRangeValue;
|
|
15
14
|
}
|
|
16
15
|
export type IgcDateRangePickerComponentEventMap = IgcPickerBaseEventMap<DateRangeValue>;
|
|
17
|
-
export type DateRangePickerResourceStringsType
|
|
16
|
+
export type { DateRangePickerResourceStringsType } from './i18n.js';
|
|
18
17
|
declare const IgcDateRangePickerComponent_base: import("#internals/mixins/constructor.js").Constructor<import("#internals/mixins/event-emitter.js").EventEmitterInterface<IgcDateRangePickerComponentEventMap>> & AbstractConstructor<IgcDatePickerBaseComponent<DateRangeValue>>;
|
|
19
18
|
/**
|
|
20
19
|
* The Date Range Picker includes a text input and a calendar pop-up, allowing users to easily select start and end dates.
|
|
@@ -25,8 +24,8 @@ declare const IgcDateRangePickerComponent_base: import("#internals/mixins/constr
|
|
|
25
24
|
* @slot prefix-start - Renders content before the start input (two inputs).
|
|
26
25
|
* @slot prefix-end - Renders content before the end input (two inputs).
|
|
27
26
|
* @slot suffix - Renders content after the input (single input).
|
|
28
|
-
* @slot suffix-start - Renders content after the start input (
|
|
29
|
-
* @slot suffix-end - Renders content after the end input (
|
|
27
|
+
* @slot suffix-start - Renders content after the start input (two inputs).
|
|
28
|
+
* @slot suffix-end - Renders content after the end input (two inputs).
|
|
30
29
|
* @slot helper-text - Renders content below the input.
|
|
31
30
|
* @slot bad-input - Renders content when the value is in the disabledDates ranges.
|
|
32
31
|
* @slot value-missing - Renders content when the required validation fails.
|
|
@@ -68,7 +67,6 @@ declare const IgcDateRangePickerComponent_base: import("#internals/mixins/constr
|
|
|
68
67
|
* @csspart clear-icon-start - The clear icon wrapper for the start input (two inputs).
|
|
69
68
|
* @csspart clear-icon-end - The clear icon wrapper for the end input (two inputs).
|
|
70
69
|
* @csspart actions - The wrapper for the custom actions area.
|
|
71
|
-
* @csspart clear-icon - The clear icon wrapper.
|
|
72
70
|
* @csspart input - The native input element.
|
|
73
71
|
* @csspart prefix - The prefix wrapper.
|
|
74
72
|
* @csspart suffix - The suffix wrapper.
|
|
@@ -117,12 +115,8 @@ export default class IgcDateRangePickerComponent extends IgcDateRangePickerCompo
|
|
|
117
115
|
protected get __validators(): import("../../internals/validators.js").Validator<IgcDateRangePickerComponent>[];
|
|
118
116
|
protected readonly _inputId: string;
|
|
119
117
|
protected readonly _themes: import("#theming/theming-controller.js").ThemingController;
|
|
120
|
-
protected readonly _slots: import("#internals/controllers/slot.js").SlotController<"invalid" | "title" | "prefix" | "
|
|
121
|
-
|
|
122
|
-
* For now we use the core validation strings internally only, to avoid mixing with old resources by users.
|
|
123
|
-
* To Do: Update resourceStrings type when the IgcDateRangePickerResourceStrings is changed to IDateRangePickerResourceStrings
|
|
124
|
-
*/
|
|
125
|
-
protected readonly _i18nController: import("#internals/i18n/i18n-controller.js").I18nController<IgcDateRangePickerResourceStrings | DateRangePickerResourceStringsType>;
|
|
118
|
+
protected readonly _slots: import("#internals/controllers/slot.js").SlotController<"invalid" | "title" | "prefix" | "[default]" | "actions" | "separator" | "suffix" | "helper-text" | "value-missing" | "range-overflow" | "range-underflow" | "custom-error" | "clear-icon" | "calendar-icon-open" | "calendar-icon" | "header-date" | "bad-input" | "prefix-start" | "prefix-end" | "suffix-start" | "suffix-end" | "clear-icon-start" | "clear-icon-end" | "calendar-icon-start" | "calendar-icon-end" | "calendar-icon-open-start" | "calendar-icon-open-end">;
|
|
119
|
+
protected readonly _i18nController: import("#internals/i18n/i18n-controller.js").I18nController<DateRangeResourceStrings>;
|
|
126
120
|
protected readonly _formValue: import("#internals/mixins/forms/form-value.js").FormValue<DateRangeValue | null>;
|
|
127
121
|
protected _visibleMonths: number;
|
|
128
122
|
private _placeholder?;
|
|
@@ -183,7 +177,7 @@ export default class IgcDateRangePickerComponent extends IgcDateRangePickerCompo
|
|
|
183
177
|
*/
|
|
184
178
|
usePredefinedRanges: boolean;
|
|
185
179
|
/** The resource strings of the date range picker. */
|
|
186
|
-
set resourceStrings(value:
|
|
180
|
+
set resourceStrings(value: DateRangeResourceStrings);
|
|
187
181
|
get resourceStrings(): IgcDateRangePickerResourceStrings & DateRangePickerResourceStringsType;
|
|
188
182
|
/**
|
|
189
183
|
* The label of the start input.
|
|
@@ -230,42 +224,39 @@ export default class IgcDateRangePickerComponent extends IgcDateRangePickerCompo
|
|
|
230
224
|
private _syncCalendarRange;
|
|
231
225
|
private _syncEditors;
|
|
232
226
|
protected _revertValue(): void;
|
|
233
|
-
/**
|
|
234
|
-
*
|
|
235
|
-
* month.
|
|
236
|
-
*/
|
|
227
|
+
/** Points the calendar at the current range, and puts it in the first of the
|
|
228
|
+
* rendered months. */
|
|
237
229
|
private _setCalendarActiveDateAndViewIndex;
|
|
238
230
|
/**
|
|
239
|
-
*
|
|
240
|
-
*
|
|
241
|
-
*
|
|
242
|
-
* `value`, since an edit in progress there has not reached the picker yet.
|
|
231
|
+
* Builds the range from what the two editors hold. The other input is read
|
|
232
|
+
* through its draft, not through the committed `value`, because an edit there
|
|
233
|
+
* has not reached the picker.
|
|
243
234
|
*/
|
|
244
235
|
private _getUpdatedDateRange;
|
|
245
236
|
/**
|
|
246
|
-
* Delegates the validity methods of the editors to the range validation of the
|
|
247
|
-
* The pristine check
|
|
237
|
+
* Delegates the validity methods of the editors to the range validation of the
|
|
238
|
+
* picker. The pristine check stops a form reset, which writes to the editors,
|
|
239
|
+
* from starting a validation.
|
|
248
240
|
*/
|
|
249
241
|
private _delegateInputsValidity;
|
|
250
242
|
/**
|
|
251
|
-
*
|
|
252
|
-
* handlers
|
|
253
|
-
* while the user types.
|
|
243
|
+
* Shows a range in the calendar. The default is the committed value. The
|
|
244
|
+
* input handlers give the draft, so that the calendar follows the typing.
|
|
254
245
|
*/
|
|
255
246
|
private _setCalendarRangeValues;
|
|
256
247
|
/**
|
|
257
|
-
* Commits a range
|
|
258
|
-
*
|
|
248
|
+
* Commits a range from an editor, corrects a reversed one, and notifies. The
|
|
249
|
+
* value assignment shows the range in the calendar.
|
|
259
250
|
*/
|
|
260
251
|
private _commitRange;
|
|
261
252
|
private _swapDates;
|
|
262
253
|
private _select;
|
|
263
254
|
/**
|
|
264
|
-
* Custom actions stay in the body of the dialog,
|
|
265
|
-
*
|
|
255
|
+
* Custom actions stay in the body of the dialog, away from the cancel and
|
|
256
|
+
* done buttons in its footer.
|
|
266
257
|
*/
|
|
267
258
|
protected _renderActions(): TemplateResult<1>;
|
|
268
|
-
protected _renderPredefinedRanges(): typeof nothing
|
|
259
|
+
protected _renderPredefinedRanges(): TemplateResult<1> | typeof nothing;
|
|
269
260
|
protected _renderPickerContent(id: string): TemplateResult<1>;
|
|
270
261
|
protected _renderDialogFooter(): TemplateResult<1>;
|
|
271
262
|
protected _renderInput(id: string, picker?: DateRangePosition.Start | DateRangePosition.End): TemplateResult<1>;
|
|
@@ -5,7 +5,6 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
7
|
var IgcDateRangePickerComponent_1;
|
|
8
|
-
import { CalendarResourceStringsEN, DateRangePickerResourceStringsEN, } from 'igniteui-i18n-core';
|
|
9
8
|
import { html, nothing } from 'lit';
|
|
10
9
|
import { property, query, queryAll, state } from 'lit/decorators.js';
|
|
11
10
|
import { cache } from 'lit/directives/cache.js';
|
|
@@ -29,9 +28,11 @@ import { createIdGenerator } from '#internals/utils/strings.js';
|
|
|
29
28
|
import { addThemingController } from '#theming/theming-controller.js';
|
|
30
29
|
import { IgcDatePickerBaseComponent, pickerDependencies, } from '../date-picker/date-picker.base.js';
|
|
31
30
|
import IgcDateTimeInputComponent from '../date-time-input/date-time-input.js';
|
|
31
|
+
import IgcValidationContainerComponent from '../validation-container/validation-container.js';
|
|
32
32
|
import IgcDateRangeInputComponent from './date-range-input.js';
|
|
33
33
|
import { DateRangePosition } from './date-range-mask-parser.js';
|
|
34
34
|
import { styles } from './date-range-picker.base.css.js';
|
|
35
|
+
import { dateRangeI18nConfig, } from './i18n.js';
|
|
35
36
|
import IgcPredefinedRangesAreaComponent from './predefined-ranges-area.js';
|
|
36
37
|
import { styles as shared } from './themes/shared/date-range-picker.common.css.js';
|
|
37
38
|
import { all } from './themes/themes.js';
|
|
@@ -153,10 +154,7 @@ let IgcDateRangePickerComponent = class IgcDateRangePickerComponent extends Even
|
|
|
153
154
|
this._slots = addSlotController(this, {
|
|
154
155
|
slots: Slots,
|
|
155
156
|
});
|
|
156
|
-
this._i18nController = addI18nController(this,
|
|
157
|
-
defaultEN: Object.assign({}, DateRangePickerResourceStringsEN, CalendarResourceStringsEN),
|
|
158
|
-
resourceMapName: 'date-range-picker',
|
|
159
|
-
});
|
|
157
|
+
this._i18nController = addI18nController(this, dateRangeI18nConfig);
|
|
160
158
|
this._formValue = createFormValueState(this, {
|
|
161
159
|
initialValue: { start: null, end: null },
|
|
162
160
|
transformers: FormValueDateRangeTransformers,
|
|
@@ -327,6 +325,7 @@ let IgcDateRangePickerComponent = class IgcDateRangePickerComponent extends Even
|
|
|
327
325
|
.customRanges=${this.customRanges}
|
|
328
326
|
.resourceStrings=${this.resourceStrings}
|
|
329
327
|
@igcRangeSelect=${({ detail }) => this._select(detail, this._isDropDown)}
|
|
328
|
+
exportparts="ranges"
|
|
330
329
|
>
|
|
331
330
|
</igc-predefined-ranges-area>
|
|
332
331
|
`
|
|
@@ -400,7 +399,8 @@ let IgcDateRangePickerComponent = class IgcDateRangePickerComponent extends Even
|
|
|
400
399
|
</div>
|
|
401
400
|
${this._renderInput(idEnd, DateRangePosition.End)}
|
|
402
401
|
</div>
|
|
403
|
-
${this._renderPicker(idStart)}
|
|
402
|
+
${this._renderPicker(idStart)}
|
|
403
|
+
${IgcValidationContainerComponent.create(this)}
|
|
404
404
|
`;
|
|
405
405
|
}
|
|
406
406
|
_renderSingleInput(id) {
|
|
@@ -430,7 +430,7 @@ let IgcDateRangePickerComponent = class IgcDateRangePickerComponent extends Even
|
|
|
430
430
|
>
|
|
431
431
|
${this._renderEditorSlots()}
|
|
432
432
|
</igc-date-range-input>
|
|
433
|
-
${
|
|
433
|
+
${IgcValidationContainerComponent.create(this)} ${this._renderPicker(id)}
|
|
434
434
|
`;
|
|
435
435
|
}
|
|
436
436
|
render() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-range-picker.js","sourceRoot":"","sources":["../../../src/components/date-range-picker/date-range-picker.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n CalendarResourceStringsEN,\n DateRangePickerResourceStringsEN,\n type ICalendarResourceStrings,\n type IDateRangePickerResourceStrings,\n} from 'igniteui-i18n-core';\nimport { html, nothing, type PropertyValues, type TemplateResult } from 'lit';\nimport { property, query, queryAll, state } from 'lit/decorators.js';\nimport { cache } from 'lit/directives/cache.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { live } from 'lit/directives/live.js';\nimport { addAriaProjector } from '#internals/controllers/aria-projection.js';\nimport { addSlotController, setSlots } from '#internals/controllers/slot.js';\nimport { convertToDateRange } from '#internals/date/converters.js';\nimport { CalendarDay, truncateTime } from '#internals/date/model.js';\nimport { blazorAdditionalDependencies } from '#internals/decorators/blazorAdditionalDependencies.js';\nimport { shadowOptions } from '#internals/decorators/shadow-options.js';\nimport { registerComponent } from '#internals/definitions/register.js';\nimport type { IgcDateRangePickerResourceStrings } from '#internals/i18n/EN/date-range-picker.resources.js';\nimport {\n addI18nController,\n getDateTimeFormat,\n} from '#internals/i18n/i18n-controller.js';\nimport type { AbstractConstructor } from '#internals/mixins/constructor.js';\nimport { EventEmitterMixin } from '#internals/mixins/event-emitter.js';\nimport { FormValueDateRangeTransformers } from '#internals/mixins/forms/form-transformers.js';\nimport { createFormValueState } from '#internals/mixins/forms/form-value.js';\nimport { firstOf, isEmpty, lastOf } from '#internals/utils/arrays.js';\nimport { bindIf } from '#internals/utils/lit.js';\nimport { asNumber, clamp } from '#internals/utils/math.js';\nimport { createIdGenerator } from '#internals/utils/strings.js';\nimport { addThemingController } from '#theming/theming-controller.js';\nimport type { CalendarSelection } from '../calendar/types.js';\nimport {\n IgcDatePickerBaseComponent,\n type IgcPickerBaseEventMap,\n pickerDependencies,\n} from '../date-picker/date-picker.base.js';\nimport IgcDateTimeInputComponent from '../date-time-input/date-time-input.js';\nimport type { DateRangeValue } from '../types.js';\nimport IgcDateRangeInputComponent from './date-range-input.js';\nimport { DateRangePosition } from './date-range-mask-parser.js';\nimport { styles } from './date-range-picker.base.css.js';\nimport IgcPredefinedRangesAreaComponent from './predefined-ranges-area.js';\nimport { styles as shared } from './themes/shared/date-range-picker.common.css.js';\nimport { all } from './themes/themes.js';\nimport { dateRangeValidators, isCompleteDateRange } from './validators.js';\n\nexport type { DateRangeValue } from '../types.js';\n\n/* jsonAPIPlainObject */\n/** A predefined date range with label for {@link IgcDateRangePickerComponent.customRanges} */\nexport interface CustomDateRange {\n label: string;\n dateRange: DateRangeValue;\n}\n\n/** Either editor the picker renders the range in - the masked single one or a start/end pair. */\ntype PickerEditor = IgcDateRangeInputComponent | IgcDateTimeInputComponent;\n\nexport type IgcDateRangePickerComponentEventMap =\n IgcPickerBaseEventMap<DateRangeValue>;\n\nexport type DateRangePickerResourceStringsType =\n IDateRangePickerResourceStrings & ICalendarResourceStrings;\n\nconst nextId = createIdGenerator('date-range-picker');\nconst Slots = setSlots(\n 'prefix',\n 'prefix-start',\n 'prefix-end',\n 'suffix',\n 'suffix-start',\n 'suffix-end',\n 'helper-text',\n 'bad-input',\n 'value-missing',\n 'range-overflow',\n 'range-underflow',\n 'custom-error',\n 'invalid',\n 'title',\n 'header-date',\n 'clear-icon',\n 'clear-icon-start',\n 'clear-icon-end',\n 'calendar-icon',\n 'calendar-icon-start',\n 'calendar-icon-end',\n 'calendar-icon-open',\n 'calendar-icon-open-start',\n 'calendar-icon-open-end',\n 'actions',\n 'separator'\n);\n\n/* blazorIndirectRender */\n/* blazorSupportsVisualChildren */\n/**\n * The Date Range Picker includes a text input and a calendar pop-up, allowing users to easily select start and end dates.\n *\n * @element igc-date-range-picker\n *\n * @slot prefix - Renders content before the input (single input).\n * @slot prefix-start - Renders content before the start input (two inputs).\n * @slot prefix-end - Renders content before the end input (two inputs).\n * @slot suffix - Renders content after the input (single input).\n * @slot suffix-start - Renders content after the start input (single input).\n * @slot suffix-end - Renders content after the end input (single input).\n * @slot helper-text - Renders content below the input.\n * @slot bad-input - Renders content when the value is in the disabledDates ranges.\n * @slot value-missing - Renders content when the required validation fails.\n * @slot range-overflow - Renders content when the max validation fails.\n * @slot range-underflow - Renders content when the min validation fails.\n * @slot custom-error - Renders content when setCustomValidity(message) is set.\n * @slot invalid - Renders content when the component is in invalid state (validity.valid = false).\n * @slot title - Renders content in the calendar title.\n * @slot header-date - Renders content instead of the current date/range in the calendar header.\n * @slot clear-icon - Renders a clear icon template.\n * @slot clear-icon-start - Renders a clear icon template for the start input (two inputs).\n * @slot clear-icon-end - Renders a clear icon template for the end input (two inputs).\n * @slot calendar-icon - Renders the icon/content for the calendar picker.\n * @slot calendar-icon-start - Renders the icon/content for the calendar picker for the start input (two inputs).\n * @slot calendar-icon-end - Renders the icon/content for the calendar picker for the end input (two inputs).\n * @slot calendar-icon-open - Renders the icon/content for the picker in open state.\n * @slot calendar-icon-open-start - Renders the icon/content for the picker in open state for the start input (two inputs).\n * @slot calendar-icon-open-end - Renders the icon/content for the picker in open state for the end input (two inputs).\n * @slot actions - Renders content in the action part of the picker in open state.\n * @slot separator - Renders the separator element between the two inputs.\n *\n * @fires igcOpening - Emitted just before the calendar popover is shown.\n * @fires igcOpened - Emitted after the calendar popover is shown.\n * @fires igcClosing - Emitted just before the calendar popover is hidden.\n * @fires igcClosed - Emitted after the calendar popover is hidden.\n * @fires igcChange - Emitted when the user modifies and commits the elements's value.\n * @fires igcInput - Emitted when when the user types in the element.\n *\n * @csspart separator - The separator element between the two inputs.\n * @csspart ranges - The wrapper that renders the custom and predefined ranges.\n * @csspart label - The label wrapper that renders content above the target input.\n * @csspart calendar-icon - The calendar icon wrapper for closed state (single input).\n * @csspart calendar-icon-start - The calendar icon wrapper for closed state for the start input (two inputs).\n * @csspart calendar-icon-end - The calendar icon wrapper for closed state for the end input (two inputs).\n * @csspart calendar-icon-open - The calendar icon wrapper for opened state (single input).\n * @csspart calendar-icon-open-start - The calendar icon wrapper for opened state for the start input (two inputs).\n * @csspart calendar-icon-open-end - The calendar icon wrapper for opened state for the end input (two inputs).\n * @csspart clear-icon - The clear icon wrapper (single input).\n * @csspart clear-icon-start - The clear icon wrapper for the start input (two inputs).\n * @csspart clear-icon-end - The clear icon wrapper for the end input (two inputs).\n * @csspart actions - The wrapper for the custom actions area.\n * @csspart clear-icon - The clear icon wrapper.\n * @csspart input - The native input element.\n * @csspart prefix - The prefix wrapper.\n * @csspart suffix - The suffix wrapper.\n * @csspart helper-text - The helper-text wrapper that renders content below the target input.\n * @csspart header - The calendar header element.\n * @csspart header-title - The calendar header title element.\n * @csspart header-date - The calendar header date element.\n * @csspart calendar-content - The calendar content element which contains the views and navigation elements.\n * @csspart navigation - The calendar navigation container element.\n * @csspart months-navigation - The calendar months navigation button element.\n * @csspart years-navigation - The calendar years navigation button element.\n * @csspart years-range - The calendar years range element.\n * @csspart navigation-buttons - The calendar navigation buttons container.\n * @csspart navigation-button - The calendar previous/next navigation button.\n * @csspart days-view-container - The calendar days view container element.\n * @csspart days-view - The calendar days view element.\n * @csspart months-view - The calendar months view element.\n * @csspart years-view - The calendar years view element.\n * @csspart days-row - The calendar days row element.\n * @csspart calendar-label - The calendar week header label element.\n * @csspart week-number - The calendar week number element.\n * @csspart week-number-inner - The calendar week number inner element.\n * @csspart date - The calendar date element.\n * @csspart date-inner - The calendar date inner element.\n * @csspart first - The calendar first selected date element in range selection.\n * @csspart last - The calendar last selected date element in range selection.\n * @csspart inactive - The calendar inactive date element.\n * @csspart hidden - The calendar hidden date element.\n * @csspart weekend - The calendar weekend date element.\n * @csspart range - The calendar range selected element.\n * @csspart special - The calendar special date element.\n * @csspart disabled - The calendar disabled date element.\n * @csspart single - The calendar single selected date element.\n * @csspart preview - The calendar range selection preview date element.\n * @csspart month - The calendar month element.\n * @csspart month-inner - The calendar month inner element.\n * @csspart year - The calendar year element.\n * @csspart year-inner - The calendar year inner element.\n * @csspart selected - The calendar selected state for element(s). Applies to date, month and year elements.\n * @csspart current - The calendar current state for element(s). Applies to date, month and year elements.\n */\n@blazorAdditionalDependencies(\n 'IgcCalendarComponent, IgcDateTimeInputComponent, IgcDialogComponent, IgcIconComponent, IgcChipComponent, IgcInputComponent'\n)\n@shadowOptions({ delegatesFocus: true })\nexport default class IgcDateRangePickerComponent extends EventEmitterMixin<\n IgcDateRangePickerComponentEventMap,\n AbstractConstructor<IgcDatePickerBaseComponent<DateRangeValue>>\n>(IgcDatePickerBaseComponent) {\n public static readonly tagName = 'igc-date-range-picker';\n public static styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(\n IgcDateRangePickerComponent,\n IgcDateRangeInputComponent,\n IgcDateTimeInputComponent,\n IgcPredefinedRangesAreaComponent,\n ...pickerDependencies\n );\n }\n\n // #region Internal state & properties\n\n protected override get __validators() {\n return dateRangeValidators;\n }\n\n protected override readonly _inputId = nextId();\n protected override readonly _themes = addThemingController(this, all);\n protected override readonly _slots = addSlotController(this, {\n slots: Slots,\n });\n\n /**\n * For now we use the core validation strings internally only, to avoid mixing with old resources by users.\n * To Do: Update resourceStrings type when the IgcDateRangePickerResourceStrings is changed to IDateRangePickerResourceStrings\n */\n protected override readonly _i18nController = addI18nController<\n IgcDateRangePickerResourceStrings | DateRangePickerResourceStringsType\n >(this, {\n defaultEN: Object.assign(\n {},\n DateRangePickerResourceStringsEN,\n CalendarResourceStringsEN\n ),\n resourceMapName: 'date-range-picker',\n });\n\n protected override readonly _formValue = createFormValueState(this, {\n initialValue: { start: null, end: null },\n transformers: FormValueDateRangeTransformers,\n });\n\n protected override _visibleMonths = 2;\n\n private _placeholder?: string;\n\n /** The range reflected in the calendar, committed or still being typed. */\n @state()\n private _calendarRange: Date[] | null = null;\n\n @queryAll(IgcDateTimeInputComponent.tagName)\n private readonly _inputs!: NodeListOf<IgcDateTimeInputComponent>;\n\n @query(IgcDateRangeInputComponent.tagName)\n private readonly _input!: IgcDateRangeInputComponent;\n\n /** The editors currently rendered by the picker. */\n private get _editors(): PickerEditor[] {\n return this.useTwoInputs ? Array.from(this._inputs) : [this._input];\n }\n\n /** The editor of single editor operations - the start one when the range is split. */\n private get _startEditor(): PickerEditor {\n return firstOf(this._editors);\n }\n\n private get _firstDefinedInRange(): Date | null {\n return this.value?.start ?? this.value?.end ?? null;\n }\n\n // #endregion\n\n // #region Base class hooks\n\n protected override get _value(): DateRangeValue | null {\n return this.value;\n }\n\n protected override set _value(value: DateRangeValue | null) {\n this.value = value;\n }\n\n protected override get _hasValue(): boolean {\n return this._firstDefinedInRange !== null;\n }\n\n protected override get _calendarSelection(): CalendarSelection {\n return 'range';\n }\n\n protected override get _calendarValues(): Date[] | null {\n return this._calendarRange;\n }\n\n protected override get _defaultActiveDate(): Date | null {\n return this._firstDefinedInRange;\n }\n\n protected override get _selectDateLabel(): string | undefined {\n return this.resourceStrings.calendar_select_date;\n }\n\n protected override get _defaultDisplayFormat(): string | undefined {\n return this._inputFormat ?? this._i18nController.localeDisplayFormat;\n }\n\n protected override get _defaultInputFormat(): string | undefined {\n return this._i18nController.localeInputFormat;\n }\n\n protected override get _projectionTarget() {\n // The host's associated labels are projected only onto the start input.\n return this._input ?? this._inputs?.[0] ?? null;\n }\n\n protected override _focusInput(): void {\n this._startEditor.focus();\n }\n\n protected override _focusAndSelectInput(): void {\n this.useTwoInputs ? this._inputs[0].select() : this._input.focus();\n }\n\n protected override _canCloseOnSelect(): boolean {\n return this._calendar.values.length > 1;\n }\n\n protected override _handleDismiss(): void {\n if (!this._isDropDown) {\n this._revertValue();\n }\n }\n\n protected override _syncCalendarOnToggle(): void {\n this._setCalendarActiveDateAndViewIndex();\n }\n\n protected override _clearEditors(): void {\n for (const editor of this._editors) {\n editor?.clear();\n }\n }\n\n protected override _onDialogClosing(): void {\n this._emitChangeIfDirty();\n }\n\n /** In dialog mode the range is committed by the actions of the dialog instead. */\n protected override _commitsCalendarSelection(): boolean {\n return this._isDropDown;\n }\n\n protected override _valueFromCalendarSelection(\n dates: Date[]\n ): DateRangeValue {\n // A range cleared in the calendar comes through as no dates at all\n return isEmpty(dates)\n ? { start: null, end: null }\n : { start: firstOf(dates), end: lastOf(dates) };\n }\n\n // #endregion\n\n // #region General properties\n\n /* @tsTwoWayProperty(true, \"igcChange\", \"detail\", false, true) */\n /**\n * The value of the picker\n * @attr\n */\n @property({ converter: convertToDateRange })\n public set value(value: DateRangeValue | string | null | undefined) {\n this._formValue.setValueAndFormState(convertToDateRange(value));\n this._setCalendarRangeValues();\n }\n\n public get value(): DateRangeValue | null {\n return this._formValue.value;\n }\n\n /**\n * The number of months displayed in the calendar.\n * @attr visible-months\n * @default 2\n */\n @property({ type: Number, attribute: 'visible-months' })\n public override set visibleMonths(value: number) {\n this._visibleMonths = clamp(asNumber(value, 2), 1, 2);\n }\n\n public override get visibleMonths(): number {\n return this._visibleMonths;\n }\n\n /**\n * Renders chips with custom ranges based on the elements of the array.\n */\n @property({ attribute: false })\n public customRanges: CustomDateRange[] = [];\n\n /**\n * Use two inputs to display the date range values. Makes the input editable in dropdown mode.\n * @attr use-two-inputs\n */\n @property({ type: Boolean, reflect: true, attribute: 'use-two-inputs' })\n public useTwoInputs = false;\n\n /**\n * Whether the control will show chips with predefined ranges.\n * @attr\n */\n @property({\n type: Boolean,\n reflect: true,\n attribute: 'use-predefined-ranges',\n })\n public usePredefinedRanges = false;\n\n /** The resource strings of the date range picker. */\n @property({ attribute: false })\n public set resourceStrings(\n value:\n | IgcDateRangePickerResourceStrings\n | DateRangePickerResourceStringsType\n ) {\n this._i18nController.resourceStrings = value;\n }\n\n public get resourceStrings(): IgcDateRangePickerResourceStrings &\n DateRangePickerResourceStringsType {\n return this._i18nController.resourceStrings;\n }\n\n // #endregion\n\n // #region Input-related properties\n\n /**\n * The label of the start input.\n * @attr label-start\n */\n @property({ attribute: 'label-start' })\n public labelStart = '';\n\n /**\n * The label of the end input.\n * @attr label-end\n */\n @property({ attribute: 'label-end' })\n public labelEnd = '';\n\n /**\n * The placeholder text of the control (single input).\n * @attr\n */\n @property()\n public set placeholder(value: string) {\n this._placeholder = value;\n }\n\n public get placeholder(): string {\n const rangePlaceholder = `${this.inputFormat} - ${this.inputFormat}`;\n return this._placeholder ?? rangePlaceholder;\n }\n\n /**\n * The placeholder text of the start input.\n * @attr placeholder-start\n */\n @property({ attribute: 'placeholder-start' })\n public placeholderStart = '';\n\n /**\n * The placeholder text of the end input.\n * @attr placeholder-end\n */\n @property({ attribute: 'placeholder-end' })\n public placeholderEnd = '';\n\n // #endregion\n\n // #region Life-cycle hooks\n\n constructor() {\n super();\n\n // The base class projector covers the start editor. In two-input mode the\n // end editor needs the picker popup semantics as well, labels excluded.\n addAriaProjector(this, {\n target: () => this._inputs[1] ?? null,\n state: () => ({ hasPopup: 'dialog' }),\n });\n }\n\n protected override willUpdate(changedProperties: PropertyValues<this>): void {\n super.willUpdate(changedProperties);\n\n if (changedProperties.has('mode') && !this._isDropDown) {\n this.keepOpenOnSelect = true;\n }\n\n // The editors are swapped by the render below, so both the range and the\n // delegated validity are re-applied once the new ones are in place.\n if (changedProperties.has('useTwoInputs')) {\n this._syncEditors();\n } else if (changedProperties.has('mode')) {\n this._syncCalendarRange();\n }\n }\n\n protected override firstUpdated() {\n this._delegateInputsValidity();\n }\n\n protected override formResetCallback() {\n super.formResetCallback();\n this._setCalendarRangeValues();\n }\n\n // #endregion\n\n // #region Public API methods\n\n /* blazorSuppress */\n /** @internal */\n public hasDateParts(): boolean {\n return this._startEditor.hasDateParts();\n }\n\n /* blazorSuppress */\n /** @internal */\n public hasTimeParts(): boolean {\n return this._startEditor.hasTimeParts();\n }\n\n /** Selects a date range value in the picker */\n public select(value: DateRangeValue | null): void {\n this._select(value);\n }\n\n // #endregion\n\n // #region Event handlers\n\n protected _dialogCancel() {\n this._revertValue();\n this._hide(true);\n }\n\n protected _dialogDone() {\n this._emitChangeIfDirty();\n this._hide(true);\n }\n\n protected _handleInput(event: CustomEvent<string>) {\n event.stopPropagation();\n if (this.nonEditable) {\n event.preventDefault();\n return;\n }\n\n const input = event.target as IgcDateTimeInputComponent;\n const newValue = truncateTime(input._uncommittedValue);\n const range = this._getUpdatedDateRange(input, newValue);\n\n this._setCalendarRangeValues(range);\n this._setCalendarActiveDate(newValue, range.start, range.end);\n\n this.emitEvent('igcInput', { detail: range });\n }\n\n protected _handleInputChange(event: CustomEvent<Date | null>) {\n event.stopPropagation();\n\n const input = event.target as IgcDateTimeInputComponent;\n const newValue = truncateTime(input.value);\n\n this._commitRange(this._getUpdatedDateRange(input, newValue));\n }\n\n protected async _handleDateRangeInput(event: CustomEvent<string>) {\n event.stopPropagation();\n if (this.nonEditable) {\n event.preventDefault();\n return;\n }\n\n const input = event.target as IgcDateRangeInputComponent;\n const draft = input._uncommittedValue;\n\n this._setCalendarRangeValues(draft);\n this._calendar.activeDate = draft?.start;\n\n this.emitEvent('igcInput', { detail: draft });\n }\n\n protected _handleDateRangeInputChange(\n event: CustomEvent<DateRangeValue | null>\n ) {\n event.stopPropagation();\n\n this._commitRange((event.target as IgcDateRangeInputComponent).value);\n }\n\n // #endregion\n\n // #region Private methods\n\n private async _syncCalendarRange(): Promise<void> {\n await this._calendar?.updateComplete;\n this._setCalendarRangeValues();\n }\n\n private async _syncEditors(): Promise<void> {\n await this._syncCalendarRange();\n this._delegateInputsValidity();\n }\n\n protected _revertValue() {\n this.value = this._oldValue;\n }\n\n /**\n * Points the calendar at the current range, if any, and back to its first rendered\n * month.\n */\n private _setCalendarActiveDateAndViewIndex() {\n const activeDaysViewIndex = '_activeDaysViewIndex';\n\n this._setCalendarActiveDate(this._firstDefinedInRange);\n this._calendar[activeDaysViewIndex] = 0;\n }\n\n /**\n * Composes the range from what the two editors currently hold.\n *\n * The sibling input is read through its draft rather than through the committed\n * `value`, since an edit in progress there has not reached the picker yet.\n */\n private _getUpdatedDateRange(\n input: IgcDateTimeInputComponent,\n newValue: Date | null\n ): DateRangeValue {\n const [startInput, endInput] = this._inputs;\n\n return input === startInput\n ? { start: newValue, end: endInput?._uncommittedValue ?? null }\n : { start: startInput?._uncommittedValue ?? null, end: newValue };\n }\n\n /**\n * Delegates the validity methods of the editors to the range validation of the picker.\n * The pristine check keeps a form reset, which assigns to the editors, from validating.\n */\n private _delegateInputsValidity() {\n for (const input of this._editors) {\n input.checkValidity = () =>\n !this._pristine ? this.checkValidity() : true;\n input.reportValidity = () =>\n !this._pristine ? this.reportValidity() : true;\n }\n }\n\n /**\n * Reflects a range in the calendar. Defaults to the committed value, but the input\n * handlers pass the uncommitted draft so that the calendar keeps following along\n * while the user types.\n */\n private _setCalendarRangeValues(range: DateRangeValue | null = this.value) {\n if (isCompleteDateRange(range)) {\n this._calendarRange =\n CalendarDay.compare(range.start, range.end) === 0\n ? [range.start]\n : [range.start, range.end];\n\n this._setCalendarActiveDate(range.start);\n return;\n }\n\n const first = range?.start ?? range?.end ?? null;\n this._calendarRange = first ? [first] : null;\n }\n\n /**\n * Commits a range entered through an editor, normalizing a reversed one, and notifies.\n * Assigning the value reflects the range in the calendar on its own.\n */\n private _commitRange(range: DateRangeValue | null): void {\n const { start, end } = (range && this._swapDates(range)) ?? {\n start: null,\n end: null,\n };\n\n this.value = { start, end };\n this.emitEvent('igcChange', { detail: this.value });\n }\n\n private _swapDates(range: DateRangeValue): DateRangeValue {\n return isCompleteDateRange(range) &&\n CalendarDay.compare(range.start, range.end) >= 1\n ? { start: range.end, end: range.start }\n : range;\n }\n\n private _select(value: DateRangeValue | null, emitEvent = false) {\n this.value = value;\n this._setCalendarActiveDate(this._firstDefinedInRange);\n\n if (emitEvent) {\n this.emitEvent('igcChange', { detail: this.value });\n this._oldValue = this.value;\n this._hide(true);\n }\n }\n\n // #endregion\n\n // #region Rendering\n\n /**\n * Custom actions stay in the body of the dialog, so that they do not collide\n * with the cancel/done buttons rendered in its footer.\n */\n protected override _renderActions() {\n const hasActions = this._slots.hasAssignedElements('actions');\n const slot = this._isDropDown || hasActions ? undefined : 'footer';\n\n return html`\n <div part=\"actions\" ?hidden=${!hasActions} slot=${ifDefined(slot)}>\n <slot name=\"actions\"></slot>\n </div>\n `;\n }\n\n protected _renderPredefinedRanges() {\n const hasRanges = this.usePredefinedRanges || !isEmpty(this.customRanges);\n\n return hasRanges\n ? html`\n <igc-predefined-ranges-area\n .usePredefinedRanges=${this.usePredefinedRanges}\n .customRanges=${this.customRanges}\n .resourceStrings=${this.resourceStrings}\n @igcRangeSelect=${({ detail }: CustomEvent<DateRangeValue>) =>\n this._select(detail, this._isDropDown)}\n >\n </igc-predefined-ranges-area>\n `\n : nothing;\n }\n\n protected override _renderPickerContent(id: string) {\n return this._isDropDown\n ? html`${this._renderCalendar(id)} ${this._renderPredefinedRanges()}\n ${this._renderActions()}`\n : html`${this._renderCalendar(id)} ${this._renderActions()}\n ${this._renderPredefinedRanges()}`;\n }\n\n protected override _renderDialogFooter() {\n const isIndigo = this._themes.theme === 'indigo';\n\n return html`\n <igc-button\n slot=\"footer\"\n @click=${this._dialogCancel}\n variant=${isIndigo ? 'outlined' : 'flat'}\n >${this.resourceStrings.date_range_picker_cancel_button}</igc-button\n >\n <igc-button\n slot=\"footer\"\n @click=${this._dialogDone}\n variant=${isIndigo ? 'contained' : 'flat'}\n >${this.resourceStrings.date_range_picker_done_button}</igc-button\n >\n `;\n }\n\n protected _renderInput(\n id: string,\n picker:\n | DateRangePosition.Start\n | DateRangePosition.End = DateRangePosition.Start\n ) {\n const isStart = picker === DateRangePosition.Start;\n const placeholder = isStart ? this.placeholderStart : this.placeholderEnd;\n const label = isStart ? this.labelStart : this.labelEnd;\n const format = getDateTimeFormat(this._displayFormat);\n const value = isStart ? this.value?.start : this.value?.end;\n const hasClickHandler = !(this._isDropDown || this.readOnly);\n\n return html`\n <igc-date-time-input\n id=${id}\n input-format=${ifDefined(this._inputFormat)}\n display-format=${ifDefined(format)}\n ?disabled=${this.disabled}\n ?readonly=${this._isEditorReadOnly}\n .value=${value ?? null}\n .locale=${live(this.locale)}\n .prompt=${this.prompt}\n .outlined=${this.outlined}\n .placeholder=${placeholder}\n .min=${this._min}\n .max=${this._max}\n label=${label}\n ?invalid=${live(this.invalid)}\n @igcChange=${this._handleInputChange}\n @igcInput=${this._handleInput}\n @keydown=${this._handleEnterKeydown}\n @click=${bindIf(hasClickHandler, this._handleInputClick)}\n exportparts=\"input, label, prefix, suffix\"\n >\n ${this._renderEditorSlots(`-${picker}`)}\n </igc-date-time-input>\n `;\n }\n\n private _renderInputs(idStart: string, idEnd: string) {\n return html`\n <div part=\"inputs\">\n ${this._renderInput(idStart, DateRangePosition.Start)}\n <div part=\"separator\">\n <slot name=\"separator\">\n ${this.resourceStrings.date_range_picker_date_separator}\n </slot>\n </div>\n ${this._renderInput(idEnd, DateRangePosition.End)}\n </div>\n ${this._renderPicker(idStart)} ${this._renderValidationContainer()}\n `;\n }\n\n private _renderSingleInput(id: string) {\n const format =\n getDateTimeFormat(this.displayFormat) ??\n this._i18nController.localeDisplayFormat;\n const hasClickHandler = !(this._isDropDown || this.readOnly);\n\n return html`\n <igc-date-range-input\n id=${id}\n .value=${live(this.value)}\n .placeholder=${this.placeholder}\n label=${this.label}\n ?readonly=${this._isEditorReadOnly}\n ?required=${this.required}\n .outlined=${this.outlined}\n ?invalid=${live(this.invalid)}\n .disabled=${this.disabled}\n .inputFormat=${live(this.inputFormat)}\n .displayFormat=${live(format)}\n .locale=${live(this.locale)}\n .prompt=${this.prompt}\n @igcInput=${this._handleDateRangeInput}\n @igcChange=${this._handleDateRangeInputChange}\n @keydown=${this._handleEnterKeydown}\n @click=${bindIf(hasClickHandler, this._handleInputClick)}\n exportparts=\"input, label, prefix, suffix\"\n >\n ${this._renderEditorSlots()}\n </igc-date-range-input>\n ${this._renderValidationContainer()} ${this._renderPicker(id)}\n `;\n }\n\n protected override render(): TemplateResult {\n const id = this.id || this._inputId;\n\n return html`${cache(\n !this.useTwoInputs\n ? this._renderSingleInput(id)\n : this._renderInputs(`${id}-start`, `${id}-end`)\n )}`;\n }\n\n // #endregion\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-date-range-picker': IgcDateRangePickerComponent;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"date-range-picker.js","sourceRoot":"","sources":["../../../src/components/date-range-picker/date-range-picker.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, nothing, type PropertyValues, type TemplateResult } from 'lit';\nimport { property, query, queryAll, state } from 'lit/decorators.js';\nimport { cache } from 'lit/directives/cache.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { live } from 'lit/directives/live.js';\nimport { addAriaProjector } from '#internals/controllers/aria-projection.js';\nimport { addSlotController, setSlots } from '#internals/controllers/slot.js';\nimport { convertToDateRange } from '#internals/date/converters.js';\nimport { CalendarDay, truncateTime } from '#internals/date/model.js';\nimport { blazorAdditionalDependencies } from '#internals/decorators/blazorAdditionalDependencies.js';\nimport { shadowOptions } from '#internals/decorators/shadow-options.js';\nimport { registerComponent } from '#internals/definitions/register.js';\nimport {\n addI18nController,\n getDateTimeFormat,\n} from '#internals/i18n/i18n-controller.js';\nimport type { AbstractConstructor } from '#internals/mixins/constructor.js';\nimport { EventEmitterMixin } from '#internals/mixins/event-emitter.js';\nimport { FormValueDateRangeTransformers } from '#internals/mixins/forms/form-transformers.js';\nimport { createFormValueState } from '#internals/mixins/forms/form-value.js';\nimport { firstOf, isEmpty, lastOf } from '#internals/utils/arrays.js';\nimport { bindIf } from '#internals/utils/lit.js';\nimport { asNumber, clamp } from '#internals/utils/math.js';\nimport { createIdGenerator } from '#internals/utils/strings.js';\nimport { addThemingController } from '#theming/theming-controller.js';\nimport type { CalendarSelection } from '../calendar/types.js';\nimport {\n IgcDatePickerBaseComponent,\n type IgcPickerBaseEventMap,\n pickerDependencies,\n} from '../date-picker/date-picker.base.js';\nimport IgcDateTimeInputComponent from '../date-time-input/date-time-input.js';\nimport type { DateRangeValue } from '../types.js';\nimport IgcValidationContainerComponent from '../validation-container/validation-container.js';\nimport IgcDateRangeInputComponent from './date-range-input.js';\nimport { DateRangePosition } from './date-range-mask-parser.js';\nimport { styles } from './date-range-picker.base.css.js';\nimport {\n dateRangeI18nConfig,\n type DateRangePickerResourceStringsType,\n type DateRangeResourceStrings,\n type IgcDateRangePickerResourceStrings,\n} from './i18n.js';\nimport IgcPredefinedRangesAreaComponent from './predefined-ranges-area.js';\nimport { styles as shared } from './themes/shared/date-range-picker.common.css.js';\nimport { all } from './themes/themes.js';\nimport { dateRangeValidators, isCompleteDateRange } from './validators.js';\n\nexport type { DateRangeValue } from '../types.js';\n\n/* jsonAPIPlainObject */\n/** A predefined date range with label for {@link IgcDateRangePickerComponent.customRanges} */\nexport interface CustomDateRange {\n label: string;\n dateRange: DateRangeValue;\n}\n\n/** Either editor the picker renders the range in - the masked single one or a start/end pair. */\ntype PickerEditor = IgcDateRangeInputComponent | IgcDateTimeInputComponent;\n\nexport type IgcDateRangePickerComponentEventMap =\n IgcPickerBaseEventMap<DateRangeValue>;\n\nexport type { DateRangePickerResourceStringsType } from './i18n.js';\n\nconst nextId = createIdGenerator('date-range-picker');\nconst Slots = setSlots(\n 'prefix',\n 'prefix-start',\n 'prefix-end',\n 'suffix',\n 'suffix-start',\n 'suffix-end',\n 'helper-text',\n 'bad-input',\n 'value-missing',\n 'range-overflow',\n 'range-underflow',\n 'custom-error',\n 'invalid',\n 'title',\n 'header-date',\n 'clear-icon',\n 'clear-icon-start',\n 'clear-icon-end',\n 'calendar-icon',\n 'calendar-icon-start',\n 'calendar-icon-end',\n 'calendar-icon-open',\n 'calendar-icon-open-start',\n 'calendar-icon-open-end',\n 'actions',\n 'separator'\n);\n\n/* blazorIndirectRender */\n/* blazorSupportsVisualChildren */\n/**\n * The Date Range Picker includes a text input and a calendar pop-up, allowing users to easily select start and end dates.\n *\n * @element igc-date-range-picker\n *\n * @slot prefix - Renders content before the input (single input).\n * @slot prefix-start - Renders content before the start input (two inputs).\n * @slot prefix-end - Renders content before the end input (two inputs).\n * @slot suffix - Renders content after the input (single input).\n * @slot suffix-start - Renders content after the start input (two inputs).\n * @slot suffix-end - Renders content after the end input (two inputs).\n * @slot helper-text - Renders content below the input.\n * @slot bad-input - Renders content when the value is in the disabledDates ranges.\n * @slot value-missing - Renders content when the required validation fails.\n * @slot range-overflow - Renders content when the max validation fails.\n * @slot range-underflow - Renders content when the min validation fails.\n * @slot custom-error - Renders content when setCustomValidity(message) is set.\n * @slot invalid - Renders content when the component is in invalid state (validity.valid = false).\n * @slot title - Renders content in the calendar title.\n * @slot header-date - Renders content instead of the current date/range in the calendar header.\n * @slot clear-icon - Renders a clear icon template.\n * @slot clear-icon-start - Renders a clear icon template for the start input (two inputs).\n * @slot clear-icon-end - Renders a clear icon template for the end input (two inputs).\n * @slot calendar-icon - Renders the icon/content for the calendar picker.\n * @slot calendar-icon-start - Renders the icon/content for the calendar picker for the start input (two inputs).\n * @slot calendar-icon-end - Renders the icon/content for the calendar picker for the end input (two inputs).\n * @slot calendar-icon-open - Renders the icon/content for the picker in open state.\n * @slot calendar-icon-open-start - Renders the icon/content for the picker in open state for the start input (two inputs).\n * @slot calendar-icon-open-end - Renders the icon/content for the picker in open state for the end input (two inputs).\n * @slot actions - Renders content in the action part of the picker in open state.\n * @slot separator - Renders the separator element between the two inputs.\n *\n * @fires igcOpening - Emitted just before the calendar popover is shown.\n * @fires igcOpened - Emitted after the calendar popover is shown.\n * @fires igcClosing - Emitted just before the calendar popover is hidden.\n * @fires igcClosed - Emitted after the calendar popover is hidden.\n * @fires igcChange - Emitted when the user modifies and commits the elements's value.\n * @fires igcInput - Emitted when when the user types in the element.\n *\n * @csspart separator - The separator element between the two inputs.\n * @csspart ranges - The wrapper that renders the custom and predefined ranges.\n * @csspart label - The label wrapper that renders content above the target input.\n * @csspart calendar-icon - The calendar icon wrapper for closed state (single input).\n * @csspart calendar-icon-start - The calendar icon wrapper for closed state for the start input (two inputs).\n * @csspart calendar-icon-end - The calendar icon wrapper for closed state for the end input (two inputs).\n * @csspart calendar-icon-open - The calendar icon wrapper for opened state (single input).\n * @csspart calendar-icon-open-start - The calendar icon wrapper for opened state for the start input (two inputs).\n * @csspart calendar-icon-open-end - The calendar icon wrapper for opened state for the end input (two inputs).\n * @csspart clear-icon - The clear icon wrapper (single input).\n * @csspart clear-icon-start - The clear icon wrapper for the start input (two inputs).\n * @csspart clear-icon-end - The clear icon wrapper for the end input (two inputs).\n * @csspart actions - The wrapper for the custom actions area.\n * @csspart input - The native input element.\n * @csspart prefix - The prefix wrapper.\n * @csspart suffix - The suffix wrapper.\n * @csspart helper-text - The helper-text wrapper that renders content below the target input.\n * @csspart header - The calendar header element.\n * @csspart header-title - The calendar header title element.\n * @csspart header-date - The calendar header date element.\n * @csspart calendar-content - The calendar content element which contains the views and navigation elements.\n * @csspart navigation - The calendar navigation container element.\n * @csspart months-navigation - The calendar months navigation button element.\n * @csspart years-navigation - The calendar years navigation button element.\n * @csspart years-range - The calendar years range element.\n * @csspart navigation-buttons - The calendar navigation buttons container.\n * @csspart navigation-button - The calendar previous/next navigation button.\n * @csspart days-view-container - The calendar days view container element.\n * @csspart days-view - The calendar days view element.\n * @csspart months-view - The calendar months view element.\n * @csspart years-view - The calendar years view element.\n * @csspart days-row - The calendar days row element.\n * @csspart calendar-label - The calendar week header label element.\n * @csspart week-number - The calendar week number element.\n * @csspart week-number-inner - The calendar week number inner element.\n * @csspart date - The calendar date element.\n * @csspart date-inner - The calendar date inner element.\n * @csspart first - The calendar first selected date element in range selection.\n * @csspart last - The calendar last selected date element in range selection.\n * @csspart inactive - The calendar inactive date element.\n * @csspart hidden - The calendar hidden date element.\n * @csspart weekend - The calendar weekend date element.\n * @csspart range - The calendar range selected element.\n * @csspart special - The calendar special date element.\n * @csspart disabled - The calendar disabled date element.\n * @csspart single - The calendar single selected date element.\n * @csspart preview - The calendar range selection preview date element.\n * @csspart month - The calendar month element.\n * @csspart month-inner - The calendar month inner element.\n * @csspart year - The calendar year element.\n * @csspart year-inner - The calendar year inner element.\n * @csspart selected - The calendar selected state for element(s). Applies to date, month and year elements.\n * @csspart current - The calendar current state for element(s). Applies to date, month and year elements.\n */\n@blazorAdditionalDependencies(\n 'IgcCalendarComponent, IgcDateTimeInputComponent, IgcDialogComponent, IgcIconComponent, IgcChipComponent, IgcInputComponent'\n)\n@shadowOptions({ delegatesFocus: true })\nexport default class IgcDateRangePickerComponent extends EventEmitterMixin<\n IgcDateRangePickerComponentEventMap,\n AbstractConstructor<IgcDatePickerBaseComponent<DateRangeValue>>\n>(IgcDatePickerBaseComponent) {\n public static readonly tagName = 'igc-date-range-picker';\n public static styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(\n IgcDateRangePickerComponent,\n IgcDateRangeInputComponent,\n IgcDateTimeInputComponent,\n IgcPredefinedRangesAreaComponent,\n ...pickerDependencies\n );\n }\n\n // #region Internal state & properties\n\n protected override get __validators() {\n return dateRangeValidators;\n }\n\n protected override readonly _inputId = nextId();\n protected override readonly _themes = addThemingController(this, all);\n protected override readonly _slots = addSlotController(this, {\n slots: Slots,\n });\n\n protected override readonly _i18nController =\n addI18nController<DateRangeResourceStrings>(this, dateRangeI18nConfig);\n\n protected override readonly _formValue = createFormValueState(this, {\n initialValue: { start: null, end: null },\n transformers: FormValueDateRangeTransformers,\n });\n\n protected override _visibleMonths = 2;\n\n private _placeholder?: string;\n\n /** The range reflected in the calendar, committed or still being typed. */\n @state()\n private _calendarRange: Date[] | null = null;\n\n @queryAll(IgcDateTimeInputComponent.tagName)\n private readonly _inputs!: NodeListOf<IgcDateTimeInputComponent>;\n\n @query(IgcDateRangeInputComponent.tagName)\n private readonly _input!: IgcDateRangeInputComponent;\n\n /** The editors currently rendered by the picker. */\n private get _editors(): PickerEditor[] {\n return this.useTwoInputs ? Array.from(this._inputs) : [this._input];\n }\n\n /** The editor of single editor operations - the start one when the range is split. */\n private get _startEditor(): PickerEditor {\n return firstOf(this._editors);\n }\n\n private get _firstDefinedInRange(): Date | null {\n return this.value?.start ?? this.value?.end ?? null;\n }\n\n // #endregion\n\n // #region Base class hooks\n\n protected override get _value(): DateRangeValue | null {\n return this.value;\n }\n\n protected override set _value(value: DateRangeValue | null) {\n this.value = value;\n }\n\n protected override get _hasValue(): boolean {\n return this._firstDefinedInRange !== null;\n }\n\n protected override get _calendarSelection(): CalendarSelection {\n return 'range';\n }\n\n protected override get _calendarValues(): Date[] | null {\n return this._calendarRange;\n }\n\n protected override get _defaultActiveDate(): Date | null {\n return this._firstDefinedInRange;\n }\n\n protected override get _selectDateLabel(): string | undefined {\n return this.resourceStrings.calendar_select_date;\n }\n\n protected override get _defaultDisplayFormat(): string | undefined {\n return this._inputFormat ?? this._i18nController.localeDisplayFormat;\n }\n\n protected override get _defaultInputFormat(): string | undefined {\n return this._i18nController.localeInputFormat;\n }\n\n protected override get _projectionTarget() {\n // The host's associated labels are projected only onto the start input.\n return this._input ?? this._inputs?.[0] ?? null;\n }\n\n protected override _focusInput(): void {\n this._startEditor.focus();\n }\n\n protected override _focusAndSelectInput(): void {\n this.useTwoInputs ? this._inputs[0].select() : this._input.focus();\n }\n\n protected override _canCloseOnSelect(): boolean {\n return this._calendar.values.length > 1;\n }\n\n protected override _handleDismiss(): void {\n if (!this._isDropDown) {\n this._revertValue();\n }\n }\n\n protected override _syncCalendarOnToggle(): void {\n this._setCalendarActiveDateAndViewIndex();\n }\n\n protected override _clearEditors(): void {\n for (const editor of this._editors) {\n editor?.clear();\n }\n }\n\n protected override _onDialogClosing(): void {\n this._emitChangeIfDirty();\n }\n\n /** In dialog mode the range is committed by the actions of the dialog instead. */\n protected override _commitsCalendarSelection(): boolean {\n return this._isDropDown;\n }\n\n protected override _valueFromCalendarSelection(\n dates: Date[]\n ): DateRangeValue {\n // A range cleared in the calendar comes through as no dates at all\n return isEmpty(dates)\n ? { start: null, end: null }\n : { start: firstOf(dates), end: lastOf(dates) };\n }\n\n // #endregion\n\n // #region General properties\n\n /* @tsTwoWayProperty(true, \"igcChange\", \"detail\", false, true) */\n /**\n * The value of the picker\n * @attr\n */\n @property({ converter: convertToDateRange })\n public set value(value: DateRangeValue | string | null | undefined) {\n this._formValue.setValueAndFormState(convertToDateRange(value));\n this._setCalendarRangeValues();\n }\n\n public get value(): DateRangeValue | null {\n return this._formValue.value;\n }\n\n /**\n * The number of months displayed in the calendar.\n * @attr visible-months\n * @default 2\n */\n @property({ type: Number, attribute: 'visible-months' })\n public override set visibleMonths(value: number) {\n this._visibleMonths = clamp(asNumber(value, 2), 1, 2);\n }\n\n public override get visibleMonths(): number {\n return this._visibleMonths;\n }\n\n /**\n * Renders chips with custom ranges based on the elements of the array.\n */\n @property({ attribute: false })\n public customRanges: CustomDateRange[] = [];\n\n /**\n * Use two inputs to display the date range values. Makes the input editable in dropdown mode.\n * @attr use-two-inputs\n */\n @property({ type: Boolean, reflect: true, attribute: 'use-two-inputs' })\n public useTwoInputs = false;\n\n /**\n * Whether the control will show chips with predefined ranges.\n * @attr\n */\n @property({\n type: Boolean,\n reflect: true,\n attribute: 'use-predefined-ranges',\n })\n public usePredefinedRanges = false;\n\n /** The resource strings of the date range picker. */\n @property({ attribute: false })\n public set resourceStrings(value: DateRangeResourceStrings) {\n this._i18nController.resourceStrings = value;\n }\n\n public get resourceStrings(): IgcDateRangePickerResourceStrings &\n DateRangePickerResourceStringsType {\n return this._i18nController.resourceStrings;\n }\n\n // #endregion\n\n // #region Input-related properties\n\n /**\n * The label of the start input.\n * @attr label-start\n */\n @property({ attribute: 'label-start' })\n public labelStart = '';\n\n /**\n * The label of the end input.\n * @attr label-end\n */\n @property({ attribute: 'label-end' })\n public labelEnd = '';\n\n /**\n * The placeholder text of the control (single input).\n * @attr\n */\n @property()\n public set placeholder(value: string) {\n this._placeholder = value;\n }\n\n public get placeholder(): string {\n const rangePlaceholder = `${this.inputFormat} - ${this.inputFormat}`;\n return this._placeholder ?? rangePlaceholder;\n }\n\n /**\n * The placeholder text of the start input.\n * @attr placeholder-start\n */\n @property({ attribute: 'placeholder-start' })\n public placeholderStart = '';\n\n /**\n * The placeholder text of the end input.\n * @attr placeholder-end\n */\n @property({ attribute: 'placeholder-end' })\n public placeholderEnd = '';\n\n // #endregion\n\n // #region Life-cycle hooks\n\n constructor() {\n super();\n\n // The base class projector covers the start editor. In two-input mode the\n // end editor needs the picker popup semantics as well, labels excluded.\n addAriaProjector(this, {\n target: () => this._inputs[1] ?? null,\n state: () => ({ hasPopup: 'dialog' }),\n });\n }\n\n protected override willUpdate(changedProperties: PropertyValues<this>): void {\n super.willUpdate(changedProperties);\n\n if (changedProperties.has('mode') && !this._isDropDown) {\n this.keepOpenOnSelect = true;\n }\n\n // The editors are swapped by the render below, so both the range and the\n // delegated validity are re-applied once the new ones are in place.\n if (changedProperties.has('useTwoInputs')) {\n this._syncEditors();\n } else if (changedProperties.has('mode')) {\n this._syncCalendarRange();\n }\n }\n\n protected override firstUpdated() {\n this._delegateInputsValidity();\n }\n\n protected override formResetCallback() {\n super.formResetCallback();\n this._setCalendarRangeValues();\n }\n\n // #endregion\n\n // #region Public API methods\n\n /* blazorSuppress */\n /** @internal */\n public hasDateParts(): boolean {\n return this._startEditor.hasDateParts();\n }\n\n /* blazorSuppress */\n /** @internal */\n public hasTimeParts(): boolean {\n return this._startEditor.hasTimeParts();\n }\n\n /** Selects a date range value in the picker */\n public select(value: DateRangeValue | null): void {\n this._select(value);\n }\n\n // #endregion\n\n // #region Event handlers\n\n protected _dialogCancel() {\n this._revertValue();\n this._hide(true);\n }\n\n protected _dialogDone() {\n this._emitChangeIfDirty();\n this._hide(true);\n }\n\n protected _handleInput(event: CustomEvent<string>) {\n event.stopPropagation();\n if (this.nonEditable) {\n event.preventDefault();\n return;\n }\n\n const input = event.target as IgcDateTimeInputComponent;\n const newValue = truncateTime(input._uncommittedValue);\n const range = this._getUpdatedDateRange(input, newValue);\n\n this._setCalendarRangeValues(range);\n this._setCalendarActiveDate(newValue, range.start, range.end);\n\n this.emitEvent('igcInput', { detail: range });\n }\n\n protected _handleInputChange(event: CustomEvent<Date | null>) {\n event.stopPropagation();\n\n const input = event.target as IgcDateTimeInputComponent;\n const newValue = truncateTime(input.value);\n\n this._commitRange(this._getUpdatedDateRange(input, newValue));\n }\n\n protected async _handleDateRangeInput(event: CustomEvent<string>) {\n event.stopPropagation();\n if (this.nonEditable) {\n event.preventDefault();\n return;\n }\n\n const input = event.target as IgcDateRangeInputComponent;\n const draft = input._uncommittedValue;\n\n this._setCalendarRangeValues(draft);\n this._calendar.activeDate = draft?.start;\n\n this.emitEvent('igcInput', { detail: draft });\n }\n\n protected _handleDateRangeInputChange(\n event: CustomEvent<DateRangeValue | null>\n ) {\n event.stopPropagation();\n\n this._commitRange((event.target as IgcDateRangeInputComponent).value);\n }\n\n // #endregion\n\n // #region Private methods\n\n private async _syncCalendarRange(): Promise<void> {\n await this._calendar?.updateComplete;\n this._setCalendarRangeValues();\n }\n\n private async _syncEditors(): Promise<void> {\n await this._syncCalendarRange();\n this._delegateInputsValidity();\n }\n\n protected _revertValue() {\n this.value = this._oldValue;\n }\n\n /** Points the calendar at the current range, and puts it in the first of the\n * rendered months. */\n private _setCalendarActiveDateAndViewIndex() {\n const activeDaysViewIndex = '_activeDaysViewIndex';\n\n this._setCalendarActiveDate(this._firstDefinedInRange);\n this._calendar[activeDaysViewIndex] = 0;\n }\n\n /**\n * Builds the range from what the two editors hold. The other input is read\n * through its draft, not through the committed `value`, because an edit there\n * has not reached the picker.\n */\n private _getUpdatedDateRange(\n input: IgcDateTimeInputComponent,\n newValue: Date | null\n ): DateRangeValue {\n const [startInput, endInput] = this._inputs;\n\n return input === startInput\n ? { start: newValue, end: endInput?._uncommittedValue ?? null }\n : { start: startInput?._uncommittedValue ?? null, end: newValue };\n }\n\n /**\n * Delegates the validity methods of the editors to the range validation of the\n * picker. The pristine check stops a form reset, which writes to the editors,\n * from starting a validation.\n */\n private _delegateInputsValidity() {\n for (const input of this._editors) {\n input.checkValidity = () =>\n !this._pristine ? this.checkValidity() : true;\n input.reportValidity = () =>\n !this._pristine ? this.reportValidity() : true;\n }\n }\n\n /**\n * Shows a range in the calendar. The default is the committed value. The\n * input handlers give the draft, so that the calendar follows the typing.\n */\n private _setCalendarRangeValues(range: DateRangeValue | null = this.value) {\n if (isCompleteDateRange(range)) {\n this._calendarRange =\n CalendarDay.compare(range.start, range.end) === 0\n ? [range.start]\n : [range.start, range.end];\n\n this._setCalendarActiveDate(range.start);\n return;\n }\n\n const first = range?.start ?? range?.end ?? null;\n this._calendarRange = first ? [first] : null;\n }\n\n /**\n * Commits a range from an editor, corrects a reversed one, and notifies. The\n * value assignment shows the range in the calendar.\n */\n private _commitRange(range: DateRangeValue | null): void {\n const { start, end } = (range && this._swapDates(range)) ?? {\n start: null,\n end: null,\n };\n\n this.value = { start, end };\n this.emitEvent('igcChange', { detail: this.value });\n }\n\n private _swapDates(range: DateRangeValue): DateRangeValue {\n return isCompleteDateRange(range) &&\n CalendarDay.compare(range.start, range.end) >= 1\n ? { start: range.end, end: range.start }\n : range;\n }\n\n private _select(value: DateRangeValue | null, emitEvent = false) {\n this.value = value;\n this._setCalendarActiveDate(this._firstDefinedInRange);\n\n if (emitEvent) {\n this.emitEvent('igcChange', { detail: this.value });\n this._oldValue = this.value;\n this._hide(true);\n }\n }\n\n // #endregion\n\n // #region Rendering\n\n /**\n * Custom actions stay in the body of the dialog, away from the cancel and\n * done buttons in its footer.\n */\n protected override _renderActions() {\n const hasActions = this._slots.hasAssignedElements('actions');\n const slot = this._isDropDown || hasActions ? undefined : 'footer';\n\n return html`\n <div part=\"actions\" ?hidden=${!hasActions} slot=${ifDefined(slot)}>\n <slot name=\"actions\"></slot>\n </div>\n `;\n }\n\n protected _renderPredefinedRanges() {\n const hasRanges = this.usePredefinedRanges || !isEmpty(this.customRanges);\n\n return hasRanges\n ? html`\n <igc-predefined-ranges-area\n .usePredefinedRanges=${this.usePredefinedRanges}\n .customRanges=${this.customRanges}\n .resourceStrings=${this.resourceStrings}\n @igcRangeSelect=${({ detail }: CustomEvent<DateRangeValue>) =>\n this._select(detail, this._isDropDown)}\n exportparts=\"ranges\"\n >\n </igc-predefined-ranges-area>\n `\n : nothing;\n }\n\n protected override _renderPickerContent(id: string) {\n return this._isDropDown\n ? html`${this._renderCalendar(id)} ${this._renderPredefinedRanges()}\n ${this._renderActions()}`\n : html`${this._renderCalendar(id)} ${this._renderActions()}\n ${this._renderPredefinedRanges()}`;\n }\n\n protected override _renderDialogFooter() {\n const isIndigo = this._themes.theme === 'indigo';\n\n return html`\n <igc-button\n slot=\"footer\"\n @click=${this._dialogCancel}\n variant=${isIndigo ? 'outlined' : 'flat'}\n >${this.resourceStrings.date_range_picker_cancel_button}</igc-button\n >\n <igc-button\n slot=\"footer\"\n @click=${this._dialogDone}\n variant=${isIndigo ? 'contained' : 'flat'}\n >${this.resourceStrings.date_range_picker_done_button}</igc-button\n >\n `;\n }\n\n protected _renderInput(\n id: string,\n picker:\n | DateRangePosition.Start\n | DateRangePosition.End = DateRangePosition.Start\n ) {\n const isStart = picker === DateRangePosition.Start;\n const placeholder = isStart ? this.placeholderStart : this.placeholderEnd;\n const label = isStart ? this.labelStart : this.labelEnd;\n const format = getDateTimeFormat(this._displayFormat);\n const value = isStart ? this.value?.start : this.value?.end;\n const hasClickHandler = !(this._isDropDown || this.readOnly);\n\n return html`\n <igc-date-time-input\n id=${id}\n input-format=${ifDefined(this._inputFormat)}\n display-format=${ifDefined(format)}\n ?disabled=${this.disabled}\n ?readonly=${this._isEditorReadOnly}\n .value=${value ?? null}\n .locale=${live(this.locale)}\n .prompt=${this.prompt}\n .outlined=${this.outlined}\n .placeholder=${placeholder}\n .min=${this._min}\n .max=${this._max}\n label=${label}\n ?invalid=${live(this.invalid)}\n @igcChange=${this._handleInputChange}\n @igcInput=${this._handleInput}\n @keydown=${this._handleEnterKeydown}\n @click=${bindIf(hasClickHandler, this._handleInputClick)}\n exportparts=\"input, label, prefix, suffix\"\n >\n ${this._renderEditorSlots(`-${picker}`)}\n </igc-date-time-input>\n `;\n }\n\n private _renderInputs(idStart: string, idEnd: string) {\n return html`\n <div part=\"inputs\">\n ${this._renderInput(idStart, DateRangePosition.Start)}\n <div part=\"separator\">\n <slot name=\"separator\">\n ${this.resourceStrings.date_range_picker_date_separator}\n </slot>\n </div>\n ${this._renderInput(idEnd, DateRangePosition.End)}\n </div>\n ${this._renderPicker(idStart)}\n ${IgcValidationContainerComponent.create(this)}\n `;\n }\n\n private _renderSingleInput(id: string) {\n const format =\n getDateTimeFormat(this.displayFormat) ??\n this._i18nController.localeDisplayFormat;\n const hasClickHandler = !(this._isDropDown || this.readOnly);\n\n return html`\n <igc-date-range-input\n id=${id}\n .value=${live(this.value)}\n .placeholder=${this.placeholder}\n label=${this.label}\n ?readonly=${this._isEditorReadOnly}\n ?required=${this.required}\n .outlined=${this.outlined}\n ?invalid=${live(this.invalid)}\n .disabled=${this.disabled}\n .inputFormat=${live(this.inputFormat)}\n .displayFormat=${live(format)}\n .locale=${live(this.locale)}\n .prompt=${this.prompt}\n @igcInput=${this._handleDateRangeInput}\n @igcChange=${this._handleDateRangeInputChange}\n @keydown=${this._handleEnterKeydown}\n @click=${bindIf(hasClickHandler, this._handleInputClick)}\n exportparts=\"input, label, prefix, suffix\"\n >\n ${this._renderEditorSlots()}\n </igc-date-range-input>\n ${IgcValidationContainerComponent.create(this)} ${this._renderPicker(id)}\n `;\n }\n\n protected override render(): TemplateResult {\n const id = this.id || this._inputId;\n\n return html`${cache(\n !this.useTwoInputs\n ? this._renderSingleInput(id)\n : this._renderInputs(`${id}-start`, `${id}-end`)\n )}`;\n }\n\n // #endregion\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-date-range-picker': IgcDateRangePickerComponent;\n }\n}\n"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type ICalendarResourceStrings, type IDateRangePickerResourceStrings } from 'igniteui-i18n-core';
|
|
2
|
+
import type { IgcDateRangePickerResourceStrings } from '#internals/i18n/EN/date-range-picker.resources.js';
|
|
3
|
+
import type { I18nControllerConfig } from '#internals/i18n/i18n-controller.js';
|
|
4
|
+
export type { IgcDateRangePickerResourceStrings };
|
|
5
|
+
/** The core resource strings of the date range picker and of its calendar. */
|
|
6
|
+
export type DateRangePickerResourceStringsType = IDateRangePickerResourceStrings & ICalendarResourceStrings;
|
|
7
|
+
/** The resource strings that the date range components accept. */
|
|
8
|
+
export type DateRangeResourceStrings = IgcDateRangePickerResourceStrings | DateRangePickerResourceStringsType;
|
|
9
|
+
/**
|
|
10
|
+
* The i18n configuration that `igc-date-range-picker` and
|
|
11
|
+
* `igc-predefined-ranges-area` share.
|
|
12
|
+
*
|
|
13
|
+
* @remarks
|
|
14
|
+
* The core validation strings stay internal, so that they do not mix with the
|
|
15
|
+
* old resources of a user.
|
|
16
|
+
*
|
|
17
|
+
* TODO: update `DateRangeResourceStrings` when
|
|
18
|
+
* `IgcDateRangePickerResourceStrings` becomes
|
|
19
|
+
* `IDateRangePickerResourceStrings`.
|
|
20
|
+
*/
|
|
21
|
+
export declare const dateRangeI18nConfig: I18nControllerConfig<DateRangeResourceStrings>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { CalendarResourceStringsEN, DateRangePickerResourceStringsEN, } from 'igniteui-i18n-core';
|
|
2
|
+
import { dateRangePickerResourcesMap } from '#internals/i18n/utils.js';
|
|
3
|
+
export const dateRangeI18nConfig = {
|
|
4
|
+
defaultEN: {
|
|
5
|
+
...DateRangePickerResourceStringsEN,
|
|
6
|
+
...CalendarResourceStringsEN,
|
|
7
|
+
},
|
|
8
|
+
resourceMap: dateRangePickerResourcesMap,
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=i18n.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../../../src/components/date-range-picker/i18n.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EACzB,gCAAgC,GAGjC,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AAyBvE,MAAM,CAAC,MAAM,mBAAmB,GAC9B;IACE,SAAS,EAAE;QACT,GAAG,gCAAgC;QACnC,GAAG,yBAAyB;KAC7B;IACD,WAAW,EAAE,2BAA2B;CACzC,CAAC","sourcesContent":["import {\n CalendarResourceStringsEN,\n DateRangePickerResourceStringsEN,\n type ICalendarResourceStrings,\n type IDateRangePickerResourceStrings,\n} from 'igniteui-i18n-core';\nimport type { IgcDateRangePickerResourceStrings } from '#internals/i18n/EN/date-range-picker.resources.js';\nimport type { I18nControllerConfig } from '#internals/i18n/i18n-controller.js';\nimport { dateRangePickerResourcesMap } from '#internals/i18n/utils.js';\n\nexport type { IgcDateRangePickerResourceStrings };\n\n/** The core resource strings of the date range picker and of its calendar. */\nexport type DateRangePickerResourceStringsType =\n IDateRangePickerResourceStrings & ICalendarResourceStrings;\n\n/** The resource strings that the date range components accept. */\nexport type DateRangeResourceStrings =\n | IgcDateRangePickerResourceStrings\n | DateRangePickerResourceStringsType;\n\n/**\n * The i18n configuration that `igc-date-range-picker` and\n * `igc-predefined-ranges-area` share.\n *\n * @remarks\n * The core validation strings stay internal, so that they do not mix with the\n * old resources of a user.\n *\n * TODO: update `DateRangeResourceStrings` when\n * `IgcDateRangePickerResourceStrings` becomes\n * `IDateRangePickerResourceStrings`.\n */\nexport const dateRangeI18nConfig: I18nControllerConfig<DateRangeResourceStrings> =\n {\n defaultEN: {\n ...DateRangePickerResourceStringsEN,\n ...CalendarResourceStringsEN,\n },\n resourceMap: dateRangePickerResourcesMap,\n };\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { LitElement, type PropertyValues } from 'lit';
|
|
2
|
-
import type {
|
|
3
|
-
import type
|
|
2
|
+
import type { CustomDateRange } from './date-range-picker.js';
|
|
3
|
+
import { type DateRangePickerResourceStringsType, type DateRangeResourceStrings, type IgcDateRangePickerResourceStrings } from './i18n.js';
|
|
4
4
|
/**
|
|
5
5
|
* The predefined ranges area component is used within the date range picker and it
|
|
6
6
|
* displays a set of chips with predefined date ranges. The component allows users to quickly select
|
|
@@ -24,7 +24,7 @@ export default class IgcPredefinedRangesAreaComponent extends LitElement {
|
|
|
24
24
|
*/
|
|
25
25
|
customRanges: CustomDateRange[];
|
|
26
26
|
/** The resource strings of the date range area component. */
|
|
27
|
-
set resourceStrings(value:
|
|
27
|
+
set resourceStrings(value: DateRangeResourceStrings);
|
|
28
28
|
get resourceStrings(): IgcDateRangePickerResourceStrings & DateRangePickerResourceStringsType;
|
|
29
29
|
constructor();
|
|
30
30
|
protected willUpdate(changedProperties: PropertyValues<this>): void;
|
|
@@ -4,7 +4,6 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
4
4
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
|
-
import { CalendarResourceStringsEN, DateRangePickerResourceStringsEN, } from 'igniteui-i18n-core';
|
|
8
7
|
import { html, LitElement } from 'lit';
|
|
9
8
|
import { property, state } from 'lit/decorators.js';
|
|
10
9
|
import { CalendarDay } from '#internals/date/model.js';
|
|
@@ -12,6 +11,7 @@ import { registerComponent } from '#internals/definitions/register.js';
|
|
|
12
11
|
import { addI18nController } from '#internals/i18n/i18n-controller.js';
|
|
13
12
|
import { addThemingController } from '#theming/theming-controller.js';
|
|
14
13
|
import IgcChipComponent from '../chip/chip.js';
|
|
14
|
+
import { dateRangeI18nConfig, } from './i18n.js';
|
|
15
15
|
import { styles } from './predefined-ranges-area.base.css.js';
|
|
16
16
|
import { all } from './themes/ranges-themes.js';
|
|
17
17
|
import { styles as shared } from './themes/shared/predefined-ranges-area.common.css.js';
|
|
@@ -29,10 +29,7 @@ export default class IgcPredefinedRangesAreaComponent extends LitElement {
|
|
|
29
29
|
}
|
|
30
30
|
constructor() {
|
|
31
31
|
super();
|
|
32
|
-
this._i18nController = addI18nController(this,
|
|
33
|
-
defaultEN: Object.assign({}, DateRangePickerResourceStringsEN, CalendarResourceStringsEN),
|
|
34
|
-
resourceMapName: 'date-range-picker',
|
|
35
|
-
});
|
|
32
|
+
this._i18nController = addI18nController(this, dateRangeI18nConfig);
|
|
36
33
|
this._predefinedRanges = [];
|
|
37
34
|
this.usePredefinedRanges = false;
|
|
38
35
|
this.customRanges = [];
|