igniteui-webcomponents 7.3.2 → 7.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +49 -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 +1 -1
- package/components/checkbox/checkbox.js +1 -1
- package/components/checkbox/checkbox.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 +9 -4
- 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 +18 -20
- package/components/combo/combo.js +8 -2
- 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 +7 -1
- 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 +39 -37
- package/components/date-time-input/date-time-input.base.js +6 -0
- 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 +2 -2
- 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.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 +4 -4
- package/components/radio/radio.js +17 -14
- package/components/radio/radio.js.map +1 -1
- package/components/radio-group/radio-group.js.map +1 -1
- package/components/rating/rating.d.ts +6 -6
- 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 +4 -14
- package/components/select/select.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 +1 -1
- 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.map +1 -1
- package/components/virtualization/engine.d.ts +5 -5
- package/components/virtualization/engine.js.map +1 -1
- package/components/virtualization/virtualization.d.ts +61 -63
- package/components/virtualization/virtualization.js +6 -5
- package/components/virtualization/virtualization.js.map +1 -1
- package/custom-elements.json +16280 -19679
- package/igniteui-webcomponents.css-data.json +2 -2
- package/igniteui-webcomponents.html-data.json +1 -1
- package/index.d.ts +2 -0
- 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 +56 -55
- package/internals/controllers/aria-projection.js +14 -15
- 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 +8 -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 +24 -80
- 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 +6 -7
- 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 +51 -39
- package/internals/utils/dom.js +1 -2
- 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 +3 -0
- package/skills/igniteui-wc-figma-to-app/SKILL.md +907 -0
- package/skills/igniteui-wc-figma-to-app/references/asset-extraction.md +363 -0
- package/skills/igniteui-wc-figma-to-app/references/design-token-bridge.md +407 -0
- package/skills/igniteui-wc-figma-to-app/references/figma-component-map.md +325 -0
- package/skills/igniteui-wc-figma-to-app/references/mcp-setup.md +409 -0
- package/skills/igniteui-wc-figma-to-app/references/validation-patterns.md +376 -0
- 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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-picker.base.js","sourceRoot":"","sources":["../../../src/components/date-picker/date-picker.base.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, nothing, type PropertyValues, type TemplateResult } from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { addAriaProjector } from '#internals/controllers/aria-projection.js';\nimport {\n addKeybindings,\n altKey,\n arrowDown,\n arrowUp,\n escapeKey,\n} from '#internals/controllers/key-bindings.js';\nimport { addRootClickController } from '#internals/controllers/root-click.js';\nimport { convertToDate } from '#internals/date/converters.js';\nimport { coercedProperty } from '#internals/decorators/coerced-property.js';\nimport { IgcComboBoxBaseLikeComponent } from '#internals/mixins/combo-box.js';\nimport type { AbstractConstructor } from '#internals/mixins/constructor.js';\nimport { EventEmitterMixin } from '#internals/mixins/event-emitter.js';\nimport { FormAssociatedRequiredMixin } from '#internals/mixins/forms/associated-required.js';\nimport { renderSlottedIcon } from '#internals/templates/slotted-icon.js';\nimport { asArray } from '#internals/utils/arrays.js';\nimport {\n addSafeEventListener,\n focusLeftHost,\n getElementFromPath,\n} from '#internals/utils/events.js';\nimport { bindIf } from '#internals/utils/lit.js';\nimport { equal } from '#internals/utils/objects.js';\nimport type { ThemingController } from '#theming/theming-controller.js';\nimport IgcCalendarComponent, { focusActiveDate } from '../calendar/calendar.js';\nimport {\n createDateConstraints,\n getLocaleWeekStart,\n} from '../calendar/helpers.js';\nimport type {\n CalendarHeaderOrientation,\n CalendarSelection,\n DateRangeDescriptor,\n WeekDays,\n} from '../calendar/types.js';\nimport IgcDialogComponent from '../dialog/dialog.js';\nimport IgcFocusTrapComponent from '../focus-trap/focus-trap.js';\nimport IgcIconComponent from '../icon/icon.js';\nimport IgcPopoverComponent from '../popover/popover.js';\nimport type {\n ContentOrientation,\n DateRangeValue,\n PickerMode,\n} from '../types.js';\nimport IgcValidationContainerComponent from '../validation-container/validation-container.js';\n\n/**\n * The events emitted by a picker driven by a calendar.\n * `T` is the value type of the picker - a single date or a date range.\n */\nexport interface IgcPickerBaseEventMap<T> {\n igcOpening: CustomEvent<void>;\n igcOpened: CustomEvent<void>;\n igcClosing: CustomEvent<void>;\n igcClosed: CustomEvent<void>;\n igcChange: CustomEvent<T | null>;\n igcInput: CustomEvent<T | null>;\n}\n\n/** The parts of the calendar which the pickers re-export to their own consumers. */\nexport const calendarExportParts =\n `header, header-title, header-date, content: calendar-content, navigation, months-navigation,\n years-navigation, years-range, navigation-buttons, navigation-button, days-view-container,\n days-view, months-view, years-view, days-row, months-row, years-row, label: calendar-label,\n label-inner: calendar-label-inner, week-number, week-number-inner, date,\n date-inner, first, last, inactive, hidden, weekend, range, special, disabled, single, preview,\n month, month-inner, year, year-inner, selected, current` as const;\n\n/** Stable identity for \"no range\", so that the calendar binding is committed only once. */\nconst emptyValues: Date[] = [];\n\n/** The components rendered by the picker chrome of every picker. */\nexport const pickerDependencies = [\n IgcCalendarComponent,\n IgcDialogComponent,\n IgcFocusTrapComponent,\n IgcIconComponent,\n IgcPopoverComponent,\n IgcValidationContainerComponent,\n];\n\n/**\n * The subset of the slot controller which the base picker queries.\n * Kept structural so that each picker can declare its own set of slot names.\n */\ntype PickerSlots = {\n hasAssignedElements(slot: string): boolean;\n};\n\n/* blazorIndirectRender */\n/* omitModule */\n/**\n * Common behavior for the pickers which drive an `igc-calendar` from an editor -\n * {@link IgcDatePickerComponent} and {@link IgcDateRangePickerComponent}.\n *\n * It owns the calendar and editor facing properties, the open/close plumbing and the\n * picker chrome - calendar, popover/dialog, icons and actions. The value itself, its\n * form state and the editors are left to the concrete pickers.\n */\nexport abstract class IgcDatePickerBaseComponent<\n T extends Date | DateRangeValue,\n> extends FormAssociatedRequiredMixin(\n EventEmitterMixin<\n IgcPickerBaseEventMap<Date | DateRangeValue>,\n AbstractConstructor<IgcComboBoxBaseLikeComponent>\n >(IgcComboBoxBaseLikeComponent)\n) {\n //#region Internal state and properties\n\n protected _oldValue: T | null = null;\n\n protected _activeDate: Date | null = null;\n protected _min: Date | null = null;\n protected _max: Date | null = null;\n protected _dateConstraints: DateRangeDescriptor[] = [];\n protected _displayFormat?: string;\n protected _inputFormat?: string;\n protected _visibleMonths = 1;\n private _weekStart?: WeekDays;\n\n protected override readonly _rootClickController = addRootClickController(\n this,\n { onHide: this._handleClosing }\n );\n\n @query(IgcCalendarComponent.tagName)\n protected readonly _calendar!: IgcCalendarComponent;\n\n @query('#helper-text')\n protected readonly _helperText!: IgcValidationContainerComponent | null;\n\n protected get _isDropDown(): boolean {\n return this.mode === 'dropdown';\n }\n\n protected get _isMaterial(): boolean {\n return this._themes.theme === 'material';\n }\n\n /** Dialog mode is always read-only, the rest depends on the configuration. */\n protected get _isEditorReadOnly(): boolean {\n return !this._isDropDown || this.readOnly || this.nonEditable;\n }\n\n //#endregion\n\n //#region Abstract members\n\n /** The id of the editor the picker is anchored to. */\n protected abstract readonly _inputId: string;\n\n /** The slots of the concrete picker. */\n protected abstract readonly _slots: PickerSlots;\n\n /** The theming controller of the concrete picker. */\n protected abstract readonly _themes: ThemingController;\n\n /**\n * The localization controller of the concrete picker.\n * Only the locale is shared - the resource strings differ per picker.\n */\n protected abstract readonly _i18nController: { locale: string };\n\n /**\n * The current value of the picker.\n *\n * The public `value` is declared by the concrete pickers, since its type,\n * converter and form state differ between them.\n */\n protected abstract get _value(): T | null;\n protected abstract set _value(value: T | null);\n\n /** Clears any user input left in the editor(s) of the picker. */\n protected abstract _clearEditors(): void;\n\n /** Whether the picker holds a value. */\n protected abstract get _hasValue(): boolean;\n\n /** The selection mode of the underlying calendar. */\n protected abstract get _calendarSelection(): CalendarSelection;\n\n /** The localized label of the calendar picker. */\n protected abstract get _selectDateLabel(): string | undefined;\n\n /**\n * The editor the host's ARIA state is projected onto - its associated\n * labels and the `aria-haspopup=\"dialog\"` semantics of the picker, both of\n * which must land on the native input assistive technology reports.\n */\n protected abstract get _projectionTarget(): Element | null;\n\n /** Moves focus to the editor of the picker. */\n protected abstract _focusInput(): void;\n\n /** Restores focus to the editor after a value has been selected in the calendar. */\n protected abstract _focusAndSelectInput(): void;\n\n /**\n * Resolves the value of the picker from the dates selected in the calendar, which come\n * in ascending order.\n */\n protected abstract _valueFromCalendarSelection(dates: Date[]): T | null;\n\n //#endregion\n\n //#region Overridable hooks\n\n /** The value reflected in the calendar when it is in single selection mode. */\n protected get _calendarValue(): Date | null {\n return null;\n }\n\n /** The values reflected in the calendar when it is in range selection mode. */\n protected get _calendarValues(): Date[] | null {\n return null;\n }\n\n /**\n * Seeds the active date of the calendar on the initial render, when the picker holds\n * a value but no explicit active date. From then on the calendar owns its active date\n * and `activeDate` reads it back, so this is consulted once.\n */\n protected get _defaultActiveDate(): Date | null {\n return this._calendarValue;\n }\n\n /** The title of the calendar icon, if the picker provides one. */\n protected get _calendarIconTitle(): string | undefined {\n return undefined;\n }\n\n /** The accessible name of the picker in dialog mode. */\n protected get _dialogLabel(): string | undefined {\n return this._selectDateLabel;\n }\n\n /** The format the editor(s) fall back to when no display format is set. */\n protected get _defaultDisplayFormat(): string | undefined {\n return undefined;\n }\n\n /** The format the editor(s) fall back to when no input format is set. */\n protected get _defaultInputFormat(): string | undefined {\n return undefined;\n }\n\n /** Whether the current calendar selection is complete enough to close the picker. */\n protected _canCloseOnSelect(): boolean {\n return true;\n }\n\n /** Invoked when the picker is dismissed through the Escape key. */\n protected _handleDismiss(): void {}\n\n /** Invoked when focus has left the picker for good. */\n protected _onBlur(): void {}\n\n /** Invoked when the dialog of the picker is closing, before the picker is hidden. */\n protected _onDialogClosing(): void {}\n\n /** Invoked when the picker is toggled, before the update is awaited. */\n protected _syncCalendarOnToggle(): void {}\n\n /** Whether a selection made in the calendar commits the value of the picker right away. */\n protected _commitsCalendarSelection(): boolean {\n return true;\n }\n\n //#endregion\n\n //#region Public properties and attributes\n\n /**\n * Determines whether the calendar is opened in a dropdown or a modal dialog.\n * @attr mode\n * @default dropdown\n */\n @property()\n public mode: PickerMode = 'dropdown';\n\n /**\n * Makes the control a readonly field.\n * @attr readonly\n * @default false\n */\n @property({ type: Boolean, reflect: true, attribute: 'readonly' })\n public readOnly = false;\n\n /**\n * Whether to allow typing in the input.\n * @attr non-editable\n * @default false\n */\n @property({ type: Boolean, reflect: true, attribute: 'non-editable' })\n public nonEditable = false;\n\n /**\n * Whether the control will have outlined appearance.\n * @attr\n * @default false\n */\n @property({ type: Boolean, reflect: true })\n public outlined = false;\n\n /**\n * The label of the picker.\n * @attr label\n */\n @property()\n public label!: string;\n\n /**\n * The prompt symbol to use for unfilled parts of the mask.\n * @attr\n * @default _\n */\n @property()\n public prompt = '_';\n\n /**\n * Format to display the value in when not editing.\n * Defaults to the locale format if not set.\n * @attr display-format\n */\n @property({ attribute: 'display-format' })\n public set displayFormat(value: string) {\n this._displayFormat = value;\n }\n\n public get displayFormat(): string {\n return (this._displayFormat ?? this._defaultDisplayFormat)!;\n }\n\n /**\n * The date format to apply on the input.\n * Defaults to the current locale Intl.DateTimeFormat\n * @attr input-format\n */\n @property({ attribute: 'input-format' })\n public set inputFormat(value: string) {\n this._inputFormat = value;\n }\n\n public get inputFormat(): string {\n return (this._inputFormat ?? this._defaultInputFormat)!;\n }\n\n /**\n * The locale used to format the display value and to resolve the\n * component's resource strings. Falls back to the global locale when not set.\n * @attr locale\n */\n @property()\n public set locale(value: string) {\n this._i18nController.locale = value;\n }\n\n public get locale(): string {\n return this._i18nController.locale;\n }\n\n /**\n * The minimum value required for the picker to remain valid.\n * @attr\n */\n @property({ converter: convertToDate })\n public set min(value: Date | string | null | undefined) {\n this._min = convertToDate(value);\n this._setDateConstraints();\n this._validate();\n }\n\n public get min(): Date | null {\n return this._min;\n }\n\n /**\n * The maximum value required for the picker to remain valid.\n * @attr\n */\n @property({ converter: convertToDate })\n public set max(value: Date | string | null | undefined) {\n this._max = convertToDate(value);\n this._setDateConstraints();\n this._validate();\n }\n\n public get max(): Date | null {\n return this._max;\n }\n\n /** Gets/sets disabled dates. */\n @property({ attribute: false })\n @coercedProperty<DateRangeDescriptor[], IgcDatePickerBaseComponent<T>>({\n onChange: ({ host }) => {\n host._setDateConstraints();\n host._validate();\n },\n })\n public disabledDates: DateRangeDescriptor[] = [];\n\n /** Gets/sets special dates. */\n @property({ attribute: false })\n public specialDates!: DateRangeDescriptor[];\n\n /**\n * Gets/Sets the date which is shown in the calendar picker and is highlighted.\n * By default it is the current date.\n */\n @property({ attribute: 'active-date', converter: convertToDate })\n public set activeDate(value: Date | string | null | undefined) {\n this._activeDate = convertToDate(value);\n }\n\n public get activeDate(): Date {\n return this._activeDate ?? this._calendar?.activeDate;\n }\n\n /**\n * The number of months displayed in the calendar.\n * @attr visible-months\n * @default 1\n */\n @property({ type: Number, attribute: 'visible-months' })\n public set visibleMonths(value: number) {\n this._visibleMonths = value;\n }\n\n public get visibleMonths(): number {\n return this._visibleMonths;\n }\n\n /**\n * The orientation of the calendar header.\n * @attr header-orientation\n * @default horizontal\n */\n @property({ attribute: 'header-orientation', reflect: true })\n public headerOrientation: CalendarHeaderOrientation = 'horizontal';\n\n /**\n * The orientation of the multiple months displayed in the calendar's days view.\n * @attr\n * @default horizontal\n */\n @property()\n public orientation: ContentOrientation = 'horizontal';\n\n /**\n * Determines whether the calendar hides its header.\n * @attr hide-header\n * @default false\n */\n @property({ type: Boolean, reflect: true, attribute: 'hide-header' })\n public hideHeader = false;\n\n /**\n * Controls the visibility of the dates that do not belong to the current month.\n * @attr hide-outside-days\n * @default false\n */\n @property({ type: Boolean, reflect: true, attribute: 'hide-outside-days' })\n public hideOutsideDays = false;\n\n /**\n * Whether to show the number of the week in the calendar.\n * @attr show-week-numbers\n * @default false\n */\n @property({ type: Boolean, reflect: true, attribute: 'show-week-numbers' })\n public showWeekNumbers = false;\n\n /**\n * Sets the start day of the week for the calendar.\n *\n * @remarks\n * When not set, the week starts on the first day of the week of the current {@link locale}.\n * Setting `undefined` returns to the locale value.\n * @attr week-start\n */\n @property({ attribute: 'week-start' })\n public set weekStart(value: WeekDays | undefined) {\n this._weekStart = value ?? undefined;\n }\n\n public get weekStart(): WeekDays {\n return this._weekStart ?? getLocaleWeekStart(this.locale);\n }\n\n //#endregion\n\n //#region Life-cycle hooks\n\n constructor() {\n super();\n\n // Projects the host's labels and popup semantics onto the native input\n // inside the editor (see ProjectedARIA for why the host cannot publish\n // these itself).\n addAriaProjector(this, {\n target: () => this._projectionTarget,\n state: () => ({\n hasPopup: 'dialog',\n labelledBy: this._internals.labels,\n describedBy: this._helperText ? [this._helperText] : null,\n }),\n });\n\n addSafeEventListener(this, 'focusout', this._handleFocusOut);\n\n addKeybindings(this, {\n skip: () => this.disabled || this.readOnly,\n })\n .set([altKey, arrowDown], this._handleAnchorClick)\n .set([altKey, arrowUp], this._onEscapeKey)\n .set(escapeKey, this._onEscapeKey);\n }\n\n protected override willUpdate(changedProperties: PropertyValues<this>): void {\n super.willUpdate(changedProperties);\n\n if (changedProperties.has('open')) {\n this._rootClickController.update();\n\n if (this.open) {\n this._oldValue = this._value;\n }\n }\n }\n\n //#endregion\n\n //#region Internal API\n\n protected _setDateConstraints(): void {\n this._dateConstraints =\n createDateConstraints(this._min, this._max, this.disabledDates) ?? [];\n }\n\n protected async _shouldCloseCalendarDropdown(): Promise<void> {\n if (this.keepOpenOnSelect || !this._canCloseOnSelect()) {\n return;\n }\n\n if (await this._hide(true)) {\n this._focusAndSelectInput();\n }\n }\n\n /**\n * Points the calendar at the first defined of `dates`, keeping its current\n * active date when none is. A no-op until the calendar is rendered.\n */\n protected _setCalendarActiveDate(\n ...dates: (Date | null | undefined)[]\n ): void {\n if (this._calendar) {\n this._calendar.activeDate =\n dates.find(Boolean) ?? this._calendar.activeDate;\n }\n }\n\n /**\n * Pushes the value of the picker back onto the calendar, which a read-only picker has\n * to do directly - the binding is left with nothing to re-commit.\n */\n protected async _restoreCalendarSelection(): Promise<void> {\n await this._calendar.updateComplete;\n\n if (this._calendarSelection === 'single') {\n this._calendar.value = this._calendarValue;\n } else {\n this._calendar.values = this._calendarValues ?? emptyValues;\n }\n }\n\n /** Emits `igcChange` if the value has moved away from the last committed one. */\n protected _emitChangeIfDirty(): void {\n if (!equal(this._value, this._oldValue)) {\n this.emitEvent('igcChange', { detail: this._value });\n this._oldValue = this._value;\n }\n }\n\n //#endregion\n\n //#region Public methods\n\n /** Clears the editor(s) of the picker of any user input. */\n public clear(): void {\n this._oldValue = this._value;\n this._value = null;\n this._clearEditors();\n }\n\n //#endregion\n\n //#region Event handlers\n\n protected async _onEscapeKey(): Promise<void> {\n if (await this._hide(true)) {\n this._handleDismiss();\n this._focusInput();\n }\n }\n\n protected override async _handleAnchorClick(): Promise<void> {\n super._handleAnchorClick();\n this._syncCalendarOnToggle();\n await this.updateComplete;\n this._calendar[focusActiveDate]({ preventScroll: true });\n }\n\n protected _handleInputClick(event: Event): void {\n if (getElementFromPath('input', event)) {\n // Open only if the click originates from the underlying input\n this._handleAnchorClick();\n }\n }\n\n protected _handleCalendarIconSlotPointerDown(event: PointerEvent): void {\n // Keeps the `delegatesFocus` of the host from focusing the editor, which would enter\n // an invalid state on blur as focus moves on to the calendar.\n event.preventDefault();\n }\n\n protected _handleFocusOut(event: FocusEvent): void {\n if (focusLeftHost(this, event)) {\n this._handleBlur();\n this._onBlur();\n }\n }\n\n protected _handleClosing(): void {\n this._hide(true);\n }\n\n protected async _handleCalendarChangeEvent(\n event: CustomEvent<Date | Date[]>\n ): Promise<void> {\n event.stopPropagation();\n this._setTouchedState();\n\n if (this.readOnly) {\n await this._restoreCalendarSelection();\n return;\n }\n\n this._value = this._valueFromCalendarSelection(asArray(event.detail));\n\n if (this._commitsCalendarSelection()) {\n this.emitEvent('igcChange', { detail: this._value });\n }\n\n this._shouldCloseCalendarDropdown();\n }\n\n protected _handleDialogClosing(event: Event): void {\n event.stopPropagation();\n this._onDialogClosing();\n this._hide(true);\n }\n\n protected _handleDialogClosed(event: Event): void {\n event.stopPropagation();\n }\n\n //#endregion\n\n //#region Rendering\n\n protected _renderClearIcon(part = 'clear-icon') {\n return this._hasValue\n ? html`\n <span\n slot=\"suffix\"\n part=${part}\n @click=${bindIf(!this.readOnly, this.clear)}\n >\n ${renderSlottedIcon({ slot: part, icon: 'input_clear' })}\n </span>\n `\n : nothing;\n }\n\n protected _renderCalendarIcon(suffix = '') {\n const part = `${this.open ? 'calendar-icon-open' : 'calendar-icon'}${suffix}`;\n\n return html`\n <span\n slot=\"prefix\"\n part=${part}\n @pointerdown=${this._handleCalendarIconSlotPointerDown}\n @click=${bindIf(!this.readOnly, this._handleAnchorClick)}\n >\n ${renderSlottedIcon({\n slot: part,\n icon: 'today',\n title: this._calendarIconTitle,\n })}\n </span>\n `;\n }\n\n /**\n * The content projected into an editor of the picker - its icons and prefix/suffix slots.\n *\n * The suffix distinguishes the editors of a picker which renders more than one,\n * e.g. `-start` and `-end`.\n */\n protected _renderEditorSlots(suffix = '') {\n const prefixSlot = `prefix${suffix}`;\n const suffixSlot = `suffix${suffix}`;\n\n return html`\n ${this._renderCalendarIcon(suffix)}\n <slot\n name=${prefixSlot}\n slot=${bindIf(this._slots.hasAssignedElements(prefixSlot), 'prefix')}\n ></slot>\n ${this._renderClearIcon(`clear-icon${suffix}`)}\n <slot\n name=${suffixSlot}\n slot=${bindIf(this._slots.hasAssignedElements(suffixSlot), 'suffix')}\n ></slot>\n `;\n }\n\n protected _renderCalendarSlots() {\n if (this._isDropDown) {\n return nothing;\n }\n\n const hasHeaderDate = this._slots.hasAssignedElements('header-date');\n\n return html`\n <slot name=\"title\" slot=\"title\">${this._selectDateLabel}</slot>\n <slot\n name=\"header-date\"\n slot=${bindIf(hasHeaderDate, 'header-date')}\n ></slot>\n `;\n }\n\n protected _renderCalendar(id: string) {\n const hideHeader = this._isDropDown ? true : this.hideHeader;\n const isInert = !this.open || this.disabled;\n\n return html`\n <igc-calendar\n aria-labelledby=${id}\n role=\"dialog\"\n selection=${this._calendarSelection}\n .inert=${isInert}\n ?show-week-numbers=${this.showWeekNumbers}\n ?hide-outside-days=${this.hideOutsideDays}\n ?hide-header=${hideHeader}\n .activeDate=${this.activeDate ?? this._defaultActiveDate}\n .value=${this._calendarValue}\n .values=${this._calendarValues ?? emptyValues}\n .headerOrientation=${this.headerOrientation}\n .orientation=${this.orientation}\n .visibleMonths=${this._visibleMonths}\n .locale=${this.locale}\n .disabledDates=${this._dateConstraints}\n .specialDates=${this.specialDates}\n .weekStart=${this.weekStart}\n @igcChange=${this._handleCalendarChangeEvent}\n exportparts=${calendarExportParts}\n >\n ${this._renderCalendarSlots()}\n </igc-calendar>\n `;\n }\n\n protected _renderActions() {\n const hasActions = this._slots.hasAssignedElements('actions');\n\n // If in dialog mode use the dialog footer slot\n return html`\n <div\n part=\"actions\"\n ?hidden=${!hasActions}\n slot=${bindIf(!this._isDropDown && hasActions, 'footer')}\n >\n <slot name=\"actions\"></slot>\n </div>\n `;\n }\n\n /** The content rendered inside the popover/dialog of the picker. */\n protected _renderPickerContent(id: string) {\n return html`${this._renderCalendar(id)}${this._renderActions()}`;\n }\n\n /** Additional content rendered in the dialog of the picker. */\n protected _renderDialogFooter(): TemplateResult | typeof nothing {\n return nothing;\n }\n\n protected _renderPicker(id: string) {\n const isDisabled = !this.open || this.disabled;\n\n return this._isDropDown\n ? html`\n <igc-popover ?open=${this.open} anchor=${id} flip shift>\n <igc-focus-trap ?disabled=${isDisabled}>\n ${this._renderPickerContent(id)}\n </igc-focus-trap>\n </igc-popover>\n `\n : html`\n <igc-dialog\n aria-label=${ifDefined(this._dialogLabel)}\n role=\"dialog\"\n ?open=${this.open}\n ?close-on-outside-click=${!this.keepOpenOnOutsideClick}\n hide-default-action\n @igcClosing=${this._handleDialogClosing}\n @igcClosed=${this._handleDialogClosed}\n exportparts=\"base: dialog-base, title, footer, overlay\"\n >\n ${this._renderPickerContent(id)}${this._renderDialogFooter()}\n </igc-dialog>\n `;\n }\n\n //#endregion\n}\n"]}
|
|
1
|
+
{"version":3,"file":"date-picker.base.js","sourceRoot":"","sources":["../../../src/components/date-picker/date-picker.base.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, nothing, type PropertyValues, type TemplateResult } from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { addAriaProjector } from '#internals/controllers/aria-projection.js';\nimport {\n addKeybindings,\n altKey,\n arrowDown,\n arrowUp,\n escapeKey,\n} from '#internals/controllers/key-bindings.js';\nimport { addRootClickController } from '#internals/controllers/root-click.js';\nimport { convertToDate } from '#internals/date/converters.js';\nimport { coercedProperty } from '#internals/decorators/coerced-property.js';\nimport { IgcComboBoxBaseLikeComponent } from '#internals/mixins/combo-box.js';\nimport type { AbstractConstructor } from '#internals/mixins/constructor.js';\nimport { EventEmitterMixin } from '#internals/mixins/event-emitter.js';\nimport { FormAssociatedRequiredMixin } from '#internals/mixins/forms/associated-required.js';\nimport { renderSlottedIcon } from '#internals/templates/slotted-icon.js';\nimport { asArray } from '#internals/utils/arrays.js';\nimport {\n addSafeEventListener,\n focusLeftHost,\n getElementFromPath,\n} from '#internals/utils/events.js';\nimport { bindIf } from '#internals/utils/lit.js';\nimport { equal } from '#internals/utils/objects.js';\nimport type { ThemingController } from '#theming/theming-controller.js';\nimport IgcCalendarComponent, { focusActiveDate } from '../calendar/calendar.js';\nimport {\n createDateConstraints,\n getLocaleWeekStart,\n} from '../calendar/helpers.js';\nimport type {\n CalendarHeaderOrientation,\n CalendarSelection,\n DateRangeDescriptor,\n WeekDays,\n} from '../calendar/types.js';\nimport IgcDialogComponent from '../dialog/dialog.js';\nimport IgcFocusTrapComponent from '../focus-trap/focus-trap.js';\nimport IgcIconComponent from '../icon/icon.js';\nimport IgcPopoverComponent from '../popover/popover.js';\nimport type {\n ContentOrientation,\n DateRangeValue,\n PickerMode,\n} from '../types.js';\nimport IgcValidationContainerComponent from '../validation-container/validation-container.js';\n\n/**\n * The events emitted by a picker driven by a calendar.\n * `T` is the value type of the picker - a single date or a date range.\n */\nexport interface IgcPickerBaseEventMap<T> {\n igcOpening: CustomEvent<void>;\n igcOpened: CustomEvent<void>;\n igcClosing: CustomEvent<void>;\n igcClosed: CustomEvent<void>;\n igcChange: CustomEvent<T | null>;\n igcInput: CustomEvent<T | null>;\n}\n\n/** The parts of the calendar which the pickers re-export to their own consumers. */\nexport const calendarExportParts =\n `header, header-title, header-date, content: calendar-content, navigation, months-navigation,\n years-navigation, years-range, navigation-buttons, navigation-button, days-view-container,\n days-view, months-view, years-view, days-row, months-row, years-row, label: calendar-label,\n label-inner: calendar-label-inner, week-number, week-number-inner, date,\n date-inner, first, last, inactive, hidden, weekend, range, special, disabled, single, preview,\n month, month-inner, year, year-inner, selected, current` as const;\n\n/** Stable identity for \"no range\", so that the calendar binding is committed only once. */\nconst emptyValues: Date[] = [];\n\n/** The components rendered by the picker chrome of every picker. */\nexport const pickerDependencies = [\n IgcCalendarComponent,\n IgcDialogComponent,\n IgcFocusTrapComponent,\n IgcIconComponent,\n IgcPopoverComponent,\n IgcValidationContainerComponent,\n];\n\n/**\n * The subset of the slot controller which the base picker queries.\n * Kept structural so that each picker can declare its own set of slot names.\n */\ntype PickerSlots = {\n hasAssignedElements(slot: string): boolean;\n};\n\n/* blazorIndirectRender */\n/* omitModule */\n/**\n * Common behavior for the pickers which drive an `igc-calendar` from an editor -\n * {@link IgcDatePickerComponent} and {@link IgcDateRangePickerComponent}.\n *\n * It owns the calendar and editor facing properties, the open/close plumbing and the\n * picker chrome - calendar, popover/dialog, icons and actions. The value itself, its\n * form state and the editors are left to the concrete pickers.\n */\nexport abstract class IgcDatePickerBaseComponent<\n T extends Date | DateRangeValue,\n> extends FormAssociatedRequiredMixin(\n EventEmitterMixin<\n IgcPickerBaseEventMap<Date | DateRangeValue>,\n AbstractConstructor<IgcComboBoxBaseLikeComponent>\n >(IgcComboBoxBaseLikeComponent)\n) {\n //#region Internal state and properties\n\n protected _oldValue: T | null = null;\n\n protected _activeDate: Date | null = null;\n protected _min: Date | null = null;\n protected _max: Date | null = null;\n protected _dateConstraints: DateRangeDescriptor[] = [];\n protected _displayFormat?: string;\n protected _inputFormat?: string;\n protected _visibleMonths = 1;\n private _weekStart?: WeekDays;\n\n protected override readonly _rootClickController = addRootClickController(\n this,\n { onHide: this._handleClosing }\n );\n\n @query(IgcCalendarComponent.tagName)\n protected readonly _calendar!: IgcCalendarComponent;\n\n @query('#helper-text')\n protected readonly _helperText!: IgcValidationContainerComponent | null;\n\n protected get _isDropDown(): boolean {\n return this.mode === 'dropdown';\n }\n\n protected get _isMaterial(): boolean {\n return this._themes.theme === 'material';\n }\n\n /** Dialog mode is always read-only, the rest depends on the configuration. */\n protected get _isEditorReadOnly(): boolean {\n return !this._isDropDown || this.readOnly || this.nonEditable;\n }\n\n //#endregion\n\n //#region Abstract members\n\n /** The id of the editor the picker is anchored to. */\n protected abstract readonly _inputId: string;\n\n /** The slots of the concrete picker. */\n protected abstract readonly _slots: PickerSlots;\n\n /** The theming controller of the concrete picker. */\n protected abstract readonly _themes: ThemingController;\n\n /**\n * The localization controller of the picker. Only the locale is shared,\n * because the resource strings differ between the pickers.\n */\n protected abstract readonly _i18nController: { locale: string };\n\n /**\n * The current value of the picker. Each picker declares its own public\n * `value`, because the type, the converter and the form state differ.\n */\n protected abstract get _value(): T | null;\n protected abstract set _value(value: T | null);\n\n /** Clears any user input left in the editor(s) of the picker. */\n protected abstract _clearEditors(): void;\n\n /** Whether the picker holds a value. */\n protected abstract get _hasValue(): boolean;\n\n /** The selection mode of the underlying calendar. */\n protected abstract get _calendarSelection(): CalendarSelection;\n\n /** The localized label of the calendar picker. */\n protected abstract get _selectDateLabel(): string | undefined;\n\n /**\n * The editor that receives the ARIA state of the host: the labels of the host\n * and the `aria-haspopup=\"dialog\"` of the picker. Both must reach the native\n * input that assistive technology reports.\n */\n protected abstract get _projectionTarget(): Element | null;\n\n /** Moves focus to the editor of the picker. */\n protected abstract _focusInput(): void;\n\n /** Restores focus to the editor after a value has been selected in the calendar. */\n protected abstract _focusAndSelectInput(): void;\n\n /** The value of the picker for `dates`, which the calendar gives in ascending order. */\n protected abstract _valueFromCalendarSelection(dates: Date[]): T | null;\n\n //#endregion\n\n //#region Overridable hooks\n\n /** The value reflected in the calendar when it is in single selection mode. */\n protected get _calendarValue(): Date | null {\n return null;\n }\n\n /** The values reflected in the calendar when it is in range selection mode. */\n protected get _calendarValues(): Date[] | null {\n return null;\n }\n\n /**\n * The active date for the first render, if the picker holds a value but no\n * active date. The calendar then owns its active date and `activeDate` reads\n * it back, so this is read one time.\n */\n protected get _defaultActiveDate(): Date | null {\n return this._calendarValue;\n }\n\n /** The title of the calendar icon, if the picker provides one. */\n protected get _calendarIconTitle(): string | undefined {\n return undefined;\n }\n\n /** The accessible name of the picker in dialog mode. */\n protected get _dialogLabel(): string | undefined {\n return this._selectDateLabel;\n }\n\n /** The format the editor(s) fall back to when no display format is set. */\n protected get _defaultDisplayFormat(): string | undefined {\n return undefined;\n }\n\n /** The format the editor(s) fall back to when no input format is set. */\n protected get _defaultInputFormat(): string | undefined {\n return undefined;\n }\n\n /** Whether the current calendar selection is complete enough to close the picker. */\n protected _canCloseOnSelect(): boolean {\n return true;\n }\n\n /** Invoked when the picker is dismissed through the Escape key. */\n protected _handleDismiss(): void {}\n\n /** Invoked when focus has left the picker for good. */\n protected _onBlur(): void {}\n\n /** Invoked when the dialog of the picker is closing, before the picker is hidden. */\n protected _onDialogClosing(): void {}\n\n /** Invoked when the picker is toggled, before the update is awaited. */\n protected _syncCalendarOnToggle(): void {}\n\n /** Whether a selection made in the calendar commits the value of the picker right away. */\n protected _commitsCalendarSelection(): boolean {\n return true;\n }\n\n //#endregion\n\n //#region Public properties and attributes\n\n /**\n * Determines whether the calendar is opened in a dropdown or a modal dialog.\n * @attr mode\n * @default dropdown\n */\n @property()\n public mode: PickerMode = 'dropdown';\n\n /**\n * Makes the control a readonly field.\n * @attr readonly\n * @default false\n */\n @property({ type: Boolean, reflect: true, attribute: 'readonly' })\n public readOnly = false;\n\n /**\n * Whether to allow typing in the input.\n * @attr non-editable\n * @default false\n */\n @property({ type: Boolean, reflect: true, attribute: 'non-editable' })\n public nonEditable = false;\n\n /**\n * Whether the control will have outlined appearance.\n * @attr\n * @default false\n */\n @property({ type: Boolean, reflect: true })\n public outlined = false;\n\n /**\n * The label of the picker.\n * @attr label\n */\n @property()\n public label!: string;\n\n /**\n * The prompt symbol to use for unfilled parts of the mask.\n * @attr\n * @default _\n */\n @property()\n public prompt = '_';\n\n /**\n * Format to display the value in when not editing.\n * Defaults to the locale format if not set.\n * @attr display-format\n */\n @property({ attribute: 'display-format' })\n public set displayFormat(value: string) {\n this._displayFormat = value;\n }\n\n public get displayFormat(): string {\n return (this._displayFormat ?? this._defaultDisplayFormat)!;\n }\n\n /**\n * The date format to apply on the input.\n * Defaults to the current locale Intl.DateTimeFormat\n * @attr input-format\n */\n @property({ attribute: 'input-format' })\n public set inputFormat(value: string) {\n this._inputFormat = value;\n }\n\n public get inputFormat(): string {\n return (this._inputFormat ?? this._defaultInputFormat)!;\n }\n\n /**\n * The locale used to format the display value and to resolve the\n * component's resource strings. Falls back to the global locale when not set.\n * @attr locale\n */\n @property()\n public set locale(value: string) {\n this._i18nController.locale = value;\n }\n\n public get locale(): string {\n return this._i18nController.locale;\n }\n\n /**\n * The minimum value required for the picker to remain valid.\n * @attr\n */\n @property({ converter: convertToDate })\n public set min(value: Date | string | null | undefined) {\n this._min = convertToDate(value);\n this._setDateConstraints();\n this._validate();\n }\n\n public get min(): Date | null {\n return this._min;\n }\n\n /**\n * The maximum value required for the picker to remain valid.\n * @attr\n */\n @property({ converter: convertToDate })\n public set max(value: Date | string | null | undefined) {\n this._max = convertToDate(value);\n this._setDateConstraints();\n this._validate();\n }\n\n public get max(): Date | null {\n return this._max;\n }\n\n /** Gets/sets disabled dates. */\n @property({ attribute: false })\n @coercedProperty<DateRangeDescriptor[], IgcDatePickerBaseComponent<T>>({\n onChange: ({ host }) => {\n host._setDateConstraints();\n host._validate();\n },\n })\n public disabledDates: DateRangeDescriptor[] = [];\n\n /** Gets/sets special dates. */\n @property({ attribute: false })\n public specialDates!: DateRangeDescriptor[];\n\n /**\n * Gets/Sets the date which is shown in the calendar picker and is highlighted.\n * By default it is the current date.\n */\n @property({ attribute: 'active-date', converter: convertToDate })\n public set activeDate(value: Date | string | null | undefined) {\n this._activeDate = convertToDate(value);\n }\n\n public get activeDate(): Date {\n return this._activeDate ?? this._calendar?.activeDate;\n }\n\n /**\n * The number of months displayed in the calendar.\n * @attr visible-months\n * @default 1\n */\n @property({ type: Number, attribute: 'visible-months' })\n public set visibleMonths(value: number) {\n this._visibleMonths = value;\n }\n\n public get visibleMonths(): number {\n return this._visibleMonths;\n }\n\n /**\n * The orientation of the calendar header.\n * @attr header-orientation\n * @default horizontal\n */\n @property({ attribute: 'header-orientation', reflect: true })\n public headerOrientation: CalendarHeaderOrientation = 'horizontal';\n\n /**\n * The orientation of the multiple months displayed in the calendar's days view.\n * @attr\n * @default horizontal\n */\n @property()\n public orientation: ContentOrientation = 'horizontal';\n\n /**\n * Determines whether the calendar hides its header.\n * @attr hide-header\n * @default false\n */\n @property({ type: Boolean, reflect: true, attribute: 'hide-header' })\n public hideHeader = false;\n\n /**\n * Controls the visibility of the dates that do not belong to the current month.\n * @attr hide-outside-days\n * @default false\n */\n @property({ type: Boolean, reflect: true, attribute: 'hide-outside-days' })\n public hideOutsideDays = false;\n\n /**\n * Whether to show the number of the week in the calendar.\n * @attr show-week-numbers\n * @default false\n */\n @property({ type: Boolean, reflect: true, attribute: 'show-week-numbers' })\n public showWeekNumbers = false;\n\n /**\n * Sets the start day of the week for the calendar.\n *\n * @remarks\n * When not set, the week starts on the first day of the week of the current {@link locale}.\n * Setting `undefined` returns to the locale value.\n * @attr week-start\n */\n @property({ attribute: 'week-start' })\n public set weekStart(value: WeekDays | undefined) {\n this._weekStart = value ?? undefined;\n }\n\n public get weekStart(): WeekDays {\n return this._weekStart ?? getLocaleWeekStart(this.locale);\n }\n\n //#endregion\n\n //#region Life-cycle hooks\n\n constructor() {\n super();\n\n // Projects the host's labels and popup semantics onto the native input\n // inside the editor (see ProjectedARIA for why the host cannot publish\n // these itself).\n addAriaProjector(this, {\n target: () => this._projectionTarget,\n state: () => ({\n hasPopup: 'dialog',\n labelledBy: this._internals.labels,\n describedBy: this._helperText ? [this._helperText] : null,\n }),\n });\n\n addSafeEventListener(this, 'focusout', this._handleFocusOut);\n\n addKeybindings(this, {\n skip: () => this.disabled || this.readOnly,\n })\n .set([altKey, arrowDown], this._handleAnchorClick)\n .set([altKey, arrowUp], this._onEscapeKey)\n .set(escapeKey, this._onEscapeKey);\n }\n\n protected override willUpdate(changedProperties: PropertyValues<this>): void {\n super.willUpdate(changedProperties);\n\n if (changedProperties.has('open')) {\n this._rootClickController.update();\n\n if (this.open) {\n this._oldValue = this._value;\n }\n }\n }\n\n //#endregion\n\n //#region Internal API\n\n protected _setDateConstraints(): void {\n this._dateConstraints =\n createDateConstraints(this._min, this._max, this.disabledDates) ?? [];\n }\n\n protected async _shouldCloseCalendarDropdown(): Promise<void> {\n if (this.keepOpenOnSelect || !this._canCloseOnSelect()) {\n return;\n }\n\n if (await this._hide(true)) {\n this._focusAndSelectInput();\n }\n }\n\n /**\n * Points the calendar at the first defined date of `dates`, and keeps the\n * current active date if there is none. Does nothing before the calendar\n * renders.\n */\n protected _setCalendarActiveDate(\n ...dates: (Date | null | undefined)[]\n ): void {\n if (this._calendar) {\n this._calendar.activeDate =\n dates.find(Boolean) ?? this._calendar.activeDate;\n }\n }\n\n /**\n * Writes the value of the picker back onto the calendar. A read-only picker\n * must do this itself, because the binding has nothing to commit again.\n */\n protected async _restoreCalendarSelection(): Promise<void> {\n await this._calendar.updateComplete;\n\n if (this._calendarSelection === 'single') {\n this._calendar.value = this._calendarValue;\n } else {\n this._calendar.values = this._calendarValues ?? emptyValues;\n }\n }\n\n /** Emits `igcChange` if the value has moved away from the last committed one. */\n protected _emitChangeIfDirty(): void {\n if (!equal(this._value, this._oldValue)) {\n this.emitEvent('igcChange', { detail: this._value });\n this._oldValue = this._value;\n }\n }\n\n //#endregion\n\n //#region Public methods\n\n /** Clears the editor(s) of the picker of any user input. */\n public clear(): void {\n this._oldValue = this._value;\n this._value = null;\n this._clearEditors();\n }\n\n //#endregion\n\n //#region Event handlers\n\n protected async _onEscapeKey(): Promise<void> {\n if (await this._hide(true)) {\n this._handleDismiss();\n this._focusInput();\n }\n }\n\n protected override async _handleAnchorClick(): Promise<void> {\n super._handleAnchorClick();\n this._syncCalendarOnToggle();\n await this.updateComplete;\n this._calendar[focusActiveDate]({ preventScroll: true });\n }\n\n protected _handleInputClick(event: Event): void {\n if (getElementFromPath('input', event)) {\n // Open only if the click originates from the underlying input\n this._handleAnchorClick();\n }\n }\n\n protected _handleCalendarIconSlotPointerDown(event: PointerEvent): void {\n // Keeps the `delegatesFocus` of the host from focusing the editor, which would enter\n // an invalid state on blur as focus moves on to the calendar.\n event.preventDefault();\n }\n\n protected _handleFocusOut(event: FocusEvent): void {\n if (focusLeftHost(this, event)) {\n this._handleBlur();\n this._onBlur();\n }\n }\n\n protected _handleClosing(): void {\n this._hide(true);\n }\n\n protected async _handleCalendarChangeEvent(\n event: CustomEvent<Date | Date[]>\n ): Promise<void> {\n event.stopPropagation();\n this._setTouchedState();\n\n if (this.readOnly) {\n await this._restoreCalendarSelection();\n return;\n }\n\n this._value = this._valueFromCalendarSelection(asArray(event.detail));\n\n if (this._commitsCalendarSelection()) {\n this.emitEvent('igcChange', { detail: this._value });\n }\n\n this._shouldCloseCalendarDropdown();\n }\n\n protected _handleDialogClosing(event: Event): void {\n event.stopPropagation();\n this._onDialogClosing();\n this._hide(true);\n }\n\n protected _handleDialogClosed(event: Event): void {\n event.stopPropagation();\n }\n\n //#endregion\n\n //#region Rendering\n\n protected _renderClearIcon(part = 'clear-icon') {\n return this._hasValue\n ? html`\n <span\n slot=\"suffix\"\n part=${part}\n @click=${bindIf(!this.readOnly, this.clear)}\n >\n ${renderSlottedIcon({ slot: part, icon: 'input_clear' })}\n </span>\n `\n : nothing;\n }\n\n protected _renderCalendarIcon(suffix = '') {\n const part = `${this.open ? 'calendar-icon-open' : 'calendar-icon'}${suffix}`;\n\n return html`\n <span\n slot=\"prefix\"\n part=${part}\n @pointerdown=${this._handleCalendarIconSlotPointerDown}\n @click=${bindIf(!this.readOnly, this._handleAnchorClick)}\n >\n ${renderSlottedIcon({\n slot: part,\n icon: 'today',\n title: this._calendarIconTitle,\n })}\n </span>\n `;\n }\n\n /**\n * The content for an editor of the picker: its icons and its prefix and\n * suffix slots. The suffix identifies the editor if the picker renders more\n * than one, for example `-start` and `-end`.\n */\n protected _renderEditorSlots(suffix = '') {\n const prefixSlot = `prefix${suffix}`;\n const suffixSlot = `suffix${suffix}`;\n\n return html`\n ${this._renderCalendarIcon(suffix)}\n <slot\n name=${prefixSlot}\n slot=${bindIf(this._slots.hasAssignedElements(prefixSlot), 'prefix')}\n ></slot>\n ${this._renderClearIcon(`clear-icon${suffix}`)}\n <slot\n name=${suffixSlot}\n slot=${bindIf(this._slots.hasAssignedElements(suffixSlot), 'suffix')}\n ></slot>\n `;\n }\n\n protected _renderCalendarSlots() {\n if (this._isDropDown) {\n return nothing;\n }\n\n const hasHeaderDate = this._slots.hasAssignedElements('header-date');\n\n return html`\n <slot name=\"title\" slot=\"title\">${this._selectDateLabel}</slot>\n <slot\n name=\"header-date\"\n slot=${bindIf(hasHeaderDate, 'header-date')}\n ></slot>\n `;\n }\n\n protected _renderCalendar(id: string) {\n const hideHeader = this._isDropDown ? true : this.hideHeader;\n const isInert = !this.open || this.disabled;\n\n return html`\n <igc-calendar\n aria-labelledby=${id}\n role=\"dialog\"\n selection=${this._calendarSelection}\n .inert=${isInert}\n ?show-week-numbers=${this.showWeekNumbers}\n ?hide-outside-days=${this.hideOutsideDays}\n ?hide-header=${hideHeader}\n .activeDate=${this.activeDate ?? this._defaultActiveDate}\n .value=${this._calendarValue}\n .values=${this._calendarValues ?? emptyValues}\n .headerOrientation=${this.headerOrientation}\n .orientation=${this.orientation}\n .visibleMonths=${this._visibleMonths}\n .locale=${this.locale}\n .disabledDates=${this._dateConstraints}\n .specialDates=${this.specialDates}\n .weekStart=${this.weekStart}\n @igcChange=${this._handleCalendarChangeEvent}\n exportparts=${calendarExportParts}\n >\n ${this._renderCalendarSlots()}\n </igc-calendar>\n `;\n }\n\n protected _renderActions() {\n const hasActions = this._slots.hasAssignedElements('actions');\n\n // If in dialog mode use the dialog footer slot\n return html`\n <div\n part=\"actions\"\n ?hidden=${!hasActions}\n slot=${bindIf(!this._isDropDown && hasActions, 'footer')}\n >\n <slot name=\"actions\"></slot>\n </div>\n `;\n }\n\n /** The content rendered inside the popover/dialog of the picker. */\n protected _renderPickerContent(id: string) {\n return html`${this._renderCalendar(id)}${this._renderActions()}`;\n }\n\n /** Additional content rendered in the dialog of the picker. */\n protected _renderDialogFooter(): TemplateResult | typeof nothing {\n return nothing;\n }\n\n protected _renderPicker(id: string) {\n const isDisabled = !this.open || this.disabled;\n\n return this._isDropDown\n ? html`\n <igc-popover\n ?open=${this.open}\n anchor=${id}\n flip\n .scrollStrategy=${this.scrollStrategy}\n @igcPopoverScrollClose=${this._handleClosing}\n >\n <igc-focus-trap ?disabled=${isDisabled}>\n ${this._renderPickerContent(id)}\n </igc-focus-trap>\n </igc-popover>\n `\n : html`\n <igc-dialog\n aria-label=${ifDefined(this._dialogLabel)}\n role=\"dialog\"\n ?open=${this.open}\n ?close-on-outside-click=${!this.keepOpenOnOutsideClick}\n hide-default-action\n @igcClosing=${this._handleDialogClosing}\n @igcClosed=${this._handleDialogClosed}\n exportparts=\"base: dialog-base, title, footer, overlay\"\n >\n ${this._renderPickerContent(id)}${this._renderDialogFooter()}\n </igc-dialog>\n `;\n }\n\n //#endregion\n}\n"]}
|
|
@@ -93,7 +93,7 @@ export default class IgcDatePickerComponent extends IgcDatePickerComponent_base
|
|
|
93
93
|
protected get __validators(): import("../../internals/validators.js").Validator<IgcDatePickerComponent>[];
|
|
94
94
|
protected readonly _inputId: string;
|
|
95
95
|
protected readonly _themes: import("#theming/theming-controller.js").ThemingController;
|
|
96
|
-
protected readonly _slots: import("#internals/controllers/slot.js").SlotController<"invalid" | "title" | "prefix" | "
|
|
96
|
+
protected readonly _slots: import("#internals/controllers/slot.js").SlotController<"invalid" | "title" | "prefix" | "[default]" | "actions" | "suffix" | "helper-text" | "value-missing" | "custom-error" | "range-overflow" | "range-underflow" | "clear-icon" | "calendar-icon-open" | "calendar-icon" | "header-date" | "bad-input">;
|
|
97
97
|
/**
|
|
98
98
|
* For now we use the core validation strings internally only, to avoid mixing with old resources by users.
|
|
99
99
|
* To Do: Update resourceStrings type when the IgcCalendarResourceStrings is changed to ICalendarResourceStrings
|
|
@@ -15,6 +15,7 @@ import { blazorAdditionalDependencies } from '#internals/decorators/blazorAdditi
|
|
|
15
15
|
import { shadowOptions } from '#internals/decorators/shadow-options.js';
|
|
16
16
|
import { registerComponent } from '#internals/definitions/register.js';
|
|
17
17
|
import { addI18nController, getDateTimeFormat, } from '#internals/i18n/i18n-controller.js';
|
|
18
|
+
import { datePickerResourcesMap } from '#internals/i18n/utils.js';
|
|
18
19
|
import { EventEmitterMixin } from '#internals/mixins/event-emitter.js';
|
|
19
20
|
import { FormValueDateTimeTransformers } from '#internals/mixins/forms/form-transformers.js';
|
|
20
21
|
import { createFormValueState } from '#internals/mixins/forms/form-value.js';
|
|
@@ -23,6 +24,7 @@ import { bindIf } from '#internals/utils/lit.js';
|
|
|
23
24
|
import { createIdGenerator } from '#internals/utils/strings.js';
|
|
24
25
|
import { addThemingController } from '#theming/theming-controller.js';
|
|
25
26
|
import IgcDateTimeInputComponent from '../date-time-input/date-time-input.js';
|
|
27
|
+
import IgcValidationContainerComponent from '../validation-container/validation-container.js';
|
|
26
28
|
import { IgcDatePickerBaseComponent, pickerDependencies, } from './date-picker.base.js';
|
|
27
29
|
import { styles } from './themes/date-picker.base.css.js';
|
|
28
30
|
import { styles as shared } from './themes/shared/date-picker.common.css.js';
|
|
@@ -40,7 +42,7 @@ let IgcDatePickerComponent = class IgcDatePickerComponent extends EventEmitterMi
|
|
|
40
42
|
});
|
|
41
43
|
this._i18nController = addI18nController(this, {
|
|
42
44
|
defaultEN: Object.assign({}, DatePickerResourceStringsEN, CalendarResourceStringsEN),
|
|
43
|
-
|
|
45
|
+
resourceMap: datePickerResourcesMap,
|
|
44
46
|
});
|
|
45
47
|
this._formValue = createFormValueState(this, {
|
|
46
48
|
initialValue: null,
|
|
@@ -200,7 +202,7 @@ let IgcDatePickerComponent = class IgcDatePickerComponent extends EventEmitterMi
|
|
|
200
202
|
@igcInput=${this._handleInputEvent}
|
|
201
203
|
@keydown=${this._handleEnterKeydown}
|
|
202
204
|
@click=${bindIf(hasClickHandler, this._handleInputClick)}
|
|
203
|
-
exportparts="input, label, prefix, suffix"
|
|
205
|
+
exportparts="container, input, label, prefix, suffix"
|
|
204
206
|
>
|
|
205
207
|
${this._renderEditorSlots()}
|
|
206
208
|
</igc-date-time-input>
|
|
@@ -211,7 +213,7 @@ let IgcDatePickerComponent = class IgcDatePickerComponent extends EventEmitterMi
|
|
|
211
213
|
return html `
|
|
212
214
|
${this._isMaterial ? nothing : this._renderLabel(id)}
|
|
213
215
|
${this._renderInput(id)} ${this._renderPicker(id)}
|
|
214
|
-
${
|
|
216
|
+
${IgcValidationContainerComponent.create(this)}
|
|
215
217
|
`;
|
|
216
218
|
}
|
|
217
219
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-picker.js","sourceRoot":"","sources":["../../../src/components/date-picker/date-picker.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n CalendarResourceStringsEN,\n DatePickerResourceStringsEN,\n type ICalendarResourceStrings,\n type IDatePickerResourceStrings,\n} from 'igniteui-i18n-core';\nimport { html, nothing, type TemplateResult } from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { addSlotController, setSlots } from '#internals/controllers/slot.js';\nimport { convertToDate } from '#internals/date/converters.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 { IgcCalendarResourceStrings } from '#internals/i18n/EN/calendar.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 { FormValueDateTimeTransformers } from '#internals/mixins/forms/form-transformers.js';\nimport { createFormValueState } from '#internals/mixins/forms/form-value.js';\nimport { firstOf } from '#internals/utils/arrays.js';\nimport { bindIf } from '#internals/utils/lit.js';\nimport { createIdGenerator } from '#internals/utils/strings.js';\nimport { addThemingController } from '#theming/theming-controller.js';\nimport type { CalendarSelection } from '../calendar/types.js';\nimport type { DatePart } from '../date-time-input/date-part.js';\nimport IgcDateTimeInputComponent from '../date-time-input/date-time-input.js';\nimport type { RangeTextSelectMode, SelectionRangeDirection } from '../types.js';\nimport {\n IgcDatePickerBaseComponent,\n type IgcPickerBaseEventMap,\n pickerDependencies,\n} from './date-picker.base.js';\nimport { styles } from './themes/date-picker.base.css.js';\nimport { styles as shared } from './themes/shared/date-picker.common.css.js';\nimport { all } from './themes/themes.js';\nimport { datePickerValidators } from './validators.js';\n\nexport type IgcDatePickerComponentEventMap = IgcPickerBaseEventMap<Date>;\n\nconst nextId = createIdGenerator('date-picker');\nconst Slots = setSlots(\n 'prefix',\n 'suffix',\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 'calendar-icon',\n 'calendar-icon-open',\n 'actions'\n);\ntype DatePickerResourceStringsType = IDatePickerResourceStrings &\n ICalendarResourceStrings;\n\n/* blazorIndirectRender */\n/* blazorSupportsVisualChildren */\n/**\n * The date picker is a feature rich component used for entering a date through manual text input or\n * choosing date values from a calendar dialog that pops up.\n *\n * @element igc-date-picker\n *\n * @slot prefix - Renders content before the input.\n * @slot suffix - Renders content after the 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 calendar-icon - Renders the icon/content for the calendar picker.\n * @slot calendar-icon-open - Renders the icon/content for the picker in open state.\n * @slot actions - Renders content in the action part of the picker in open state.\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 label - The label wrapper that renders content above the target input.\n * @csspart container - The main wrapper that holds all main input elements.\n * @csspart input - The native input element.\n * @csspart prefix - The prefix wrapper.\n * @csspart suffix - The suffix wrapper.\n * @csspart calendar-icon - The calendar icon wrapper for closed state.\n * @csspart calendar-icon-open - The calendar icon wrapper for opened state.\n * @csspart clear-icon - The clear icon wrapper.\n * @csspart actions - The actions 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'\n)\n@shadowOptions({ delegatesFocus: true })\nexport default class IgcDatePickerComponent extends EventEmitterMixin<\n IgcDatePickerComponentEventMap,\n AbstractConstructor<IgcDatePickerBaseComponent<Date>>\n>(IgcDatePickerBaseComponent) {\n public static readonly tagName = 'igc-date-picker';\n public static styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(\n IgcDatePickerComponent,\n IgcDateTimeInputComponent,\n ...pickerDependencies\n );\n }\n\n //#region Private properties and state\n\n protected override get __validators() {\n return datePickerValidators;\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 IgcCalendarResourceStrings is changed to ICalendarResourceStrings\n */\n protected override readonly _i18nController = addI18nController<\n IgcCalendarResourceStrings | DatePickerResourceStringsType\n >(this, {\n defaultEN: Object.assign(\n {},\n DatePickerResourceStringsEN,\n CalendarResourceStringsEN\n ),\n resourceMapName: 'date-picker',\n });\n\n protected override readonly _formValue = createFormValueState(this, {\n initialValue: null,\n transformers: FormValueDateTimeTransformers,\n });\n\n @query(IgcDateTimeInputComponent.tagName)\n private readonly _input!: IgcDateTimeInputComponent;\n\n //#endregion\n\n //#region Base class hooks\n\n protected override get _value(): Date | null {\n return this.value;\n }\n\n protected override set _value(value: Date | null) {\n this.value = value;\n }\n\n protected override get _hasValue(): boolean {\n return this.value !== null;\n }\n\n protected override get _calendarSelection(): CalendarSelection {\n return 'single';\n }\n\n protected override get _calendarValue(): Date | null {\n return this.value;\n }\n\n protected override get _selectDateLabel(): string | undefined {\n return this.resourceStrings.calendar_select_date;\n }\n\n protected override get _calendarIconTitle(): string | undefined {\n return this.value\n ? this.resourceStrings.date_picker_change_date\n : this.resourceStrings.date_picker_choose_date;\n }\n\n protected override get _dialogLabel(): string | undefined {\n return this._calendarIconTitle;\n }\n\n protected override get _defaultDisplayFormat(): string | undefined {\n return this._input?.displayFormat;\n }\n\n protected override get _defaultInputFormat(): string | undefined {\n return this._input?.inputFormat;\n }\n\n protected override get _projectionTarget() {\n return this._input ?? null;\n }\n\n protected override _focusInput(): void {\n this._input.focus();\n }\n\n protected override _focusAndSelectInput(): void {\n this._input.focus();\n this._input.select();\n }\n\n protected override _syncCalendarOnToggle(): void {\n this._setCalendarActiveDate(this.value);\n }\n\n protected override _clearEditors(): void {\n this._input?.clear();\n }\n\n protected override _valueFromCalendarSelection(dates: Date[]): Date | null {\n return firstOf(dates) ?? null;\n }\n\n /**\n * A committed edit in the input already emits `igcChange` on its own, so only a\n * value which the picker itself has changed is left to notify about here.\n */\n protected override _onBlur(): void {\n if (this._isEditorReadOnly) {\n this._emitChangeIfDirty();\n }\n }\n\n protected override _onDialogClosing(): void {\n this._oldValue = this.value;\n }\n\n //#endregion\n\n //#region Public properties and attributes\n\n /* @tsTwoWayProperty(true, \"igcChange\", \"detail\", false) */\n /**\n * The value of the picker.\n *\n * Only ever holds a committed value. While the user is typing in the input, the\n * intermediate state stays in the editor and is committed - together with an\n * `igcChange` event - when the edit is committed on blur. Use the `igcInput` event\n * to observe the value as it is being typed.\n *\n * @attr\n */\n @property({ converter: convertToDate })\n public set value(value: Date | string | null | undefined) {\n this._formValue.setValueAndFormState(value as Date | null);\n }\n\n public get value(): Date | null {\n return this._formValue.value;\n }\n\n /**\n * The placeholder text of the control.\n * @attr\n */\n @property()\n public placeholder!: string;\n\n /**\n * The resource strings for localization.\n */\n @property({ attribute: false })\n public set resourceStrings(\n value: IgcCalendarResourceStrings | DatePickerResourceStringsType\n ) {\n this._i18nController.resourceStrings = value;\n }\n\n public get resourceStrings(): IgcCalendarResourceStrings &\n DatePickerResourceStringsType {\n return this._i18nController.resourceStrings;\n }\n\n //#endregion\n\n //#region Event handlers\n\n protected _handleInputChangeEvent(event: CustomEvent<Date>): void {\n event.stopPropagation();\n\n this._commitValue(\n (event.target as IgcDateTimeInputComponent).value,\n 'igcChange'\n );\n }\n\n protected _handleInputEvent(event: CustomEvent<Date>): void {\n event.stopPropagation();\n\n this._setTouchedState();\n\n if (this.nonEditable) {\n event.preventDefault();\n return;\n }\n\n const draft = (event.target as IgcDateTimeInputComponent)._uncommittedValue;\n\n this._calendar.activeDate = draft ?? this._calendar.activeDate;\n this.emitEvent('igcInput', { detail: draft });\n }\n\n //#endregion\n\n //#region Form associated overrides\n\n protected override formResetCallback(): void {\n super.formResetCallback();\n\n // The inner editor is not associated with the outer form (shadow\n // boundary), so the browser never resets it. Since it runs its own\n // constraint validation against the forwarded `required`/`min`/`max`,\n // a touched editor would otherwise keep its invalid styles after the\n // form reset.\n this._input?.['formResetCallback']();\n }\n\n //#endregion\n\n //#region Public methods\n\n /** Increments the passed in date part */\n public stepUp(datePart?: DatePart, delta?: number): void {\n this._input.stepUp(datePart, delta);\n }\n\n /** Decrements the passed in date part */\n public stepDown(datePart?: DatePart, delta?: number): void {\n this._input.stepDown(datePart, delta);\n }\n\n /** Selects the text in the input of the component */\n public select(): void {\n this._input.select();\n }\n\n /* blazorSuppress */\n /** Sets the text selection range in the input of the component */\n public setSelectionRange(\n start: number,\n end: number,\n direction?: SelectionRangeDirection\n ): void {\n this._input.setSelectionRange(start, end, direction);\n }\n\n /* blazorSuppress */\n /* Replaces the selected text in the input and re-applies the mask */\n public setRangeText(\n replacement: string,\n start: number,\n end: number,\n mode?: RangeTextSelectMode\n ): void {\n this._input.setRangeText(replacement, start, end, mode);\n this.value = this._input.value;\n }\n\n //#endregion\n\n //#region Render methods\n\n private _renderLabel(id: string) {\n const isDisabled = this._isDropDown || this.readOnly;\n\n return this.label\n ? html`\n <label\n part=\"label\"\n for=${id}\n @click=${bindIf(!isDisabled, this._handleAnchorClick)}\n >\n ${this.label}\n </label>\n `\n : nothing;\n }\n\n protected _renderInput(id: string) {\n const format = getDateTimeFormat(this._displayFormat);\n const hasClickHandler = !(this._isDropDown || this.readOnly);\n\n return html`\n <igc-date-time-input\n id=${id}\n label=${bindIf(this._isMaterial, this.label)}\n input-format=${ifDefined(this._inputFormat)}\n display-format=${ifDefined(format)}\n ?disabled=${this.disabled}\n ?readonly=${this._isEditorReadOnly}\n ?required=${this.required}\n .value=${this.value}\n .locale=${this.locale}\n .prompt=${this.prompt}\n .outlined=${this.outlined}\n .placeholder=${this.placeholder}\n .min=${this.min}\n .max=${this.max}\n .invalid=${this.invalid}\n @igcChange=${this._handleInputChangeEvent}\n @igcInput=${this._handleInputEvent}\n @keydown=${this._handleEnterKeydown}\n @click=${bindIf(hasClickHandler, this._handleInputClick)}\n exportparts=\"input, label, prefix, suffix\"\n >\n ${this._renderEditorSlots()}\n </igc-date-time-input>\n `;\n }\n\n protected override render(): TemplateResult {\n const id = this.id || this._inputId;\n\n return html`\n ${this._isMaterial ? nothing : this._renderLabel(id)}\n ${this._renderInput(id)} ${this._renderPicker(id)}\n ${this._renderValidationContainer()}\n `;\n }\n\n //#endregion\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-date-picker': IgcDatePickerComponent;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"date-picker.js","sourceRoot":"","sources":["../../../src/components/date-picker/date-picker.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n CalendarResourceStringsEN,\n DatePickerResourceStringsEN,\n type ICalendarResourceStrings,\n type IDatePickerResourceStrings,\n} from 'igniteui-i18n-core';\nimport { html, nothing, type TemplateResult } from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { addSlotController, setSlots } from '#internals/controllers/slot.js';\nimport { convertToDate } from '#internals/date/converters.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 { IgcCalendarResourceStrings } from '#internals/i18n/EN/calendar.resources.js';\nimport {\n addI18nController,\n getDateTimeFormat,\n} from '#internals/i18n/i18n-controller.js';\nimport { datePickerResourcesMap } from '#internals/i18n/utils.js';\nimport type { AbstractConstructor } from '#internals/mixins/constructor.js';\nimport { EventEmitterMixin } from '#internals/mixins/event-emitter.js';\nimport { FormValueDateTimeTransformers } from '#internals/mixins/forms/form-transformers.js';\nimport { createFormValueState } from '#internals/mixins/forms/form-value.js';\nimport { firstOf } from '#internals/utils/arrays.js';\nimport { bindIf } from '#internals/utils/lit.js';\nimport { createIdGenerator } from '#internals/utils/strings.js';\nimport { addThemingController } from '#theming/theming-controller.js';\nimport type { CalendarSelection } from '../calendar/types.js';\nimport type { DatePart } from '../date-time-input/date-part.js';\nimport IgcDateTimeInputComponent from '../date-time-input/date-time-input.js';\nimport type { RangeTextSelectMode, SelectionRangeDirection } from '../types.js';\nimport IgcValidationContainerComponent from '../validation-container/validation-container.js';\nimport {\n IgcDatePickerBaseComponent,\n type IgcPickerBaseEventMap,\n pickerDependencies,\n} from './date-picker.base.js';\nimport { styles } from './themes/date-picker.base.css.js';\nimport { styles as shared } from './themes/shared/date-picker.common.css.js';\nimport { all } from './themes/themes.js';\nimport { datePickerValidators } from './validators.js';\n\nexport type IgcDatePickerComponentEventMap = IgcPickerBaseEventMap<Date>;\n\nconst nextId = createIdGenerator('date-picker');\nconst Slots = setSlots(\n 'prefix',\n 'suffix',\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 'calendar-icon',\n 'calendar-icon-open',\n 'actions'\n);\ntype DatePickerResourceStringsType = IDatePickerResourceStrings &\n ICalendarResourceStrings;\n\n/* blazorIndirectRender */\n/* blazorSupportsVisualChildren */\n/**\n * The date picker is a feature rich component used for entering a date through manual text input or\n * choosing date values from a calendar dialog that pops up.\n *\n * @element igc-date-picker\n *\n * @slot prefix - Renders content before the input.\n * @slot suffix - Renders content after the 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 calendar-icon - Renders the icon/content for the calendar picker.\n * @slot calendar-icon-open - Renders the icon/content for the picker in open state.\n * @slot actions - Renders content in the action part of the picker in open state.\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 label - The label wrapper that renders content above the target input.\n * @csspart container - The main wrapper that holds all main input elements.\n * @csspart input - The native input element.\n * @csspart prefix - The prefix wrapper.\n * @csspart suffix - The suffix wrapper.\n * @csspart calendar-icon - The calendar icon wrapper for closed state.\n * @csspart calendar-icon-open - The calendar icon wrapper for opened state.\n * @csspart clear-icon - The clear icon wrapper.\n * @csspart actions - The actions 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'\n)\n@shadowOptions({ delegatesFocus: true })\nexport default class IgcDatePickerComponent extends EventEmitterMixin<\n IgcDatePickerComponentEventMap,\n AbstractConstructor<IgcDatePickerBaseComponent<Date>>\n>(IgcDatePickerBaseComponent) {\n public static readonly tagName = 'igc-date-picker';\n public static styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(\n IgcDatePickerComponent,\n IgcDateTimeInputComponent,\n ...pickerDependencies\n );\n }\n\n //#region Private properties and state\n\n protected override get __validators() {\n return datePickerValidators;\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 IgcCalendarResourceStrings is changed to ICalendarResourceStrings\n */\n protected override readonly _i18nController = addI18nController<\n IgcCalendarResourceStrings | DatePickerResourceStringsType\n >(this, {\n defaultEN: Object.assign(\n {},\n DatePickerResourceStringsEN,\n CalendarResourceStringsEN\n ),\n resourceMap: datePickerResourcesMap,\n });\n\n protected override readonly _formValue = createFormValueState(this, {\n initialValue: null,\n transformers: FormValueDateTimeTransformers,\n });\n\n @query(IgcDateTimeInputComponent.tagName)\n private readonly _input!: IgcDateTimeInputComponent;\n\n //#endregion\n\n //#region Base class hooks\n\n protected override get _value(): Date | null {\n return this.value;\n }\n\n protected override set _value(value: Date | null) {\n this.value = value;\n }\n\n protected override get _hasValue(): boolean {\n return this.value !== null;\n }\n\n protected override get _calendarSelection(): CalendarSelection {\n return 'single';\n }\n\n protected override get _calendarValue(): Date | null {\n return this.value;\n }\n\n protected override get _selectDateLabel(): string | undefined {\n return this.resourceStrings.calendar_select_date;\n }\n\n protected override get _calendarIconTitle(): string | undefined {\n return this.value\n ? this.resourceStrings.date_picker_change_date\n : this.resourceStrings.date_picker_choose_date;\n }\n\n protected override get _dialogLabel(): string | undefined {\n return this._calendarIconTitle;\n }\n\n protected override get _defaultDisplayFormat(): string | undefined {\n return this._input?.displayFormat;\n }\n\n protected override get _defaultInputFormat(): string | undefined {\n return this._input?.inputFormat;\n }\n\n protected override get _projectionTarget() {\n return this._input ?? null;\n }\n\n protected override _focusInput(): void {\n this._input.focus();\n }\n\n protected override _focusAndSelectInput(): void {\n this._input.focus();\n this._input.select();\n }\n\n protected override _syncCalendarOnToggle(): void {\n this._setCalendarActiveDate(this.value);\n }\n\n protected override _clearEditors(): void {\n this._input?.clear();\n }\n\n protected override _valueFromCalendarSelection(dates: Date[]): Date | null {\n return firstOf(dates) ?? null;\n }\n\n /**\n * A committed edit in the input already emits `igcChange` on its own, so only a\n * value which the picker itself has changed is left to notify about here.\n */\n protected override _onBlur(): void {\n if (this._isEditorReadOnly) {\n this._emitChangeIfDirty();\n }\n }\n\n protected override _onDialogClosing(): void {\n this._oldValue = this.value;\n }\n\n //#endregion\n\n //#region Public properties and attributes\n\n /* @tsTwoWayProperty(true, \"igcChange\", \"detail\", false) */\n /**\n * The value of the picker.\n *\n * Only ever holds a committed value. While the user is typing in the input, the\n * intermediate state stays in the editor and is committed - together with an\n * `igcChange` event - when the edit is committed on blur. Use the `igcInput` event\n * to observe the value as it is being typed.\n *\n * @attr\n */\n @property({ converter: convertToDate })\n public set value(value: Date | string | null | undefined) {\n this._formValue.setValueAndFormState(value as Date | null);\n }\n\n public get value(): Date | null {\n return this._formValue.value;\n }\n\n /**\n * The placeholder text of the control.\n * @attr\n */\n @property()\n public placeholder!: string;\n\n /**\n * The resource strings for localization.\n */\n @property({ attribute: false })\n public set resourceStrings(\n value: IgcCalendarResourceStrings | DatePickerResourceStringsType\n ) {\n this._i18nController.resourceStrings = value;\n }\n\n public get resourceStrings(): IgcCalendarResourceStrings &\n DatePickerResourceStringsType {\n return this._i18nController.resourceStrings;\n }\n\n //#endregion\n\n //#region Event handlers\n\n protected _handleInputChangeEvent(event: CustomEvent<Date>): void {\n event.stopPropagation();\n\n this._commitValue(\n (event.target as IgcDateTimeInputComponent).value,\n 'igcChange'\n );\n }\n\n protected _handleInputEvent(event: CustomEvent<Date>): void {\n event.stopPropagation();\n\n this._setTouchedState();\n\n if (this.nonEditable) {\n event.preventDefault();\n return;\n }\n\n const draft = (event.target as IgcDateTimeInputComponent)._uncommittedValue;\n\n this._calendar.activeDate = draft ?? this._calendar.activeDate;\n this.emitEvent('igcInput', { detail: draft });\n }\n\n //#endregion\n\n //#region Form associated overrides\n\n protected override formResetCallback(): void {\n super.formResetCallback();\n\n // The shadow boundary keeps the inner editor out of the outer form, so the\n // browser never resets it. It runs its own constraint validation against the\n // forwarded `required`, `min` and `max`, so a touched editor would keep its\n // invalid styles after a form reset.\n this._input?.['formResetCallback']();\n }\n\n //#endregion\n\n //#region Public methods\n\n /** Increments the passed in date part */\n public stepUp(datePart?: DatePart, delta?: number): void {\n this._input.stepUp(datePart, delta);\n }\n\n /** Decrements the passed in date part */\n public stepDown(datePart?: DatePart, delta?: number): void {\n this._input.stepDown(datePart, delta);\n }\n\n /** Selects the text in the input of the component */\n public select(): void {\n this._input.select();\n }\n\n /* blazorSuppress */\n /** Sets the text selection range in the input of the component */\n public setSelectionRange(\n start: number,\n end: number,\n direction?: SelectionRangeDirection\n ): void {\n this._input.setSelectionRange(start, end, direction);\n }\n\n /* blazorSuppress */\n /* Replaces the selected text in the input and re-applies the mask */\n public setRangeText(\n replacement: string,\n start: number,\n end: number,\n mode?: RangeTextSelectMode\n ): void {\n this._input.setRangeText(replacement, start, end, mode);\n this.value = this._input.value;\n }\n\n //#endregion\n\n //#region Render methods\n\n private _renderLabel(id: string) {\n const isDisabled = this._isDropDown || this.readOnly;\n\n return this.label\n ? html`\n <label\n part=\"label\"\n for=${id}\n @click=${bindIf(!isDisabled, this._handleAnchorClick)}\n >\n ${this.label}\n </label>\n `\n : nothing;\n }\n\n protected _renderInput(id: string) {\n const format = getDateTimeFormat(this._displayFormat);\n const hasClickHandler = !(this._isDropDown || this.readOnly);\n\n return html`\n <igc-date-time-input\n id=${id}\n label=${bindIf(this._isMaterial, this.label)}\n input-format=${ifDefined(this._inputFormat)}\n display-format=${ifDefined(format)}\n ?disabled=${this.disabled}\n ?readonly=${this._isEditorReadOnly}\n ?required=${this.required}\n .value=${this.value}\n .locale=${this.locale}\n .prompt=${this.prompt}\n .outlined=${this.outlined}\n .placeholder=${this.placeholder}\n .min=${this.min}\n .max=${this.max}\n .invalid=${this.invalid}\n @igcChange=${this._handleInputChangeEvent}\n @igcInput=${this._handleInputEvent}\n @keydown=${this._handleEnterKeydown}\n @click=${bindIf(hasClickHandler, this._handleInputClick)}\n exportparts=\"container, input, label, prefix, suffix\"\n >\n ${this._renderEditorSlots()}\n </igc-date-time-input>\n `;\n }\n\n protected override render(): TemplateResult {\n const id = this.id || this._inputId;\n\n return html`\n ${this._isMaterial ? nothing : this._renderLabel(id)}\n ${this._renderInput(id)} ${this._renderPicker(id)}\n ${IgcValidationContainerComponent.create(this)}\n `;\n }\n\n //#endregion\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-date-picker': IgcDatePickerComponent;\n }\n}\n"]}
|
|
@@ -51,8 +51,6 @@ export default class IgcDateRangeInputComponent extends IgcDateRangeInputCompone
|
|
|
51
51
|
stepUp(datePart?: DateRangePart, delta?: number): void;
|
|
52
52
|
/** Decrements a date/time portion. */
|
|
53
53
|
stepDown(datePart?: DateRangePart, delta?: number): void;
|
|
54
|
-
hasDateParts(): boolean;
|
|
55
|
-
hasTimeParts(): boolean;
|
|
56
54
|
}
|
|
57
55
|
declare global {
|
|
58
56
|
interface HTMLElementTagNameMap {
|
|
@@ -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":"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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 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" | "custom-error" | "range-overflow" | "range-underflow" | "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>;
|