@yuuvis/client-framework 2.3.10 → 2.3.12
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/datepicker/lib/date-input/date-input-element/date-input-element.component.d.ts +2 -1
- package/datepicker/lib/date-input/date-input.component.d.ts +1 -0
- package/datepicker/lib/time-input/time-input.component.d.ts +5 -5
- package/fesm2022/yuuvis-client-framework-datepicker.mjs +51 -26
- package/fesm2022/yuuvis-client-framework-datepicker.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-forms.mjs +13 -12
- package/fesm2022/yuuvis-client-framework-forms.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-object-details.mjs +14 -12
- package/fesm2022/yuuvis-client-framework-object-details.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-object-preview.mjs +15 -7
- package/fesm2022/yuuvis-client-framework-object-preview.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-sequence-list.mjs +3 -13
- package/fesm2022/yuuvis-client-framework-sequence-list.mjs.map +1 -1
- package/fesm2022/yuuvis-client-framework-widget-grid.mjs +7 -11
- package/fesm2022/yuuvis-client-framework-widget-grid.mjs.map +1 -1
- package/forms/lib/elements/datetime/datetime.component.d.ts +3 -3
- package/object-preview/lib/components/object-preview/object-preview.component.d.ts +1 -0
- package/package.json +8 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yuuvis-client-framework-datepicker.mjs","sources":["../../../../../libs/yuuvis/client-framework/datepicker/src/lib/datepicker.interface.ts","../../../../../libs/yuuvis/client-framework/datepicker/src/lib/datepicker.utils.ts","../../../../../libs/yuuvis/client-framework/datepicker/src/lib/datepicker.service.ts","../../../../../libs/yuuvis/client-framework/datepicker/src/lib/date-input/date-input-element/date-input-element.component.ts","../../../../../libs/yuuvis/client-framework/datepicker/src/lib/date-input/date-input-element/date-input-element.component.html","../../../../../libs/yuuvis/client-framework/datepicker/src/lib/date-input/date-input-hour-element/date-input-hour-element.component.ts","../../../../../libs/yuuvis/client-framework/datepicker/src/lib/time-input/time-input.component.ts","../../../../../libs/yuuvis/client-framework/datepicker/src/lib/time-input/time-input.component.html","../../../../../libs/yuuvis/client-framework/datepicker/src/lib/calendar/calendar.component.ts","../../../../../libs/yuuvis/client-framework/datepicker/src/lib/calendar/calendar.component.html","../../../../../libs/yuuvis/client-framework/datepicker/src/lib/date-input/date-input.component.ts","../../../../../libs/yuuvis/client-framework/datepicker/src/lib/date-input/date-input.component.html","../../../../../libs/yuuvis/client-framework/datepicker/src/lib/datepicker-calendar/datepicker-calendar.component.ts","../../../../../libs/yuuvis/client-framework/datepicker/src/lib/datepicker-calendar/datepicker-calendar.component.html","../../../../../libs/yuuvis/client-framework/datepicker/src/lib/datepicker.component.ts","../../../../../libs/yuuvis/client-framework/datepicker/src/lib/datepicker.component.html","../../../../../libs/yuuvis/client-framework/datepicker/src/lib/datepicker-calendar/datepicker-calendar-trigger.component.ts","../../../../../libs/yuuvis/client-framework/datepicker/src/lib/datepicker.module.ts","../../../../../libs/yuuvis/client-framework/datepicker/src/yuuvis-client-framework-datepicker.ts"],"sourcesContent":["export interface DatepickerLabels {\n calendarApply: string;\n calendarCancel: string;\n shortcut: {\n today: string;\n };\n}\n\nexport interface DatepickerCalendarTriggerTarget {\n openCalendar: () => void;\n}\n\nexport interface DatepickerValueChange {\n value: Date | null;\n propagateChange: boolean;\n}\n\nexport interface DatepickerValidationOptions {\n withTime?: boolean;\n onlyFutureDates?: boolean;\n minDate?: Date;\n maxDate?: Date;\n}\nexport interface DatepickerCalendarOptions extends DatepickerValidationOptions {\n hour12?: boolean;\n locale?: string;\n labels?: DatepickerLabels;\n}\n\nexport type DayPeriod = 'am' | 'pm';\n\nexport interface DayPeriodLabels {\n am: string;\n pm: string;\n}\n\nexport const DEFAULT_DAY_PERIOD_LABELS = {\n am: 'AM',\n pm: 'PM'\n};\n","import { ValidationErrors } from '@angular/forms';\n\nimport { DatepickerValidationOptions } from './datepicker.interface';\n\nexport class DatepickerUtils {\n /**\n * Get preferred hour cycle for a given locale\n * @param locale the locale to get the hour cycle for\n */\n static getPreferredHourCycle(locale: string): 'h11' | 'h12' | 'h23' | 'h24' | undefined {\n const l = new Intl.Locale(locale) as any;\n const hc =\n l.hourCycles || l.getHourCycles\n ? // Chrome and Edge\n l.hourCycles ||\n // Safari\n l.getHourCycles()\n : // Not supported by Firefox right now\n [];\n return hc.length ? hc[0] : 'h23';\n }\n\n /**\n * Get week info for a given locale.\n * Notice:\n * @param locale the locale to get the weekinfo for\n */\n static getWeekInfo(locale: string): {\n firstDay: number;\n minimalDays: number;\n weekend: number[];\n } {\n const l = new Intl.Locale(locale) as any;\n const weekInfo =\n l.weekInfo || l.getWeekInfo\n ? // Chrome and Edge\n l.weekInfo ||\n // Safari\n l.getWeekInfo()\n : undefined;\n // Not supported by Firefox right now so we'll return defaults\n\n return {\n firstDay: weekInfo?.firstDay || 7,\n minimalDays: weekInfo?.minimalDays || 1,\n weekend: weekInfo?.weekend || [6, 7]\n };\n }\n\n static isFutureDate(d: Date, withTime = false): boolean {\n const today = new Date();\n if (!withTime) {\n // future date without time also includes the whole current day\n today.setDate(today.getDate() - 1);\n today.setUTCHours(23, 59, 59);\n }\n return d.getTime() >= today.getTime();\n }\n\n static isValidDate(v: any): boolean {\n const date = new Date(v);\n return !!date && Object.prototype.toString.call(date) === '[object Date]' && !isNaN(date!.getTime());\n }\n\n static isValidValue(date: Date | null, o: DatepickerValidationOptions): boolean {\n const err = DatepickerUtils.validateValue(date, o);\n return !!err && Object.keys(err).length > 0;\n }\n\n static validateValue(date: Date | null | undefined, o: DatepickerValidationOptions): ValidationErrors | null {\n const err: { [key: string]: any } = {};\n if (date) {\n if (o.onlyFutureDates && !DatepickerUtils.isFutureDate(date, o.withTime)) {\n err['onlyFutureDates'] = { onlyFutureDates: false };\n }\n if (o.minDate && !(date > o.minDate)) {\n err['minDate'] = { minDate: false };\n }\n if (o.maxDate && !(date < o.maxDate)) {\n err['maxDate'] = { maxDate: false };\n }\n }\n return Object.keys(err).length ? err : null;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ValidationErrors } from '@angular/forms';\nimport { Observable, ReplaySubject } from 'rxjs';\n\nimport { DatepickerValidationOptions, DatepickerValueChange, DayPeriodLabels } from './datepicker.interface';\nimport { DatepickerUtils } from './datepicker.utils';\n\n@Injectable()\nexport class DatepickerService {\n private _value: Date | null = null;\n private _valueChangeSource = new ReplaySubject<DatepickerValueChange>();\n valueChange$: Observable<DatepickerValueChange> = this._valueChangeSource.asObservable();\n\n private _validationChangeSource = new ReplaySubject<boolean>();\n validationChange$: Observable<boolean> = this._validationChangeSource.asObservable();\n\n DEFAULT_LANGUAGE = 'en';\n yearOffset = 0;\n datePattern?: string;\n private _language: string = this.DEFAULT_LANGUAGE;\n private _languageSource = new ReplaySubject<string>();\n language$: Observable<string> = this._languageSource.asObservable();\n\n private _validationErrors: ValidationErrors | null = null;\n private _options: DatepickerValidationOptions = {};\n\n /**\n * Handler for paste events from the components inputs. If the clipboard\n * contains a whole date it will be covered by the service.\n * @param event the ClipboardEvent\n * @returns true if the paste event has been processed by the service, false otherwise\n */\n onPaste(e: string | ClipboardEvent): boolean {\n const paste: string = typeof e === 'string' ? e : (e.clipboardData || (window as any).clipboardData).getData('text');\n if (DatepickerUtils.isValidDate(paste)) {\n this.setValue(new Date(paste));\n return true;\n } else return false;\n }\n\n setLanguage(isoCode: string) {\n if (isoCode === this._language) return;\n this._language = isoCode || this.DEFAULT_LANGUAGE;\n // check for year offset\n // e.g. Taiwan has a year offset of +543 years (Thai solar calendar)\n const d = new Date();\n const dtf = new Intl.DateTimeFormat(this._language, {\n year: 'numeric'\n }).formatToParts(d);\n const dtfYear = dtf.find((t) => t.type === 'year');\n this.yearOffset = parseInt(dtfYear!.value) - d.getFullYear();\n this._languageSource.next(this._language);\n this.setValue(this._value);\n }\n\n getDatePattern(locale: string, withTime: boolean, hour12: boolean): string {\n let pattern = '';\n Intl.DateTimeFormat(locale, this.getIntlOptions(withTime, hour12))\n .formatToParts(new Date())\n .forEach((t: Intl.DateTimeFormatPart) => {\n switch (t.type) {\n case 'day': {\n pattern += 'dd';\n break;\n }\n case 'month': {\n pattern += 'MM';\n break;\n }\n case 'year': {\n pattern += 'yyyy';\n break;\n }\n case 'hour': {\n pattern += 'HH';\n break;\n }\n case 'minute': {\n pattern += 'mm';\n break;\n }\n case 'dayPeriod': {\n pattern += t.value;\n break;\n }\n default: {\n pattern += t.value;\n }\n }\n });\n return pattern;\n }\n\n isDifferent(d1: Date | null, d2: Date | null): boolean {\n const x1: number = d1 instanceof Date ? d1.getTime() : -1;\n const x2: number = d2 instanceof Date ? d2.getTime() : -1;\n return x1 !== x2;\n }\n\n setValue(date: Date | null, silent?: boolean) {\n if (this.isDifferent(date, this._value)) {\n this._value = date;\n if (date === null) {\n this._validationErrors = {};\n this._emitValidationChange();\n }\n this._validateValue();\n this._valueChangeSource.next({\n value: this._value,\n propagateChange: !silent\n });\n }\n }\n\n setOption(options: DatepickerValidationOptions) {\n this._options = {\n ...this._options,\n ...options\n } as DatepickerValidationOptions;\n }\n\n hasErrors(): boolean {\n return this._validationErrors !== null;\n }\n\n getErrors(): ValidationErrors | null {\n return this._validationErrors;\n }\n\n setErrors(err: ValidationErrors) {\n this._validationErrors = { ...(this._validationErrors || {}), ...err };\n this._emitValidationChange();\n }\n\n removeErrors(err: string[]) {\n if (this._validationErrors) {\n err.forEach((k) => {\n delete this._validationErrors![k];\n });\n this._emitValidationChange();\n }\n }\n\n private _emitValidationChange() {\n this._validationChangeSource.next(!!this._validationErrors && Object.keys(this._validationErrors).length > 0);\n }\n\n getIntlOptions(withTime = false, hour12 = false): Intl.DateTimeFormatOptions {\n const baseIntlOptions: Intl.DateTimeFormatOptions = {\n day: '2-digit',\n month: '2-digit',\n year: 'numeric'\n };\n const timeIntlOptions: Intl.DateTimeFormatOptions = {\n hour: '2-digit',\n minute: '2-digit',\n hourCycle: hour12 ? 'h12' : 'h23'\n };\n return withTime ? { ...baseIntlOptions, ...timeIntlOptions } : baseIntlOptions;\n }\n\n /**\n * Returns locale specific values for AM/PM\n * @param locale locale string\n * @returns\n */\n getDayPeriodLabels(locale: string): DayPeriodLabels {\n const dtf = new Intl.DateTimeFormat(locale, this.getIntlOptions(true, true));\n const amPart = dtf.formatToParts(new Date('2000-01-01T03:00:00')).find((p) => p.type === 'dayPeriod');\n const pmPart = dtf.formatToParts(new Date('2000-01-01T15:00:00')).find((p) => p.type === 'dayPeriod');\n return {\n am: amPart?.value || 'AM',\n pm: pmPart?.value || 'PM'\n };\n }\n\n private _validateValue(): void {\n this._validationErrors = DatepickerUtils.validateValue(this._value, this._options);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, forwardRef, HostListener, inject, input, Input, Output } from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, UntypedFormControl, Validator } from '@angular/forms';\nimport { DatepickerService } from '../../datepicker.service';\n\n@Component({\n selector: 'yuv-date-input-element',\n templateUrl: './date-input-element.component.html',\n styleUrls: ['./date-input-element.component.scss'],\n standalone: true,\n imports: [CommonModule, FormsModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DateInputElementComponent),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => DateInputElementComponent),\n multi: true\n }\n ]\n})\nexport class DateInputElementComponent implements ControlValueAccessor, Validator {\n private datepickerService = inject(DatepickerService);\n\n _value?: string;\n\n @HostListener('paste', ['$event'])\n pasteHandler(event: ClipboardEvent) {\n const paste = (event.clipboardData || (window as any).clipboardData).getData('text');\n if (paste.length > this.maxLength && this.datepickerService.onPaste(paste)) event.preventDefault();\n }\n\n @HostListener('keydown', ['$event'])\n keyDownHandler(event: KeyboardEvent) {\n if (this.disabled) return;\n // increase value\n else if (event.key === 'ArrowUp') {\n this._stopEvent(event);\n this.increaseValue(event.shiftKey ? 10 : 1);\n }\n // decrease value\n else if (event.key === 'ArrowDown') {\n this._stopEvent(event);\n this.decreaseValue(event.shiftKey ? 10 : 1);\n }\n }\n\n @Input() maxLength = 2;\n @Input() maxValue: number | undefined;\n @Input() minValue = 1;\n @Input() disabled = false;\n placeholder = input<string>('');\n @Output() next = new EventEmitter();\n @Output() prev = new EventEmitter();\n\n protected _isNumber(v: any) {\n return typeof v === 'number' && isFinite(v);\n }\n\n private _stopEvent(event: Event) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n onInputChange(iv: string) {\n this._propagate();\n if (iv?.length === this.maxLength) {\n this.next.emit();\n }\n }\n\n onBlur() {\n if (this._value && this._value.length < this.maxLength) {\n this._setValue(this._value!);\n }\n }\n\n wheelHandler(event: WheelEvent) {\n this._stopEvent(event);\n if (event.deltaY < 0) this.increaseValue();\n else if (event.deltaY > 0) this.decreaseValue();\n }\n\n keydownHandler(event: KeyboardEvent) {\n if (event.key === 'ArrowRight') {\n const caretPos = (event.target as HTMLInputElement).selectionStart;\n if (caretPos === this.maxLength) {\n this.next.emit();\n }\n } else if (event.key === 'ArrowLeft') {\n const caretPos = (event.target as HTMLInputElement).selectionStart;\n if (caretPos === 0) {\n this.prev.emit();\n }\n }\n }\n\n focusHandler(event: FocusEvent) {\n const i = event.target as HTMLInputElement;\n }\n\n protected _setValue(n: any, silent = false) {\n const v = this._isValidInput(n) ? `${[...Array(this.maxLength - n.toString().length).keys()].map((_) => '0').join('')}${n.toString()}` : undefined;\n if (v !== this._value) {\n this._value = v;\n if (!silent) this._propagate();\n // if (n.toString().length !== v?.length) this.validationChange();\n }\n }\n\n increaseValue(step = 1) {\n const v = (parseInt(this._value!) || 0) + step;\n this._setValue(this.maxValue ? (v <= this.maxValue ? v : this.minValue) : v);\n }\n\n decreaseValue(step = 1) {\n const v = (parseInt(this._value!) || 0) - step;\n this._setValue(this.maxValue ? (v < this.minValue ? this.maxValue : v) : v);\n }\n\n private _applyOffset(): boolean {\n return this.maxLength === 4 && !!this.datepickerService.yearOffset;\n }\n\n private _propagate() {\n // being the year input (4 digits) also take yearOffset into accout\n if (this._applyOffset()) {\n let parsedValue = parseInt(this._value || '');\n if (!isNaN(parsedValue)) {\n parsedValue -= this.datepickerService.yearOffset;\n this.propagateChange(`${parsedValue}`);\n } else this.propagateChange(undefined);\n } else this.propagateChange(this._value);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n propagateChange = (_: any) => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n validationChange = () => {};\n\n writeValue(value: any): void {\n if (value !== undefined && this._applyOffset()) {\n let parsedValue = parseInt(value || '');\n if (!isNaN(parsedValue)) {\n parsedValue += this.datepickerService.yearOffset;\n this._setValue(parsedValue);\n }\n } else this._setValue(value, true);\n }\n\n registerOnChange(fn: any): void {\n this.propagateChange = fn;\n }\n\n registerOnValidatorChange?(fn: () => void): void {\n this.validationChange = fn;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n registerOnTouched(fn: any): void {}\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n private _isValidInput(v: any): boolean {\n const n = parseInt(v);\n return this._isNumber(n) && (!this.maxValue || n <= this.maxValue) && (!this.minValue || n >= this.minValue);\n }\n\n validate(c: UntypedFormControl) {\n return !this._value || this._isValidInput(this._value) ? null : { dateInputElement: { valid: false } };\n }\n}\n","<input\n[placeholder]=\"placeholder()\"\n type=\"text\"\n (focus)=\"focusHandler($event)\"\n (keydown)=\"keydownHandler($event)\"\n (wheel)=\"wheelHandler($event)\"\n (blur)=\"onBlur()\"\n [readonly]=\"disabled\"\n pattern=\"[0-9]*\"\n [maxlength]=\"maxLength\"\n [(ngModel)]=\"_value\"\n (ngModelChange)=\"onInputChange($event)\"\n/>\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output, forwardRef } from '@angular/core';\nimport { FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DateInputElementComponent } from '../date-input-element/date-input-element.component';\n\n@Component({\n selector: 'yuv-date-input-hour-element',\n templateUrl: './../date-input-element/date-input-element.component.html',\n styleUrls: ['./../date-input-element/date-input-element.component.scss'],\n standalone: true,\n imports: [CommonModule, FormsModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DateInputHourElementComponent),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => DateInputHourElementComponent),\n multi: true\n }\n ]\n})\nexport class DateInputHourElementComponent extends DateInputElementComponent {\n @Input() set dayPeriod(p: 'am' | 'pm' | undefined) {\n if (p === 'am' || p === 'pm') {\n this.maxValue = 12;\n this.minValue = 1;\n } else {\n this.maxValue = 23;\n this.minValue = 0;\n }\n }\n @Output() dayPeriodChange = new EventEmitter<'am' | 'pm'>();\n\n constructor() {\n super();\n }\n\n override writeValue(value: any): void {\n if (parseInt(value) === 0) this._value = '12';\n this._setValue(value, true);\n }\n}\n","import { Component, forwardRef, Input, OnDestroy, ViewChild } from '@angular/core';\nimport { ControlValueAccessor, FormBuilder, FormGroup, NG_VALUE_ACCESSOR, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { DateInputElementComponent } from '../date-input/date-input-element/date-input-element.component';\nimport { DateInputHourElementComponent } from '../date-input/date-input-hour-element/date-input-hour-element.component';\nimport { DayPeriod, DayPeriodLabels, DEFAULT_DAY_PERIOD_LABELS } from '../datepicker.interface';\nimport { TimeValue } from './time-input.interface';\n\n@Component({\n selector: 'yuv-time-input',\n templateUrl: './time-input.component.html',\n styleUrls: ['./time-input.component.scss'],\n standalone: true,\n imports: [CommonModule, MatIconModule, DateInputHourElementComponent, DateInputElementComponent, MatButtonModule, ReactiveFormsModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TimeInputComponent),\n multi: true\n }\n ]\n})\nexport class TimeInputComponent implements OnDestroy, ControlValueAccessor {\n @ViewChild('dipHour') hourInput!: DateInputHourElementComponent;\n @ViewChild('dipMinute') minuteInput!: DateInputElementComponent;\n\n private _subs: Subscription[] = [];\n private _time?: TimeValue;\n protected _hour12 = false;\n @Input()\n get hour12() {\n return this._hour12;\n }\n set hour12(b: boolean) {\n this._hour12 = b;\n if (this._hour12 && this._time) this._patch(this._time, true);\n }\n @Input() dayPeriodLabels: DayPeriodLabels = DEFAULT_DAY_PERIOD_LABELS;\n\n private _currentDayPeriod?: DayPeriod;\n set currentDayPeriod(p: DayPeriod | undefined) {\n if (p !== this._currentDayPeriod) {\n this._currentDayPeriod = p;\n this._propagate();\n }\n }\n get currentDayPeriod() {\n return this._currentDayPeriod;\n }\n form: FormGroup = this.fb.group({\n hour: ['', [Validators.required]],\n minute: ['', [Validators.required, Validators.max(59)]]\n });\n \n constructor(private fb: FormBuilder) {\n this._subs.push(\n this.form.valueChanges.subscribe({\n next: (v) => this._propagate()\n })\n );\n }\n\n private _propagate() {\n if (this.form.valid) {\n const strHour = this.form.value.hour;\n let hour = parseInt(strHour);\n if (isNaN(hour)) hour = 0;\n if (this.hour12 && hour === 0) {\n hour = 12;\n }\n this._time = {\n hour,\n minute: parseInt(this.form.value.minute),\n dayPeriod: this.currentDayPeriod\n };\n this.propagateChange(this._time);\n }\n }\n\n private _patch(value: TimeValue, silent?: boolean) {\n if (!this._time) {\n const now = new Date();\n this._time = {\n hour: now.getHours(),\n minute: now.getMinutes()\n };\n }\n const patch = {\n hour: value.hour,\n minute: value.minute\n };\n if (this._hour12 && value) {\n this.currentDayPeriod = value.dayPeriod;\n if (this.currentDayPeriod === 'pm' && patch.hour >= 12) {\n patch.hour -= 12;\n }\n if (patch.hour === 0) patch.hour = 12;\n }\n this.form.patchValue(patch, { onlySelf: true, emitEvent: !silent });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n propagateChange = (_: any) => {};\n\n writeValue(value: TimeValue): void {\n if (value === null) return;\n this._time = value;\n this._patch(value, true);\n }\n\n registerOnChange(fn: any): void {\n this.propagateChange = fn;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n registerOnTouched(fn: any): void {}\n\n ngOnDestroy(): void {\n this._subs.forEach((s) => s.unsubscribe());\n }\n}\n","<form [formGroup]=\"form\">\n <yuv-date-input-hour-element\n #dipHour\n class=\"time hour focusable\"\n [(dayPeriod)]=\"currentDayPeriod\"\n formControlName=\"hour\"\n [maxLength]=\"2\"\n ></yuv-date-input-hour-element>\n\n <div class=\"literal\">:</div>\n\n <yuv-date-input-element\n #dipMinute\n class=\"time minute focusable\"\n [maxValue]=\"59\"\n [minValue]=\"0\"\n formControlName=\"minute\"\n [maxLength]=\"2\"\n ></yuv-date-input-element>\n\n @if (hour12) {\n <div class=\"dayPeriod\">\n <button type=\"button\" class=\"dp pm\" [ngClass]=\"{ active: currentDayPeriod === 'pm' }\" (click)=\"currentDayPeriod = 'pm'\">\n {{ dayPeriodLabels.pm }}\n </button>\n <button type=\"button\" class=\"dp am\" [ngClass]=\"{ active: currentDayPeriod === 'am' }\" (click)=\"currentDayPeriod = 'am'\">\n {{ dayPeriodLabels.am }}\n </button>\n </div>\n }\n</form>\n","import { CommonModule } from '@angular/common';\nimport { Component, ElementRef, HostListener, OnInit, effect, inject, input, model, untracked, viewChild } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatSelectModule } from '@angular/material/select';\nimport { DEFAULT_DAY_PERIOD_LABELS, DayPeriodLabels } from '../datepicker.interface';\nimport { DatepickerService } from '../datepicker.service';\nimport { DatepickerUtils } from '../datepicker.utils';\nimport { TimeValue } from '../time-input/time-input.interface';\nimport { TimeInputComponent } from '../time-input/time-input.component';\nimport { TranslateModule } from '@yuuvis/client-core';\n\nexport interface CalendarItem {\n id: string;\n day: number;\n // marked as inactive but still selectable\n inactive?: boolean;\n // not selectable\n disabled?: boolean;\n}\n\n@Component({\n selector: 'yuv-calendar',\n templateUrl: './calendar.component.html',\n styleUrls: ['./calendar.component.scss'],\n standalone: true,\n imports: [CommonModule, FormsModule, \n TranslateModule,\n MatSelectModule, TimeInputComponent],\n providers: [DatepickerService],\n host: {\n tabindex: '0'\n }\n\n})\nexport class CalendarComponent implements OnInit {\n private datepickerService = inject(DatepickerService);\n\n calEl = viewChild.required<ElementRef>('cal');\n private _initialized = false;\n \n maxYear = 9999;\n minYear = -9999;\n\n year?: number;\n _offsetYear?: number;\n month?: number;\n time?: TimeValue;\n\n // feature flag for immediately selecting a new (close) Date when\n // navigating between years/months\n #immediatelySelect = true;\n\n /**\n * Allow only date inputs after this date\n */\n minDate = input<Date>();\n /**\n * Allow only date inputs before this date\n */\n maxDate = input<Date>();\n /**\n * Allow only date inputs that are after today\n */\n onlyFutureDates = input(false);\n\n date = model<Date>();\n #dateEffect = effect(() => {\n const d = this.date();\n untracked(() => {\n // clone date\n const dc = d ? new Date(d.toISOString()) : null;\n if (this.datepickerService.isDifferent(d || null, dc)) {\n if (this._initialized) this.#buildDate();\n }\n });\n });\n\n months: { label: string; value: number }[] = [];\n private DEFAULT_FIRST_DAY_OF_WEEK = 7;\n private _firstDayOfWeek: number = this.DEFAULT_FIRST_DAY_OF_WEEK;\n daysOfWeek: string[] = [];\n dayPeriodLabels: DayPeriodLabels = DEFAULT_DAY_PERIOD_LABELS;\n\n locale = input<string | undefined>();\n #localeEffect = effect(() => {\n this._setLocale(this.locale() || 'en');\n });\n\n withTime = input<boolean>(false);\n #withTimeEffect = effect(() => {\n // keep to trigger effect\n const wt = this.withTime();\n untracked(() => {\n const d = this.date();\n if (d) {\n this.time = this._dateToTime(d);\n }\n });\n });\n hour12 = input<boolean>(false);\n\n @HostListener('keydown', ['$event'])\n keyDownHandler(event: KeyboardEvent) {\n this._handleKeyboardEvent(event);\n }\n\n selectedIndex = -1;\n focusedIndex = 0;\n private _focusPos: { col: number; row: number } = {\n col: 1,\n row: 1\n };\n calendarDays: CalendarItem[] = [];\n private _numberOfWeeks = 4;\n\n constructor() {\n const d = this.date() || new Date();\n this.selectMonthOfYear(d.getMonth(), d.getFullYear());\n this.time = {\n hour: d.getHours(),\n minute: d.getMinutes()\n };\n }\n\n private _dateToTime(date: Date): TimeValue {\n const hour = date.getHours();\n const dayPeriod = this.hour12() ? (date.getHours() >= 12 ? 'pm' : 'am') : undefined;\n\n return structuredClone({\n hour: dayPeriod === 'pm' && hour > 12 ? hour - 12 : hour,\n minute: date.getMinutes(),\n dayPeriod\n });\n }\n\n #buildDate() {\n const _date = this.date();\n const _withTime = this.withTime();\n if (_date) {\n this.selectedIndex = -1;\n this.selectMonthOfYear(_date.getMonth(), _date.getFullYear(), true);\n\n if (_withTime) {\n this.time = this._dateToTime(_date);\n _date.setSeconds(0, 0);\n } else {\n _date.setHours(0, 0, 0, 0);\n }\n this.select(_date, true, true);\n }\n }\n\n selectByIndex(i: number, setFocusPosition?: boolean) {\n const d = new Date(this.calendarDays[i].id);\n if (this.time) {\n d.setHours(this.time.dayPeriod === 'pm' && this.time.hour < 12 ? this.time.hour + 12 : this.time.hour);\n d.setMinutes(this.time.minute);\n }\n this.select(d, setFocusPosition);\n }\n\n select(d: Date | string | number, setFocusPosition?: boolean, silent?: boolean) {\n const date = d instanceof Date ? d : new Date(d);\n // also be aware of time\n if (this.withTime()) {\n const time = this._dateToTime(date);\n\n if (this.time && this.time.hour === time.hour && this.time.minute === time.minute) {\n let amPmShift = this.time.dayPeriod === 'pm' && this.time.hour !== 12 ? 12 : 0;\n if (this.time.dayPeriod === 'am' && this.time.hour === 12) amPmShift = -12;\n date.setHours(this.time.hour + amPmShift);\n date.setMinutes(this.time.minute, 0, 0);\n } else this.time = time;\n }\n if (!this.onlyFutureDates() || DatepickerUtils.isFutureDate(date)) {\n this.selectedIndex = this._getCalendarIndex(date);\n if (setFocusPosition) this._setFocusPosByCalendarIndex(this.selectedIndex);\n this.date.update(() => date);\n // if (!silent) this.dateChange.emit(date);\n }\n }\n\n selectMonthOfYear(month: number, year?: number, skipImmediateSelect?: boolean) {\n if (month < 0 || month > 11) return;\n if (month !== this.month) this.month = month;\n if (!this.year && !year) this.year = new Date().getFullYear();\n if (year && this.year !== year) this.year = year;\n if (this.year && this.datepickerService.yearOffset) this._offsetYear = this.year + this.datepickerService.yearOffset;\n else this._offsetYear = this.year;\n this._buildMonth(this.year!, this.month);\n\n const date = this.date();\n if (!skipImmediateSelect && this.#immediatelySelect && date) {\n let d = new Date(date);\n d.setMonth(month);\n\n if (d.getMonth() !== month) {\n // already in the next month (e.g. going from the 31st of August to September)\n // so we'll pick the last date of the month that has been selected\n d = new Date(d.getFullYear(), month + 1, 0);\n }\n this.select(d, true);\n }\n }\n\n selectYear(year: number, skipImmediateSelect?: boolean) {\n if (this.datepickerService.yearOffset) year -= this.datepickerService.yearOffset;\n if (year > this.maxYear || year < this.minYear) return;\n if (year && this.year !== year) this.year = year;\n this._buildMonth(this.year!, this.month!);\n\n const date = this.date();\n if (!skipImmediateSelect && this.#immediatelySelect && date) {\n const d = new Date(date);\n d.setFullYear(year);\n this.select(d, true);\n }\n }\n\n onYearInputKeydown(e: KeyboardEvent) {\n e.stopPropagation();\n }\n\n onTimeChange(e: TimeValue) {\n const date = this.date();\n if (date) {\n let hour: number = e.dayPeriod === 'pm' && e.hour < 12 ? e.hour + 12 : e.hour;\n hour = e.dayPeriod === 'am' && hour === 12 ? 0 : hour;\n date.setHours(hour === 24 ? 0 : hour);\n date.setMinutes(e.minute);\n this.time = e;\n }\n this.date.update(() => date);\n }\n\n private _setLocale(locale: string) {\n this.dayPeriodLabels = this.datepickerService.getDayPeriodLabels(locale);\n const mFormat = new Intl.DateTimeFormat(locale, { month: 'long' }).format;\n this.months = [...Array(12).keys()].map((m) => mFormat(new Date(Date.UTC(2021, m % 12)))).map((label, index) => ({ label, value: index }));\n\n const dFormat = new Intl.DateTimeFormat(locale, { weekday: 'short' }).format;\n\n this._firstDayOfWeek = DatepickerUtils.getWeekInfo(this.locale() || 'en').firstDay - 1;\n const daysOfWeekIdx = [];\n for (let i = 0; i < 7; i++) {\n let x = this._firstDayOfWeek + i;\n if (x > 6) x -= 7;\n daysOfWeekIdx.push(x);\n }\n this.daysOfWeek = daysOfWeekIdx.map((day) => dFormat(new Date(Date.UTC(2021, 5, day))));\n this._buildMonth(this.year!, this.month!);\n }\n\n private _reset() {\n this.selectedIndex = -1;\n this.focusedIndex = 0;\n }\n\n private _buildMonth(year: number, month: number) {\n this._reset();\n // TODO: find a more generic approach (if there actually are other first days of week than sonday and monday)\n const startDayOffset = this._firstDayOfWeek === 0 ? -1 : 0;\n let firstDayOfMonthInWeek: number = new Date(year, month).getDay() + startDayOffset;\n if (firstDayOfMonthInWeek === -1) firstDayOfMonthInWeek = 6;\n const lastDateOfMonth: number = new Date(year, month + 1, 0).getDate(),\n lastDayOfMonthInWeek: number = new Date(year, month, lastDateOfMonth).getDay() + startDayOffset,\n lastDateOfPreviousMonth: number = new Date(year, month, 0).getDate();\n\n const today = new Date();\n today.setDate(today.getDate() - 1);\n today.setHours(23, 59, 59);\n const items: CalendarItem[] = [];\n // previous months last days\n for (let i = firstDayOfMonthInWeek; i > 0; i--) {\n const day = lastDateOfPreviousMonth - i + 1;\n items.push({\n day,\n disabled: DatepickerUtils.isValidValue(new Date(year, month, i), {\n onlyFutureDates: this.onlyFutureDates(),\n withTime: this.withTime(),\n maxDate: this.maxDate(),\n minDate: this.minDate()\n }),\n inactive: true,\n id: this._getDayId(year, month - 1, day)\n });\n }\n // all days of current month\n for (let i = 1; i <= lastDateOfMonth; i++) {\n items.push({\n day: i,\n disabled: DatepickerUtils.isValidValue(new Date(year, month, i), {\n onlyFutureDates: this.onlyFutureDates(),\n withTime: this.withTime(),\n maxDate: this.maxDate(),\n minDate: this.minDate()\n }),\n id: this._getDayId(year, month, i)\n });\n }\n // next months first days\n for (let i = lastDayOfMonthInWeek; i < 6; i++) {\n const day = i - lastDayOfMonthInWeek + 1;\n items.push({\n day,\n inactive: true,\n id: this._getDayId(year, month + 1, day)\n });\n }\n this._numberOfWeeks = items.length / 7;\n this.calendarDays = items;\n\n const date = this.date();\n if (date?.getMonth() === month && date?.getFullYear() === year) {\n this.select(date, true, true);\n }\n }\n\n private _getDayId(year: number, month: number, day: number): string {\n const d = new Date(year, month, day);\n return `${d.getFullYear()}-${d.getMonth() + 1}-${d.getDate()}`;\n }\n\n private _handleKeyboardEvent(event: KeyboardEvent) {\n switch (event.code) {\n case 'PageDown': {\n // go to previous month\n const d = new Date(this.year!, this.month!);\n d.setMonth(this.month! - 1);\n this.selectMonthOfYear(d.getMonth(), d.getFullYear());\n this._stopEvent(event);\n break;\n }\n case 'PageUp': {\n // go to next month\n const d = new Date(this.year!, this.month!);\n d.setMonth(this.month! + 1);\n this.selectMonthOfYear(d.getMonth(), d.getFullYear());\n this._stopEvent(event);\n break;\n }\n case 'Home': {\n // focus first day of month\n this._setFocusPosByCalendarIndex(this._getCalendarIndex(new Date(this.year!, this.month!, 1)));\n this._stopEvent(event);\n break;\n }\n case 'End': {\n // focus last day of month\n this._setFocusPosByCalendarIndex(this._getCalendarIndex(new Date(this.year!, this.month! + 1, 0)));\n this._stopEvent(event);\n break;\n }\n case 'Space': {\n this.selectByIndex(this.focusedIndex, false);\n this._stopEvent(event);\n break;\n }\n case 'ArrowUp': { \n let row = this._focusPos.row - 1;\n if (row <= 0) row = this._numberOfWeeks;\n this._setFocusPos(row, undefined);\n this._stopEvent(event);\n break;\n }\n case 'ArrowDown': {\n let row = this._focusPos.row + 1;\n if (row > this._numberOfWeeks) row = 1;\n this._setFocusPos(row, undefined);\n this._stopEvent(event);\n break;\n }\n case 'ArrowRight': {\n let col = this._focusPos.col + 1;\n let row = this._focusPos.row;\n if (col > 7) {\n col = 1;\n row++;\n if (row > this._numberOfWeeks) {\n // go to next month\n const d = new Date(this.calendarDays[this.calendarDays.length - 1].id);\n d.setDate(d.getDate() + 1);\n row = col = 1;\n this.selectMonthOfYear(d.getMonth(), d.getFullYear());\n }\n }\n this._setFocusPos(row, col);\n this._stopEvent(event);\n break;\n }\n case 'ArrowLeft': {\n let col = this._focusPos.col - 1;\n let row = this._focusPos.row;\n if (col <= 0) {\n col = 7;\n row--;\n if (row <= 0) {\n // go to previous month\n const d = new Date(this.calendarDays[0].id);\n d.setDate(d.getDate() - 1);\n row = this._numberOfWeeks;\n col = 7;\n this.selectMonthOfYear(d.getMonth(), d.getFullYear());\n }\n }\n this._setFocusPos(row, col);\n this._stopEvent(event);\n break;\n }\n }\n }\n\n private _getCalendarIndex(date: Date): number {\n return this.calendarDays.findIndex((cd) => cd.id === this._getDayId(date.getFullYear(), date.getMonth(), date.getDate()));\n }\n\n private _stopEvent(e?: Event) {\n if (e) {\n e.stopPropagation();\n e.preventDefault();\n }\n }\n\n private _setFocusPos(row?: number, col?: number) {\n if (row !== undefined) this._focusPos.row = row;\n if (col !== undefined) this._focusPos.col = col;\n this.focusedIndex = (this._focusPos.row - 1) * 7 + this._focusPos.col - 1;\n }\n private _setFocusPosByCalendarIndex(index: number) {\n this.focusedIndex = index;\n this._focusPos = {\n col: (this.focusedIndex % 7) + 1,\n row: Math.round(this.focusedIndex / this._numberOfWeeks)\n };\n }\n\n ngOnInit(): void {\n // this.locale = !this.locale ? 'en' : this.locale;\n this._initialized = true;\n this.#buildDate();\n }\n}\n","<section class=\"date\">\n <header>\n <div class=\"month-picker\">\n <mat-select [panelWidth]=\"null\" [(ngModel)]=\"month\" (ngModelChange)=\"selectMonthOfYear($event)\">\n <mat-select-trigger>\n {{ month !== undefined ? months[month].label : '' }} \n </mat-select-trigger>\n @for (m of months; track $index) {\n <mat-option [value]=\"m.value\">{{ m.label }}</mat-option>\n }\n </mat-select>\n </div>\n\n <input\n class=\"year-picker\"\n name=\"year\"\n type=\"number\"\n [min]=\"minYear\"\n [max]=\"maxYear\"\n [(ngModel)]=\"_offsetYear\"\n (keydown)=\"onYearInputKeydown($event)\"\n (ngModelChange)=\"selectYear($event)\"\n />\n </header>\n <main>\n <ul class=\"daysOfWeek\">\n @for (d of daysOfWeek; track d) {\n <li>{{ d }}</li>\n }\n </ul>\n <ul class=\"days\">\n @for (d of calendarDays; track d; let i = $index) {\n <li\n [attr.data-day]=\"d.id\"\n (click)=\"selectByIndex(i, true)\"\n [ngClass]=\"{\n disabled: d.disabled,\n inactive: d.inactive,\n focused: i === focusedIndex,\n selected: i === selectedIndex\n }\"\n >\n {{ d.day }}\n </li>\n }\n </ul>\n </main>\n</section>\n@if (withTime()) {\n <section class=\"time\">\n <label>{{'yuv.calendar.time.label' | translate}}\n <yuv-time-input [(ngModel)]=\"time\" [hour12]=\"hour12()\" [dayPeriodLabels]=\"dayPeriodLabels\" (ngModelChange)=\"onTimeChange($event)\"></yuv-time-input>\n </label>\n </section>\n}\n","import { Component, ElementRef, HostBinding, Input, OnDestroy, OnInit, QueryList, ViewChildren } from '@angular/core';\nimport { AbstractControl, FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\nimport { CommonModule } from '@angular/common';\nimport { DatepickerValueChange, DayPeriod, DayPeriodLabels } from '../datepicker.interface';\nimport { DatepickerService } from '../datepicker.service';\nimport { DateInputElementComponent } from './date-input-element/date-input-element.component';\nimport { DateInputHourElementComponent } from './date-input-hour-element/date-input-hour-element.component';\n\n/**\n *\n */\n@Component({\n selector: 'yuv-date-input',\n templateUrl: './date-input.component.html',\n styleUrls: ['./date-input.component.scss'],\n standalone: true,\n imports: [CommonModule, DateInputHourElementComponent, DateInputElementComponent, ReactiveFormsModule]\n})\nexport class DateInputComponent implements OnInit, OnDestroy {\n @ViewChildren(DateInputElementComponent, { read: ElementRef })\n dateInputEls?: QueryList<ElementRef>;\n\n private _subs: Subscription[] = [];\n private _formValueSub?: Subscription;\n private _formStateSub?: Subscription;\n @HostBinding('class.has-value')\n private _date: Date | null = null;\n private _intlOptions?: Intl.DateTimeFormatOptions;\n\n @HostBinding('attr.data-datevalue') dateAttribute?: string;\n\n @Input() set disabled(d: boolean) {\n this._disabled = d;\n if (d) {\n this.dateInputForm?.disable();\n } else {\n this.dateInputForm?.enable();\n }\n }\n private _disabled = false;\n\n private _refreshPlaceholder = true;\n _placeholder?: string;\n @Input() set placeholder(p: string) {\n this._placeholder = p;\n this._refreshPlaceholder = false;\n }\n\n private _locale: string = this.datepickerService.DEFAULT_LANGUAGE;\n private _withTime = false;\n @Input()\n set withTime(b: boolean) {\n this._withTime = b;\n if (b !== undefined) this._init();\n }\n get withTime() {\n return this._withTime;\n }\n\n private _hour12 = false;\n @Input() set hour12(b: boolean) {\n if (b === this._hour12) return;\n this._hour12 = b;\n if (b !== undefined) this._init(true);\n }\n get hour12() {\n return this._hour12;\n }\n\n get hoursControl(): AbstractControl {\n return this.dateInputForm!.controls['hour']!;\n }\n\n // @Output() blur = new EventEmitter<any>();\n // @Output() focus = new EventEmitter<any>();\n\n dateTokens: Intl.DateTimeFormatPart[] = [];\n dateInputForm?: FormGroup;\n currentDayPeriod?: DayPeriod;\n dayPeriodLabels: DayPeriodLabels = {\n am: 'AM',\n pm: 'PM'\n };\n // _placeholderVisible = true;\n\n constructor(\n private datepickerService: DatepickerService,\n private fb: FormBuilder,\n private elRef: ElementRef\n ) {}\n\n private _setupForm() {\n const dateTokens = this._getPatch(this._date);\n const dateCfg = {\n day: [dateTokens.day, [Validators.max(31), Validators.minLength(2)]],\n month: [dateTokens.month, [Validators.max(12), Validators.minLength(2)]],\n year: [dateTokens.year, [Validators.minLength(4)]]\n };\n const timeCfg = {\n hour: [dateTokens.hour, [Validators.minLength(2)]],\n minute: [dateTokens.minute, [Validators.max(59), Validators.minLength(2)]]\n };\n\n this.dateInputForm = this.fb.group(this.withTime ? { ...dateCfg, ...timeCfg } : dateCfg, {\n validators: (g: FormGroup) => {\n let valueCount = 0;\n Object.keys(g.value).forEach((k) => {\n if (g.value[k] && `${g.value[k]?.length}`) valueCount++;\n });\n return valueCount === 0 || valueCount === Object.keys(g.value).length\n ? null\n : {\n missingValue: true\n };\n }\n });\n\n if (this._formValueSub) {\n this._formValueSub.unsubscribe();\n this._formValueSub = undefined;\n this._formStateSub!.unsubscribe();\n this._formStateSub = undefined;\n }\n\n this._disabled && this.dateInputForm?.disable();\n this._formValueSub = this.dateInputForm!.valueChanges.subscribe({\n next: (v) => {\n this._checkAndPropagateForm();\n }\n });\n this._formStateSub = this.dateInputForm!.statusChanges.subscribe({\n next: (v) => {\n this._setInvalidInputError(v === 'INVALID');\n }\n });\n }\n\n private _setInvalidInputError(isInvalid: boolean) {\n if (isInvalid) {\n this.datepickerService.setErrors({\n invalidInput: true\n });\n } else {\n this.datepickerService.removeErrors(['invalidInput']);\n }\n }\n\n private _checkAndPropagateForm() {\n if (this.dateInputForm?.status === 'VALID') {\n this._date = this._formToDate(this.dateInputForm!);\n this.datepickerService.setValue(this._date);\n }\n }\n\n private _formToDate(g: FormGroup): Date | null {\n // starting with a year of '0000' because there could be negative values\n // that would break the date creation using string parameter\n let dateString = `0000-${g.controls['month'].value}-${g.controls['day'].value}`;\n if (this.withTime) {\n const strHour: string = g.controls['hour'].value;\n let hour: number = strHour?.length ? parseInt(strHour) : -1;\n if (this.hour12) {\n hour = this.currentDayPeriod === 'pm' && hour < 12 ? hour + 12 : hour;\n hour = this.currentDayPeriod === 'am' && hour === 12 ? 0 : hour;\n hour = hour === 24 ? 0 : hour;\n }\n dateString += `T${hour < 10 ? `0${hour}` : `${hour}`}:${g.controls['minute'].value}:00`;\n }\n const date = new Date(dateString);\n let isValidDateObject = !!date && Object.prototype.toString.call(date) === '[object Date]' && !isNaN(date!.getTime());\n if (isValidDateObject) {\n // set the year independently\n const parsedYear = parseInt(g.controls['year'].value);\n if (!isNaN(parsedYear)) {\n date.setFullYear(parsedYear);\n } else {\n isValidDateObject = false;\n }\n }\n this._setInvalidInputError(!isValidDateObject);\n return isValidDateObject ? date : null;\n }\n\n private _focusInput(offset: number) {\n const inputs: HTMLInputElement[] = this._getFocusableElements();\n let i = inputs.findIndex((i) => i === document.activeElement);\n i = i + offset;\n if (i > inputs.length - 1) i = 0;\n if (i < 0) i = inputs.length - 1;\n inputs[i].focus();\n }\n\n onFormClick(event: MouseEvent) {\n if ((event.target as HTMLElement).tagName.toLowerCase() === 'form') {\n this.focusFirstInput();\n }\n }\n\n onDateInputBlur() {\n let hasValue = false;\n Object.keys(this.dateInputForm?.value || {}).forEach((k) => {\n if (!hasValue && !!this.dateInputForm?.value[k]) hasValue = true;\n });\n (this.elRef.nativeElement as HTMLElement).classList.toggle('is-dirty', hasValue);\n }\n\n focusFirstInput() {\n this._getFocusableElements()[0].focus();\n }\n\n private _getFocusableElements(): HTMLInputElement[] {\n return Array.from(this.elRef.nativeElement.querySelectorAll('input:not([inert])'));\n }\n\n private _getPatch(d?: Date | null): {\n day: string;\n month: string;\n year: string;\n hour: string;\n minute: string;\n } {\n const patch: any = {\n day: undefined,\n month: undefined,\n year: undefined,\n hour: undefined,\n minute: undefined\n };\n if (d) {\n // year may have an offset (e.g. locale 'th')\n // Intl would return the offsetted value therefore we get the year from the date itself\n patch.year = d.getFullYear();\n const l = patch.year.length;\n if (l > 0 && l !== 4) {\n patch.year = `${[...Array(4 - l).keys()].map((_) => '0').join('')}${patch.year}`;\n }\n\n Intl.DateTimeFormat(this._locale, this._intlOptions)\n .formatToParts(d)\n .forEach((t: Intl.DateTimeFormatPart) => {\n switch (t.type) {\n case 'day': {\n patch.day = t.value;\n break;\n }\n case 'month': {\n patch.month = t.value;\n break;\n }\n case 'hour': {\n patch.hour = t.value === '24' ? '0' : t.value;\n break;\n }\n case 'minute': {\n patch.minute = t.value;\n break;\n }\n case 'dayPeriod': {\n this.currentDayPeriod = t.value === 'AM' ? 'am' : 'pm';\n break;\n }\n }\n });\n }\n return patch;\n }\n\n reset() {\n this.datepickerService.setValue(null);\n }\n\n getFormattedValue(): string | null {\n return this._date ? Intl.DateTimeFormat(this._locale, this._intlOptions).format(this._date) : null;\n }\n\n onInputNext() {\n this._focusInput(1);\n }\n\n onInputPrev() {\n this._focusInput(-1);\n }\n\n toggleDayPeriod() {\n this.currentDayPeriod = this.currentDayPeriod === 'pm' ? 'am' : 'pm';\n this._checkAndPropagateForm();\n }\n\n private _init(skipFormSetup = false) {\n this._setPlaceholder();\n this._intlOptions = this.datepickerService.getIntlOptions(this.withTime, this.hour12);\n const d: Date = this._date || new Date();\n this.dateTokens = new Intl.DateTimeFormat(this._locale, this._intlOptions).formatToParts(d);\n if (this.hour12) {\n this.currentDayPeriod = d.getHours() > 12 ? 'pm' : 'am';\n\n this.dayPeriodLabels = this.datepickerService.getDayPeriodLabels(this._locale);\n }\n if (!skipFormSetup) this._setupForm();\n }\n\n private _setPlaceholder() {\n this.placeholder = this.datepickerService.getDatePattern(this._locale, this.withTime, this.hour12);\n }\n\n ngOnInit(): void {\n this._subs.push(\n this.datepickerService.language$.subscribe({\n next: (lang) => {\n if (lang !== this._locale) {\n this._locale = lang;\n this._init(true);\n if (this._refreshPlaceholder) this._setPlaceholder();\n }\n }\n })\n );\n this._subs.push(\n this.datepickerService.valueChange$.subscribe({\n next: (vc: DatepickerValueChange) => {\n this._date = vc.value;\n this.dateAttribute = this.getFormattedValue() || undefined;\n this.dateInputForm!.patchValue(this._getPatch(vc.value), {\n emitEvent: false\n });\n // this.dateInputForm?.updateValueAndValidity()\n }\n })\n );\n this._init();\n }\n\n ngOnDestroy(): void {\n if (this._formValueSub) this._formValueSub.unsubscribe();\n if (this._formStateSub) this._formStateSub.unsubscribe();\n this._subs.forEach((s) => s.unsubscribe());\n }\n}\n","@if (dateInputForm) {\n <form [formGroup]=\"dateInputForm!\" \n (click)=\"onFormClick($event)\" (yuvFocusWithinBlur)=\"onDateInputBlur()\">\n @for (t of dateTokens; track t) {\n @switch (t.type) {\n <!-- day -->\n @case ('day') {\n <yuv-date-input-element\n placeholder=\"31\"\n [ngClass]=\"{ disabled: dateInputForm.disabled }\"\n [attr.aria-disabled]=\"dateInputForm.disabled\"\n formControlName=\"day\"\n [maxLength]=\"2\"\n [minValue]=\"1\"\n [maxValue]=\"31\"\n (prev)=\"onInputPrev()\"\n (next)=\"onInputNext()\"\n ></yuv-date-input-element>\n }\n <!-- month -->\n @case ('month') {\n <yuv-date-input-element\n placeholder=\"12\"\n [ngClass]=\"{ disabled: dateInputForm.disabled }\"\n [attr.aria-disabled]=\"dateInputForm.disabled\"\n formControlName=\"month\"\n [maxLength]=\"2\"\n [minValue]=\"1\"\n [maxValue]=\"12\"\n (prev)=\"onInputPrev()\"\n (next)=\"onInputNext()\"\n ></yuv-date-input-element>\n }\n <!-- year -->\n @case ('year') {\n <yuv-date-input-element\n placeholder=\"2000\"\n class=\"year\"\n [ngClass]=\"{ disabled: dateInputForm.disabled }\"\n [attr.aria-disabled]=\"dateInputForm.disabled\"\n formControlName=\"year\"\n [maxLength]=\"4\"\n (prev)=\"onInputPrev()\"\n (next)=\"onInputNext()\"\n ></yuv-date-input-element>\n }\n <!-- hours -->\n @case ('hour') {\n <yuv-date-input-hour-element\n placeholder=\"10\"\n [ngClass]=\"{ disabled: dateInputForm.disabled }\"\n [attr.aria-disabled]=\"dateInputForm.disabled\"\n [(dayPeriod)]=\"currentDayPeriod\"\n formControlName=\"hour\"\n [maxLength]=\"2\"\n (prev)=\"onInputPrev()\"\n (next)=\"onInputNext()\"\n ></yuv-date-input-hour-element>\n }\n <!-- minutes -->\n @case ('minute') {\n <yuv-date-input-element\n placeholder=\"00\"\n [ngClass]=\"{ disabled: dateInputForm.disabled }\"\n [attr.aria-disabled]=\"dateInputForm.disabled\"\n [minValue]=\"0\"\n [maxValue]=\"59\"\n formControlName=\"minute\"\n [maxLength]=\"2\"\n (prev)=\"onInputPrev()\"\n (next)=\"onInputNext()\"\n ></yuv-date-input-element>\n }\n @case ('literal') {\n <input type=\"text\" class=\"literal\" [value]=\"t.value\" readonly inert />\n }\n @case ('dayPeriod') {\n <button type=\"button\" class=\"dayPeriod\" [disabled]=\"dateInputForm.disabled\" (click)=\"toggleDayPeriod()\">\n {{ dayPeriodLabels[currentDayPeriod!] }}\n </button>\n }\n }\n }\n </form>\n}\n","import { Component, HostListener, inject } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { CalendarComponent } from '../calendar/calendar.component';\nimport { DatepickerCalendarOptions } from '../datepicker.interface';\nimport { YmtButtonDirective } from '@yuuvis/material';\n\n@Component({\n selector: 'yuv-datepicker-calendar',\n templateUrl: './datepicker-calendar.component.html',\n styleUrls: ['./datepicker-calendar.component.scss'],\n standalone: true,\n imports: [CalendarComponent, MatDialogModule, MatButtonModule, YmtButtonDirective]\n})\nexport class DatepickerCalendarComponent {\n #dialogData = inject<any>(MAT_DIALOG_DATA);\n readonly #dialogRef = inject(MatDialogRef<DatepickerCalendarComponent>);\n\n date: Date | undefined = this.#dialogData.date;\n options: DatepickerCalendarOptions = this.#dialogData.options;\n\n @HostListener('keydown.enter', ['$event']) enterKeyHandler(event: KeyboardEvent) {\n this.applyDate();\n event.preventDefault();\n event.stopPropagation();\n }\n\n shortcut(key: string) {\n switch (key) {\n case 'today': {\n const today = new Date();\n if (this.options.withTime && this.date) {\n // keep time value\n today.setHours(this.date.getHours());\n today.setMinutes(this.date.getMinutes());\n }\n this.date = today;\n break;\n }\n }\n }\n\n applyDate() {\n this.#dialogRef.close(this.date);\n }\n}\n","<mat-dialog-content>\n <yuv-calendar tabindex=\"0\"\n [locale]=\"options.locale\"\n [onlyFutureDates]=\"options.onlyFutureDates || false\"\n [(date)]=\"date\"\n [withTime]=\"options.withTime || false\"\n [minDate]=\"options.minDate\"\n [maxDate]=\"options.maxDate\"\n [hour12]=\"options.hour12 || false\"\n ></yuv-calendar>\n</mat-dialog-content>\n<mat-dialog-actions>\n <button type=\"button\" ymtButton=\"secondary\" mat-dialog-close>{{ options.labels!.calendarCancel }}</button>\n <!-- <button type=\"button\" mat-button (click)=\"shortcut('today')\">{{ options.labels!.shortcut.today }}</button> -->\n <button type=\"button\" ymtButton=\"primary\" [mat-dialog-close]=\"true\" (click)=\"applyDate()\">{{ options.labels!.calendarApply }}</button>\n</mat-dialog-actions>\n","import { Component, forwardRef, HostBinding, HostListener, inject, Input, OnDestroy, OnInit, signal, ViewChild } from '@angular/core';\nimport { AbstractControl, ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule, ValidationErrors, Validator } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { FocusWithinDirective } from '@yuuvis/client-framework/common';\nimport { DateInputComponent } from './date-input/date-input.component';\nimport { DatepickerCalendarComponent } from './datepicker-calendar/datepicker-calendar.component';\nimport { DatepickerLabels, DatepickerValueChange } from './datepicker.interface';\nimport { DatepickerService } from './datepicker.service';\nimport { DatepickerUtils } from './datepicker.utils';\nimport { YmtIconButtonDirective } from '@yuuvis/material';\n\n@Component({\n selector: 'yuv-datepicker',\n templateUrl: './datepicker.component.html',\n styleUrls: ['./datepicker.component.scss'],\n standalone: true,\n imports: [CommonModule, MatIconModule, DateInputComponent, \n YmtIconButtonDirective,\n MatButtonModule, ReactiveFormsModule],\n providers: [\n DatepickerService,\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatepickerComponent),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => DatepickerComponent),\n multi: true\n }\n ],\n host: {\n 'class.all-selected': 'allSelected()'\n },\n hostDirectives: [FocusWithinDirective]\n})\nexport class DatepickerComponent implements ControlValueAccessor, Validator, OnInit, OnDestroy {\n #dialog = inject(MatDialog);\n #datepickerService = inject(DatepickerService);\n\n private _subs: Subscription[] = [];\n @ViewChild(DateInputComponent) dateInputCmp!: DateInputComponent;\n\n allSelected = signal<boolean>(false);\n\n @HostListener('keydown', ['$event'])\n keydownHandler(e: KeyboardEvent) {\n if (e.key === 'a' && e.ctrlKey) {\n // select all\n e.preventDefault();\n this.allSelected.set(true);\n } else if (e.key === 'Delete' && this.allSelected) {\n // delete the whole date\n if (this.readonly || this.disabled) return;\n this.allSelected.set(false);\n this.clear();\n e.preventDefault();\n e.stopPropagation();\n } else if (this.allSelected() && e.key === 'c' && e.ctrlKey) {\n this.copyToClipboard();\n } else {\n this.allSelected.set(false);\n }\n }\n\n @HostListener('click') clickHandler() {\n this.allSelected.set(false);\n }\n @HostListener('focusout') focusOutHandler() {\n this.allSelected.set(false);\n }\n\n /**\n * Whether or not to show a calendar picker\n */\n @Input() calendar = false;\n\n /**\n * Whether or not the component is readonly\n */\n @Input() readonly = false;\n _hour12 = false;\n /**\n * Whether or not to 12-hour format vs. default 24h format.\n * By default the component will try to figure out which hour cycle to\n * use based on the locale. Setting hour12 property to either `\n * `true`or `false will overwrite that.\n */\n @Input() set hour12(b: boolean) {\n if (b === true || b === false) {\n this._hour12 = b;\n this._detectHourCycle = false;\n }\n }\n private _detectHourCycle = true;\n\n private _locale: string = this.#datepickerService.DEFAULT_LANGUAGE;\n @Input() set locale(iso: string) {\n if (iso !== this._locale) {\n this._locale = iso;\n if (this._detectHourCycle) this._getHourCycle();\n this.#datepickerService.setLanguage(iso);\n }\n }\n get locale() {\n return this._locale;\n }\n\n private _defaultLabelslabels: DatepickerLabels = {\n calendarApply: 'Apply',\n calendarCancel: 'Cancel',\n shortcut: { today: 'today' }\n };\n\n private _labels: DatepickerLabels = this._defaultLabelslabels;\n @Input() set labels(l: DatepickerLabels | undefined) {\n this._labels = l || this._defaultLabelslabels;\n }\n get labels() {\n return this._labels;\n }\n\n private _withTime = false;\n /**\n * Whether or not to also include time\n */\n @Input() set withTime(b: boolean) {\n this._withTime = b;\n this.#datepickerService.setOption({ withTime: b });\n }\n get withTime() {\n return this._withTime;\n }\n /**\n * Allow only date inputs that are after today\n */\n @Input() set onlyFutureDates(b: boolean) {\n this.#datepickerService.setOption({ onlyFutureDates: b });\n }\n /**\n * Allow only date inputs after this date\n */\n @Input() set minDate(d: Date) {\n this.#datepickerService.setOption({ minDate: d || undefined });\n }\n /**\n * Allow only date inputs before this date\n */\n @Input() set maxDate(d: Date) {\n this.#datepickerService.setOption({ maxDate: d || undefined });\n }\n\n @HostBinding('attr.aria-disabled')\n @Input()\n disabled = false;\n calendarValue: Date | null = null;\n #dialogRef: MatDialogRef<DatepickerCalendarComponent> | undefined;\n\n copyToClipboard() {\n const fd = this.dateInputCmp.getFormattedValue();\n if (fd) navigator.clipboard.writeText(fd);\n }\n\n clear() {\n this.#datepickerService.setValue(null);\n this.dateInputCmp.focusFirstInput();\n }\n\n openCalendar() {\n if (!this.calendarValue) this.calendarValue = new Date();\n this.#dialogRef = this.#dialog.open(DatepickerCalendarComponent, {\n data: {\n date: this.calendarValue,\n options: {\n withTime: this.withTime,\n onlyFutureDates: this.onlyFutureDates,\n minDate: this.minDate,\n maxDate: this.maxDate,\n hour12: this._hour12,\n locale: this.locale,\n labels: this.labels\n }\n }\n });\n this.#dialogRef.afterClosed().subscribe({\n next: (date: Date) => {\n if (date) this.onCalendarDateApply(date);\n }\n });\n }\n\n onCalendarDateApply(date: Date) {\n this.calendarValue = date;\n this.#datepickerService.setValue(this.calendarValue);\n this.closeCalendar();\n }\n\n onTextInputStatusChange(e: { valid: boolean }) {\n this.validationChange();\n }\n\n closeCalendar() {\n this.#dialogRef?.close();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onDateInputBlur() {}\n\n validate(ac: AbstractControl): ValidationErrors | null {\n return this.#datepickerService.getErrors();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n propagateChange = (_: any) => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n validationChange = () => {};\n\n writeValue(value: any): void {\n if(value && DatepickerUtils.isValidDate(value)) {\n this.#datepickerService.setValue(value || null, true);\n }\n }\n\n registerOnChange(fn: () => void): void {\n this.propagateChange = fn;\n }\n\n registerOnValidatorChange?(fn: () => void): void {\n this.validationChange = fn;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n registerOnTouched(fn: () => void): void {}\n\n private _getHourCycle() {\n this._hour12 = DatepickerUtils.getPreferredHourCycle(this._locale) === 'h12';\n }\n\n ngOnInit(): void {\n if (this._detectHourCycle) this._getHourCycle();\n this._subs.push(\n this.#datepickerService.valueChange$.subscribe({\n next: (vc: DatepickerValueChange) => {\n this.calendarValue = vc.value;\n if (vc.propagateChange) this.propagateChange(vc.value);\n }\n })\n );\n this._subs.push(\n this.#datepickerService.validationChange$.subscribe({\n next: (valid: boolean) => {\n this.validationChange();\n }\n })\n );\n }\n\n ngOnDestroy(): void {\n this._subs.forEach((s) => s.unsubscribe());\n }\n}\n","<yuv-date-input [disabled]=\"disabled\" [withTime]=\"withTime\" [hour12]=\"_hour12\"></yuv-date-input>\n\n@if (calendar) {\n <button ymtIconButton icon-button-size=\"small\" type=\"button\" class=\"calender\" [disabled]=\"disabled\" (click)=\"openCalendar()\">\n <mat-icon>calendar_month</mat-icon>\n </button>\n}\n","import { Component, input } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { DatepickerCalendarTriggerTarget } from '../datepicker.interface';\n\n@Component({\n selector: 'yuv-datepicker-calendar-trigger',\n template: `<button mat-icon-button>\n <mat-icon (click)=\"for().openCalendar()\">calendar_month</mat-icon>\n </button>`,\n styles: [``],\n standalone: true,\n imports: [MatButtonModule, MatIconModule]\n})\nexport class DatepickerCalendarTriggerComponent {\n for = input.required<DatepickerCalendarTriggerTarget>();\n}\n","import { NgModule } from '@angular/core';\nimport { CalendarComponent } from './calendar/calendar.component';\nimport { DatepickerComponent } from './datepicker.component';\nimport { DatepickerCalendarTriggerComponent } from './datepicker-calendar/datepicker-calendar-trigger.component';\n\n\nconst cmp = [CalendarComponent, DatepickerComponent, DatepickerCalendarTriggerComponent];\n@NgModule({\n imports: [...cmp],\n exports: [...cmp],\n})\nexport class YuvDatepickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i1.DatepickerService","i3"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"yuuvis-client-framework-datepicker.mjs","sources":["../../../../../libs/yuuvis/client-framework/datepicker/src/lib/datepicker.interface.ts","../../../../../libs/yuuvis/client-framework/datepicker/src/lib/datepicker.utils.ts","../../../../../libs/yuuvis/client-framework/datepicker/src/lib/datepicker.service.ts","../../../../../libs/yuuvis/client-framework/datepicker/src/lib/date-input/date-input-element/date-input-element.component.ts","../../../../../libs/yuuvis/client-framework/datepicker/src/lib/date-input/date-input-element/date-input-element.component.html","../../../../../libs/yuuvis/client-framework/datepicker/src/lib/date-input/date-input-hour-element/date-input-hour-element.component.ts","../../../../../libs/yuuvis/client-framework/datepicker/src/lib/time-input/time-input.component.ts","../../../../../libs/yuuvis/client-framework/datepicker/src/lib/time-input/time-input.component.html","../../../../../libs/yuuvis/client-framework/datepicker/src/lib/calendar/calendar.component.ts","../../../../../libs/yuuvis/client-framework/datepicker/src/lib/calendar/calendar.component.html","../../../../../libs/yuuvis/client-framework/datepicker/src/lib/date-input/date-input.component.ts","../../../../../libs/yuuvis/client-framework/datepicker/src/lib/date-input/date-input.component.html","../../../../../libs/yuuvis/client-framework/datepicker/src/lib/datepicker-calendar/datepicker-calendar.component.ts","../../../../../libs/yuuvis/client-framework/datepicker/src/lib/datepicker-calendar/datepicker-calendar.component.html","../../../../../libs/yuuvis/client-framework/datepicker/src/lib/datepicker.component.ts","../../../../../libs/yuuvis/client-framework/datepicker/src/lib/datepicker.component.html","../../../../../libs/yuuvis/client-framework/datepicker/src/lib/datepicker-calendar/datepicker-calendar-trigger.component.ts","../../../../../libs/yuuvis/client-framework/datepicker/src/lib/datepicker.module.ts","../../../../../libs/yuuvis/client-framework/datepicker/src/yuuvis-client-framework-datepicker.ts"],"sourcesContent":["export interface DatepickerLabels {\n calendarApply: string;\n calendarCancel: string;\n shortcut: {\n today: string;\n };\n}\n\nexport interface DatepickerCalendarTriggerTarget {\n openCalendar: () => void;\n}\n\nexport interface DatepickerValueChange {\n value: Date | null;\n propagateChange: boolean;\n}\n\nexport interface DatepickerValidationOptions {\n withTime?: boolean;\n onlyFutureDates?: boolean;\n minDate?: Date;\n maxDate?: Date;\n}\nexport interface DatepickerCalendarOptions extends DatepickerValidationOptions {\n hour12?: boolean;\n locale?: string;\n labels?: DatepickerLabels;\n}\n\nexport type DayPeriod = 'am' | 'pm';\n\nexport interface DayPeriodLabels {\n am: string;\n pm: string;\n}\n\nexport const DEFAULT_DAY_PERIOD_LABELS = {\n am: 'AM',\n pm: 'PM'\n};\n","import { ValidationErrors } from '@angular/forms';\n\nimport { DatepickerValidationOptions } from './datepicker.interface';\n\nexport class DatepickerUtils {\n /**\n * Get preferred hour cycle for a given locale\n * @param locale the locale to get the hour cycle for\n */\n static getPreferredHourCycle(locale: string): 'h11' | 'h12' | 'h23' | 'h24' | undefined {\n const l = new Intl.Locale(locale) as any;\n const hc =\n l.hourCycles || l.getHourCycles\n ? // Chrome and Edge\n l.hourCycles ||\n // Safari\n l.getHourCycles()\n : // Not supported by Firefox right now\n [];\n return hc.length ? hc[0] : 'h23';\n }\n\n /**\n * Get week info for a given locale.\n * Notice:\n * @param locale the locale to get the weekinfo for\n */\n static getWeekInfo(locale: string): {\n firstDay: number;\n minimalDays: number;\n weekend: number[];\n } {\n const l = new Intl.Locale(locale) as any;\n const weekInfo =\n l.weekInfo || l.getWeekInfo\n ? // Chrome and Edge\n l.weekInfo ||\n // Safari\n l.getWeekInfo()\n : undefined;\n // Not supported by Firefox right now so we'll return defaults\n\n return {\n firstDay: weekInfo?.firstDay || 7,\n minimalDays: weekInfo?.minimalDays || 1,\n weekend: weekInfo?.weekend || [6, 7]\n };\n }\n\n static isFutureDate(d: Date, withTime = false): boolean {\n const today = new Date();\n if (!withTime) {\n // future date without time also includes the whole current day\n today.setDate(today.getDate() - 1);\n today.setUTCHours(23, 59, 59);\n }\n return d.getTime() >= today.getTime();\n }\n\n static isValidDate(v: any): boolean {\n const date = new Date(v);\n return !!date && Object.prototype.toString.call(date) === '[object Date]' && !isNaN(date!.getTime());\n }\n\n static isValidValue(date: Date | null, o: DatepickerValidationOptions): boolean {\n const err = DatepickerUtils.validateValue(date, o);\n return !!err && Object.keys(err).length > 0;\n }\n\n static validateValue(date: Date | null | undefined, o: DatepickerValidationOptions): ValidationErrors | null {\n const err: { [key: string]: any } = {};\n if (date) {\n if (o.onlyFutureDates && !DatepickerUtils.isFutureDate(date, o.withTime)) {\n err['onlyFutureDates'] = { onlyFutureDates: false };\n }\n if (o.minDate && !(date > o.minDate)) {\n err['minDate'] = { minDate: false };\n }\n if (o.maxDate && !(date < o.maxDate)) {\n err['maxDate'] = { maxDate: false };\n }\n }\n return Object.keys(err).length ? err : null;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ValidationErrors } from '@angular/forms';\nimport { Observable, ReplaySubject } from 'rxjs';\n\nimport { DatepickerValidationOptions, DatepickerValueChange, DayPeriodLabels } from './datepicker.interface';\nimport { DatepickerUtils } from './datepicker.utils';\n\n@Injectable()\nexport class DatepickerService {\n private _value: Date | null = null;\n private _valueChangeSource = new ReplaySubject<DatepickerValueChange>();\n valueChange$: Observable<DatepickerValueChange> = this._valueChangeSource.asObservable();\n\n private _validationChangeSource = new ReplaySubject<boolean>();\n validationChange$: Observable<boolean> = this._validationChangeSource.asObservable();\n\n DEFAULT_LANGUAGE = 'en';\n yearOffset = 0;\n datePattern?: string;\n private _language: string = this.DEFAULT_LANGUAGE;\n private _languageSource = new ReplaySubject<string>();\n language$: Observable<string> = this._languageSource.asObservable();\n\n private _validationErrors: ValidationErrors | null = null;\n private _options: DatepickerValidationOptions = {};\n\n /**\n * Handler for paste events from the components inputs. If the clipboard\n * contains a whole date it will be covered by the service.\n * @param event the ClipboardEvent\n * @returns true if the paste event has been processed by the service, false otherwise\n */\n onPaste(e: string | ClipboardEvent): boolean {\n const paste: string = typeof e === 'string' ? e : (e.clipboardData || (window as any).clipboardData).getData('text');\n if (DatepickerUtils.isValidDate(paste)) {\n this.setValue(new Date(paste));\n return true;\n } else return false;\n }\n\n setLanguage(isoCode: string) {\n if (isoCode === this._language) return;\n this._language = isoCode || this.DEFAULT_LANGUAGE;\n // check for year offset\n // e.g. Taiwan has a year offset of +543 years (Thai solar calendar)\n const d = new Date();\n const dtf = new Intl.DateTimeFormat(this._language, {\n year: 'numeric'\n }).formatToParts(d);\n const dtfYear = dtf.find((t) => t.type === 'year');\n this.yearOffset = parseInt(dtfYear!.value) - d.getFullYear();\n this._languageSource.next(this._language);\n this.setValue(this._value);\n }\n\n getDatePattern(locale: string, withTime: boolean, hour12: boolean): string {\n let pattern = '';\n Intl.DateTimeFormat(locale, this.getIntlOptions(withTime, hour12))\n .formatToParts(new Date())\n .forEach((t: Intl.DateTimeFormatPart) => {\n switch (t.type) {\n case 'day': {\n pattern += 'dd';\n break;\n }\n case 'month': {\n pattern += 'MM';\n break;\n }\n case 'year': {\n pattern += 'yyyy';\n break;\n }\n case 'hour': {\n pattern += 'HH';\n break;\n }\n case 'minute': {\n pattern += 'mm';\n break;\n }\n case 'dayPeriod': {\n pattern += t.value;\n break;\n }\n default: {\n pattern += t.value;\n }\n }\n });\n return pattern;\n }\n\n isDifferent(d1: Date | null, d2: Date | null): boolean {\n const x1: number = d1 instanceof Date ? d1.getTime() : -1;\n const x2: number = d2 instanceof Date ? d2.getTime() : -1;\n return x1 !== x2;\n }\n\n setValue(date: Date | null, silent?: boolean) {\n if (this.isDifferent(date, this._value)) {\n this._value = date;\n if (date === null) {\n this._validationErrors = {};\n this._emitValidationChange();\n }\n this._validateValue();\n this._valueChangeSource.next({\n value: this._value,\n propagateChange: !silent\n });\n }\n }\n\n setOption(options: DatepickerValidationOptions) {\n this._options = {\n ...this._options,\n ...options\n } as DatepickerValidationOptions;\n }\n\n hasErrors(): boolean {\n return this._validationErrors !== null;\n }\n\n getErrors(): ValidationErrors | null {\n return this._validationErrors;\n }\n\n setErrors(err: ValidationErrors) {\n this._validationErrors = { ...(this._validationErrors || {}), ...err };\n this._emitValidationChange();\n }\n\n removeErrors(err: string[]) {\n if (this._validationErrors) {\n err.forEach((k) => {\n delete this._validationErrors![k];\n });\n this._emitValidationChange();\n }\n }\n\n private _emitValidationChange() {\n const valid = !this._validationErrors || Object.keys(this._validationErrors).length === 0;\n this._validationChangeSource.next(valid);\n }\n\n getIntlOptions(withTime = false, hour12 = false): Intl.DateTimeFormatOptions {\n const baseIntlOptions: Intl.DateTimeFormatOptions = {\n day: '2-digit',\n month: '2-digit',\n year: 'numeric'\n };\n const timeIntlOptions: Intl.DateTimeFormatOptions = {\n hour: '2-digit',\n minute: '2-digit',\n hourCycle: hour12 ? 'h12' : 'h23'\n };\n return withTime ? { ...baseIntlOptions, ...timeIntlOptions } : baseIntlOptions;\n }\n\n /**\n * Returns locale specific values for AM/PM\n * @param locale locale string\n * @returns\n */\n getDayPeriodLabels(locale: string): DayPeriodLabels {\n const dtf = new Intl.DateTimeFormat(locale, this.getIntlOptions(true, true));\n const amPart = dtf.formatToParts(new Date('2000-01-01T03:00:00')).find((p) => p.type === 'dayPeriod');\n const pmPart = dtf.formatToParts(new Date('2000-01-01T15:00:00')).find((p) => p.type === 'dayPeriod');\n return {\n am: amPart?.value || 'AM',\n pm: pmPart?.value || 'PM'\n };\n }\n\n private _validateValue(): void {\n this._validationErrors = DatepickerUtils.validateValue(this._value, this._options);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, forwardRef, HostListener, inject, input, Input, Output } from '@angular/core';\nimport { ControlValueAccessor, FormControl, FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, UntypedFormControl, Validator, ReactiveFormsModule } from '@angular/forms';\nimport { DatepickerService } from '../../datepicker.service';\n\n@Component({\n selector: 'yuv-date-input-element',\n templateUrl: './date-input-element.component.html',\n styleUrls: ['./date-input-element.component.scss'],\n standalone: true,\n imports: [CommonModule, FormsModule, ReactiveFormsModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DateInputElementComponent),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => DateInputElementComponent),\n multi: true\n }\n ]\n})\nexport class DateInputElementComponent implements ControlValueAccessor, Validator {\n private datepickerService = inject(DatepickerService);\n\n _value?: string;\n\n @HostListener('paste', ['$event'])\n pasteHandler(event: ClipboardEvent) {\n const paste = (event.clipboardData || (window as any).clipboardData).getData('text');\n if (paste.length > this.maxLength && this.datepickerService.onPaste(paste)) event.preventDefault();\n }\n\n @HostListener('keydown', ['$event'])\n keyDownHandler(event: KeyboardEvent) {\n if (this.disabled) return;\n // increase value\n else if (event.key === 'ArrowUp') {\n this._stopEvent(event);\n this.increaseValue(event.shiftKey ? 10 : 1);\n }\n // decrease value\n else if (event.key === 'ArrowDown') {\n this._stopEvent(event);\n this.decreaseValue(event.shiftKey ? 10 : 1);\n }\n }\n\n @Input() maxLength = 2;\n @Input() maxValue: number | undefined;\n @Input() minValue = 1;\n @Input() disabled = false;\n placeholder = input<string>('');\n @Output() next = new EventEmitter();\n @Output() prev = new EventEmitter();\n\n fc = new FormControl();\n\n protected _isNumber(v: any) {\n return typeof v === 'number' && isFinite(v);\n }\n\n private _stopEvent(event: Event) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n onInputChange(iv: string) {\n this._propagate();\n if (iv?.length === this.maxLength) {\n this.next.emit();\n }\n }\n\n onBlur() {\n if (this._value && this._value.length < this.maxLength) {\n this._setValue(this._value!);\n }\n }\n\n wheelHandler(event: WheelEvent) {\n this._stopEvent(event);\n if (event.deltaY < 0) this.increaseValue();\n else if (event.deltaY > 0) this.decreaseValue();\n }\n\n keydownHandler(event: KeyboardEvent) {\n if (event.key === 'ArrowRight') {\n const caretPos = (event.target as HTMLInputElement).selectionStart;\n if (caretPos === this.maxLength) {\n this.next.emit();\n }\n } else if (event.key === 'ArrowLeft') {\n const caretPos = (event.target as HTMLInputElement).selectionStart;\n if (caretPos === 0) {\n this.prev.emit();\n }\n }\n }\n\n focusHandler(event: FocusEvent) {\n const i = event.target as HTMLInputElement;\n }\n\n protected _setValue(n: any, silent = false) {\n const v = this._isValidInput(n) ? `${[...Array(this.maxLength - n.toString().length).keys()].map((_) => '0').join('')}${n.toString()}` : undefined;\n if (v !== this._value) {\n this._value = v;\n if (!silent) this._propagate();\n // if (n.toString().length !== v?.length) this.validationChange();\n }\n }\n\n increaseValue(step = 1) {\n const v = (parseInt(this._value!) || 0) + step;\n this._setValue(this.maxValue ? (v <= this.maxValue ? v : this.minValue) : v);\n }\n\n decreaseValue(step = 1) {\n const v = (parseInt(this._value!) || 0) - step;\n this._setValue(this.maxValue ? (v < this.minValue ? this.maxValue : v) : v);\n }\n\n private _applyOffset(): boolean {\n return this.maxLength === 4 && !!this.datepickerService.yearOffset;\n }\n\n private _propagate() {\n // being the year input (4 digits) also take yearOffset into accout\n if (this._applyOffset()) {\n let parsedValue = parseInt(this._value || '');\n if (!isNaN(parsedValue)) {\n parsedValue -= this.datepickerService.yearOffset;\n this.propagateChange(`${parsedValue}`);\n } else this.propagateChange(undefined);\n } else this.propagateChange(this._value);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n propagateChange = (_: any) => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n validationChange = () => {};\n\n writeValue(value: any): void {\n if (value !== undefined && this._applyOffset()) {\n let parsedValue = parseInt(value || '');\n if (!isNaN(parsedValue)) {\n parsedValue += this.datepickerService.yearOffset;\n this._setValue(parsedValue);\n }\n } else this._setValue(value, true);\n }\n\n registerOnChange(fn: any): void {\n this.propagateChange = fn;\n }\n\n registerOnValidatorChange?(fn: () => void): void {\n this.validationChange = fn;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n registerOnTouched(fn: any): void {}\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n private _isValidInput(v: any): boolean {\n const n = parseInt(v);\n return this._isNumber(n) && (!this.maxValue || n <= this.maxValue) && (!this.minValue || n >= this.minValue);\n }\n\n validate(c: UntypedFormControl) {\n return !this._value || this._isValidInput(this._value) ? null : { dateInputElement: { valid: false } };\n }\n}\n","<input\n[placeholder]=\"placeholder()\"\n type=\"text\"\n (focus)=\"focusHandler($event)\"\n (keydown)=\"keydownHandler($event)\"\n (wheel)=\"wheelHandler($event)\"\n (blur)=\"onBlur()\"\n [readonly]=\"disabled\"\n pattern=\"[0-9]*\"\n [maxlength]=\"maxLength\"\n [(ngModel)]=\"_value\"\n (ngModelChange)=\"onInputChange($event)\"\n/>\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output, forwardRef } from '@angular/core';\nimport { FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { DateInputElementComponent } from '../date-input-element/date-input-element.component';\n\n@Component({\n selector: 'yuv-date-input-hour-element',\n templateUrl: './../date-input-element/date-input-element.component.html',\n styleUrls: ['./../date-input-element/date-input-element.component.scss'],\n standalone: true,\n imports: [CommonModule, FormsModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DateInputHourElementComponent),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => DateInputHourElementComponent),\n multi: true\n }\n ]\n})\nexport class DateInputHourElementComponent extends DateInputElementComponent {\n @Input() set dayPeriod(p: 'am' | 'pm' | undefined) {\n if (p === 'am' || p === 'pm') {\n this.maxValue = 12;\n this.minValue = 1;\n } else {\n this.maxValue = 23;\n this.minValue = 0;\n }\n }\n @Output() dayPeriodChange = new EventEmitter<'am' | 'pm'>();\n\n constructor() {\n super();\n }\n\n override writeValue(value: any): void {\n if (parseInt(value) === 0) this._value = '12';\n this._setValue(value, true);\n }\n}\n","import { Component, forwardRef, Input, ViewChild } from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormBuilder,\n FormGroup,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ReactiveFormsModule,\n ValidationErrors,\n Validator,\n Validators\n} from '@angular/forms';\n\nimport { CommonModule } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { DateInputElementComponent } from '../date-input/date-input-element/date-input-element.component';\nimport { DateInputHourElementComponent } from '../date-input/date-input-hour-element/date-input-hour-element.component';\nimport { DayPeriod, DayPeriodLabels, DEFAULT_DAY_PERIOD_LABELS } from '../datepicker.interface';\nimport { TimeValue } from './time-input.interface';\n\n@Component({\n selector: 'yuv-time-input',\n templateUrl: './time-input.component.html',\n styleUrls: ['./time-input.component.scss'],\n standalone: true,\n imports: [CommonModule, MatIconModule, DateInputHourElementComponent, DateInputElementComponent, MatButtonModule, ReactiveFormsModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TimeInputComponent),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => TimeInputComponent),\n multi: true\n }\n ]\n})\nexport class TimeInputComponent implements ControlValueAccessor, Validator {\n @ViewChild('dipHour') hourInput!: DateInputHourElementComponent;\n @ViewChild('dipMinute') minuteInput!: DateInputElementComponent;\n\n private _time?: TimeValue;\n protected _hour12 = false;\n @Input()\n get hour12() {\n return this._hour12;\n }\n set hour12(b: boolean) {\n this._hour12 = b;\n if (this._hour12 && this._time) this._patch(this._time, true);\n }\n @Input() dayPeriodLabels: DayPeriodLabels = DEFAULT_DAY_PERIOD_LABELS;\n\n private _currentDayPeriod?: DayPeriod;\n set currentDayPeriod(p: DayPeriod | undefined) {\n if (p !== this._currentDayPeriod) {\n this._currentDayPeriod = p;\n this._propagate();\n }\n }\n get currentDayPeriod() {\n return this._currentDayPeriod;\n }\n form: FormGroup = this.fb.group({\n hour: ['', [Validators.required]],\n minute: ['', [Validators.required, Validators.max(59)]]\n });\n\n constructor(private fb: FormBuilder) {\n this.form.valueChanges.pipe(\n takeUntilDestroyed()\n ).subscribe({\n next: (v) => this._propagate()\n })\n this.form.statusChanges.pipe(\n takeUntilDestroyed()\n ).subscribe({\n next: (v) => this.validationChange()\n })\n }\n\n private _propagate() {\n if (this.form.valid) {\n const strHour = this.form.value.hour;\n let hour = parseInt(strHour);\n if (isNaN(hour)) hour = 0;\n if (this.hour12 && hour === 0) {\n hour = 12;\n }\n this._time = {\n hour,\n minute: parseInt(this.form.value.minute),\n dayPeriod: this.currentDayPeriod\n };\n this.propagateChange(this._time);\n }\n }\n\n private _patch(value: TimeValue, silent?: boolean) {\n if (!this._time) {\n const now = new Date();\n this._time = {\n hour: now.getHours(),\n minute: now.getMinutes()\n };\n }\n const patch = {\n hour: value.hour,\n minute: value.minute\n };\n if (this._hour12 && value) {\n this.currentDayPeriod = value.dayPeriod;\n if (this.currentDayPeriod === 'pm' && patch.hour >= 12) {\n patch.hour -= 12;\n }\n if (patch.hour === 0) patch.hour = 12;\n }\n this.form.patchValue(patch, { onlySelf: true, emitEvent: !silent });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n propagateChange = (_: any) => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n validationChange = () => {};\n\n writeValue(value: TimeValue): void {\n if (value === null) return;\n this._time = value;\n this._patch(value, true);\n }\n\n registerOnChange(fn: any): void {\n this.propagateChange = fn;\n }\n\n registerOnValidatorChange?(fn: () => void): void {\n this.validationChange = fn;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n registerOnTouched(fn: any): void {}\n\n validate(ac: AbstractControl): ValidationErrors | null {\n return this.form.valid ? null : { invalidTime: true };\n }\n}\n","<form [formGroup]=\"form\">\n <yuv-date-input-hour-element\n #dipHour\n class=\"time hour focusable\"\n [(dayPeriod)]=\"currentDayPeriod\"\n formControlName=\"hour\"\n [maxLength]=\"2\"\n ></yuv-date-input-hour-element>\n\n <div class=\"literal\">:</div>\n\n <yuv-date-input-element\n #dipMinute\n class=\"time minute focusable\"\n [maxValue]=\"59\"\n [minValue]=\"0\"\n formControlName=\"minute\"\n [maxLength]=\"2\"\n ></yuv-date-input-element>\n\n @if (hour12) {\n <div class=\"dayPeriod\">\n <button type=\"button\" class=\"dp pm\" [ngClass]=\"{ active: currentDayPeriod === 'pm' }\" (click)=\"currentDayPeriod = 'pm'\">\n {{ dayPeriodLabels.pm }}\n </button>\n <button type=\"button\" class=\"dp am\" [ngClass]=\"{ active: currentDayPeriod === 'am' }\" (click)=\"currentDayPeriod = 'am'\">\n {{ dayPeriodLabels.am }}\n </button>\n </div>\n }\n</form>\n","import { CommonModule } from '@angular/common';\nimport { Component, ElementRef, HostListener, OnInit, effect, inject, input, model, untracked, viewChild } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatSelectModule } from '@angular/material/select';\nimport { DEFAULT_DAY_PERIOD_LABELS, DayPeriodLabels } from '../datepicker.interface';\nimport { DatepickerService } from '../datepicker.service';\nimport { DatepickerUtils } from '../datepicker.utils';\nimport { TimeValue } from '../time-input/time-input.interface';\nimport { TimeInputComponent } from '../time-input/time-input.component';\nimport { TranslateModule } from '@yuuvis/client-core';\n\nexport interface CalendarItem {\n id: string;\n day: number;\n // marked as inactive but still selectable\n inactive?: boolean;\n // not selectable\n disabled?: boolean;\n}\n\n@Component({\n selector: 'yuv-calendar',\n templateUrl: './calendar.component.html',\n styleUrls: ['./calendar.component.scss'],\n standalone: true,\n imports: [CommonModule, FormsModule, TranslateModule, MatSelectModule, TimeInputComponent],\n providers: [DatepickerService],\n host: {\n tabindex: '0'\n }\n})\nexport class CalendarComponent implements OnInit {\n private datepickerService = inject(DatepickerService);\n\n calEl = viewChild.required<ElementRef>('cal');\n private _initialized = false;\n\n maxYear = 9999;\n minYear = -9999;\n\n year?: number;\n _offsetYear?: number;\n month?: number;\n time?: TimeValue;\n\n // feature flag for immediately selecting a new (close) Date when\n // navigating between years/months\n #immediatelySelect = true;\n\n /**\n * Allow only date inputs after this date\n */\n minDate = input<Date>();\n /**\n * Allow only date inputs before this date\n */\n maxDate = input<Date>();\n /**\n * Allow only date inputs that are after today\n */\n onlyFutureDates = input(false);\n\n date = model<Date | undefined>(new Date());\n #dateEffect = effect(() => {\n const d = this.date();\n untracked(() => {\n // clone date\n const dc = d ? new Date(d.toISOString()) : null;\n if (this.datepickerService.isDifferent(d || null, dc)) {\n if (this._initialized) this.#buildDate();\n }\n });\n });\n\n months: { label: string; value: number }[] = [];\n private DEFAULT_FIRST_DAY_OF_WEEK = 7;\n private _firstDayOfWeek: number = this.DEFAULT_FIRST_DAY_OF_WEEK;\n daysOfWeek: string[] = [];\n dayPeriodLabels: DayPeriodLabels = DEFAULT_DAY_PERIOD_LABELS;\n\n locale = input<string | undefined>();\n #localeEffect = effect(() => {\n this._setLocale(this.locale() || 'en');\n });\n\n withTime = input<boolean>(false);\n #withTimeEffect = effect(() => {\n // keep to trigger effect\n const wt = this.withTime();\n untracked(() => {\n const d = this.date();\n if (d) {\n this.time = this._dateToTime(d);\n }\n });\n });\n hour12 = input<boolean>(false);\n\n @HostListener('keydown', ['$event'])\n keyDownHandler(event: KeyboardEvent) {\n if((event.target as HTMLElement).nodeName === \"YUV-CALENDAR\") \n this._handleKeyboardEvent(event);\n }\n\n selectedIndex = -1;\n focusedIndex = 0;\n private _focusPos: { col: number; row: number } = {\n col: 1,\n row: 1\n };\n calendarDays: CalendarItem[] = [];\n private _numberOfWeeks = 4;\n\n constructor() {\n const d = this.date() || new Date();\n this.selectMonthOfYear(d.getMonth(), d.getFullYear());\n this.time = {\n hour: d.getHours(),\n minute: d.getMinutes()\n };\n }\n\n private _dateToTime(date: Date): TimeValue {\n const hour = date.getHours();\n const dayPeriod = this.hour12() ? (date.getHours() >= 12 ? 'pm' : 'am') : undefined;\n\n return structuredClone({\n hour: dayPeriod === 'pm' && hour > 12 ? hour - 12 : hour,\n minute: date.getMinutes(),\n dayPeriod\n });\n }\n\n #buildDate() {\n const _date = this.date();\n const _withTime = this.withTime();\n if (_date) {\n this.selectedIndex = -1;\n this.selectMonthOfYear(_date.getMonth(), _date.getFullYear(), true);\n\n if (_withTime) {\n this.time = this._dateToTime(_date);\n _date.setSeconds(0, 0);\n } else {\n _date.setHours(0, 0, 0, 0);\n }\n this.select(_date, true, true);\n }\n }\n\n selectByIndex(i: number, setFocusPosition?: boolean) {\n const d = new Date(this.calendarDays[i].id);\n if (this.time) {\n d.setHours(this.time.dayPeriod === 'pm' && this.time.hour < 12 ? this.time.hour + 12 : this.time.hour);\n d.setMinutes(this.time.minute);\n }\n this.select(d, setFocusPosition);\n }\n\n select(d: Date | string | number, setFocusPosition?: boolean, silent?: boolean) {\n const date = d instanceof Date ? d : new Date(d);\n\n // check if the selected date is in a different month/year\n if (date.getFullYear() !== this.year || date.getMonth() !== this.month) {\n this.selectMonthOfYear(date.getMonth(), date.getFullYear(), true);\n }\n\n // also be aware of time\n if (this.withTime()) {\n const time = this._dateToTime(date);\n\n if (this.time && this.time.hour === time.hour && this.time.minute === time.minute) {\n let amPmShift = this.time.dayPeriod === 'pm' && this.time.hour !== 12 ? 12 : 0;\n if (this.time.dayPeriod === 'am' && this.time.hour === 12) amPmShift = -12;\n date.setHours(this.time.hour + amPmShift);\n date.setMinutes(this.time.minute, 0, 0);\n } else this.time = time;\n }\n if (!this.onlyFutureDates() || DatepickerUtils.isFutureDate(date)) {\n this.selectedIndex = this._getCalendarIndex(date);\n if (setFocusPosition) this._setFocusPosByCalendarIndex(this.selectedIndex);\n this.date.update(() => date);\n // if (!silent) this.dateChange.emit(date);\n }\n }\n\n selectMonthOfYear(month: number, year?: number, skipImmediateSelect?: boolean) {\n if (month < 0 || month > 11) return;\n if (month !== this.month) this.month = month;\n if (!this.year && !year) this.year = new Date().getFullYear();\n if (year && this.year !== year) this.year = year;\n if (this.year && this.datepickerService.yearOffset) this._offsetYear = this.year + this.datepickerService.yearOffset;\n else this._offsetYear = this.year;\n this._buildMonth(this.year!, this.month);\n\n const date = this.date();\n if (!skipImmediateSelect && this.#immediatelySelect && date) {\n let d = new Date(date);\n d.setMonth(month);\n\n if (d.getMonth() !== month) {\n // already in the next month (e.g. going from the 31st of August to September)\n // so we'll pick the last date of the month that has been selected\n d = new Date(d.getFullYear(), month + 1, 0);\n }\n this.select(d, true);\n }\n }\n\n selectYear(year: number, skipImmediateSelect?: boolean) {\n if (this.datepickerService.yearOffset) year -= this.datepickerService.yearOffset;\n if (year > this.maxYear || year < this.minYear) return;\n if (year && this.year !== year) this.year = year;\n this._buildMonth(this.year!, this.month!);\n\n const date = this.date();\n if (!skipImmediateSelect && this.#immediatelySelect && date) {\n const d = new Date(date);\n d.setFullYear(year);\n this.select(d, true);\n }\n }\n\n onYearInputKeydown(e: KeyboardEvent) {\n e.stopPropagation();\n }\n\n onTimeChange(e: TimeValue) {\n const date = this.date();\n if (date) {\n let hour: number = e.dayPeriod === 'pm' && e.hour < 12 ? e.hour + 12 : e.hour;\n hour = e.dayPeriod === 'am' && hour === 12 ? 0 : hour;\n date.setHours(hour === 24 ? 0 : hour);\n date.setMinutes(e.minute);\n this.time = e;\n }\n this.date.update(() => date);\n }\n\n private _setLocale(locale: string) {\n this.dayPeriodLabels = this.datepickerService.getDayPeriodLabels(locale);\n const mFormat = new Intl.DateTimeFormat(locale, { month: 'long' }).format;\n this.months = [...Array(12).keys()].map((m) => mFormat(new Date(Date.UTC(2021, m % 12)))).map((label, index) => ({ label, value: index }));\n\n const dFormat = new Intl.DateTimeFormat(locale, { weekday: 'short' }).format;\n\n this._firstDayOfWeek = DatepickerUtils.getWeekInfo(this.locale() || 'en').firstDay - 1;\n const daysOfWeekIdx = [];\n for (let i = 0; i < 7; i++) {\n let x = this._firstDayOfWeek + i;\n if (x > 6) x -= 7;\n daysOfWeekIdx.push(x);\n }\n this.daysOfWeek = daysOfWeekIdx.map((day) => dFormat(new Date(Date.UTC(2021, 5, day))));\n this._buildMonth(this.year!, this.month!);\n }\n\n private _reset() {\n this.selectedIndex = -1;\n this.focusedIndex = 0;\n }\n\n private _buildMonth(year: number, month: number) {\n this._reset();\n // TODO: find a more generic approach (if there actually are other first days of week than sonday and monday)\n const startDayOffset = this._firstDayOfWeek === 0 ? -1 : 0;\n let firstDayOfMonthInWeek: number = new Date(year, month).getDay() + startDayOffset;\n if (firstDayOfMonthInWeek === -1) firstDayOfMonthInWeek = 6;\n const lastDateOfMonth: number = new Date(year, month + 1, 0).getDate(),\n lastDayOfMonthInWeek: number = new Date(year, month, lastDateOfMonth).getDay() + startDayOffset,\n lastDateOfPreviousMonth: number = new Date(year, month, 0).getDate();\n\n const today = new Date();\n today.setDate(today.getDate() - 1);\n today.setHours(23, 59, 59);\n const items: CalendarItem[] = [];\n // previous months last days\n for (let i = firstDayOfMonthInWeek; i > 0; i--) {\n const day = lastDateOfPreviousMonth - i + 1;\n items.push({\n day,\n disabled: DatepickerUtils.isValidValue(new Date(year, month, i), {\n onlyFutureDates: this.onlyFutureDates(),\n withTime: this.withTime(),\n maxDate: this.maxDate(),\n minDate: this.minDate()\n }),\n inactive: true,\n id: this._getDayId(year, month - 1, day)\n });\n }\n // all days of current month\n for (let i = 1; i <= lastDateOfMonth; i++) {\n items.push({\n day: i,\n disabled: DatepickerUtils.isValidValue(new Date(year, month, i), {\n onlyFutureDates: this.onlyFutureDates(),\n withTime: this.withTime(),\n maxDate: this.maxDate(),\n minDate: this.minDate()\n }),\n id: this._getDayId(year, month, i)\n });\n }\n // next months first days\n for (let i = lastDayOfMonthInWeek; i < 6; i++) {\n const day = i - lastDayOfMonthInWeek + 1;\n items.push({\n day,\n inactive: true,\n id: this._getDayId(year, month + 1, day)\n });\n }\n this._numberOfWeeks = items.length / 7;\n this.calendarDays = items;\n\n const date = this.date();\n if (date?.getMonth() === month && date?.getFullYear() === year) {\n this.select(date, true, true);\n }\n }\n\n private _getDayId(year: number, month: number, day: number): string {\n const d = new Date(year, month, day);\n return `${d.getFullYear()}-${d.getMonth() + 1}-${d.getDate()}`;\n }\n\n private _handleKeyboardEvent(event: KeyboardEvent) {\n switch (event.code) {\n case 'PageDown': {\n // go to previous month\n const d = new Date(this.year!, this.month!);\n d.setMonth(this.month! - 1);\n this.selectMonthOfYear(d.getMonth(), d.getFullYear());\n this._stopEvent(event);\n break;\n }\n case 'PageUp': {\n // go to next month\n const d = new Date(this.year!, this.month!);\n d.setMonth(this.month! + 1);\n this.selectMonthOfYear(d.getMonth(), d.getFullYear());\n this._stopEvent(event);\n break;\n }\n case 'Home': {\n // focus first day of month\n this._setFocusPosByCalendarIndex(this._getCalendarIndex(new Date(this.year!, this.month!, 1)));\n this._stopEvent(event);\n break;\n }\n case 'End': {\n // focus last day of month\n this._setFocusPosByCalendarIndex(this._getCalendarIndex(new Date(this.year!, this.month! + 1, 0)));\n this._stopEvent(event);\n break;\n }\n case 'Space': {\n this.selectByIndex(this.focusedIndex, false);\n this._stopEvent(event);\n break;\n }\n case 'ArrowUp': {\n let row = this._focusPos.row - 1;\n if (row <= 0) row = this._numberOfWeeks;\n this._setFocusPos(row, undefined);\n this._stopEvent(event);\n break;\n }\n case 'ArrowDown': {\n let row = this._focusPos.row + 1;\n if (row > this._numberOfWeeks) row = 1;\n this._setFocusPos(row, undefined);\n this._stopEvent(event);\n break;\n }\n case 'ArrowRight': {\n let col = this._focusPos.col + 1;\n let row = this._focusPos.row;\n if (col > 7) {\n col = 1;\n row++;\n if (row > this._numberOfWeeks) {\n // go to next month\n const d = new Date(this.calendarDays[this.calendarDays.length - 1].id);\n d.setDate(d.getDate() + 1);\n row = col = 1;\n this.selectMonthOfYear(d.getMonth(), d.getFullYear());\n }\n }\n this._setFocusPos(row, col);\n this._stopEvent(event);\n break;\n }\n case 'ArrowLeft': {\n let col = this._focusPos.col - 1;\n let row = this._focusPos.row;\n if (col <= 0) {\n col = 7;\n row--;\n if (row <= 0) {\n // go to previous month\n const d = new Date(this.calendarDays[0].id);\n d.setDate(d.getDate() - 1);\n row = this._numberOfWeeks;\n col = 7;\n this.selectMonthOfYear(d.getMonth(), d.getFullYear());\n }\n }\n this._setFocusPos(row, col);\n this._stopEvent(event);\n break;\n }\n }\n }\n\n private _getCalendarIndex(date: Date): number {\n return this.calendarDays.findIndex((cd) => cd.id === this._getDayId(date.getFullYear(), date.getMonth(), date.getDate()));\n }\n\n private _stopEvent(e?: Event) {\n if (e) {\n e.stopPropagation();\n e.preventDefault();\n }\n }\n\n private _setFocusPos(row?: number, col?: number) {\n if (row !== undefined) this._focusPos.row = row;\n if (col !== undefined) this._focusPos.col = col;\n this.focusedIndex = (this._focusPos.row - 1) * 7 + this._focusPos.col - 1;\n }\n private _setFocusPosByCalendarIndex(index: number) {\n this.focusedIndex = index;\n this._focusPos = {\n col: (this.focusedIndex % 7) + 1,\n row: Math.round(this.focusedIndex / this._numberOfWeeks)\n };\n }\n\n ngOnInit(): void {\n this._initialized = true;\n }\n}\n","<section class=\"date\">\n <header>\n <div class=\"month-picker\">\n <mat-select [panelWidth]=\"null\" [(ngModel)]=\"month\" (ngModelChange)=\"selectMonthOfYear($event)\">\n <mat-select-trigger>\n {{ month !== undefined ? months[month].label : '' }} \n </mat-select-trigger>\n @for (m of months; track $index) {\n <mat-option [value]=\"m.value\">{{ m.label }}</mat-option>\n }\n </mat-select>\n </div>\n\n <input\n class=\"year-picker\"\n name=\"year\"\n type=\"number\"\n [min]=\"minYear\"\n [max]=\"maxYear\"\n [(ngModel)]=\"_offsetYear\"\n (keydown)=\"onYearInputKeydown($event)\"\n (ngModelChange)=\"selectYear($event)\"\n />\n </header>\n <main>\n <ul class=\"daysOfWeek\">\n @for (d of daysOfWeek; track d) {\n <li>{{ d }}</li>\n }\n </ul>\n <ul class=\"days\">\n @for (d of calendarDays; track d; let i = $index) {\n <li\n [attr.data-day]=\"d.id\"\n (click)=\"selectByIndex(i, true)\"\n [ngClass]=\"{\n disabled: d.disabled,\n inactive: d.inactive,\n focused: i === focusedIndex,\n selected: i === selectedIndex\n }\"\n >\n {{ d.day }}\n </li>\n }\n </ul>\n </main>\n</section>\n@if (withTime()) {\n <section class=\"time\">\n <label>{{'yuv.calendar.time.label' | translate}}\n <yuv-time-input [(ngModel)]=\"time\" [hour12]=\"hour12()\" \n [dayPeriodLabels]=\"dayPeriodLabels\" (ngModelChange)=\"onTimeChange($event)\"></yuv-time-input>\n </label>\n </section>\n}\n","import { Component, ElementRef, HostBinding, Input, OnDestroy, OnInit, QueryList, signal, ViewChildren } from '@angular/core';\nimport { AbstractControl, FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\nimport { CommonModule } from '@angular/common';\nimport { DatepickerValueChange, DayPeriod, DayPeriodLabels } from '../datepicker.interface';\nimport { DatepickerService } from '../datepicker.service';\nimport { DateInputElementComponent } from './date-input-element/date-input-element.component';\nimport { DateInputHourElementComponent } from './date-input-hour-element/date-input-hour-element.component';\n\n/**\n *\n */\n@Component({\n selector: 'yuv-date-input',\n templateUrl: './date-input.component.html',\n styleUrls: ['./date-input.component.scss'],\n standalone: true,\n imports: [CommonModule, DateInputHourElementComponent, DateInputElementComponent, ReactiveFormsModule],\n host: {\n '[class.invalid]': 'invalid()'\n }\n})\nexport class DateInputComponent implements OnInit, OnDestroy {\n @ViewChildren(DateInputElementComponent, { read: ElementRef })\n dateInputEls?: QueryList<ElementRef>;\n\n private _subs: Subscription[] = [];\n private _formValueSub?: Subscription;\n private _formStateSub?: Subscription;\n @HostBinding('class.has-value')\n private _date: Date | null = null;\n private _intlOptions?: Intl.DateTimeFormatOptions;\n\n @HostBinding('attr.data-datevalue') dateAttribute?: string;\n\n @Input() set disabled(d: boolean) {\n this._disabled = d;\n if (d) {\n this.dateInputForm?.disable();\n } else {\n this.dateInputForm?.enable();\n }\n }\n private _disabled = false;\n invalid = signal<boolean>(false);\n\n private _refreshPlaceholder = true;\n _placeholder?: string;\n @Input() set placeholder(p: string) {\n this._placeholder = p;\n this._refreshPlaceholder = false;\n }\n\n private _locale: string = this.datepickerService.DEFAULT_LANGUAGE;\n private _withTime = false;\n @Input()\n set withTime(b: boolean) {\n this._withTime = b;\n if (b !== undefined) this._init();\n }\n get withTime() {\n return this._withTime;\n }\n\n private _hour12 = false;\n @Input() set hour12(b: boolean) {\n if (b === this._hour12) return;\n this._hour12 = b;\n if (b !== undefined) this._init(true);\n }\n get hour12() {\n return this._hour12;\n }\n\n get hoursControl(): AbstractControl {\n return this.dateInputForm!.controls['hour']!;\n }\n\n // @Output() blur = new EventEmitter<any>();\n // @Output() focus = new EventEmitter<any>();\n\n dateTokens: Intl.DateTimeFormatPart[] = [];\n dateInputForm?: FormGroup;\n currentDayPeriod?: DayPeriod;\n dayPeriodLabels: DayPeriodLabels = {\n am: 'AM',\n pm: 'PM'\n };\n // _placeholderVisible = true;\n\n constructor(\n private datepickerService: DatepickerService,\n private fb: FormBuilder,\n private elRef: ElementRef\n ) {}\n\n private _setupForm() {\n const dateTokens = this._getPatch(this._date);\n const dateCfg = {\n day: [dateTokens.day, [Validators.max(31), Validators.minLength(2)]],\n month: [dateTokens.month, [Validators.max(12), Validators.minLength(2)]],\n year: [dateTokens.year, [Validators.minLength(4)]]\n };\n const timeCfg = {\n hour: [dateTokens.hour, [Validators.minLength(2)]],\n minute: [dateTokens.minute, [Validators.max(59), Validators.minLength(2)]]\n };\n\n this.dateInputForm = this.fb.group(this.withTime ? { ...dateCfg, ...timeCfg } : dateCfg, {\n validators: (g: FormGroup) => {\n let valueCount = 0;\n Object.keys(g.value).forEach((k) => {\n if (g.value[k] && `${g.value[k]?.length}`) valueCount++;\n });\n return valueCount === 0 || valueCount === Object.keys(g.value).length\n ? null\n : {\n missingValue: true\n };\n }\n });\n\n if (this._formValueSub) {\n this._formValueSub.unsubscribe();\n this._formValueSub = undefined;\n this._formStateSub!.unsubscribe();\n this._formStateSub = undefined;\n }\n\n this._disabled && this.dateInputForm?.disable();\n this._formValueSub = this.dateInputForm!.valueChanges.subscribe({\n next: (v) => {\n this._checkAndPropagateForm();\n }\n });\n this._formStateSub = this.dateInputForm!.statusChanges.subscribe({\n next: (v) => {\n this._setInvalidInputError(v === 'INVALID');\n }\n });\n }\n\n private _setInvalidInputError(isInvalid: boolean) {\n this.invalid.set(isInvalid);\n if (isInvalid) {\n this.datepickerService.setErrors({\n invalidInput: true\n });\n } else {\n this.datepickerService.removeErrors(['invalidInput']);\n }\n }\n\n private _checkAndPropagateForm() {\n if (this.dateInputForm?.status === 'VALID') {\n this._date = this._formToDate(this.dateInputForm!);\n this.datepickerService.setValue(this._date);\n }\n }\n\n private _formToDate(g: FormGroup): Date | null {\n // starting with a year of '0000' because there could be negative values\n // that would break the date creation using string parameter\n let dateString = `0000-${g.controls['month'].value}-${g.controls['day'].value}`;\n if (this.withTime) {\n const strHour: string = g.controls['hour'].value;\n let hour: number = strHour?.length ? parseInt(strHour) : -1;\n if (this.hour12) {\n hour = this.currentDayPeriod === 'pm' && hour < 12 ? hour + 12 : hour;\n hour = this.currentDayPeriod === 'am' && hour === 12 ? 0 : hour;\n hour = hour === 24 ? 0 : hour;\n }\n dateString += `T${hour < 10 ? `0${hour}` : `${hour}`}:${g.controls['minute'].value}:00`;\n }\n const date = new Date(dateString);\n let isValidDateObject = !!date && Object.prototype.toString.call(date) === '[object Date]' && !isNaN(date!.getTime());\n if (isValidDateObject) {\n // set the year independently\n const parsedYear = parseInt(g.controls['year'].value);\n if (!isNaN(parsedYear)) {\n date.setFullYear(parsedYear);\n } else {\n isValidDateObject = false;\n }\n }\n this._setInvalidInputError(!isValidDateObject);\n return isValidDateObject ? date : null;\n }\n\n private _focusInput(offset: number) {\n const inputs: HTMLInputElement[] = this._getFocusableElements();\n let i = inputs.findIndex((i) => i === document.activeElement);\n i = i + offset;\n if (i > inputs.length - 1) i = 0;\n if (i < 0) i = inputs.length - 1;\n inputs[i].focus();\n }\n\n onFormClick(event: MouseEvent) {\n if ((event.target as HTMLElement).tagName.toLowerCase() === 'form') {\n this.focusFirstInput();\n }\n }\n\n onDateInputBlur() {\n let hasValue = false;\n Object.keys(this.dateInputForm?.value || {}).forEach((k) => {\n if (!hasValue && !!this.dateInputForm?.value[k]) hasValue = true;\n });\n (this.elRef.nativeElement as HTMLElement).classList.toggle('is-dirty', hasValue);\n }\n\n focusFirstInput() {\n this._getFocusableElements()[0].focus();\n }\n\n private _getFocusableElements(): HTMLInputElement[] {\n return Array.from(this.elRef.nativeElement.querySelectorAll('input:not([inert])'));\n }\n\n private _getPatch(d?: Date | null): {\n day: string;\n month: string;\n year: string;\n hour: string;\n minute: string;\n } {\n const patch: any = {\n day: undefined,\n month: undefined,\n year: undefined,\n hour: undefined,\n minute: undefined\n };\n if (d) {\n // year may have an offset (e.g. locale 'th')\n // Intl would return the offsetted value therefore we get the year from the date itself\n patch.year = d.getFullYear();\n const l = patch.year.length;\n if (l > 0 && l !== 4) {\n patch.year = `${[...Array(4 - l).keys()].map((_) => '0').join('')}${patch.year}`;\n }\n\n Intl.DateTimeFormat(this._locale, this._intlOptions)\n .formatToParts(d)\n .forEach((t: Intl.DateTimeFormatPart) => {\n switch (t.type) {\n case 'day': {\n patch.day = t.value;\n break;\n }\n case 'month': {\n patch.month = t.value;\n break;\n }\n case 'hour': {\n patch.hour = t.value === '24' ? '0' : t.value;\n break;\n }\n case 'minute': {\n patch.minute = t.value;\n break;\n }\n case 'dayPeriod': {\n this.currentDayPeriod = t.value === 'AM' ? 'am' : 'pm';\n break;\n }\n }\n });\n }\n return patch;\n }\n\n reset() {\n this.datepickerService.setValue(null);\n }\n\n getFormattedValue(): string | null {\n return this._date ? Intl.DateTimeFormat(this._locale, this._intlOptions).format(this._date) : null;\n }\n\n onInputNext() {\n this._focusInput(1);\n }\n\n onInputPrev() {\n this._focusInput(-1);\n }\n\n toggleDayPeriod() {\n this.currentDayPeriod = this.currentDayPeriod === 'pm' ? 'am' : 'pm';\n this._checkAndPropagateForm();\n }\n\n private _init(skipFormSetup = false) {\n this._setPlaceholder();\n this._intlOptions = this.datepickerService.getIntlOptions(this.withTime, this.hour12);\n const d: Date = this._date || new Date();\n this.dateTokens = new Intl.DateTimeFormat(this._locale, this._intlOptions).formatToParts(d);\n if (this.hour12) {\n this.currentDayPeriod = d.getHours() > 12 ? 'pm' : 'am';\n\n this.dayPeriodLabels = this.datepickerService.getDayPeriodLabels(this._locale);\n }\n if (!skipFormSetup) this._setupForm();\n }\n\n private _setPlaceholder() {\n this.placeholder = this.datepickerService.getDatePattern(this._locale, this.withTime, this.hour12);\n }\n\n ngOnInit(): void {\n this._subs.push(\n this.datepickerService.language$.subscribe({\n next: (lang) => {\n if (lang !== this._locale) {\n this._locale = lang;\n this._init(true);\n if (this._refreshPlaceholder) this._setPlaceholder();\n }\n }\n })\n );\n this._subs.push(\n this.datepickerService.valueChange$.subscribe({\n next: (vc: DatepickerValueChange) => {\n this._date = vc.value;\n this.dateAttribute = this.getFormattedValue() || undefined;\n this.dateInputForm!.patchValue(this._getPatch(vc.value), {\n emitEvent: false\n });\n // this.dateInputForm?.updateValueAndValidity()\n }\n })\n );\n this._init();\n }\n\n ngOnDestroy(): void {\n if (this._formValueSub) this._formValueSub.unsubscribe();\n if (this._formStateSub) this._formStateSub.unsubscribe();\n this._subs.forEach((s) => s.unsubscribe());\n }\n}\n","@if (dateInputForm) {\n <form [formGroup]=\"dateInputForm!\" \n (click)=\"onFormClick($event)\" (yuvFocusWithinBlur)=\"onDateInputBlur()\">\n @for (t of dateTokens; track t) {\n @switch (t.type) {\n <!-- day -->\n @case ('day') {\n <yuv-date-input-element\n placeholder=\"31\"\n [ngClass]=\"{ disabled: dateInputForm.disabled }\"\n [attr.aria-disabled]=\"dateInputForm.disabled\"\n formControlName=\"day\"\n [maxLength]=\"2\"\n [minValue]=\"1\"\n [maxValue]=\"31\"\n (prev)=\"onInputPrev()\"\n (next)=\"onInputNext()\"\n ></yuv-date-input-element>\n }\n <!-- month -->\n @case ('month') {\n <yuv-date-input-element\n placeholder=\"12\"\n [ngClass]=\"{ disabled: dateInputForm.disabled }\"\n [attr.aria-disabled]=\"dateInputForm.disabled\"\n formControlName=\"month\"\n [maxLength]=\"2\"\n [minValue]=\"1\"\n [maxValue]=\"12\"\n (prev)=\"onInputPrev()\"\n (next)=\"onInputNext()\"\n ></yuv-date-input-element>\n }\n <!-- year -->\n @case ('year') {\n <yuv-date-input-element\n placeholder=\"2000\"\n class=\"year\"\n [ngClass]=\"{ disabled: dateInputForm.disabled }\"\n [attr.aria-disabled]=\"dateInputForm.disabled\"\n formControlName=\"year\"\n [maxLength]=\"4\"\n (prev)=\"onInputPrev()\"\n (next)=\"onInputNext()\"\n ></yuv-date-input-element>\n }\n <!-- hours -->\n @case ('hour') {\n <yuv-date-input-hour-element\n placeholder=\"10\"\n [ngClass]=\"{ disabled: dateInputForm.disabled }\"\n [attr.aria-disabled]=\"dateInputForm.disabled\"\n [(dayPeriod)]=\"currentDayPeriod\"\n formControlName=\"hour\"\n [maxLength]=\"2\"\n (prev)=\"onInputPrev()\"\n (next)=\"onInputNext()\"\n ></yuv-date-input-hour-element>\n }\n <!-- minutes -->\n @case ('minute') {\n <yuv-date-input-element\n placeholder=\"00\"\n [ngClass]=\"{ disabled: dateInputForm.disabled }\"\n [attr.aria-disabled]=\"dateInputForm.disabled\"\n [minValue]=\"0\"\n [maxValue]=\"59\"\n formControlName=\"minute\"\n [maxLength]=\"2\"\n (prev)=\"onInputPrev()\"\n (next)=\"onInputNext()\"\n ></yuv-date-input-element>\n }\n @case ('literal') {\n <input type=\"text\" class=\"literal\" [value]=\"t.value\" readonly inert />\n }\n @case ('dayPeriod') {\n <button type=\"button\" class=\"dayPeriod\" [disabled]=\"dateInputForm.disabled\" (click)=\"toggleDayPeriod()\">\n {{ dayPeriodLabels[currentDayPeriod!] }}\n </button>\n }\n }\n }\n </form>\n}\n","import { Component, HostListener, inject } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { CalendarComponent } from '../calendar/calendar.component';\nimport { DatepickerCalendarOptions } from '../datepicker.interface';\nimport { YmtButtonDirective } from '@yuuvis/material';\n\n@Component({\n selector: 'yuv-datepicker-calendar',\n templateUrl: './datepicker-calendar.component.html',\n styleUrls: ['./datepicker-calendar.component.scss'],\n standalone: true,\n imports: [CalendarComponent, MatDialogModule, MatButtonModule, YmtButtonDirective]\n})\nexport class DatepickerCalendarComponent {\n #dialogData = inject<any>(MAT_DIALOG_DATA);\n readonly #dialogRef = inject(MatDialogRef<DatepickerCalendarComponent>);\n\n date: Date | undefined = this.#dialogData.date;\n options: DatepickerCalendarOptions = this.#dialogData.options;\n\n @HostListener('keydown.enter', ['$event']) enterKeyHandler(event: KeyboardEvent) {\n this.applyDate();\n event.preventDefault();\n event.stopPropagation();\n }\n\n shortcut(key: string) {\n switch (key) {\n case 'today': {\n const today = new Date();\n if (this.options.withTime && this.date) {\n // keep time value\n today.setHours(this.date.getHours());\n today.setMinutes(this.date.getMinutes());\n }\n this.date = today;\n break;\n }\n }\n }\n\n applyDate() {\n this.#dialogRef.close(this.date);\n }\n}\n","<mat-dialog-content>\n <yuv-calendar tabindex=\"0\"\n [locale]=\"options.locale\"\n [onlyFutureDates]=\"options.onlyFutureDates || false\"\n [(date)]=\"date\"\n [withTime]=\"options.withTime || false\"\n [minDate]=\"options.minDate\"\n [maxDate]=\"options.maxDate\"\n [hour12]=\"options.hour12 || false\"\n ></yuv-calendar>\n</mat-dialog-content>\n<mat-dialog-actions>\n <button type=\"button\" ymtButton=\"secondary\" mat-dialog-close>{{ options.labels!.calendarCancel }}</button>\n <!-- <button type=\"button\" mat-button (click)=\"shortcut('today')\">{{ options.labels!.shortcut.today }}</button> -->\n <button type=\"button\" ymtButton=\"primary\" [mat-dialog-close]=\"true\" (click)=\"applyDate()\">{{ options.labels!.calendarApply }}</button>\n</mat-dialog-actions>\n","import { Component, forwardRef, HostBinding, HostListener, inject, Input, OnDestroy, OnInit, signal, ViewChild } from '@angular/core';\nimport { AbstractControl, ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule, ValidationErrors, Validator } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { FocusWithinDirective } from '@yuuvis/client-framework/common';\nimport { DateInputComponent } from './date-input/date-input.component';\nimport { DatepickerCalendarComponent } from './datepicker-calendar/datepicker-calendar.component';\nimport { DatepickerLabels, DatepickerValueChange } from './datepicker.interface';\nimport { DatepickerService } from './datepicker.service';\nimport { DatepickerUtils } from './datepicker.utils';\nimport { YmtIconButtonDirective } from '@yuuvis/material';\n\n@Component({\n selector: 'yuv-datepicker',\n templateUrl: './datepicker.component.html',\n styleUrls: ['./datepicker.component.scss'],\n standalone: true,\n imports: [CommonModule, MatIconModule, DateInputComponent, \n YmtIconButtonDirective,\n MatButtonModule, ReactiveFormsModule],\n providers: [\n DatepickerService,\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatepickerComponent),\n multi: true\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => DatepickerComponent),\n multi: true\n }\n ],\n host: {\n 'class.all-selected': 'allSelected()'\n },\n hostDirectives: [FocusWithinDirective]\n})\nexport class DatepickerComponent implements ControlValueAccessor, Validator, OnInit, OnDestroy {\n #dialog = inject(MatDialog);\n #datepickerService = inject(DatepickerService);\n\n private _subs: Subscription[] = [];\n @ViewChild(DateInputComponent) dateInputCmp!: DateInputComponent;\n\n allSelected = signal<boolean>(false);\n\n @HostListener('keydown', ['$event'])\n keydownHandler(e: KeyboardEvent) {\n if (e.key === 'a' && e.ctrlKey) {\n // select all\n e.preventDefault();\n this.allSelected.set(true);\n } else if (e.key === 'Delete' && this.allSelected) {\n // delete the whole date\n if (this.readonly || this.disabled) return;\n this.allSelected.set(false);\n this.clear();\n e.preventDefault();\n e.stopPropagation();\n } else if (this.allSelected() && e.key === 'c' && e.ctrlKey) {\n this.copyToClipboard();\n } else {\n this.allSelected.set(false);\n }\n }\n\n @HostListener('click') clickHandler() {\n this.allSelected.set(false);\n }\n @HostListener('focusout') focusOutHandler() {\n this.allSelected.set(false);\n }\n\n /**\n * Whether or not to show a calendar picker\n */\n @Input() calendar = false;\n\n /**\n * Whether or not the component is readonly\n */\n @Input() readonly = false;\n _hour12 = false;\n /**\n * Whether or not to 12-hour format vs. default 24h format.\n * By default the component will try to figure out which hour cycle to\n * use based on the locale. Setting hour12 property to either `\n * `true`or `false will overwrite that.\n */\n @Input() set hour12(b: boolean) {\n if (b === true || b === false) {\n this._hour12 = b;\n this._detectHourCycle = false;\n }\n }\n private _detectHourCycle = true;\n\n private _locale: string = this.#datepickerService.DEFAULT_LANGUAGE;\n @Input() set locale(iso: string) {\n if (iso !== this._locale) {\n this._locale = iso;\n if (this._detectHourCycle) this._getHourCycle();\n this.#datepickerService.setLanguage(iso);\n }\n }\n get locale() {\n return this._locale;\n }\n\n private _defaultLabelslabels: DatepickerLabels = {\n calendarApply: 'Apply',\n calendarCancel: 'Cancel',\n shortcut: { today: 'today' }\n };\n\n private _labels: DatepickerLabels = this._defaultLabelslabels;\n @Input() set labels(l: DatepickerLabels | undefined) {\n this._labels = l || this._defaultLabelslabels;\n }\n get labels() {\n return this._labels;\n }\n\n private _withTime = false;\n /**\n * Whether or not to also include time\n */\n @Input() set withTime(b: boolean) {\n this._withTime = b;\n this.#datepickerService.setOption({ withTime: b });\n }\n get withTime() {\n return this._withTime;\n }\n /**\n * Allow only date inputs that are after today\n */\n @Input() set onlyFutureDates(b: boolean) {\n this.#datepickerService.setOption({ onlyFutureDates: b });\n }\n /**\n * Allow only date inputs after this date\n */\n @Input() set minDate(d: Date) {\n this.#datepickerService.setOption({ minDate: d || undefined });\n }\n /**\n * Allow only date inputs before this date\n */\n @Input() set maxDate(d: Date) {\n this.#datepickerService.setOption({ maxDate: d || undefined });\n }\n\n @HostBinding('attr.aria-disabled')\n @Input()\n disabled = false;\n calendarValue: Date | null = null;\n #dialogRef: MatDialogRef<DatepickerCalendarComponent> | undefined;\n\n copyToClipboard() {\n const fd = this.dateInputCmp.getFormattedValue();\n if (fd) navigator.clipboard.writeText(fd);\n }\n\n clear() {\n this.#datepickerService.setValue(null);\n this.dateInputCmp.focusFirstInput();\n }\n\n openCalendar() {\n if (!this.calendarValue) this.calendarValue = new Date();\n this.#dialogRef = this.#dialog.open(DatepickerCalendarComponent, {\n data: {\n date: this.calendarValue,\n options: {\n withTime: this.withTime,\n onlyFutureDates: this.onlyFutureDates,\n minDate: this.minDate,\n maxDate: this.maxDate,\n hour12: this._hour12,\n locale: this.locale,\n labels: this.labels\n }\n }\n });\n this.#dialogRef.afterClosed().subscribe({\n next: (date: Date) => {\n if (date) this.onCalendarDateApply(date);\n }\n });\n }\n\n onCalendarDateApply(date: Date) {\n this.calendarValue = date;\n this.#datepickerService.setValue(this.calendarValue);\n this.closeCalendar();\n }\n\n onTextInputStatusChange(e: { valid: boolean }) {\n this.validationChange();\n }\n\n closeCalendar() {\n this.#dialogRef?.close();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onDateInputBlur() {}\n\n validate(ac: AbstractControl): ValidationErrors | null {\n return this.#datepickerService.getErrors();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n propagateChange = (_: any) => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n validationChange = () => {};\n\n writeValue(value: any): void {\n if(value && DatepickerUtils.isValidDate(value)) {\n this.#datepickerService.setValue(value || null, true);\n }\n }\n\n registerOnChange(fn: () => void): void {\n this.propagateChange = fn;\n }\n\n registerOnValidatorChange?(fn: () => void): void {\n this.validationChange = fn;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n registerOnTouched(fn: () => void): void {}\n\n private _getHourCycle() {\n this._hour12 = DatepickerUtils.getPreferredHourCycle(this._locale) === 'h12';\n }\n\n ngOnInit(): void {\n if (this._detectHourCycle) this._getHourCycle();\n this._subs.push(\n this.#datepickerService.valueChange$.subscribe({\n next: (vc: DatepickerValueChange) => {\n this.calendarValue = vc.value;\n if (vc.propagateChange) this.propagateChange(vc.value);\n }\n })\n );\n this._subs.push(\n this.#datepickerService.validationChange$.subscribe({\n next: (valid: boolean) => {\n this.validationChange();\n }\n })\n );\n }\n\n ngOnDestroy(): void {\n this._subs.forEach((s) => s.unsubscribe());\n }\n}\n","<yuv-date-input [disabled]=\"disabled\" [withTime]=\"withTime\" [hour12]=\"_hour12\"></yuv-date-input>\n\n@if (calendar) {\n <button ymtIconButton icon-button-size=\"small\" type=\"button\" class=\"calender\" [disabled]=\"disabled\" (click)=\"openCalendar()\">\n <mat-icon>calendar_month</mat-icon>\n </button>\n}\n","import { Component, input } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { DatepickerCalendarTriggerTarget } from '../datepicker.interface';\n\n@Component({\n selector: 'yuv-datepicker-calendar-trigger',\n template: `<button mat-icon-button>\n <mat-icon (click)=\"for().openCalendar()\">calendar_month</mat-icon>\n </button>`,\n styles: [``],\n standalone: true,\n imports: [MatButtonModule, MatIconModule]\n})\nexport class DatepickerCalendarTriggerComponent {\n for = input.required<DatepickerCalendarTriggerTarget>();\n}\n","import { NgModule } from '@angular/core';\nimport { CalendarComponent } from './calendar/calendar.component';\nimport { DatepickerComponent } from './datepicker.component';\nimport { DatepickerCalendarTriggerComponent } from './datepicker-calendar/datepicker-calendar-trigger.component';\n\n\nconst cmp = [CalendarComponent, DatepickerComponent, DatepickerCalendarTriggerComponent];\n@NgModule({\n imports: [...cmp],\n exports: [...cmp],\n})\nexport class YuvDatepickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i1.DatepickerService","i3"],"mappings":"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"}
|