igniteui-webcomponents 6.3.2 → 6.3.3
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 +8 -0
- package/components/calendar/helpers.d.ts +1 -0
- package/components/calendar/helpers.js +18 -1
- package/components/calendar/helpers.js.map +1 -1
- package/components/chat/chat-message.js +1 -1
- package/components/chat/chat-message.js.map +1 -1
- package/components/chat/chat-state.d.ts +1 -1
- package/components/chat/chat-state.js.map +1 -1
- package/components/date-picker/date-picker.d.ts +8 -11
- package/components/date-picker/date-picker.js +51 -62
- package/components/date-picker/date-picker.js.map +1 -1
- package/components/date-range-picker/date-range-picker.d.ts +1 -1
- package/components/date-range-picker/date-range-picker.js +3 -19
- package/components/date-range-picker/date-range-picker.js.map +1 -1
- package/custom-elements.json +60 -45
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-range-picker.js","sourceRoot":"","sources":["../../../src/components/date-range-picker/date-range-picker.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, nothing, type TemplateResult } from 'lit';\nimport {\n property,\n query,\n queryAll,\n queryAssignedElements,\n state,\n} from 'lit/decorators.js';\nimport { cache } from 'lit/directives/cache.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { live } from 'lit/directives/live.js';\nimport { addThemingController } from '../../theming/theming-controller.js';\nimport IgcCalendarComponent, { focusActiveDate } from '../calendar/calendar.js';\nimport { convertToDate, convertToDateRange } from '../calendar/helpers.js';\nimport { CalendarDay } from '../calendar/model.js';\nimport {\n type DateRangeDescriptor,\n DateRangeType,\n type WeekDays,\n} from '../calendar/types.js';\nimport {\n addKeybindings,\n altKey,\n arrowDown,\n arrowUp,\n escapeKey,\n} from '../common/controllers/key-bindings.js';\nimport { addRootClickController } from '../common/controllers/root-click.js';\nimport { blazorAdditionalDependencies } from '../common/decorators/blazorAdditionalDependencies.js';\nimport { shadowOptions } from '../common/decorators/shadow-options.js';\nimport { watch } from '../common/decorators/watch.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport { IgcDateRangePickerResourceStringsEN } from '../common/i18n/date-range-picker.resources.js';\nimport { IgcBaseComboBoxLikeComponent } from '../common/mixins/combo-box.js';\nimport type { AbstractConstructor } from '../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../common/mixins/event-emitter.js';\nimport { FormAssociatedRequiredMixin } from '../common/mixins/forms/associated-required.js';\nimport { FormValueDateRangeTransformers } from '../common/mixins/forms/form-transformers.js';\nimport { createFormValueState } from '../common/mixins/forms/form-value.js';\nimport {\n addSafeEventListener,\n asNumber,\n clamp,\n createCounter,\n equal,\n findElementFromEventPath,\n isEmpty,\n} from '../common/util.js';\nimport IgcDateTimeInputComponent from '../date-time-input/date-time-input.js';\nimport { DateTimeUtil } from '../date-time-input/date-util.js';\nimport IgcDialogComponent from '../dialog/dialog.js';\nimport IgcFocusTrapComponent from '../focus-trap/focus-trap.js';\nimport IgcIconComponent from '../icon/icon.js';\nimport IgcInputComponent from '../input/input.js';\nimport IgcPopoverComponent from '../popover/popover.js';\nimport type { ContentOrientation, PickerMode } from '../types.js';\nimport IgcValidationContainerComponent from '../validation-container/validation-container.js';\nimport { styles } from './date-range-picker.base.css.js';\nimport IgcPredefinedRangesAreaComponent from './predefined-ranges-area.js';\nimport { styles as shared } from './themes/shared/date-range-picker.common.css.js';\nimport { all } from './themes/themes.js';\nimport { dateRangeValidators, isCompleteDateRange } from './validators.js';\n\nexport interface DateRangeValue {\n start: Date | null;\n end: Date | null;\n}\n\nexport interface CustomDateRange {\n label: string;\n dateRange: DateRangeValue;\n}\nexport interface IgcDateRangePickerComponentEventMap {\n igcOpening: CustomEvent<void>;\n igcOpened: CustomEvent<void>;\n igcClosing: CustomEvent<void>;\n igcClosed: CustomEvent<void>;\n igcChange: CustomEvent<DateRangeValue | null>;\n igcInput: CustomEvent<DateRangeValue | null>;\n}\n\n/* blazorIndirectRender */\n/* blazorSupportsVisualChildren */\n/**\n * The igc-date-range-picker allows the user to select a range of dates.\n *\n * @element igc-date-range-picker\n *\n * @slot prefix - Renders content before the input (single input).\n * @slot prefix-start - Renders content before the start input (two inputs).\n * @slot prefix-end - Renders content before the end input (two inputs).\n * @slot suffix - Renders content after the input (single input).\n * @slot suffix-start - Renders content after the start input (single input).\n * @slot suffix-end - Renders content after the end input (single input).\n * @slot helper-text - Renders content below the input.\n * @slot bad-input - Renders content when the value is in the disabledDates ranges.\n * @slot value-missing - Renders content when the required validation fails.\n * @slot range-overflow - Renders content when the max validation fails.\n * @slot range-underflow - Renders content when the min validation fails.\n * @slot custom-error - Renders content when setCustomValidity(message) is set.\n * @slot invalid - Renders content when the component is in invalid state (validity.valid = false).\n * @slot title - Renders content in the calendar title.\n * @slot header-date - Renders content instead of the current date/range in the calendar header.\n * @slot clear-icon - Renders a clear icon template.\n * @slot clear-icon-start - Renders a clear icon template for the start input (two inputs).\n * @slot clear-icon-end - Renders a clear icon template for the end input (two inputs).\n * @slot calendar-icon - Renders the icon/content for the calendar picker.\n * @slot calendar-icon-start - Renders the icon/content for the calendar picker for the start input (two inputs).\n * @slot calendar-icon-end - Renders the icon/content for the calendar picker for the end input (two inputs).\n * @slot calendar-icon-open - Renders the icon/content for the picker in open state.\n * @slot calendar-icon-open-start - Renders the icon/content for the picker in open state for the start input (two inputs).\n * @slot calendar-icon-open-end - Renders the icon/content for the picker in open state for the end input (two inputs).\n * @slot actions - Renders content in the action part of the picker in open state.\n * @slot separator - Renders the separator element between the two inputs.\n *\n * @fires igcOpening - Emitted just before the calendar dropdown is shown.\n * @fires igcOpened - Emitted after the calendar dropdown is shown.\n * @fires igcClosing - Emitted just before the calendar dropdown is hidden.\n * @fires igcClosed - Emitted after the calendar dropdown is hidden.\n * @fires igcChange - Emitted when the user modifies and commits the elements's value.\n * @fires igcInput - Emitted when when the user types in the element.\n *\n * @csspart separator - The separator element between the two inputs.\n * @csspart ranges - The wrapper that renders the custom and predefined ranges.\n * @csspart label - The label wrapper that renders content above the target input.\n * @csspart calendar-icon - The calendar icon wrapper for closed state (single input).\n * @csspart calendar-icon-start - The calendar icon wrapper for closed state for the start input (two inputs).\n * @csspart calendar-icon-end - The calendar icon wrapper for closed state for the end input (two inputs).\n * @csspart calendar-icon-open - The calendar icon wrapper for opened state (single input).\n * @csspart calendar-icon-open-start - The calendar icon wrapper for opened state for the start input (two inputs).\n * @csspart calendar-icon-open-end - The calendar icon wrapper for opened state for the end input (two inputs).\n * @csspart clear-icon - The clear icon wrapper (single input).\n * @csspart clear-icon-start - The clear icon wrapper for the start input (two inputs).\n * @csspart clear-icon-end - The clear icon wrapper for the end input (two inputs).\n * @csspart actions - The wrapper for the custom actions area.\n * @csspart clear-icon - The clear icon wrapper.\n * @csspart input - The native input element.\n * @csspart prefix - The prefix wrapper.\n * @csspart suffix - The suffix wrapper.\n * @csspart helper-text - The helper-text wrapper that renders content below the target input.\n * @csspart header - The calendar header element.\n * @csspart header-title - The calendar header title element.\n * @csspart header-date - The calendar header date element.\n * @csspart calendar-content - The calendar content element which contains the views and navigation elements.\n * @csspart navigation - The calendar navigation container element.\n * @csspart months-navigation - The calendar months navigation button element.\n * @csspart years-navigation - The calendar years navigation button element.\n * @csspart years-range - The calendar years range element.\n * @csspart navigation-buttons - The calendar navigation buttons container.\n * @csspart navigation-button - The calendar previous/next navigation button.\n * @csspart days-view-container - The calendar days view container element.\n * @csspart days-view - The calendar days view element.\n * @csspart months-view - The calendar months view element.\n * @csspart years-view - The calendar years view element.\n * @csspart days-row - The calendar days row element.\n * @csspart calendar-label - The calendar week header label element.\n * @csspart week-number - The calendar week number element.\n * @csspart week-number-inner - The calendar week number inner element.\n * @csspart date - The calendar date element.\n * @csspart date-inner - The calendar date inner element.\n * @csspart first - The calendar first selected date element in range selection.\n * @csspart last - The calendar last selected date element in range selection.\n * @csspart inactive - The calendar inactive date element.\n * @csspart hidden - The calendar hidden date element.\n * @csspart weekend - The calendar weekend date element.\n * @csspart range - The calendar range selected element.\n * @csspart special - The calendar special date element.\n * @csspart disabled - The calendar disabled date element.\n * @csspart single - The calendar single selected date element.\n * @csspart preview - The calendar range selection preview date element.\n * @csspart month - The calendar month element.\n * @csspart month-inner - The calendar month inner element.\n * @csspart year - The calendar year element.\n * @csspart year-inner - The calendar year inner element.\n * @csspart selected - The calendar selected state for element(s). Applies to date, month and year elements.\n * @csspart current - The calendar current state for element(s). Applies to date, month and year elements.\n */\n@blazorAdditionalDependencies(\n 'IgcCalendarComponent, IgcDateTimeInputComponent, IgcDialogComponent, IgcIconComponent, IgcChipComponent, IgcInputComponent'\n)\n@shadowOptions({ delegatesFocus: true })\nexport default class IgcDateRangePickerComponent extends FormAssociatedRequiredMixin(\n EventEmitterMixin<\n IgcDateRangePickerComponentEventMap,\n AbstractConstructor<IgcBaseComboBoxLikeComponent>\n >(IgcBaseComboBoxLikeComponent)\n) {\n public static readonly tagName = 'igc-date-range-picker';\n public static styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(\n IgcDateRangePickerComponent,\n IgcCalendarComponent,\n IgcDateTimeInputComponent,\n IgcInputComponent,\n IgcFocusTrapComponent,\n IgcIconComponent,\n IgcPopoverComponent,\n IgcDialogComponent,\n IgcValidationContainerComponent,\n IgcPredefinedRangesAreaComponent\n );\n }\n\n // #region Internal state & properties\n\n private static readonly _increment = createCounter();\n\n protected readonly _inputId = `date-range-picker-${IgcDateRangePickerComponent._increment()}`;\n\n private readonly _themes = addThemingController(this, all);\n\n protected override readonly _formValue = createFormValueState(this, {\n initialValue: { start: null, end: null },\n transformers: FormValueDateRangeTransformers,\n });\n\n protected override readonly _rootClickController = addRootClickController(\n this,\n {\n onHide: this._handleClosing,\n }\n );\n\n private _activeDate: Date | null = null;\n private _min: Date | null = null;\n private _max: Date | null = null;\n private _disabledDates: DateRangeDescriptor[] = [];\n private _dateConstraints: DateRangeDescriptor[] = [];\n private _displayFormat?: string;\n private _inputFormat?: string;\n private _placeholder?: string;\n private _defaultMask!: string;\n private _oldValue: DateRangeValue | null = null;\n private _visibleMonths = 2;\n\n protected override get __validators() {\n return dateRangeValidators;\n }\n\n private get _isDropDown(): boolean {\n return this.mode === 'dropdown';\n }\n\n private get _firstDefinedInRange(): Date | null {\n return this.value?.start ?? this.value?.end ?? null;\n }\n\n @state()\n private _maskedRangeValue = '';\n\n @queryAll(IgcDateTimeInputComponent.tagName)\n private readonly _inputs!: IgcDateTimeInputComponent[];\n\n @query(IgcInputComponent.tagName)\n private readonly _input!: IgcInputComponent;\n\n @query(IgcCalendarComponent.tagName)\n private readonly _calendar!: IgcCalendarComponent;\n\n @queryAssignedElements({ slot: 'prefix' })\n private readonly _prefixes!: HTMLElement[];\n\n @queryAssignedElements({ slot: 'prefix-start' })\n private readonly _startPrefixes!: HTMLElement[];\n\n @queryAssignedElements({ slot: 'prefix-end' })\n private readonly _endPrefixes!: HTMLElement[];\n\n @queryAssignedElements({ slot: 'suffix' })\n private readonly _suffixes!: HTMLElement[];\n\n @queryAssignedElements({ slot: 'suffix-start' })\n private readonly _startSuffixes!: HTMLElement[];\n\n @queryAssignedElements({ slot: 'suffix-end' })\n private readonly _endSuffixes!: HTMLElement[];\n\n @queryAssignedElements({ slot: 'actions' })\n private readonly _actions!: HTMLElement[];\n\n @queryAssignedElements({ slot: 'header-date' })\n private readonly _headerDateSlotItems!: HTMLElement[];\n\n // #endregion\n\n // #region General properties\n\n @property({ converter: convertToDateRange })\n public set value(value: DateRangeValue | string | null | undefined) {\n this._formValue.setValueAndFormState(convertToDateRange(value));\n this._setCalendarRangeValues();\n this._updateMaskedRangeValue();\n }\n\n public get value(): DateRangeValue | null {\n return this._formValue.value;\n }\n /**\n * Renders chips with custom ranges based on the elements of the array.\n */\n @property({ attribute: false })\n public customRanges: CustomDateRange[] = [];\n\n /**\n * Determines whether the calendar is opened in a dropdown or a modal dialog\n * @attr mode\n */\n @property()\n public mode: PickerMode = 'dropdown';\n\n /**\n * Use two inputs to display the date range values. Makes the input editable in dropdown mode.\n * @attr use-two-inputs\n */\n @property({ type: Boolean, reflect: true, attribute: 'use-two-inputs' })\n public useTwoInputs = false;\n\n /**\n * Whether the control will show chips with predefined ranges.\n * @attr\n */\n @property({\n type: Boolean,\n reflect: true,\n attribute: 'use-predefined-ranges',\n })\n public usePredefinedRanges = false;\n\n /**\n * The locale settings used to display the value.\n * @attr\n */\n @property()\n public locale = 'en';\n\n /** The resource strings of the date range picker. */\n @property({ attribute: false })\n public resourceStrings = IgcDateRangePickerResourceStringsEN;\n\n // #endregion\n\n // #region Input-related properties\n\n /**\n * Makes the control a readonly field.\n * @attr readonly\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 */\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 */\n @property({ type: Boolean, reflect: true })\n public outlined = false;\n\n /**\n * The label of the control (single input).\n * @attr label\n */\n @property()\n public label!: string;\n\n /**\n * The label attribute of the start input.\n * @attr label-start\n */\n @property({ attribute: 'label-start' })\n public labelStart = '';\n\n /**\n * The label attribute of the end input.\n * @attr label-end\n */\n @property({ attribute: 'label-end' })\n public labelEnd = '';\n\n /**\n * The placeholder attribute of the control (single input).\n * @attr\n */\n @property()\n public set placeholder(value: string) {\n this._placeholder = value;\n }\n\n public get placeholder(): string {\n const rangePlaceholder = `${this.inputFormat} - ${this.inputFormat}`;\n return this._placeholder ?? rangePlaceholder;\n }\n\n /**\n * The placeholder attribute of the start input.\n * @attr placeholder-start\n */\n @property({ attribute: 'placeholder-start' })\n public placeholderStart = '';\n\n /**\n * The placeholder attribute of the end input.\n * @attr placeholder-end\n */\n @property({ attribute: 'placeholder-end' })\n public placeholderEnd = '';\n\n /** The prompt symbol to use for unfilled parts of the mask.\n * @attr\n */\n @property()\n public prompt = '_';\n\n /**\n * Format to display the value in when not editing.\n * Defaults to the input 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 this._updateMaskedRangeValue();\n }\n\n public get displayFormat(): string {\n return this._displayFormat ?? this.inputFormat;\n }\n\n /**\n * The date format to apply on the inputs.\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 this._updateMaskedRangeValue();\n }\n\n public get inputFormat(): string {\n return this._inputFormat ?? this._defaultMask;\n }\n\n // #endregion\n\n // #region Validation properties\n\n /**\n * The minimum value required for the date range 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 date range 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 public set disabledDates(dates: DateRangeDescriptor[]) {\n this._disabledDates = dates;\n this._setDateConstraints();\n this._validate();\n }\n\n public get disabledDates() {\n return this._disabledDates as DateRangeDescriptor[];\n }\n\n // #endregion\n\n // #region Calendar properties\n\n /**\n * The number of months displayed in the calendar.\n * @attr visible-months\n */\n @property({ type: Number, attribute: 'visible-months' })\n public get visibleMonths(): number {\n return this._visibleMonths;\n }\n\n public set visibleMonths(value: number) {\n this._visibleMonths = clamp(asNumber(value, 2), 1, 2);\n }\n /**\n * The orientation of the calendar header.\n * @attr header-orientation\n */\n @property({ attribute: 'header-orientation', reflect: true })\n public headerOrientation: ContentOrientation = 'horizontal';\n\n /**\n * The orientation of the multiple months displayed in the calendar's days view.\n * @attr\n */\n @property()\n public orientation: ContentOrientation = 'horizontal';\n\n /**\n * Determines whether the calendar hides its header.\n * @attr hide-header\n */\n @property({ type: Boolean, reflect: true, attribute: 'hide-header' })\n public hideHeader = false;\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 * Whether to show the number of the week in the calendar.\n * @attr show-week-numbers\n */\n @property({ type: Boolean, reflect: true, attribute: 'show-week-numbers' })\n public showWeekNumbers = false;\n\n /**\n * Controls the visibility of the dates that do not belong to the current month.\n * @attr hide-outside-days\n */\n @property({ type: Boolean, reflect: true, attribute: 'hide-outside-days' })\n public hideOutsideDays = false;\n\n /** Gets/sets special dates. */\n @property({ attribute: false })\n public specialDates!: DateRangeDescriptor[];\n\n /** Sets the start day of the week for the calendar. */\n @property({ attribute: 'week-start' })\n public weekStart: WeekDays = 'sunday';\n\n // #endregion\n\n // #region Life-cycle hooks\n\n constructor() {\n super();\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 createRenderRoot(): HTMLElement | DocumentFragment {\n const root = super.createRenderRoot();\n root.addEventListener('slotchange', () => this.requestUpdate());\n return root;\n }\n\n protected override firstUpdated() {\n this._setCalendarRangeValues();\n this._delegateInputsValidity();\n }\n\n protected override formResetCallback() {\n super.formResetCallback();\n this._setCalendarRangeValues();\n this._updateMaskedRangeValue();\n }\n\n // #endregion\n\n // #region Public API methods\n\n /** Clears the input parts of the component of any user input */\n public clear() {\n this._oldValue = this.value;\n this.value = null;\n if (this.useTwoInputs) {\n this._inputs[0]?.clear();\n this._inputs[1]?.clear();\n }\n }\n\n /** Selects a date range value in the picker */\n public select(value: DateRangeValue | null): void {\n this._select(value);\n }\n\n // #endregion\n\n // #region Observed properties\n\n @watch('open')\n protected _openChange() {\n this._rootClickController.update();\n\n if (this.open) {\n this._oldValue = this.value;\n }\n }\n\n @watch('locale')\n protected _updateDefaultMask(): void {\n this._defaultMask = DateTimeUtil.getDefaultMask(this.locale);\n this._updateMaskedRangeValue();\n }\n\n @watch('useTwoInputs')\n protected async _updateDateRange() {\n await this._calendar?.updateComplete;\n this._updateMaskedRangeValue();\n this._setCalendarRangeValues();\n this._delegateInputsValidity();\n }\n\n @watch('mode')\n protected async _modeChanged() {\n if (!this._isDropDown) {\n this.keepOpenOnSelect = true;\n }\n await this._calendar?.updateComplete;\n this._setCalendarRangeValues();\n }\n\n // #endregion\n\n // #region Event handlers\n\n protected _handleClosing() {\n this._hide(true);\n }\n\n protected _handleDialogClosing(event: Event) {\n event.stopPropagation();\n if (!equal(this.value, this._oldValue)) {\n this.emitEvent('igcChange', { detail: this.value });\n this._oldValue = this.value;\n }\n this._hide(true);\n }\n\n protected _handleDialogClosed(event: Event) {\n event.stopPropagation();\n }\n\n protected _dialogCancel() {\n this._revertValue();\n this._hide(true);\n }\n\n protected _dialogDone() {\n if (!equal(this.value, this._oldValue)) {\n this.emitEvent('igcChange', { detail: this.value });\n this._oldValue = this.value;\n }\n this._hide(true);\n }\n\n protected _handleInputEvent(event: CustomEvent<Date | null>) {\n event.stopPropagation();\n this._setTouchedState();\n\n if (this.nonEditable) {\n event.preventDefault();\n return;\n }\n const input = event.target as IgcDateTimeInputComponent;\n const newValue = input.value ? CalendarDay.from(input.value).native : null;\n\n this.value = this._getUpdatedDateRange(input, newValue);\n this._calendar.activeDate =\n newValue ?? this._firstDefinedInRange ?? this._calendar.activeDate;\n\n this.emitEvent('igcInput', { detail: this.value });\n }\n\n protected _handleInputChangeEvent(event: CustomEvent<Date | null>) {\n event.stopPropagation();\n this._setTouchedState();\n\n const input = event.target as IgcDateTimeInputComponent;\n const newValue = input.value ? CalendarDay.from(input.value).native : null;\n\n const updatedRange = this._getUpdatedDateRange(input, newValue);\n const { start, end } = this._swapDates(updatedRange);\n\n this._setCalendarRangeValues();\n this.value = { start, end };\n this.emitEvent('igcChange', { detail: this.value });\n }\n\n protected _handleFocusOut({ relatedTarget }: FocusEvent) {\n if (!this.contains(relatedTarget as Node)) {\n this._handleBlur();\n\n const isSameValue = equal(this.value, this._oldValue);\n if (!(this.useTwoInputs || this.readOnly || isSameValue)) {\n this.emitEvent('igcChange', { detail: this.value });\n this._oldValue = this.value;\n }\n }\n }\n\n protected _handleInputClick(event: Event) {\n if (findElementFromEventPath('input', event)) {\n // Open only if the click originates from the underlying input\n this.handleAnchorClick();\n }\n }\n\n protected async _onEscapeKey() {\n if (await this._hide(true)) {\n if (!this._isDropDown) {\n this._revertValue();\n }\n this.useTwoInputs ? this._inputs[0].focus() : this._input.focus();\n }\n }\n\n protected override async handleAnchorClick() {\n super.handleAnchorClick();\n this._setCalendarActiveDateAndViewIndex();\n await this.updateComplete;\n this._calendar[focusActiveDate]({ preventScroll: true });\n }\n\n protected async _handleCalendarChangeEvent(event: CustomEvent<Date>) {\n event.stopPropagation();\n this._setTouchedState();\n\n if (this.readOnly) {\n // Wait till the calendar finishes updating and then restore the current value from the date-picker.\n await this._calendar.updateComplete;\n const dateRange = [this.value?.start, this.value?.end];\n this._calendar.values = dateRange?.map((d) => d ?? '');\n return;\n }\n\n const rangeValues = (event.target as IgcCalendarComponent).values;\n this.value = {\n start: rangeValues[0],\n end: rangeValues[rangeValues.length - 1],\n };\n\n if (this._isDropDown) {\n this.emitEvent('igcChange', { detail: this.value });\n }\n\n this._shouldCloseCalendarDropdown();\n }\n\n protected _handleCalendarIconSlotPointerDown(event: PointerEvent) {\n event.preventDefault();\n }\n\n // #endregion\n\n // #region Private methods\n\n protected _revertValue() {\n this.value = this._oldValue;\n }\n\n /**\n * Sets the active date of the calendar based on current selection, if any,\n * or its current active date and its active day view index to always be the first one.\n */\n private _setCalendarActiveDateAndViewIndex() {\n const activeDaysViewIndex = 'activeDaysViewIndex';\n\n this._calendar.activeDate =\n this._firstDefinedInRange ?? this._calendar.activeDate;\n this._calendar[activeDaysViewIndex] = 0;\n }\n\n private _getUpdatedDateRange(\n input: IgcDateTimeInputComponent,\n newValue: Date | null\n ): DateRangeValue {\n const { start = null, end = null } = this.value ?? {};\n\n return input === this._inputs[0]\n ? { start: newValue, end }\n : { start, end: newValue };\n }\n\n // Delegates the validity methods of internal input elements\n // to the component's own validation logic specific to date-range values.\n // Checks for dirty state to avoid unnecessary validation on form reset,\n // caused by the inputs value being set.\n private _delegateInputsValidity() {\n const inputs = this.useTwoInputs ? this._inputs : [this._input];\n\n inputs.forEach((input) => {\n input.checkValidity = () =>\n !this._pristine ? this.checkValidity() : true;\n input.reportValidity = () =>\n !this._pristine ? this.reportValidity() : true;\n });\n }\n\n private _setDateConstraints() {\n const dates: DateRangeDescriptor[] = [];\n if (this._min) {\n dates.push({\n type: DateRangeType.Before,\n dateRange: [this._min],\n });\n }\n\n if (this._max) {\n dates.push({\n type: DateRangeType.After,\n dateRange: [this._max],\n });\n }\n\n if (!isEmpty(this.disabledDates)) {\n dates.push(...this.disabledDates);\n }\n\n this._dateConstraints = isEmpty(dates) ? [] : dates;\n }\n\n private _updateMaskedRangeValue() {\n if (this.useTwoInputs) {\n return;\n }\n\n if (!isCompleteDateRange(this.value)) {\n this._maskedRangeValue = '';\n return;\n }\n\n const { formatDate, predefinedToDateDisplayFormat } = DateTimeUtil;\n\n const { start, end } = this.value;\n const format =\n predefinedToDateDisplayFormat(this._displayFormat) ??\n this._displayFormat ??\n this.inputFormat;\n\n this._maskedRangeValue = format\n ? `${formatDate(start, this.locale, format)} - ${formatDate(end, this.locale, format)}`\n : `${start.toLocaleDateString()} - ${end.toLocaleDateString()}`;\n }\n\n private _setCalendarRangeValues() {\n if (!this._calendar) {\n return;\n }\n\n if (isCompleteDateRange(this.value)) {\n this._calendar.values =\n CalendarDay.compare(this.value.start, this.value.end) === 0\n ? [this.value.start]\n : [this.value.start, this.value.end];\n this._calendar.activeDate = this._firstDefinedInRange;\n return;\n }\n\n this._calendar.values = this._firstDefinedInRange\n ? [this._firstDefinedInRange]\n : null;\n }\n\n private _swapDates(range: DateRangeValue): DateRangeValue {\n return isCompleteDateRange(range) &&\n CalendarDay.compare(range.start, range.end) >= 1\n ? { start: range.end, end: range.start }\n : range;\n }\n\n private async _shouldCloseCalendarDropdown() {\n if (\n !this.keepOpenOnSelect &&\n this._calendar.values.length > 1 &&\n (await this._hide(true))\n ) {\n return this.useTwoInputs ? this._inputs[0].select() : this._input.focus();\n }\n }\n\n private _select(value: DateRangeValue | null, emitEvent = false) {\n this.value = value;\n this._calendar.activeDate =\n this._firstDefinedInRange ?? this._calendar.activeDate;\n\n if (emitEvent) {\n this.emitEvent('igcChange', { detail: this.value });\n this._oldValue = this.value;\n this._hide(true);\n }\n }\n\n // #endregion\n\n // #region Rendering\n\n private _renderClearIcon(picker: DateRangePickerInput = 'start') {\n const clearIcon = this.useTwoInputs ? `clear-icon-${picker}` : 'clear-icon';\n return this._firstDefinedInRange\n ? html`\n <span\n slot=\"suffix\"\n part=${clearIcon}\n @click=${this.readOnly ? nothing : this.clear}\n >\n <slot name=${clearIcon}>\n <igc-icon\n name=\"input_clear\"\n collection=\"default\"\n aria-hidden=\"true\"\n ></igc-icon>\n </slot>\n </span>\n `\n : nothing;\n }\n\n private _renderCalendarIcon(picker: DateRangePickerInput = 'start') {\n const defaultIcon = html`\n <igc-icon name=\"today\" collection=\"default\" aria-hidden=\"true\"></igc-icon>\n `;\n\n const state = this.open ? 'calendar-icon-open' : 'calendar-icon';\n const calendarIcon = this.useTwoInputs ? `${state}-${picker}` : state;\n\n return html`\n <span\n slot=\"prefix\"\n part=${calendarIcon}\n @pointerdown=${this._handleCalendarIconSlotPointerDown}\n @click=${this.readOnly ? nothing : this.handleAnchorClick}\n >\n <slot name=${calendarIcon}>${defaultIcon}</slot>\n </span>\n `;\n }\n\n private _renderCalendarSlots() {\n if (this._isDropDown) {\n return nothing;\n }\n\n const hasHeaderDate = isEmpty(this._headerDateSlotItems)\n ? ''\n : 'header-date';\n\n return html`\n <slot name=\"title\" slot=\"title\">\n ${this.resourceStrings.selectDate}\n </slot>\n <slot name=\"header-date\" slot=${hasHeaderDate}></slot>\n `;\n }\n\n private _renderCalendar(id: string) {\n const hideHeader = this._isDropDown ? true : this.hideHeader;\n\n return html`\n <igc-calendar\n aria-labelledby=${id}\n role=\"dialog\"\n selection=\"range\"\n .inert=${!this.open || this.disabled}\n ?show-week-numbers=${this.showWeekNumbers}\n ?hide-outside-days=${this.hideOutsideDays}\n ?hide-header=${hideHeader}\n .activeDate=${this.activeDate ?? this._firstDefinedInRange}\n .headerOrientation=${this.headerOrientation}\n .orientation=${this.orientation}\n .visibleMonths=${this._visibleMonths}\n .disabledDates=${this._dateConstraints!}\n .specialDates=${this.specialDates}\n .weekStart=${this.weekStart}\n @igcChange=${this._handleCalendarChangeEvent}\n exportparts=\"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, label: calendar-label, 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\"\n >\n ${this._renderCalendarSlots()}\n </igc-calendar>\n `;\n }\n\n protected _renderActions() {\n const hasActions = !isEmpty(this._actions);\n const slot = this._isDropDown || hasActions ? undefined : 'footer';\n\n // If in dialog mode use the dialog footer slot\n return html`\n <div part=\"actions\" ?hidden=${!hasActions} slot=${ifDefined(slot)}>\n <slot name=\"actions\"></slot>\n </div>\n `;\n }\n\n protected _renderPredefinedRanges() {\n const hasRanges = this.usePredefinedRanges || !isEmpty(this.customRanges);\n\n return hasRanges\n ? html`\n <igc-predefined-ranges-area\n .usePredefinedRanges=${this.usePredefinedRanges}\n .customRanges=${this.customRanges}\n .resourceStrings=${this.resourceStrings}\n @igcRangeSelect=${({ detail }: CustomEvent<DateRangeValue>) =>\n this._select(detail, this._isDropDown)}\n >\n </igc-predefined-ranges-area>\n `\n : nothing;\n }\n\n protected _renderPicker(id: string) {\n const isIndigo = this._themes.theme === 'indigo';\n\n return this._isDropDown\n ? html`\n <igc-popover ?open=${this.open} anchor=${id} flip shift>\n <igc-focus-trap ?disabled=${!this.open || this.disabled}>\n ${this._renderCalendar(id)} ${this._renderPredefinedRanges()}\n ${this._renderActions()}\n </igc-focus-trap>\n </igc-popover>\n `\n : html`\n <igc-dialog\n aria-label=${ifDefined(this.resourceStrings.selectDate)}\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._renderCalendar(id)} ${this._renderActions()}\n ${this._renderPredefinedRanges()}\n <igc-button\n slot=\"footer\"\n @click=${this._dialogCancel}\n variant=${isIndigo ? 'outlined' : 'flat'}\n >${this.resourceStrings.cancel}</igc-button\n >\n <igc-button\n slot=\"footer\"\n @click=${this._dialogDone}\n variant=${isIndigo ? 'contained' : 'flat'}\n >${this.resourceStrings.done}</igc-button\n >\n </igc-dialog>\n `;\n }\n\n private _renderHelperText(): TemplateResult {\n return IgcValidationContainerComponent.create(this);\n }\n\n protected _renderInput(id: string, picker: DateRangePickerInput = 'start') {\n const readOnly = !this._isDropDown || this.readOnly || this.nonEditable;\n const placeholder =\n picker === 'start' ? this.placeholderStart : this.placeholderEnd;\n const label = picker === 'start' ? this.labelStart : this.labelEnd;\n const format = DateTimeUtil.predefinedToDateDisplayFormat(\n this._displayFormat!\n );\n const value = picker === 'start' ? this.value?.start : this.value?.end;\n\n const prefixes =\n picker === 'start' ? this._startPrefixes : this._endPrefixes;\n const suffixes =\n picker === 'start' ? this._startSuffixes : this._endSuffixes;\n const prefix = isEmpty(prefixes) ? undefined : 'prefix';\n const suffix = isEmpty(suffixes) ? undefined : 'suffix';\n\n return html`\n <igc-date-time-input\n id=${id}\n aria-haspopup=\"dialog\"\n input-format=${ifDefined(this._inputFormat)}\n display-format=${ifDefined(format)}\n ?disabled=${this.disabled}\n ?readonly=${readOnly}\n .value=${value ?? null}\n .locale=${live(this.locale)}\n .prompt=${this.prompt}\n .outlined=${this.outlined}\n .placeholder=${placeholder}\n .min=${this._min}\n .max=${this._max}\n label=${label}\n ?invalid=${live(this.invalid)}\n @igcChange=${this._handleInputChangeEvent}\n @igcInput=${this._handleInputEvent}\n @click=${this._isDropDown || this.readOnly\n ? nothing\n : this._handleInputClick}\n exportparts=\"input, label, prefix, suffix\"\n >\n ${this._renderCalendarIcon(picker)}\n <slot name=${`prefix-${picker}`} slot=${ifDefined(prefix)}></slot>\n ${this._renderClearIcon(picker)}\n <slot name=${`suffix-${picker}`} slot=${ifDefined(suffix)}></slot>\n </igc-date-time-input>\n `;\n }\n\n private _renderInputs(idStart: string, idEnd: string) {\n return html`\n <div part=\"inputs\">\n ${this._renderInput(idStart, 'start')}\n <div part=\"separator\">\n <slot name=\"separator\"> ${this.resourceStrings.separator} </slot>\n </div>\n ${this._renderInput(idEnd, 'end')}\n </div>\n ${this._renderPicker(idStart)} ${this._renderHelperText()}\n `;\n }\n\n private _renderSingleInput(id: string) {\n const prefix = isEmpty(this._prefixes) ? undefined : 'prefix';\n const suffix = isEmpty(this._suffixes) ? undefined : 'suffix';\n\n return html`\n <igc-input\n id=${id}\n aria-haspopup=\"dialog\"\n .value=${this._maskedRangeValue}\n label=${this.label}\n placeholder=${this.placeholder}\n ?readonly=${true}\n ?required=${this.required}\n .outlined=${this.outlined}\n ?invalid=${live(this.invalid)}\n .disabled=${this.disabled}\n @click=${this._isDropDown || this.readOnly\n ? nothing\n : this._handleInputClick}\n exportparts=\"input, label, prefix, suffix\"\n >\n ${this._renderCalendarIcon()}\n <slot name=\"prefix\" slot=${ifDefined(prefix)}></slot>\n ${this._renderClearIcon()}\n <slot name=\"suffix\" slot=${ifDefined(suffix)}></slot>\n </igc-input>\n ${this._renderHelperText()} ${this._renderPicker(id)}\n `;\n }\n\n protected override render() {\n const id = this.id || this._inputId;\n\n return html`${cache(\n !this.useTwoInputs\n ? this._renderSingleInput(id)\n : this._renderInputs(`${id}-start`, `${id}-end`)\n )}`;\n }\n\n // #endregion\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-date-range-picker': IgcDateRangePickerComponent;\n }\n}\n\ntype DateRangePickerInput = 'start' | 'end';\n"]}
|
|
1
|
+
{"version":3,"file":"date-range-picker.js","sourceRoot":"","sources":["../../../src/components/date-range-picker/date-range-picker.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, nothing, type TemplateResult } from 'lit';\nimport {\n property,\n query,\n queryAll,\n queryAssignedElements,\n state,\n} from 'lit/decorators.js';\nimport { cache } from 'lit/directives/cache.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { live } from 'lit/directives/live.js';\nimport { addThemingController } from '../../theming/theming-controller.js';\nimport IgcCalendarComponent, { focusActiveDate } from '../calendar/calendar.js';\nimport {\n convertToDate,\n convertToDateRange,\n createDateConstraints,\n} from '../calendar/helpers.js';\nimport { CalendarDay } from '../calendar/model.js';\nimport type { DateRangeDescriptor, WeekDays } from '../calendar/types.js';\nimport {\n addKeybindings,\n altKey,\n arrowDown,\n arrowUp,\n escapeKey,\n} from '../common/controllers/key-bindings.js';\nimport { addRootClickController } from '../common/controllers/root-click.js';\nimport { blazorAdditionalDependencies } from '../common/decorators/blazorAdditionalDependencies.js';\nimport { shadowOptions } from '../common/decorators/shadow-options.js';\nimport { watch } from '../common/decorators/watch.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport { IgcDateRangePickerResourceStringsEN } from '../common/i18n/date-range-picker.resources.js';\nimport { IgcBaseComboBoxLikeComponent } from '../common/mixins/combo-box.js';\nimport type { AbstractConstructor } from '../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../common/mixins/event-emitter.js';\nimport { FormAssociatedRequiredMixin } from '../common/mixins/forms/associated-required.js';\nimport { FormValueDateRangeTransformers } from '../common/mixins/forms/form-transformers.js';\nimport { createFormValueState } from '../common/mixins/forms/form-value.js';\nimport {\n addSafeEventListener,\n asNumber,\n clamp,\n createCounter,\n equal,\n findElementFromEventPath,\n isEmpty,\n} from '../common/util.js';\nimport IgcDateTimeInputComponent from '../date-time-input/date-time-input.js';\nimport { DateTimeUtil } from '../date-time-input/date-util.js';\nimport IgcDialogComponent from '../dialog/dialog.js';\nimport IgcFocusTrapComponent from '../focus-trap/focus-trap.js';\nimport IgcIconComponent from '../icon/icon.js';\nimport IgcInputComponent from '../input/input.js';\nimport IgcPopoverComponent from '../popover/popover.js';\nimport type { ContentOrientation, PickerMode } from '../types.js';\nimport IgcValidationContainerComponent from '../validation-container/validation-container.js';\nimport { styles } from './date-range-picker.base.css.js';\nimport IgcPredefinedRangesAreaComponent from './predefined-ranges-area.js';\nimport { styles as shared } from './themes/shared/date-range-picker.common.css.js';\nimport { all } from './themes/themes.js';\nimport { dateRangeValidators, isCompleteDateRange } from './validators.js';\n\nexport interface DateRangeValue {\n start: Date | null;\n end: Date | null;\n}\n\nexport interface CustomDateRange {\n label: string;\n dateRange: DateRangeValue;\n}\nexport interface IgcDateRangePickerComponentEventMap {\n igcOpening: CustomEvent<void>;\n igcOpened: CustomEvent<void>;\n igcClosing: CustomEvent<void>;\n igcClosed: CustomEvent<void>;\n igcChange: CustomEvent<DateRangeValue | null>;\n igcInput: CustomEvent<DateRangeValue | null>;\n}\n\n/* blazorIndirectRender */\n/* blazorSupportsVisualChildren */\n/**\n * The igc-date-range-picker allows the user to select a range of dates.\n *\n * @element igc-date-range-picker\n *\n * @slot prefix - Renders content before the input (single input).\n * @slot prefix-start - Renders content before the start input (two inputs).\n * @slot prefix-end - Renders content before the end input (two inputs).\n * @slot suffix - Renders content after the input (single input).\n * @slot suffix-start - Renders content after the start input (single input).\n * @slot suffix-end - Renders content after the end input (single input).\n * @slot helper-text - Renders content below the input.\n * @slot bad-input - Renders content when the value is in the disabledDates ranges.\n * @slot value-missing - Renders content when the required validation fails.\n * @slot range-overflow - Renders content when the max validation fails.\n * @slot range-underflow - Renders content when the min validation fails.\n * @slot custom-error - Renders content when setCustomValidity(message) is set.\n * @slot invalid - Renders content when the component is in invalid state (validity.valid = false).\n * @slot title - Renders content in the calendar title.\n * @slot header-date - Renders content instead of the current date/range in the calendar header.\n * @slot clear-icon - Renders a clear icon template.\n * @slot clear-icon-start - Renders a clear icon template for the start input (two inputs).\n * @slot clear-icon-end - Renders a clear icon template for the end input (two inputs).\n * @slot calendar-icon - Renders the icon/content for the calendar picker.\n * @slot calendar-icon-start - Renders the icon/content for the calendar picker for the start input (two inputs).\n * @slot calendar-icon-end - Renders the icon/content for the calendar picker for the end input (two inputs).\n * @slot calendar-icon-open - Renders the icon/content for the picker in open state.\n * @slot calendar-icon-open-start - Renders the icon/content for the picker in open state for the start input (two inputs).\n * @slot calendar-icon-open-end - Renders the icon/content for the picker in open state for the end input (two inputs).\n * @slot actions - Renders content in the action part of the picker in open state.\n * @slot separator - Renders the separator element between the two inputs.\n *\n * @fires igcOpening - Emitted just before the calendar dropdown is shown.\n * @fires igcOpened - Emitted after the calendar dropdown is shown.\n * @fires igcClosing - Emitted just before the calendar dropdown is hidden.\n * @fires igcClosed - Emitted after the calendar dropdown is hidden.\n * @fires igcChange - Emitted when the user modifies and commits the elements's value.\n * @fires igcInput - Emitted when when the user types in the element.\n *\n * @csspart separator - The separator element between the two inputs.\n * @csspart ranges - The wrapper that renders the custom and predefined ranges.\n * @csspart label - The label wrapper that renders content above the target input.\n * @csspart calendar-icon - The calendar icon wrapper for closed state (single input).\n * @csspart calendar-icon-start - The calendar icon wrapper for closed state for the start input (two inputs).\n * @csspart calendar-icon-end - The calendar icon wrapper for closed state for the end input (two inputs).\n * @csspart calendar-icon-open - The calendar icon wrapper for opened state (single input).\n * @csspart calendar-icon-open-start - The calendar icon wrapper for opened state for the start input (two inputs).\n * @csspart calendar-icon-open-end - The calendar icon wrapper for opened state for the end input (two inputs).\n * @csspart clear-icon - The clear icon wrapper (single input).\n * @csspart clear-icon-start - The clear icon wrapper for the start input (two inputs).\n * @csspart clear-icon-end - The clear icon wrapper for the end input (two inputs).\n * @csspart actions - The wrapper for the custom actions area.\n * @csspart clear-icon - The clear icon wrapper.\n * @csspart input - The native input element.\n * @csspart prefix - The prefix wrapper.\n * @csspart suffix - The suffix wrapper.\n * @csspart helper-text - The helper-text wrapper that renders content below the target input.\n * @csspart header - The calendar header element.\n * @csspart header-title - The calendar header title element.\n * @csspart header-date - The calendar header date element.\n * @csspart calendar-content - The calendar content element which contains the views and navigation elements.\n * @csspart navigation - The calendar navigation container element.\n * @csspart months-navigation - The calendar months navigation button element.\n * @csspart years-navigation - The calendar years navigation button element.\n * @csspart years-range - The calendar years range element.\n * @csspart navigation-buttons - The calendar navigation buttons container.\n * @csspart navigation-button - The calendar previous/next navigation button.\n * @csspart days-view-container - The calendar days view container element.\n * @csspart days-view - The calendar days view element.\n * @csspart months-view - The calendar months view element.\n * @csspart years-view - The calendar years view element.\n * @csspart days-row - The calendar days row element.\n * @csspart calendar-label - The calendar week header label element.\n * @csspart week-number - The calendar week number element.\n * @csspart week-number-inner - The calendar week number inner element.\n * @csspart date - The calendar date element.\n * @csspart date-inner - The calendar date inner element.\n * @csspart first - The calendar first selected date element in range selection.\n * @csspart last - The calendar last selected date element in range selection.\n * @csspart inactive - The calendar inactive date element.\n * @csspart hidden - The calendar hidden date element.\n * @csspart weekend - The calendar weekend date element.\n * @csspart range - The calendar range selected element.\n * @csspart special - The calendar special date element.\n * @csspart disabled - The calendar disabled date element.\n * @csspart single - The calendar single selected date element.\n * @csspart preview - The calendar range selection preview date element.\n * @csspart month - The calendar month element.\n * @csspart month-inner - The calendar month inner element.\n * @csspart year - The calendar year element.\n * @csspart year-inner - The calendar year inner element.\n * @csspart selected - The calendar selected state for element(s). Applies to date, month and year elements.\n * @csspart current - The calendar current state for element(s). Applies to date, month and year elements.\n */\n@blazorAdditionalDependencies(\n 'IgcCalendarComponent, IgcDateTimeInputComponent, IgcDialogComponent, IgcIconComponent, IgcChipComponent, IgcInputComponent'\n)\n@shadowOptions({ delegatesFocus: true })\nexport default class IgcDateRangePickerComponent extends FormAssociatedRequiredMixin(\n EventEmitterMixin<\n IgcDateRangePickerComponentEventMap,\n AbstractConstructor<IgcBaseComboBoxLikeComponent>\n >(IgcBaseComboBoxLikeComponent)\n) {\n public static readonly tagName = 'igc-date-range-picker';\n public static styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(\n IgcDateRangePickerComponent,\n IgcCalendarComponent,\n IgcDateTimeInputComponent,\n IgcInputComponent,\n IgcFocusTrapComponent,\n IgcIconComponent,\n IgcPopoverComponent,\n IgcDialogComponent,\n IgcValidationContainerComponent,\n IgcPredefinedRangesAreaComponent\n );\n }\n\n // #region Internal state & properties\n\n private static readonly _increment = createCounter();\n\n protected readonly _inputId = `date-range-picker-${IgcDateRangePickerComponent._increment()}`;\n\n private readonly _themes = addThemingController(this, all);\n\n protected override readonly _formValue = createFormValueState(this, {\n initialValue: { start: null, end: null },\n transformers: FormValueDateRangeTransformers,\n });\n\n protected override readonly _rootClickController = addRootClickController(\n this,\n {\n onHide: this._handleClosing,\n }\n );\n\n private _activeDate: Date | null = null;\n private _min: Date | null = null;\n private _max: Date | null = null;\n private _disabledDates: DateRangeDescriptor[] = [];\n private _dateConstraints: DateRangeDescriptor[] = [];\n private _displayFormat?: string;\n private _inputFormat?: string;\n private _placeholder?: string;\n private _defaultMask!: string;\n private _oldValue: DateRangeValue | null = null;\n private _visibleMonths = 2;\n\n protected override get __validators() {\n return dateRangeValidators;\n }\n\n private get _isDropDown(): boolean {\n return this.mode === 'dropdown';\n }\n\n private get _firstDefinedInRange(): Date | null {\n return this.value?.start ?? this.value?.end ?? null;\n }\n\n @state()\n private _maskedRangeValue = '';\n\n @queryAll(IgcDateTimeInputComponent.tagName)\n private readonly _inputs!: IgcDateTimeInputComponent[];\n\n @query(IgcInputComponent.tagName)\n private readonly _input!: IgcInputComponent;\n\n @query(IgcCalendarComponent.tagName)\n private readonly _calendar!: IgcCalendarComponent;\n\n @queryAssignedElements({ slot: 'prefix' })\n private readonly _prefixes!: HTMLElement[];\n\n @queryAssignedElements({ slot: 'prefix-start' })\n private readonly _startPrefixes!: HTMLElement[];\n\n @queryAssignedElements({ slot: 'prefix-end' })\n private readonly _endPrefixes!: HTMLElement[];\n\n @queryAssignedElements({ slot: 'suffix' })\n private readonly _suffixes!: HTMLElement[];\n\n @queryAssignedElements({ slot: 'suffix-start' })\n private readonly _startSuffixes!: HTMLElement[];\n\n @queryAssignedElements({ slot: 'suffix-end' })\n private readonly _endSuffixes!: HTMLElement[];\n\n @queryAssignedElements({ slot: 'actions' })\n private readonly _actions!: HTMLElement[];\n\n @queryAssignedElements({ slot: 'header-date' })\n private readonly _headerDateSlotItems!: HTMLElement[];\n\n // #endregion\n\n // #region General properties\n\n @property({ converter: convertToDateRange })\n public set value(value: DateRangeValue | string | null | undefined) {\n this._formValue.setValueAndFormState(convertToDateRange(value));\n this._setCalendarRangeValues();\n this._updateMaskedRangeValue();\n }\n\n public get value(): DateRangeValue | null {\n return this._formValue.value;\n }\n /**\n * Renders chips with custom ranges based on the elements of the array.\n */\n @property({ attribute: false })\n public customRanges: CustomDateRange[] = [];\n\n /**\n * Determines whether the calendar is opened in a dropdown or a modal dialog\n * @attr mode\n */\n @property()\n public mode: PickerMode = 'dropdown';\n\n /**\n * Use two inputs to display the date range values. Makes the input editable in dropdown mode.\n * @attr use-two-inputs\n */\n @property({ type: Boolean, reflect: true, attribute: 'use-two-inputs' })\n public useTwoInputs = false;\n\n /**\n * Whether the control will show chips with predefined ranges.\n * @attr\n */\n @property({\n type: Boolean,\n reflect: true,\n attribute: 'use-predefined-ranges',\n })\n public usePredefinedRanges = false;\n\n /**\n * The locale settings used to display the value.\n * @attr\n */\n @property()\n public locale = 'en';\n\n /** The resource strings of the date range picker. */\n @property({ attribute: false })\n public resourceStrings = IgcDateRangePickerResourceStringsEN;\n\n // #endregion\n\n // #region Input-related properties\n\n /**\n * Makes the control a readonly field.\n * @attr readonly\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 */\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 */\n @property({ type: Boolean, reflect: true })\n public outlined = false;\n\n /**\n * The label of the control (single input).\n * @attr label\n */\n @property()\n public label!: string;\n\n /**\n * The label attribute of the start input.\n * @attr label-start\n */\n @property({ attribute: 'label-start' })\n public labelStart = '';\n\n /**\n * The label attribute of the end input.\n * @attr label-end\n */\n @property({ attribute: 'label-end' })\n public labelEnd = '';\n\n /**\n * The placeholder attribute of the control (single input).\n * @attr\n */\n @property()\n public set placeholder(value: string) {\n this._placeholder = value;\n }\n\n public get placeholder(): string {\n const rangePlaceholder = `${this.inputFormat} - ${this.inputFormat}`;\n return this._placeholder ?? rangePlaceholder;\n }\n\n /**\n * The placeholder attribute of the start input.\n * @attr placeholder-start\n */\n @property({ attribute: 'placeholder-start' })\n public placeholderStart = '';\n\n /**\n * The placeholder attribute of the end input.\n * @attr placeholder-end\n */\n @property({ attribute: 'placeholder-end' })\n public placeholderEnd = '';\n\n /** The prompt symbol to use for unfilled parts of the mask.\n * @attr\n */\n @property()\n public prompt = '_';\n\n /**\n * Format to display the value in when not editing.\n * Defaults to the input 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 this._updateMaskedRangeValue();\n }\n\n public get displayFormat(): string {\n return this._displayFormat ?? this.inputFormat;\n }\n\n /**\n * The date format to apply on the inputs.\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 this._updateMaskedRangeValue();\n }\n\n public get inputFormat(): string {\n return this._inputFormat ?? this._defaultMask;\n }\n\n // #endregion\n\n // #region Validation properties\n\n /**\n * The minimum value required for the date range 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 date range 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 public set disabledDates(dates: DateRangeDescriptor[]) {\n this._disabledDates = dates;\n this._setDateConstraints();\n this._validate();\n }\n\n public get disabledDates() {\n return this._disabledDates as DateRangeDescriptor[];\n }\n\n // #endregion\n\n // #region Calendar properties\n\n /**\n * The number of months displayed in the calendar.\n * @attr visible-months\n */\n @property({ type: Number, attribute: 'visible-months' })\n public get visibleMonths(): number {\n return this._visibleMonths;\n }\n\n public set visibleMonths(value: number) {\n this._visibleMonths = clamp(asNumber(value, 2), 1, 2);\n }\n /**\n * The orientation of the calendar header.\n * @attr header-orientation\n */\n @property({ attribute: 'header-orientation', reflect: true })\n public headerOrientation: ContentOrientation = 'horizontal';\n\n /**\n * The orientation of the multiple months displayed in the calendar's days view.\n * @attr\n */\n @property()\n public orientation: ContentOrientation = 'horizontal';\n\n /**\n * Determines whether the calendar hides its header.\n * @attr hide-header\n */\n @property({ type: Boolean, reflect: true, attribute: 'hide-header' })\n public hideHeader = false;\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 * Whether to show the number of the week in the calendar.\n * @attr show-week-numbers\n */\n @property({ type: Boolean, reflect: true, attribute: 'show-week-numbers' })\n public showWeekNumbers = false;\n\n /**\n * Controls the visibility of the dates that do not belong to the current month.\n * @attr hide-outside-days\n */\n @property({ type: Boolean, reflect: true, attribute: 'hide-outside-days' })\n public hideOutsideDays = false;\n\n /** Gets/sets special dates. */\n @property({ attribute: false })\n public specialDates!: DateRangeDescriptor[];\n\n /** Sets the start day of the week for the calendar. */\n @property({ attribute: 'week-start' })\n public weekStart: WeekDays = 'sunday';\n\n // #endregion\n\n // #region Life-cycle hooks\n\n constructor() {\n super();\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 createRenderRoot(): HTMLElement | DocumentFragment {\n const root = super.createRenderRoot();\n root.addEventListener('slotchange', () => this.requestUpdate());\n return root;\n }\n\n protected override firstUpdated() {\n this._setCalendarRangeValues();\n this._delegateInputsValidity();\n }\n\n protected override formResetCallback() {\n super.formResetCallback();\n this._setCalendarRangeValues();\n this._updateMaskedRangeValue();\n }\n\n // #endregion\n\n // #region Public API methods\n\n /** Clears the input parts of the component of any user input */\n public clear() {\n this._oldValue = this.value;\n this.value = null;\n if (this.useTwoInputs) {\n this._inputs[0]?.clear();\n this._inputs[1]?.clear();\n }\n }\n\n /** Selects a date range value in the picker */\n public select(value: DateRangeValue | null): void {\n this._select(value);\n }\n\n // #endregion\n\n // #region Observed properties\n\n @watch('open')\n protected _openChange() {\n this._rootClickController.update();\n\n if (this.open) {\n this._oldValue = this.value;\n }\n }\n\n @watch('locale')\n protected _updateDefaultMask(): void {\n this._defaultMask = DateTimeUtil.getDefaultMask(this.locale);\n this._updateMaskedRangeValue();\n }\n\n @watch('useTwoInputs')\n protected async _updateDateRange() {\n await this._calendar?.updateComplete;\n this._updateMaskedRangeValue();\n this._setCalendarRangeValues();\n this._delegateInputsValidity();\n }\n\n @watch('mode')\n protected async _modeChanged() {\n if (!this._isDropDown) {\n this.keepOpenOnSelect = true;\n }\n await this._calendar?.updateComplete;\n this._setCalendarRangeValues();\n }\n\n // #endregion\n\n // #region Event handlers\n\n protected _handleClosing() {\n this._hide(true);\n }\n\n protected _handleDialogClosing(event: Event) {\n event.stopPropagation();\n if (!equal(this.value, this._oldValue)) {\n this.emitEvent('igcChange', { detail: this.value });\n this._oldValue = this.value;\n }\n this._hide(true);\n }\n\n protected _handleDialogClosed(event: Event) {\n event.stopPropagation();\n }\n\n protected _dialogCancel() {\n this._revertValue();\n this._hide(true);\n }\n\n protected _dialogDone() {\n if (!equal(this.value, this._oldValue)) {\n this.emitEvent('igcChange', { detail: this.value });\n this._oldValue = this.value;\n }\n this._hide(true);\n }\n\n protected _handleInputEvent(event: CustomEvent<Date | null>) {\n event.stopPropagation();\n this._setTouchedState();\n\n if (this.nonEditable) {\n event.preventDefault();\n return;\n }\n const input = event.target as IgcDateTimeInputComponent;\n const newValue = input.value ? CalendarDay.from(input.value).native : null;\n\n this.value = this._getUpdatedDateRange(input, newValue);\n this._calendar.activeDate =\n newValue ?? this._firstDefinedInRange ?? this._calendar.activeDate;\n\n this.emitEvent('igcInput', { detail: this.value });\n }\n\n protected _handleInputChangeEvent(event: CustomEvent<Date | null>) {\n event.stopPropagation();\n this._setTouchedState();\n\n const input = event.target as IgcDateTimeInputComponent;\n const newValue = input.value ? CalendarDay.from(input.value).native : null;\n\n const updatedRange = this._getUpdatedDateRange(input, newValue);\n const { start, end } = this._swapDates(updatedRange);\n\n this._setCalendarRangeValues();\n this.value = { start, end };\n this.emitEvent('igcChange', { detail: this.value });\n }\n\n protected _handleFocusOut({ relatedTarget }: FocusEvent) {\n if (!this.contains(relatedTarget as Node)) {\n this._handleBlur();\n\n const isSameValue = equal(this.value, this._oldValue);\n if (!(this.useTwoInputs || this.readOnly || isSameValue)) {\n this.emitEvent('igcChange', { detail: this.value });\n this._oldValue = this.value;\n }\n }\n }\n\n protected _handleInputClick(event: Event) {\n if (findElementFromEventPath('input', event)) {\n // Open only if the click originates from the underlying input\n this.handleAnchorClick();\n }\n }\n\n protected async _onEscapeKey() {\n if (await this._hide(true)) {\n if (!this._isDropDown) {\n this._revertValue();\n }\n this.useTwoInputs ? this._inputs[0].focus() : this._input.focus();\n }\n }\n\n protected override async handleAnchorClick() {\n super.handleAnchorClick();\n this._setCalendarActiveDateAndViewIndex();\n await this.updateComplete;\n this._calendar[focusActiveDate]({ preventScroll: true });\n }\n\n protected async _handleCalendarChangeEvent(event: CustomEvent<Date>) {\n event.stopPropagation();\n this._setTouchedState();\n\n if (this.readOnly) {\n // Wait till the calendar finishes updating and then restore the current value from the date-picker.\n await this._calendar.updateComplete;\n const dateRange = [this.value?.start, this.value?.end];\n this._calendar.values = dateRange?.map((d) => d ?? '');\n return;\n }\n\n const rangeValues = (event.target as IgcCalendarComponent).values;\n this.value = {\n start: rangeValues[0],\n end: rangeValues[rangeValues.length - 1],\n };\n\n if (this._isDropDown) {\n this.emitEvent('igcChange', { detail: this.value });\n }\n\n this._shouldCloseCalendarDropdown();\n }\n\n protected _handleCalendarIconSlotPointerDown(event: PointerEvent) {\n event.preventDefault();\n }\n\n // #endregion\n\n // #region Private methods\n\n protected _revertValue() {\n this.value = this._oldValue;\n }\n\n /**\n * Sets the active date of the calendar based on current selection, if any,\n * or its current active date and its active day view index to always be the first one.\n */\n private _setCalendarActiveDateAndViewIndex() {\n const activeDaysViewIndex = 'activeDaysViewIndex';\n\n this._calendar.activeDate =\n this._firstDefinedInRange ?? this._calendar.activeDate;\n this._calendar[activeDaysViewIndex] = 0;\n }\n\n private _getUpdatedDateRange(\n input: IgcDateTimeInputComponent,\n newValue: Date | null\n ): DateRangeValue {\n const { start = null, end = null } = this.value ?? {};\n\n return input === this._inputs[0]\n ? { start: newValue, end }\n : { start, end: newValue };\n }\n\n // Delegates the validity methods of internal input elements\n // to the component's own validation logic specific to date-range values.\n // Checks for dirty state to avoid unnecessary validation on form reset,\n // caused by the inputs value being set.\n private _delegateInputsValidity() {\n const inputs = this.useTwoInputs ? this._inputs : [this._input];\n\n inputs.forEach((input) => {\n input.checkValidity = () =>\n !this._pristine ? this.checkValidity() : true;\n input.reportValidity = () =>\n !this._pristine ? this.reportValidity() : true;\n });\n }\n\n private _setDateConstraints() {\n this._dateConstraints =\n createDateConstraints(this.min, this.max, this.disabledDates) ?? [];\n }\n\n private _updateMaskedRangeValue() {\n if (this.useTwoInputs) {\n return;\n }\n\n if (!isCompleteDateRange(this.value)) {\n this._maskedRangeValue = '';\n return;\n }\n\n const { formatDate, predefinedToDateDisplayFormat } = DateTimeUtil;\n\n const { start, end } = this.value;\n const format =\n predefinedToDateDisplayFormat(this._displayFormat) ??\n this._displayFormat ??\n this.inputFormat;\n\n this._maskedRangeValue = format\n ? `${formatDate(start, this.locale, format)} - ${formatDate(end, this.locale, format)}`\n : `${start.toLocaleDateString()} - ${end.toLocaleDateString()}`;\n }\n\n private _setCalendarRangeValues() {\n if (!this._calendar) {\n return;\n }\n\n if (isCompleteDateRange(this.value)) {\n this._calendar.values =\n CalendarDay.compare(this.value.start, this.value.end) === 0\n ? [this.value.start]\n : [this.value.start, this.value.end];\n this._calendar.activeDate = this._firstDefinedInRange;\n return;\n }\n\n this._calendar.values = this._firstDefinedInRange\n ? [this._firstDefinedInRange]\n : null;\n }\n\n private _swapDates(range: DateRangeValue): DateRangeValue {\n return isCompleteDateRange(range) &&\n CalendarDay.compare(range.start, range.end) >= 1\n ? { start: range.end, end: range.start }\n : range;\n }\n\n private async _shouldCloseCalendarDropdown() {\n if (\n !this.keepOpenOnSelect &&\n this._calendar.values.length > 1 &&\n (await this._hide(true))\n ) {\n return this.useTwoInputs ? this._inputs[0].select() : this._input.focus();\n }\n }\n\n private _select(value: DateRangeValue | null, emitEvent = false) {\n this.value = value;\n this._calendar.activeDate =\n this._firstDefinedInRange ?? this._calendar.activeDate;\n\n if (emitEvent) {\n this.emitEvent('igcChange', { detail: this.value });\n this._oldValue = this.value;\n this._hide(true);\n }\n }\n\n // #endregion\n\n // #region Rendering\n\n private _renderClearIcon(picker: DateRangePickerInput = 'start') {\n const clearIcon = this.useTwoInputs ? `clear-icon-${picker}` : 'clear-icon';\n return this._firstDefinedInRange\n ? html`\n <span\n slot=\"suffix\"\n part=${clearIcon}\n @click=${this.readOnly ? nothing : this.clear}\n >\n <slot name=${clearIcon}>\n <igc-icon\n name=\"input_clear\"\n collection=\"default\"\n aria-hidden=\"true\"\n ></igc-icon>\n </slot>\n </span>\n `\n : nothing;\n }\n\n private _renderCalendarIcon(picker: DateRangePickerInput = 'start') {\n const defaultIcon = html`\n <igc-icon name=\"today\" collection=\"default\" aria-hidden=\"true\"></igc-icon>\n `;\n\n const state = this.open ? 'calendar-icon-open' : 'calendar-icon';\n const calendarIcon = this.useTwoInputs ? `${state}-${picker}` : state;\n\n return html`\n <span\n slot=\"prefix\"\n part=${calendarIcon}\n @pointerdown=${this._handleCalendarIconSlotPointerDown}\n @click=${this.readOnly ? nothing : this.handleAnchorClick}\n >\n <slot name=${calendarIcon}>${defaultIcon}</slot>\n </span>\n `;\n }\n\n private _renderCalendarSlots() {\n if (this._isDropDown) {\n return nothing;\n }\n\n const hasHeaderDate = isEmpty(this._headerDateSlotItems)\n ? ''\n : 'header-date';\n\n return html`\n <slot name=\"title\" slot=\"title\">\n ${this.resourceStrings.selectDate}\n </slot>\n <slot name=\"header-date\" slot=${hasHeaderDate}></slot>\n `;\n }\n\n private _renderCalendar(id: string) {\n const hideHeader = this._isDropDown ? true : this.hideHeader;\n\n return html`\n <igc-calendar\n aria-labelledby=${id}\n role=\"dialog\"\n selection=\"range\"\n .inert=${!this.open || this.disabled}\n ?show-week-numbers=${this.showWeekNumbers}\n ?hide-outside-days=${this.hideOutsideDays}\n ?hide-header=${hideHeader}\n .activeDate=${this.activeDate ?? this._firstDefinedInRange}\n .headerOrientation=${this.headerOrientation}\n .orientation=${this.orientation}\n .visibleMonths=${this._visibleMonths}\n .disabledDates=${this._dateConstraints!}\n .specialDates=${this.specialDates}\n .weekStart=${this.weekStart}\n @igcChange=${this._handleCalendarChangeEvent}\n exportparts=\"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, label: calendar-label, 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\"\n >\n ${this._renderCalendarSlots()}\n </igc-calendar>\n `;\n }\n\n protected _renderActions() {\n const hasActions = !isEmpty(this._actions);\n const slot = this._isDropDown || hasActions ? undefined : 'footer';\n\n // If in dialog mode use the dialog footer slot\n return html`\n <div part=\"actions\" ?hidden=${!hasActions} slot=${ifDefined(slot)}>\n <slot name=\"actions\"></slot>\n </div>\n `;\n }\n\n protected _renderPredefinedRanges() {\n const hasRanges = this.usePredefinedRanges || !isEmpty(this.customRanges);\n\n return hasRanges\n ? html`\n <igc-predefined-ranges-area\n .usePredefinedRanges=${this.usePredefinedRanges}\n .customRanges=${this.customRanges}\n .resourceStrings=${this.resourceStrings}\n @igcRangeSelect=${({ detail }: CustomEvent<DateRangeValue>) =>\n this._select(detail, this._isDropDown)}\n >\n </igc-predefined-ranges-area>\n `\n : nothing;\n }\n\n protected _renderPicker(id: string) {\n const isIndigo = this._themes.theme === 'indigo';\n\n return this._isDropDown\n ? html`\n <igc-popover ?open=${this.open} anchor=${id} flip shift>\n <igc-focus-trap ?disabled=${!this.open || this.disabled}>\n ${this._renderCalendar(id)} ${this._renderPredefinedRanges()}\n ${this._renderActions()}\n </igc-focus-trap>\n </igc-popover>\n `\n : html`\n <igc-dialog\n aria-label=${ifDefined(this.resourceStrings.selectDate)}\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._renderCalendar(id)} ${this._renderActions()}\n ${this._renderPredefinedRanges()}\n <igc-button\n slot=\"footer\"\n @click=${this._dialogCancel}\n variant=${isIndigo ? 'outlined' : 'flat'}\n >${this.resourceStrings.cancel}</igc-button\n >\n <igc-button\n slot=\"footer\"\n @click=${this._dialogDone}\n variant=${isIndigo ? 'contained' : 'flat'}\n >${this.resourceStrings.done}</igc-button\n >\n </igc-dialog>\n `;\n }\n\n private _renderHelperText(): TemplateResult {\n return IgcValidationContainerComponent.create(this);\n }\n\n protected _renderInput(id: string, picker: DateRangePickerInput = 'start') {\n const readOnly = !this._isDropDown || this.readOnly || this.nonEditable;\n const placeholder =\n picker === 'start' ? this.placeholderStart : this.placeholderEnd;\n const label = picker === 'start' ? this.labelStart : this.labelEnd;\n const format = DateTimeUtil.predefinedToDateDisplayFormat(\n this._displayFormat!\n );\n const value = picker === 'start' ? this.value?.start : this.value?.end;\n\n const prefixes =\n picker === 'start' ? this._startPrefixes : this._endPrefixes;\n const suffixes =\n picker === 'start' ? this._startSuffixes : this._endSuffixes;\n const prefix = isEmpty(prefixes) ? undefined : 'prefix';\n const suffix = isEmpty(suffixes) ? undefined : 'suffix';\n\n return html`\n <igc-date-time-input\n id=${id}\n aria-haspopup=\"dialog\"\n input-format=${ifDefined(this._inputFormat)}\n display-format=${ifDefined(format)}\n ?disabled=${this.disabled}\n ?readonly=${readOnly}\n .value=${value ?? null}\n .locale=${live(this.locale)}\n .prompt=${this.prompt}\n .outlined=${this.outlined}\n .placeholder=${placeholder}\n .min=${this._min}\n .max=${this._max}\n label=${label}\n ?invalid=${live(this.invalid)}\n @igcChange=${this._handleInputChangeEvent}\n @igcInput=${this._handleInputEvent}\n @click=${this._isDropDown || this.readOnly\n ? nothing\n : this._handleInputClick}\n exportparts=\"input, label, prefix, suffix\"\n >\n ${this._renderCalendarIcon(picker)}\n <slot name=${`prefix-${picker}`} slot=${ifDefined(prefix)}></slot>\n ${this._renderClearIcon(picker)}\n <slot name=${`suffix-${picker}`} slot=${ifDefined(suffix)}></slot>\n </igc-date-time-input>\n `;\n }\n\n private _renderInputs(idStart: string, idEnd: string) {\n return html`\n <div part=\"inputs\">\n ${this._renderInput(idStart, 'start')}\n <div part=\"separator\">\n <slot name=\"separator\"> ${this.resourceStrings.separator} </slot>\n </div>\n ${this._renderInput(idEnd, 'end')}\n </div>\n ${this._renderPicker(idStart)} ${this._renderHelperText()}\n `;\n }\n\n private _renderSingleInput(id: string) {\n const prefix = isEmpty(this._prefixes) ? undefined : 'prefix';\n const suffix = isEmpty(this._suffixes) ? undefined : 'suffix';\n\n return html`\n <igc-input\n id=${id}\n aria-haspopup=\"dialog\"\n .value=${this._maskedRangeValue}\n label=${this.label}\n placeholder=${this.placeholder}\n ?readonly=${true}\n ?required=${this.required}\n .outlined=${this.outlined}\n ?invalid=${live(this.invalid)}\n .disabled=${this.disabled}\n @click=${this._isDropDown || this.readOnly\n ? nothing\n : this._handleInputClick}\n exportparts=\"input, label, prefix, suffix\"\n >\n ${this._renderCalendarIcon()}\n <slot name=\"prefix\" slot=${ifDefined(prefix)}></slot>\n ${this._renderClearIcon()}\n <slot name=\"suffix\" slot=${ifDefined(suffix)}></slot>\n </igc-input>\n ${this._renderHelperText()} ${this._renderPicker(id)}\n `;\n }\n\n protected override render() {\n const id = this.id || this._inputId;\n\n return html`${cache(\n !this.useTwoInputs\n ? this._renderSingleInput(id)\n : this._renderInputs(`${id}-start`, `${id}-end`)\n )}`;\n }\n\n // #endregion\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-date-range-picker': IgcDateRangePickerComponent;\n }\n}\n\ntype DateRangePickerInput = 'start' | 'end';\n"]}
|
package/custom-elements.json
CHANGED
|
@@ -23172,6 +23172,31 @@
|
|
|
23172
23172
|
}
|
|
23173
23173
|
}
|
|
23174
23174
|
]
|
|
23175
|
+
},
|
|
23176
|
+
{
|
|
23177
|
+
"kind": "function",
|
|
23178
|
+
"name": "createDateConstraints",
|
|
23179
|
+
"parameters": [
|
|
23180
|
+
{
|
|
23181
|
+
"name": "min",
|
|
23182
|
+
"type": {
|
|
23183
|
+
"text": "Date | null"
|
|
23184
|
+
}
|
|
23185
|
+
},
|
|
23186
|
+
{
|
|
23187
|
+
"name": "max",
|
|
23188
|
+
"type": {
|
|
23189
|
+
"text": "Date | null"
|
|
23190
|
+
}
|
|
23191
|
+
},
|
|
23192
|
+
{
|
|
23193
|
+
"name": "disabledDates",
|
|
23194
|
+
"optional": true,
|
|
23195
|
+
"type": {
|
|
23196
|
+
"text": "DateRangeDescriptor[]"
|
|
23197
|
+
}
|
|
23198
|
+
}
|
|
23199
|
+
]
|
|
23175
23200
|
}
|
|
23176
23201
|
],
|
|
23177
23202
|
"exports": [
|
|
@@ -23318,6 +23343,14 @@
|
|
|
23318
23343
|
"name": "isDateInRanges",
|
|
23319
23344
|
"module": "src/components/calendar/helpers.ts"
|
|
23320
23345
|
}
|
|
23346
|
+
},
|
|
23347
|
+
{
|
|
23348
|
+
"kind": "js",
|
|
23349
|
+
"name": "createDateConstraints",
|
|
23350
|
+
"declaration": {
|
|
23351
|
+
"name": "createDateConstraints",
|
|
23352
|
+
"module": "src/components/calendar/helpers.ts"
|
|
23353
|
+
}
|
|
23321
23354
|
}
|
|
23322
23355
|
]
|
|
23323
23356
|
},
|
|
@@ -35641,7 +35674,7 @@
|
|
|
35641
35674
|
"type": {
|
|
35642
35675
|
"text": "boolean"
|
|
35643
35676
|
},
|
|
35644
|
-
"privacy": "
|
|
35677
|
+
"privacy": "private",
|
|
35645
35678
|
"default": "false"
|
|
35646
35679
|
},
|
|
35647
35680
|
{
|
|
@@ -46412,16 +46445,23 @@
|
|
|
46412
46445
|
},
|
|
46413
46446
|
{
|
|
46414
46447
|
"kind": "field",
|
|
46415
|
-
"name": "
|
|
46416
|
-
"
|
|
46417
|
-
|
|
46418
|
-
|
|
46448
|
+
"name": "__validators",
|
|
46449
|
+
"type": {
|
|
46450
|
+
"text": "Validator[]"
|
|
46451
|
+
},
|
|
46452
|
+
"privacy": "protected",
|
|
46453
|
+
"readonly": true,
|
|
46454
|
+
"inheritedFrom": {
|
|
46455
|
+
"name": "BaseFormAssociated",
|
|
46456
|
+
"module": "src/components/common/mixins/forms/associated.ts"
|
|
46457
|
+
}
|
|
46419
46458
|
},
|
|
46420
46459
|
{
|
|
46421
46460
|
"kind": "field",
|
|
46422
46461
|
"name": "_inputId",
|
|
46423
|
-
"privacy": "
|
|
46424
|
-
"
|
|
46462
|
+
"privacy": "private",
|
|
46463
|
+
"readonly": true,
|
|
46464
|
+
"default": "`date-picker-${nextId++}`"
|
|
46425
46465
|
},
|
|
46426
46466
|
{
|
|
46427
46467
|
"kind": "field",
|
|
@@ -46431,16 +46471,18 @@
|
|
|
46431
46471
|
},
|
|
46432
46472
|
{
|
|
46433
46473
|
"kind": "field",
|
|
46434
|
-
"name": "
|
|
46474
|
+
"name": "_slots",
|
|
46475
|
+
"privacy": "private",
|
|
46476
|
+
"readonly": true
|
|
46477
|
+
},
|
|
46478
|
+
{
|
|
46479
|
+
"kind": "field",
|
|
46480
|
+
"name": "_oldValue",
|
|
46435
46481
|
"type": {
|
|
46436
|
-
"text": "
|
|
46482
|
+
"text": "Date | null"
|
|
46437
46483
|
},
|
|
46438
|
-
"privacy": "
|
|
46439
|
-
"
|
|
46440
|
-
"inheritedFrom": {
|
|
46441
|
-
"name": "BaseFormAssociated",
|
|
46442
|
-
"module": "src/components/common/mixins/forms/associated.ts"
|
|
46443
|
-
}
|
|
46484
|
+
"privacy": "private",
|
|
46485
|
+
"default": "null"
|
|
46444
46486
|
},
|
|
46445
46487
|
{
|
|
46446
46488
|
"kind": "field",
|
|
@@ -46547,43 +46589,16 @@
|
|
|
46547
46589
|
},
|
|
46548
46590
|
{
|
|
46549
46591
|
"kind": "field",
|
|
46550
|
-
"name": "
|
|
46551
|
-
"type": {
|
|
46552
|
-
"text": "HTMLElement[]"
|
|
46553
|
-
},
|
|
46554
|
-
"privacy": "private",
|
|
46555
|
-
"readonly": true
|
|
46556
|
-
},
|
|
46557
|
-
{
|
|
46558
|
-
"kind": "field",
|
|
46559
|
-
"name": "_suffixes",
|
|
46560
|
-
"type": {
|
|
46561
|
-
"text": "HTMLElement[]"
|
|
46562
|
-
},
|
|
46563
|
-
"privacy": "private",
|
|
46564
|
-
"readonly": true
|
|
46565
|
-
},
|
|
46566
|
-
{
|
|
46567
|
-
"kind": "field",
|
|
46568
|
-
"name": "_actions",
|
|
46569
|
-
"type": {
|
|
46570
|
-
"text": "HTMLElement[]"
|
|
46571
|
-
},
|
|
46572
|
-
"privacy": "private",
|
|
46573
|
-
"readonly": true
|
|
46574
|
-
},
|
|
46575
|
-
{
|
|
46576
|
-
"kind": "field",
|
|
46577
|
-
"name": "_headerSlotItems",
|
|
46592
|
+
"name": "_isDropDown",
|
|
46578
46593
|
"type": {
|
|
46579
|
-
"text": "
|
|
46594
|
+
"text": "boolean"
|
|
46580
46595
|
},
|
|
46581
46596
|
"privacy": "private",
|
|
46582
46597
|
"readonly": true
|
|
46583
46598
|
},
|
|
46584
46599
|
{
|
|
46585
46600
|
"kind": "field",
|
|
46586
|
-
"name": "
|
|
46601
|
+
"name": "_isMaterial",
|
|
46587
46602
|
"type": {
|
|
46588
46603
|
"text": "boolean"
|
|
46589
46604
|
},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "igniteui-webcomponents",
|
|
3
|
-
"version": "6.3.
|
|
3
|
+
"version": "6.3.3",
|
|
4
4
|
"description": "Ignite UI for Web Components is a complete library of UI components, giving you the ability to build modern web applications using encapsulation and the concept of reusable components in a dependency-free approach.",
|
|
5
5
|
"author": "Infragistics",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE",
|