@wkly/datetime-picker 11.1.0 → 12.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/bundles/wkly-datetime-picker-cdk-overlay.umd.js +26 -4
  2. package/bundles/wkly-datetime-picker-cdk-overlay.umd.js.map +1 -1
  3. package/bundles/wkly-datetime-picker.umd.js +108 -89
  4. package/bundles/wkly-datetime-picker.umd.js.map +1 -1
  5. package/esm2015/cdk-overlay/public-api.js +1 -1
  6. package/esm2015/cdk-overlay/public-api.ngfactory.js +2 -2
  7. package/esm2015/cdk-overlay/public-api.ngsummary.json +1 -1
  8. package/esm2015/cdk-overlay/wkly-datetime-picker-cdk-overlay.js +1 -1
  9. package/esm2015/config.js +2 -2
  10. package/esm2015/config.ngsummary.json +1 -1
  11. package/esm2015/field.component.css.shim.ngstyle.js +2 -2
  12. package/esm2015/field.component.js +2 -2
  13. package/esm2015/field.component.ngfactory.js +1 -1
  14. package/esm2015/picker.component.js +2 -2
  15. package/esm2015/picker.component.ngfactory.js +1 -1
  16. package/esm2015/presentation.js +1 -1
  17. package/esm2015/presentation.ngsummary.json +1 -1
  18. package/esm2015/public-api.js +1 -1
  19. package/esm2015/public-api.ngfactory.js +1 -1
  20. package/esm2015/wkly-datetime-picker.js +1 -1
  21. package/fesm2015/wkly-datetime-picker-cdk-overlay.js +5 -2
  22. package/fesm2015/wkly-datetime-picker-cdk-overlay.js.map +1 -1
  23. package/fesm2015/wkly-datetime-picker.js +7 -5
  24. package/fesm2015/wkly-datetime-picker.js.map +1 -1
  25. package/package.json +8 -8
  26. package/wkly-datetime-picker.metadata.json +1 -1
  27. package/bundles/wkly-datetime-picker-cdk-overlay.umd.min.js +0 -2
  28. package/bundles/wkly-datetime-picker-cdk-overlay.umd.min.js.map +0 -1
  29. package/bundles/wkly-datetime-picker.umd.min.js +0 -2
  30. package/bundles/wkly-datetime-picker.umd.min.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"wkly-datetime-picker.js","sources":["../../../projects/wkly-datetime-picker.11/src/config.ts","../../../projects/wkly-datetime-picker.11/src/picker.component.ts","../../../projects/wkly-datetime-picker.11/src/presentation.ts","../../../projects/wkly-datetime-picker.11/src/field.component.ts","../../../projects/wkly-datetime-picker.11/src/public-api.ts","../../../projects/wkly-datetime-picker.11/src/wkly-datetime-picker.ts"],"sourcesContent":["import {\n Directive,\n EventEmitter,\n InjectionToken,\n Input,\n Output,\n} from \"@angular/core\";\nimport { WklyWeekOffset } from \"@wkly/core\";\nimport {\n WklyCalendarAdapter,\n WklyDisabledDatePredicate,\n WklyDisabledTimePredicate,\n WklyHourCycle,\n WklyPickerValue,\n WklyRangeValidator,\n WklySelectionMode,\n WklyValidationError,\n WklyViewportPreset,\n WklyWeekLabelFormatter,\n WklyWeekLabelMode,\n} from \"@wkly/adapters\";\nimport {\n DEFAULT_OVERSCAN_WEEKS,\n WklyClock,\n WklyConfiguration,\n WklyCloseReason,\n WklyPickerInputs as WklyPickerInputsContract,\n WklyPickerOutputs as WklyPickerOutputsContract,\n WklyStrings,\n WklyTranslations,\n WklyViewportChange,\n WklyPickerInputsPropertyKeys,\n WklyPickerOutputsPropertyKeys,\n} from \"@wkly/presentation\";\nexport * from \"@wkly/presentation\";\nexport const WKLY_CLOCK = new InjectionToken<WklyClock>(\"WKLY_CLOCK\", {\n providedIn: \"root\",\n factory: () => ({ now: () => new Date() }),\n});\nexport const WKLY_CONFIG = new InjectionToken<WklyConfiguration>(\n \"WKLY_CONFIG\",\n { providedIn: \"root\", factory: () => ({}) },\n);\nexport const WKLY_LOCALIZATION = new InjectionToken<WklyStrings>(\n \"WKLY_LOCALIZATION\",\n { providedIn: \"root\", factory: () => ({}) },\n);\nexport const WKLY_TRANSLATIONS = new InjectionToken<WklyTranslations>(\n \"WKLY_TRANSLATIONS\",\n { providedIn: \"root\", factory: () => ({}) },\n);\n/** Shared public inputs/outputs inherited by the picker and both trigger directives. */\n// Angular 11 consumers need literal names in published decorator metadata.\n@Directive({\n inputs: [\n \"mode\",\n \"value\",\n \"calendarAdapter\",\n \"locale\",\n \"weekOffset\",\n \"viewportPreset\",\n \"hourCycle\",\n \"showSeconds\",\n \"minuteStep\",\n \"secondStep\",\n \"min\",\n \"max\",\n \"isDateDisabled\",\n \"isTimeDisabled\",\n \"rangeValidator\",\n \"allowRangeAcrossDisabled\",\n \"required\",\n \"disabled\",\n \"weekLabelMode\",\n \"weekLabelFormatter\",\n \"weekCacheSize\",\n \"overscanWeeks\",\n \"ariaLabel\",\n \"ariaDescribedBy\",\n \"initialEpochDay\",\n \"closeOnBackdrop\",\n \"validators\",\n \"translations\",\n ],\n outputs: [\n \"valueChange\",\n \"validationChange\",\n \"opened\",\n \"closed\",\n \"viewportChange\",\n \"viewModeChange\",\n ],\n})\nexport abstract class WklyPickerInputs\n implements WklyPickerInputsContract, WklyPickerOutputsContract\n{\n @Input() [WklyPickerInputsPropertyKeys.Mode]: WklySelectionMode = \"datetime\";\n @Input() [WklyPickerInputsPropertyKeys.Value]: WklyPickerValue = null;\n @Input() [WklyPickerInputsPropertyKeys.CalendarAdapter]: WklyCalendarAdapter;\n @Input() [WklyPickerInputsPropertyKeys.Locale]: string = \"\";\n @Input() [WklyPickerInputsPropertyKeys.WeekOffset]: WklyWeekOffset | null =\n null;\n @Input() [WklyPickerInputsPropertyKeys.ViewportPreset]: WklyViewportPreset = {\n kind: \"full-month\",\n };\n @Input() [WklyPickerInputsPropertyKeys.HourCycle]: WklyHourCycle = \"locale\";\n @Input() [WklyPickerInputsPropertyKeys.ShowSeconds]: boolean = false;\n @Input() [WklyPickerInputsPropertyKeys.MinuteStep]: number = 1;\n @Input() [WklyPickerInputsPropertyKeys.SecondStep]: number = 1;\n @Input() [WklyPickerInputsPropertyKeys.Min]: string | null = null;\n @Input() [WklyPickerInputsPropertyKeys.Max]: string | null = null;\n @Input()\n [WklyPickerInputsPropertyKeys.IsDateDisabled]: WklyDisabledDatePredicate | null =\n null;\n @Input()\n [WklyPickerInputsPropertyKeys.IsTimeDisabled]: WklyDisabledTimePredicate | null =\n null;\n @Input()\n [WklyPickerInputsPropertyKeys.RangeValidator]: WklyRangeValidator | null =\n null;\n @Input() [WklyPickerInputsPropertyKeys.AllowRangeAcrossDisabled] = false;\n @Input() [WklyPickerInputsPropertyKeys.Required] = false;\n @Input() [WklyPickerInputsPropertyKeys.Disabled] = false;\n @Input() [WklyPickerInputsPropertyKeys.WeekLabelMode]: WklyWeekLabelMode =\n \"locale\";\n @Input()\n [WklyPickerInputsPropertyKeys.WeekLabelFormatter]: WklyWeekLabelFormatter | null =\n null;\n @Input() [WklyPickerInputsPropertyKeys.WeekCacheSize] = 256;\n @Input() [WklyPickerInputsPropertyKeys.OverscanWeeks] =\n DEFAULT_OVERSCAN_WEEKS;\n @Input() [WklyPickerInputsPropertyKeys.AriaLabel]: string | null = null;\n @Input() [WklyPickerInputsPropertyKeys.AriaDescribedBy]: string | null = null;\n @Input() [WklyPickerInputsPropertyKeys.InitialEpochDay]: number | null = null;\n @Input() [WklyPickerInputsPropertyKeys.CloseOnBackdrop] = true;\n @Input() [WklyPickerInputsPropertyKeys.Validators]: readonly ((\n value: WklyPickerValue,\n ) => WklyValidationError | null)[] = [];\n @Input()\n [WklyPickerInputsPropertyKeys.Translations]: WklyTranslations | null = null;\n @Output() [WklyPickerOutputsPropertyKeys.ValueChange] =\n new EventEmitter<WklyPickerValue>();\n @Output() [WklyPickerOutputsPropertyKeys.ValidationChange] = new EventEmitter<\n readonly WklyValidationError[]\n >(true);\n @Output() [WklyPickerOutputsPropertyKeys.Opened] = new EventEmitter<void>();\n @Output() [WklyPickerOutputsPropertyKeys.Closed] =\n new EventEmitter<WklyCloseReason>();\n @Output() [WklyPickerOutputsPropertyKeys.ViewportChange] =\n new EventEmitter<WklyViewportChange>(true);\n @Output() [WklyPickerOutputsPropertyKeys.ViewModeChange] = new EventEmitter<\n \"calendar\" | \"manual\"\n >();\n}\n","import type { WklyHourCycle } from \"@wkly/adapters\";\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n forwardRef,\n Inject,\n LOCALE_ID,\n OnChanges,\n OnDestroy,\n OnInit,\n PLATFORM_ID,\n ViewChild,\n} from \"@angular/core\";\nimport { getLocaleFirstDayOfWeek, isPlatformBrowser } from \"@angular/common\";\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n} from \"@angular/forms\";\nimport {\n absoluteWeekOf,\n createWeekGenerator,\n firstEpochDayOf,\n integer,\n WklyWeekGenerator,\n WklyWeekOffset,\n} from \"@wkly/core\";\nimport {\n decodeIso,\n error,\n resolveWeekOffset,\n validateSelection,\n WklyCalendarAdapter,\n WklyCalendarDate,\n WklyDateTime,\n WklyGregorianCalendarAdapter,\n WklyPickerValue,\n WklyValidationError,\n} from \"@wkly/adapters\";\nimport {\n draftDayDifference,\n setDraftDayDifference,\n calendarMonthBounds,\n resolveWklyTranslation,\n createWeekRows,\n validateDrafts,\n WklyDraft as Draft,\n WklyWeekRow as Row,\n} from \"@wkly/presentation\";\nimport {\n coerceBoolean,\n WKLY_CLOCK,\n WKLY_CONFIG,\n WKLY_LOCALIZATION,\n WKLY_TRANSLATIONS,\n WklyClock,\n WklyCloseReason,\n WklyConfiguration,\n WklyJumpOptions,\n WklyPickerInputs,\n WklyPickerInputsPropertyKeys,\n WklyPickerOutputsPropertyKeys,\n WklyStrings,\n WklyTranslations,\n} from \"./config\";\ndeclare class ResizeObserver {\n constructor(callback: () => void);\n observe(element: Element): void;\n disconnect(): void;\n}\n@Component({\n selector: \"wkly-datetime-picker\",\n templateUrl: \"./picker.component.html\",\n styleUrls: [\"../../wkly-datetime-picker/src/picker.component.css\"],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => WklyDateTimePickerComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => WklyDateTimePickerComponent),\n multi: true,\n },\n ],\n})\nexport class WklyDateTimePickerComponent\n extends WklyPickerInputs\n implements\n OnInit,\n OnChanges,\n AfterViewInit,\n OnDestroy,\n ControlValueAccessor,\n Validator\n{\n @ViewChild(\"scroller\") scroller?: ElementRef<HTMLElement>;\n presentation: \"inline\" | \"transient\" = \"inline\";\n viewMode: \"calendar\" | \"manual\" = \"calendar\";\n endView: \"date\" | \"days\" = \"date\";\n adapter!: WklyCalendarAdapter;\n effectiveLocale = \"en-US\";\n effectiveOffset: WklyWeekOffset = 0;\n effectiveHourCycle: \"h12\" | \"h24\" = \"h24\";\n private configuredHourCycle?: WklyHourCycle;\n direction = \"ltr\";\n rows: Row[] = [];\n weekdays: string[] = [];\n drafts: Draft[] = [];\n errors: readonly WklyValidationError[] = [];\n today = 0;\n focused = 0;\n anchorWeek = 0;\n firstWeek = 0;\n visibleCount = 6;\n rowHeight = 76;\n scrollHeight = 152076;\n paddingTop = 0;\n initialized = false;\n compact = false;\n readonly WklyPickerInputsPropertyKeys = WklyPickerInputsPropertyKeys;\n private baseWeek = 0;\n private firstSupportedDay = 0;\n private lastSupportedDay = 0;\n private firstSupportedWeek = 0;\n private lastSupportedWeek = 0;\n private generator!: WklyWeekGenerator;\n private initialMonth = \"\";\n private clipMonth = false;\n private browser = false;\n private observer?: ResizeObserver;\n private destroyed = false;\n private scrollEndTimer?: ReturnType<typeof setTimeout>;\n private snapPending = false;\n private onChange: (value: WklyPickerValue) => void = () => {};\n private onTouched: () => void = () => {};\n private validatorChanged: () => void = () => {};\n private configErrors: WklyValidationError[] = [];\n private pendingValue: WklyPickerValue = null;\n private emittedValue: string | null = null;\n private manualDateEndpoint = 0;\n constructor(\n @Inject(LOCALE_ID) private defaultLocale: string,\n @Inject(WKLY_CONFIG) private defaults: WklyConfiguration,\n @Inject(WKLY_CLOCK) private clock: WklyClock,\n @Inject(WKLY_LOCALIZATION) private strings: WklyStrings,\n @Inject(WKLY_TRANSLATIONS) private defaultTranslations: WklyTranslations,\n @Inject(PLATFORM_ID) platform: Object,\n private host: ElementRef<HTMLElement>,\n private changeDetector: ChangeDetectorRef,\n ) {\n super();\n this.browser = isPlatformBrowser(platform);\n }\n ngOnInit(): void {\n this.initialize();\n }\n ngOnChanges(changes: any): void {\n if (this.initialized) {\n if (\n Object.keys(changes).length === 1 &&\n changes[WklyPickerInputsPropertyKeys.Value] &&\n this.emittedValue ===\n JSON.stringify(this[WklyPickerInputsPropertyKeys.Value])\n ) {\n this.emittedValue = null;\n return;\n }\n const focus = this.focused;\n this.configure();\n if (\n changes[WklyPickerInputsPropertyKeys.Value] ||\n changes[WklyPickerInputsPropertyKeys.Mode] ||\n changes[WklyPickerInputsPropertyKeys.CalendarAdapter]\n ) {\n this.load(this[WklyPickerInputsPropertyKeys.Value]);\n this.position(this.focused, true);\n } else {\n this.check();\n if (changes[WklyPickerInputsPropertyKeys.ViewportPreset])\n this.position(focus, true);\n else this.scrollToEpochDay(focus);\n }\n }\n }\n initialize(): void {\n if (this.initialized) return;\n this.configure();\n const initialEpochDay = this[WklyPickerInputsPropertyKeys.InitialEpochDay];\n this.today = this.browser\n ? Math.floor(this.clock.now().getTime() / 86400000)\n : initialEpochDay === null\n ? 0\n : initialEpochDay;\n this.focused =\n initialEpochDay === null\n ? this.defaults.initialEpochDay === undefined\n ? this.today\n : this.defaults.initialEpochDay\n : initialEpochDay;\n this.load(this[WklyPickerInputsPropertyKeys.Value]);\n this.initialized = true;\n this.position(this.focused, true);\n }\n configure(): void {\n this.configErrors = [];\n [\n WklyPickerInputsPropertyKeys.ShowSeconds,\n WklyPickerInputsPropertyKeys.AllowRangeAcrossDisabled,\n WklyPickerInputsPropertyKeys.Required,\n WklyPickerInputsPropertyKeys.Disabled,\n WklyPickerInputsPropertyKeys.CloseOnBackdrop,\n ].forEach(\n (key) => ((this as any)[key] = coerceBoolean((this as any)[key])),\n );\n this.effectiveLocale =\n this[WklyPickerInputsPropertyKeys.Locale] ||\n this.defaults.locale ||\n this.defaultLocale;\n this.direction = /^(ar|he|fa|ur)(-|$)/.test(this.effectiveLocale)\n ? \"rtl\"\n : \"ltr\";\n this.adapter =\n this[WklyPickerInputsPropertyKeys.CalendarAdapter] ||\n new WklyGregorianCalendarAdapter(this.effectiveLocale);\n try {\n let firstDay: number | undefined;\n try {\n firstDay = getLocaleFirstDayOfWeek(this.effectiveLocale);\n } catch (_) {}\n this.effectiveOffset = resolveWeekOffset(\n this.effectiveLocale,\n this[WklyPickerInputsPropertyKeys.WeekOffset],\n this.defaults.weekOffset,\n firstDay,\n );\n integer(this[WklyPickerInputsPropertyKeys.WeekCacheSize]);\n integer(this[WklyPickerInputsPropertyKeys.OverscanWeeks]);\n if (\n this[WklyPickerInputsPropertyKeys.WeekCacheSize] < 0 ||\n this[WklyPickerInputsPropertyKeys.OverscanWeeks] < 0 ||\n this[WklyPickerInputsPropertyKeys.OverscanWeeks] > 50\n )\n throw new RangeError();\n if (\n ![\n \"datetime\",\n \"date\",\n \"time\",\n \"datetime-range\",\n \"date-range\",\n \"time-range\",\n ].includes(this[WklyPickerInputsPropertyKeys.Mode])\n )\n throw new RangeError();\n const preset = this[WklyPickerInputsPropertyKeys.ViewportPreset];\n if (preset.kind === \"weeks\") {\n integer(preset.visibleWeekCount);\n if (preset.visibleWeekCount < 1 || preset.visibleWeekCount > 52)\n throw new RangeError();\n }\n if (preset.kind === \"full-month-and-around\")\n for (const n of [\n preset.extraWeeksBefore || 0,\n preset.extraWeeksAfter || 0,\n ]) {\n integer(n);\n if (n < 0 || n > 52) throw new RangeError();\n }\n this.generator = createWeekGenerator({\n weekOffset: this.effectiveOffset,\n cacheSize: this[WklyPickerInputsPropertyKeys.WeekCacheSize],\n });\n } catch (_) {\n this.configErrors.push(\n error(\n \"configuration-error\",\n this[WklyPickerInputsPropertyKeys.WeekOffset],\n ),\n );\n this.generator = createWeekGenerator();\n this.effectiveOffset = 0;\n }\n this.setSupportedScrollRange();\n const hourCycle = this[WklyPickerInputsPropertyKeys.HourCycle];\n // Host value/configuration feedback must retain the user's switchable format.\n if (hourCycle !== \"switchable\" || this.configuredHourCycle !== hourCycle) {\n this.effectiveHourCycle =\n hourCycle === \"h12\"\n ? \"h12\"\n : hourCycle === \"locale\"\n ? new Intl.DateTimeFormat(this.effectiveLocale, {\n hour: \"numeric\",\n timeZone: \"UTC\",\n }).resolvedOptions().hour12\n ? \"h12\"\n : \"h24\"\n : \"h24\";\n }\n this.configuredHourCycle = hourCycle;\n this.weekdays = Array.from({ length: 7 }, (_, i) =>\n this.adapter.formatWeekday(this.effectiveOffset + i, \"short\"),\n );\n }\n private setSupportedScrollRange(): void {\n let [first, last] = this.adapter.supportedEpochDayRange;\n const [firstYear, lastYear] = this.adapter.supportedYearRange;\n const yearOf = (day: number) => this.adapter.epochDayToDate(day).year;\n if (yearOf(first) < firstYear) {\n let low = first,\n high = last;\n while (low < high) {\n const mid = Math.floor((low + high) / 2);\n if (yearOf(mid) < firstYear) low = mid + 1;\n else high = mid;\n }\n first = low;\n }\n if (yearOf(last) > lastYear) {\n let low = first,\n high = last;\n while (low < high) {\n const mid = Math.ceil((low + high) / 2);\n if (yearOf(mid) > lastYear) high = mid - 1;\n else low = mid;\n }\n last = low;\n }\n if (\n first > last ||\n yearOf(first) < firstYear ||\n yearOf(first) > lastYear ||\n yearOf(last) < firstYear ||\n yearOf(last) > lastYear\n )\n throw new RangeError(\"No supported days within the calendar year range\");\n this.firstSupportedDay = first;\n this.lastSupportedDay = last;\n this.firstSupportedWeek = absoluteWeekOf(first, this.effectiveOffset);\n this.lastSupportedWeek = absoluteWeekOf(last, this.effectiveOffset);\n }\n private clampFirstWeek(week: number): number {\n // Keep supported weeks inside the viewport; renderRows adds the buffer rows.\n const last = Math.max(\n this.firstSupportedWeek,\n this.lastSupportedWeek - this.visibleCount + 1,\n );\n return Math.max(this.firstSupportedWeek, Math.min(last, week));\n }\n ngAfterViewInit(): void {\n this.resetScroll();\n if (this.browser && typeof ResizeObserver !== \"undefined\") {\n this.observer = new ResizeObserver(() => {\n this.compact = this.host.nativeElement.clientWidth < 338;\n const row = this.host.nativeElement.querySelector(\n \".week-row\",\n ) as HTMLElement;\n // CSS heights and scrollTop use layout pixels; client rectangles include zoom.\n const height = row ? parseFloat(getComputedStyle(row).height) : 0;\n if (height && height !== this.rowHeight) {\n this.rowHeight = height;\n this.scrollHeight = this.rowHeight * 2001;\n this.renderRows();\n this.resetScroll();\n }\n });\n this.observer.observe(this.host.nativeElement);\n }\n }\n ngOnDestroy(): void {\n this.destroyed = true;\n if (this.observer) this.observer.disconnect();\n if (this.scrollEndTimer) clearTimeout(this.scrollEndTimer);\n if (this.generator) this.generator.clearCache();\n }\n t(key: string): string {\n return resolveWklyTranslation(\n key,\n this.effectiveLocale,\n this[WklyPickerInputsPropertyKeys.Translations] ||\n this.defaultTranslations,\n this.strings,\n );\n }\n get isRange(): boolean {\n return this[WklyPickerInputsPropertyKeys.Mode].endsWith(\"-range\");\n }\n get hasDate(): boolean {\n return !this[WklyPickerInputsPropertyKeys.Mode].startsWith(\"time\");\n }\n get hasTime(): boolean {\n return (\n this[WklyPickerInputsPropertyKeys.Mode] !== \"date\" &&\n this[WklyPickerInputsPropertyKeys.Mode] !== \"date-range\"\n );\n }\n get submitVisible(): boolean {\n return (\n this.presentation === \"transient\" &&\n (this[WklyPickerInputsPropertyKeys.Mode] !== \"date\" ||\n this.viewMode === \"manual\")\n );\n }\n get title(): string {\n try {\n const d = this.adapter.epochDayToDate(\n Math.max(\n this.firstSupportedDay,\n Math.min(\n this.lastSupportedDay,\n firstEpochDayOf(this.anchorWeek, this.effectiveOffset),\n ),\n ),\n );\n return this.adapter.formatMonth(d) + \" \" + this.adapter.formatYear(d);\n } catch (_) {\n return \"\";\n }\n }\n get canSubmit(): boolean {\n return (\n !this[WklyPickerInputsPropertyKeys.Disabled] &&\n !this.errors.length &&\n this.pendingValue !== null\n );\n }\n private blank(day: number): Draft {\n const safe = Math.max(\n this.firstSupportedDay,\n Math.min(this.lastSupportedDay, day),\n );\n return {\n date: this.adapter.epochDayToDate(safe),\n hour: 0,\n minute: 0,\n second: 0,\n present: false,\n };\n }\n load(value: WklyPickerValue): void {\n this.drafts = [this.blank(this.focused), this.blank(this.focused)];\n const validation = validateSelection(value, this, this.adapter);\n if (value !== null && !validation.length) {\n const values = typeof value === \"string\" ? [value] : value;\n values.forEach((v, i) => {\n const d = decodeIso(v);\n this.drafts[i] = {\n date: this.hasDate\n ? this.adapter.epochDayToDate(d.epochDay)\n : this.blank(this.today).date,\n hour: d.hour,\n minute: d.minute,\n second: d.second,\n present: true,\n };\n if (i === 0 && this.hasDate) this.focused = d.epochDay;\n });\n }\n if (validation.length) {\n this.pendingValue = null;\n this.report(validation);\n } else this.check();\n }\n writeValue(value: WklyPickerValue): void {\n this[WklyPickerInputsPropertyKeys.Value] = value;\n if (this.initialized) {\n this.load(value);\n this.position(this.focused, true);\n }\n }\n registerOnChange(fn: (value: WklyPickerValue) => void): void {\n this.onChange = fn;\n }\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n setDisabledState(disabled: boolean): void {\n this[WklyPickerInputsPropertyKeys.Disabled] = disabled;\n }\n validate(_control: AbstractControl): ValidationErrors | null {\n return this.errors.length ? { wkly: this.errors } : null;\n }\n registerOnValidatorChange(fn: () => void): void {\n this.validatorChanged = fn;\n }\n touched(): void {\n Promise.resolve().then(() => this.onTouched());\n }\n private report(errors: readonly WklyValidationError[]): void {\n const changed = JSON.stringify(this.errors) !== JSON.stringify(errors);\n this.errors = errors;\n if (changed) {\n this[WklyPickerOutputsPropertyKeys.ValidationChange].emit(errors);\n this.validatorChanged();\n }\n }\n check(): void {\n const result = validateDrafts({\n drafts: this.drafts,\n configErrors: this.configErrors,\n adapter: this.adapter,\n selection: this,\n mode: this[WklyPickerInputsPropertyKeys.Mode],\n isRange: this.isRange,\n hasDate: this.hasDate,\n hasTime: this.hasTime,\n showSeconds: this[WklyPickerInputsPropertyKeys.ShowSeconds],\n required: this[WklyPickerInputsPropertyKeys.Required],\n });\n this.pendingValue = result.pendingValue;\n this.report(result.errors);\n }\n trackDraft(index: number): number {\n // Endpoint controls keep their identity and focus when draft objects swap.\n return index;\n }\n private orderDrafts(): void {\n if (!this.isRange || !this.drafts.every((draft) => draft.present)) return;\n if (this.drafts.some((draft) => draft.unsupportedEpochDay !== undefined))\n return;\n try {\n const a = this.drafts[0],\n b = this.drafts[1];\n const key = (d: Draft) =>\n this.adapter.dateToEpochDay(d.date) * 86400 +\n (d.hour || 0) * 3600 +\n (d.minute || 0) * 60 +\n (d.second || 0);\n if (key(a) > key(b)) this.drafts = [b, a];\n } catch (_) {\n // Impossible or incomplete dates remain editable until corrected.\n }\n }\n finish(): void {\n if (this[WklyPickerInputsPropertyKeys.Disabled]) return;\n this.orderDrafts();\n if (this.viewMode === \"manual\" && this.hasDate) this.positionOnManualDate();\n this.check();\n if (this.presentation === \"inline\" && this.canSubmit) this.commit();\n }\n private commit(): void {\n if (!this.canSubmit) return;\n const next = this.pendingValue;\n if (\n JSON.stringify(next) !==\n JSON.stringify(this[WklyPickerInputsPropertyKeys.Value])\n ) {\n this[WklyPickerInputsPropertyKeys.Value] = next;\n this.emittedValue = JSON.stringify(next);\n this.onChange(next);\n this[WklyPickerOutputsPropertyKeys.ValueChange].emit(next);\n }\n this.onTouched();\n }\n submit(reason: WklyCloseReason = \"submit\"): void {\n this.check();\n if (!this.canSubmit) return;\n this.commit();\n if (this.presentation === \"transient\")\n this[WklyPickerOutputsPropertyKeys.Closed].emit(reason);\n }\n cancel(reason: WklyCloseReason = \"close-button\"): void {\n if (this[WklyPickerInputsPropertyKeys.Disabled]) return;\n this.load(this[WklyPickerInputsPropertyKeys.Value]);\n this.onTouched();\n this[WklyPickerOutputsPropertyKeys.Closed].emit(reason);\n }\n now(): void {\n if (this[WklyPickerInputsPropertyKeys.Disabled]) return;\n const n = this.clock.now();\n const day = Math.floor(n.getTime() / 86400000);\n this.drafts = [0, 1].map((index) => ({\n ...this.clockDraft(day, n),\n present: index === 0 || this.isRange,\n }));\n if (\n this.hasDate &&\n (day < this.firstSupportedDay || day > this.lastSupportedDay)\n ) {\n this.report([error(\"unsupported-adapter-date\", day)]);\n return;\n }\n this.focused = day;\n this.position(day, true);\n this.check();\n this.submit(\"now\");\n }\n private clockDraft(day: number, now: Date): Draft {\n return {\n ...this.blank(day),\n hour: now.getUTCHours(),\n minute:\n Math.floor(\n now.getUTCMinutes() / this[WklyPickerInputsPropertyKeys.MinuteStep],\n ) * this[WklyPickerInputsPropertyKeys.MinuteStep],\n second: this[WklyPickerInputsPropertyKeys.ShowSeconds]\n ? Math.floor(\n now.getUTCSeconds() / this[WklyPickerInputsPropertyKeys.SecondStep],\n ) * this[WklyPickerInputsPropertyKeys.SecondStep]\n : 0,\n };\n }\n private initializeManualRange(): void {\n if (\n !this.isRange ||\n !this.hasDate ||\n this.drafts.every((draft) => draft.present)\n )\n return;\n let seed = this.drafts.find((draft) => draft.present);\n if (!seed) {\n if (this[WklyPickerInputsPropertyKeys.Value] !== null) return;\n const now = this.clock.now();\n const initialEpochDay =\n this[WklyPickerInputsPropertyKeys.InitialEpochDay];\n const day =\n initialEpochDay === null\n ? this.defaults.initialEpochDay === undefined\n ? Math.floor(now.getTime() / 86400000)\n : this.defaults.initialEpochDay\n : initialEpochDay;\n seed = { ...this.clockDraft(day, now), present: true };\n }\n // Complete missing endpoints without replacing selected or invalid drafts.\n const initial = seed;\n this.drafts = this.drafts.map((draft) =>\n draft.present ? draft : { ...initial, date: { ...initial.date } },\n );\n this.finish();\n // Positioning renders before validation; refresh completion controls afterward.\n this.changeDetector.markForCheck();\n }\n toggleView(): void {\n if (this[WklyPickerInputsPropertyKeys.Disabled] || !this.hasDate) return;\n this.viewMode = this.viewMode === \"calendar\" ? \"manual\" : \"calendar\";\n if (this.viewMode === \"manual\") this.initializeManualRange();\n if (this.viewMode === \"calendar\") this.positionOnManualDate();\n this[WklyPickerOutputsPropertyKeys.ViewModeChange].emit(this.viewMode);\n if (this.viewMode === \"calendar\") setTimeout(() => this.resetScroll());\n }\n private positionOnManualDate(): void {\n const draft = this.drafts[this.manualDateEndpoint];\n if (!draft || !draft.present) return;\n try {\n // A valid day follows the selection. An impossible day keeps its draft\n // fields but still shows the chosen month in the calendar.\n const target = this.adapter.dateToEpochDay(draft.date);\n this.focused = target;\n this.position(target, true);\n } catch (_) {\n try {\n const first = this.adapter.dateToEpochDay({ ...draft.date, day: 1 });\n this.focused = first;\n this.position(first, true);\n } catch (_) {}\n }\n }\n months(draft: Draft): readonly string[] {\n try {\n return this.adapter.getMonths(draft.date.year).map((m) => m.label);\n } catch (_) {\n return [];\n }\n }\n monthCount(draft: Draft): number {\n return this.months(draft).length || 12;\n }\n get inDays(): number | null {\n return draftDayDifference(this.drafts, this.adapter);\n }\n get inDaysLabel(): string {\n const days = this.inDays;\n return this.t(\"inDays\").replace(\n /{{\\s*days\\s*}}/g,\n days === null\n ? this.t(\"daysUnavailable\")\n : new Intl.NumberFormat(this.effectiveLocale, {\n useGrouping: false,\n }).format(days),\n );\n }\n get resultingEndDate(): string {\n try {\n const draft = this.drafts[1];\n if (\n draft.unsupportedEpochDay !== undefined ||\n this.adapter.validateDate(draft.date).length\n )\n return \"\";\n return [\n this.adapter.formatDay(draft.date),\n this.adapter.formatMonth(draft.date),\n this.adapter.formatYear(draft.date),\n ].join(\" \");\n } catch (_) {\n return \"\";\n }\n }\n toggleEndView(view: \"date\" | \"days\"): void {\n if (this[WklyPickerInputsPropertyKeys.Disabled]) return;\n this.endView = view;\n }\n days(value: number | null): void {\n if (this[WklyPickerInputsPropertyKeys.Disabled]) return;\n this.manualDateEndpoint = 1;\n setDraftDayDifference(this.drafts, this.adapter, value);\n this.check();\n }\n field(index: number, field: string, value: number | null): void {\n if (this[WklyPickerInputsPropertyKeys.Disabled]) return;\n const draft = this.drafts[index];\n draft.present = true;\n if (field === \"day\" || field === \"year\" || field === \"month\") {\n this.manualDateEndpoint = index;\n delete draft.unsupportedEpochDay;\n let date = { ...draft.date, [field]: value } as WklyCalendarDate;\n if (field === \"month\") {\n let month;\n try {\n month = this.adapter\n .getMonths(date.year)\n .find((m) => m.month === value);\n } catch (_) {}\n date = { ...date, monthCode: month ? month.monthCode : \"\" };\n }\n if (field === \"year\" && value !== null) {\n try {\n const months = this.adapter.getMonths(value);\n const month = months.find((m) => m.monthCode === date.monthCode);\n if (month) date = { ...date, month: month.month };\n } catch (_) {}\n }\n draft.date = date;\n } else if (field === \"hour\" && this.effectiveHourCycle === \"h12\")\n draft.hour =\n value === null\n ? null\n : value >= 1 && value <= 12\n ? (value % 12) + ((draft.hour || 0) >= 12 ? 12 : 0)\n : 24 + value;\n else (draft as any)[field] = value;\n this.check();\n }\n displayHour(draft: Draft): number | null {\n return draft.hour === null\n ? null\n : this.effectiveHourCycle === \"h12\"\n ? draft.hour % 12 || 12\n : draft.hour;\n }\n period(index: number, period: \"am\" | \"pm\" | \"24\"): void {\n if (this[WklyPickerInputsPropertyKeys.Disabled]) return;\n if (period === \"24\") this.effectiveHourCycle = \"h24\";\n else {\n this.effectiveHourCycle = \"h12\";\n this.drafts[index].hour =\n ((this.drafts[index].hour || 0) % 12) + (period === \"pm\" ? 12 : 0);\n this.drafts[index].present = true;\n this.finish();\n }\n }\n selected(day: number): boolean {\n return this.drafts.some((d) => {\n try {\n return d.present && this.adapter.dateToEpochDay(d.date) === day;\n } catch (_) {\n return false;\n }\n });\n }\n inRange(day: number): boolean {\n if (!this.isRange || !this.drafts.every((d) => d.present)) return false;\n try {\n const a = this.adapter.dateToEpochDay(this.drafts[0].date),\n b = this.adapter.dateToEpochDay(this.drafts[1].date);\n return day > Math.min(a, b) && day < Math.max(a, b);\n } catch (_) {\n return false;\n }\n }\n dayDisabled(day: number): boolean {\n if (day < this.firstSupportedDay || day > this.lastSupportedDay)\n return true;\n try {\n const date = this.adapter.epochDayToDate(day);\n const isDateDisabled = this[WklyPickerInputsPropertyKeys.IsDateDisabled];\n if (\n isDateDisabled &&\n isDateDisabled(day, {\n mode: this[WklyPickerInputsPropertyKeys.Mode],\n endpoint: this.isRange\n ? this.drafts[0]?.present && !this.drafts[1]?.present\n ? \"end\"\n : \"start\"\n : \"single\",\n calendarDate: date,\n })\n )\n return true;\n const min = this[WklyPickerInputsPropertyKeys.Min];\n const max = this[WklyPickerInputsPropertyKeys.Max];\n if (min && day < decodeIso(min).epochDay) return true;\n if (max && day > decodeIso(max).epochDay) return true;\n return false;\n } catch (_) {\n return true;\n }\n }\n select(day: number): void {\n if (this[WklyPickerInputsPropertyKeys.Disabled] || this.dayDisabled(day))\n return;\n this.focused = day;\n const index =\n this.isRange && this.drafts[0].present && !this.drafts[1].present ? 1 : 0;\n if (this.isRange && index === 0) this.drafts[1].present = false;\n delete this.drafts[index].unsupportedEpochDay;\n this.drafts[index].date = this.adapter.epochDayToDate(day);\n this.drafts[index].present = true;\n this.orderDrafts();\n this.renderRows();\n this.finish();\n if (\n this.presentation === \"transient\" &&\n this[WklyPickerInputsPropertyKeys.Mode] === \"date\" &&\n this.viewMode === \"calendar\"\n )\n this.submit(\"auto-submit\");\n }\n key(event: KeyboardEvent, day: number): void {\n let delta = 0;\n if (event.key === \"ArrowLeft\") delta = -1;\n if (event.key === \"ArrowRight\") delta = 1;\n if (event.key === \"ArrowUp\") delta = -7;\n if (event.key === \"ArrowDown\") delta = 7;\n if (event.key === \"PageUp\")\n delta = -7 * (event.shiftKey ? this.visibleCount : 1);\n if (event.key === \"PageDown\")\n delta = 7 * (event.shiftKey ? this.visibleCount : 1);\n if (event.key === \"Home\") {\n event.preventDefault();\n this.scrollToEpochDay(this.today, { focus: true });\n }\n if (delta) {\n event.preventDefault();\n const target = day + delta;\n if (target >= this.firstSupportedDay && target <= this.lastSupportedDay)\n this.scrollToEpochDay(target, { focus: true });\n }\n }\n private position(\n day: number,\n preset = false,\n options: WklyJumpOptions = {},\n ): void {\n day = Math.max(\n this.firstSupportedDay,\n Math.min(this.lastSupportedDay, day),\n );\n this.anchorWeek = absoluteWeekOf(day, this.effectiveOffset);\n const viewportPreset = this[WklyPickerInputsPropertyKeys.ViewportPreset];\n this.clipMonth = preset && viewportPreset.kind === \"full-month\";\n if (preset && viewportPreset.kind !== \"weeks\") {\n const d = this.adapter.epochDayToDate(day);\n this.initialMonth = d.year + \"/\" + d.monthCode;\n const [start, end] = calendarMonthBounds(this.adapter, day);\n this.firstWeek = absoluteWeekOf(start, this.effectiveOffset);\n this.visibleCount =\n absoluteWeekOf(end, this.effectiveOffset) - this.firstWeek + 1;\n if (\n viewportPreset.kind === \"full-month-and-around\" &&\n !this.configErrors.length\n ) {\n const before = viewportPreset.extraWeeksBefore || 0,\n after = viewportPreset.extraWeeksAfter || 0;\n this.firstWeek -= before;\n this.visibleCount += before + after;\n }\n } else {\n if (viewportPreset.kind === \"weeks\")\n this.visibleCount = this.configErrors.length\n ? 6\n : viewportPreset.visibleWeekCount;\n this.firstWeek =\n this.anchorWeek -\n (options.align === \"start\"\n ? 0\n : options.align === \"end\"\n ? this.visibleCount - 1\n : Math.floor(this.visibleCount / 2));\n }\n this.firstWeek = this.clampFirstWeek(this.firstWeek);\n this.baseWeek = this.firstWeek - 1000;\n this.renderRows();\n // Apply the new runway before writing scrollTop or locating a focus target.\n this.changeDetector.detectChanges();\n this.resetScroll();\n }\n private resetScroll(): void {\n // Round week boundaries to avoid scrollTop truncation under CSS zoom.\n if (this.scroller)\n this.scroller.nativeElement.scrollTop = Math.round(1000 * this.rowHeight);\n }\n scroll(event: Event): void {\n const element = event.target as HTMLElement;\n this.snapPending = true;\n this.scheduleSnap();\n // Quantize displacement around the reset point, equally in both directions.\n const relativeRows = element.scrollTop / this.rowHeight - 1000;\n const index =\n 1000 + Math.sign(relativeRows) * Math.round(Math.abs(relativeRows));\n const requestedFirst = this.baseWeek + index;\n const first = this.clampFirstWeek(requestedFirst);\n if (requestedFirst !== first) {\n element.scrollTop = Math.round((first - this.baseWeek) * this.rowHeight);\n }\n if (first === this.firstWeek) return;\n this.clipMonth = false;\n this.firstWeek = first;\n this.anchorWeek = first + Math.floor(this.visibleCount / 2);\n if (index < 100 || index > 1900) {\n // Preserve signed displacement from this week; modulo turns fractional\n // rounding just below a boundary into almost a full row after rebasing.\n const offset =\n element.scrollTop - (first - this.baseWeek) * this.rowHeight;\n this.baseWeek = first - 1000;\n element.scrollTop = Math.round(1000 * this.rowHeight + offset);\n }\n this.renderRows();\n }\n private scheduleSnap(): void {\n if (this.scrollEndTimer) clearTimeout(this.scrollEndTimer);\n this.scrollEndTimer = setTimeout(() => this.snapWeek(), 200);\n }\n snapWeek(): void {\n if (this.scrollEndTimer) clearTimeout(this.scrollEndTimer);\n this.scrollEndTimer = undefined;\n if (!this.snapPending || !this.scroller) return;\n this.snapPending = false;\n // Align the current virtual week without rebuilding or rebasing its rows.\n const element = this.scroller.nativeElement;\n const target = Math.round(\n (this.firstWeek - this.baseWeek) * this.rowHeight,\n );\n if (element.scrollTop !== target) element.scrollTop = target;\n }\n private showFirstWeek(week: number): void {\n const first = this.clampFirstWeek(week);\n if (first === this.firstWeek) return;\n this.clipMonth = false;\n this.firstWeek = first;\n this.anchorWeek = first + Math.floor(this.visibleCount / 2);\n this.baseWeek = first - 1000;\n this.renderRows();\n this.resetScroll();\n }\n canMoveWeek(delta: number): boolean {\n return this.clampFirstWeek(this.firstWeek + delta) !== this.firstWeek;\n }\n moveWeek(delta: number): void {\n if (!this[WklyPickerInputsPropertyKeys.Disabled])\n this.showFirstWeek(this.firstWeek + delta);\n }\n private renderRows(): void {\n // Keep the virtual scroll offset here; row data is shared across Angular versions.\n const overscan = Math.max(\n 0,\n Math.min(50, this[WklyPickerInputsPropertyKeys.OverscanWeeks] || 0),\n );\n const start = this.firstWeek - overscan;\n this.paddingTop = (start - this.baseWeek) * this.rowHeight;\n this.rows = createWeekRows({\n generator: this.generator,\n adapter: this.adapter,\n startWeek: start,\n count: this.visibleCount + 2 * overscan,\n firstVisibleWeek: this.firstWeek,\n firstSupportedDay: this.firstSupportedDay,\n lastSupportedDay: this.lastSupportedDay,\n clipMonth: this.clipMonth,\n initialMonth: this.initialMonth,\n weekLabelMode: this[WklyPickerInputsPropertyKeys.WeekLabelMode],\n weekLabelFormatter:\n this[WklyPickerInputsPropertyKeys.WeekLabelFormatter] || null,\n isDayDisabled: (day) => this.dayDisabled(day),\n });\n this[WklyPickerOutputsPropertyKeys.ViewportChange].emit({\n firstVisibleAbsoluteWeek: this.firstWeek,\n lastVisibleAbsoluteWeek: this.firstWeek + this.visibleCount - 1,\n anchorAbsoluteWeek: this.anchorWeek,\n });\n }\n // Retain day DOM nodes and keyboard focus when row metadata is regenerated.\n trackCell(_i: number, cell: { epochDay: number }): number {\n return cell.epochDay;\n }\n trackRow(_i: number, row: Row): number {\n return row.week.absoluteWeek;\n }\n scrollToEpochDay(day: number, options: WklyJumpOptions = {}): void {\n integer(day);\n this.adapter.epochDayToDate(day);\n day = Math.max(\n this.firstSupportedDay,\n Math.min(this.lastSupportedDay, day),\n );\n // position renders synchronously; publish the tab stop before that render.\n if (options.focus) this.focused = day;\n this.position(day, false, options);\n if (options.select) this.select(day);\n if (options.focus) this.focusDay();\n }\n scrollToAbsoluteWeek(week: number, options: WklyJumpOptions = {}): void {\n // A boundary week can start before the adapter's first supported day.\n const first = firstEpochDayOf(week, this.effectiveOffset);\n this.scrollToEpochDay(\n week === this.firstSupportedWeek\n ? Math.max(first, this.firstSupportedDay)\n : first,\n options,\n );\n }\n scrollToCalendarDate(\n date: WklyCalendarDate,\n options: WklyJumpOptions = {},\n ): void {\n this.scrollToEpochDay(this.adapter.dateToEpochDay(date), options);\n }\n scrollToValue(value: string, options: WklyJumpOptions = {}): void {\n this.scrollToEpochDay(decodeIso(value).epochDay, options);\n }\n focusDay(): void {\n if (!this.browser) return;\n setTimeout(() => {\n if (this.destroyed) return;\n this.changeDetector.detectChanges();\n const day = this.host.nativeElement.querySelector(\n '[data-day=\"' + this.focused + '\"]',\n ) as HTMLElement;\n const fallback = this.host.nativeElement.querySelector(\n \"button:not(:disabled),input:not(:disabled)\",\n ) as HTMLElement;\n (day || fallback)?.focus({ preventScroll: true });\n });\n }\n}\n","import {\n ApplicationRef,\n ComponentFactoryResolver,\n ComponentRef,\n Directive,\n ElementRef,\n forwardRef,\n HostListener,\n Inject,\n Injectable,\n Injector,\n OnChanges,\n OnDestroy,\n Optional,\n PLATFORM_ID,\n} from \"@angular/core\";\nimport { DOCUMENT, isPlatformBrowser } from \"@angular/common\";\nimport {\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n} from \"@angular/forms\";\nimport {\n validateSelection,\n WklyGregorianCalendarAdapter,\n WklyCalendarDate,\n WklyPickerValue,\n WklyValidationError,\n} from \"@wkly/adapters\";\nimport { Subscription } from \"rxjs\";\nimport {\n coerceBoolean,\n INPUT_NAMES,\n WklyCloseReason,\n WklyJumpOptions,\n WklyPickerInputs,\n WklyPickerInputsPropertyKeys,\n WklyPickerOutputsPropertyKeys,\n} from \"./config\";\nimport { WklyDateTimePickerComponent } from \"./picker.component\";\nexport interface WklyPresentationRef {\n readonly component: ComponentRef<WklyDateTimePickerComponent>;\n destroy(): void;\n}\n/** Native-dialog factory. Browser resources are allocated only by open(). */\n@Injectable({ providedIn: \"root\" })\nexport class WklyDateTimePickerDialogService {\n constructor(\n private resolver: ComponentFactoryResolver,\n private injector: Injector,\n private app: ApplicationRef,\n @Inject(DOCUMENT) private document: Document,\n @Inject(PLATFORM_ID) private platform: Object,\n ) {}\n open(\n trigger: HTMLElement,\n onCancel: (reason: WklyCloseReason) => void,\n backdrop = true,\n injector?: Injector,\n ): WklyPresentationRef {\n if (!isPlatformBrowser(this.platform))\n throw new Error(\"Picker presentations can only open in a browser\");\n const dialog = this.document.createElement(\"dialog\");\n dialog.setAttribute(\"aria-label\", \"Date and time picker\");\n Object.assign(dialog.style, {\n padding: \"0\",\n border: \"0\",\n borderRadius: \"14px\",\n width: \"min(390px, 100vw)\",\n maxWidth: \"100vw\",\n maxHeight: \"94vh\",\n background: \"transparent\",\n });\n const component = this.resolver\n .resolveComponentFactory(WklyDateTimePickerComponent)\n .create(injector || this.injector);\n component.instance.presentation = \"transient\";\n dialog.appendChild(component.location.nativeElement);\n this.document.body.appendChild(dialog);\n this.app.attachView(component.hostView);\n const cancel = (event: Event) => {\n event.preventDefault();\n onCancel(\"escape\");\n };\n const click = (event: MouseEvent) => {\n if (backdrop && event.target === dialog) {\n const r = dialog.getBoundingClientRect();\n if (\n event.clientX < r.left ||\n event.clientX > r.right ||\n event.clientY < r.top ||\n event.clientY > r.bottom\n )\n onCancel(\"backdrop\");\n }\n };\n const keydown = (event: KeyboardEvent) => {\n if (event.key !== \"Tab\") return;\n const controls = Array.from(\n dialog.querySelectorAll<HTMLElement>(\n 'button:not(:disabled),input:not(:disabled),[tabindex=\"0\"]',\n ),\n ).filter(\n (el) =>\n el.tabIndex >= 0 &&\n el.getClientRects().length &&\n getComputedStyle(el).visibility !== \"hidden\",\n );\n const first = controls[0],\n last = controls[controls.length - 1];\n if (\n first &&\n (event.shiftKey\n ? this.document.activeElement === first\n : this.document.activeElement === last)\n ) {\n event.preventDefault();\n (event.shiftKey ? last : first).focus();\n }\n };\n dialog.addEventListener(\"cancel\", cancel);\n dialog.addEventListener(\"click\", click);\n dialog.addEventListener(\"keydown\", keydown);\n dialog.showModal();\n return {\n component,\n destroy: () => {\n dialog.removeEventListener(\"cancel\", cancel);\n dialog.removeEventListener(\"click\", click);\n dialog.removeEventListener(\"keydown\", keydown);\n dialog.close();\n this.app.detachView(component.hostView);\n component.destroy();\n dialog.remove();\n trigger.focus();\n },\n };\n }\n}\n/** Shared trigger lifecycle; optional presentation packages extend this class. */\n@Directive()\nexport abstract class WklyTriggerBase\n extends WklyPickerInputs\n implements ControlValueAccessor, Validator, OnChanges, OnDestroy\n{\n protected ref: WklyPresentationRef | null = null;\n protected subscriptions: Subscription[] = [];\n private errors: readonly WklyValidationError[] = [];\n private change: (value: WklyPickerValue) => void = () => {};\n private touched: () => void = () => {};\n private validation: () => void = () => {};\n constructor(protected element: ElementRef<HTMLElement>) {\n super();\n }\n protected abstract create(): WklyPresentationRef;\n @HostListener(\"click\") open(): void {\n if (this[WklyPickerInputsPropertyKeys.Disabled] || this.ref) return;\n this.ref = this.create();\n const picker = this.ref.component.instance;\n this.copy();\n this.subscriptions = [\n picker[WklyPickerOutputsPropertyKeys.ValueChange].subscribe((value) => {\n this[WklyPickerInputsPropertyKeys.Value] = value;\n this.change(value);\n this[WklyPickerOutputsPropertyKeys.ValueChange].emit(value);\n this.display();\n }),\n picker[WklyPickerOutputsPropertyKeys.ValidationChange].subscribe(\n (errors) => {\n this.errors = errors;\n this[WklyPickerOutputsPropertyKeys.ValidationChange].emit(errors);\n this.validation();\n },\n ),\n picker[WklyPickerOutputsPropertyKeys.Closed].subscribe((reason) =>\n this.close(reason),\n ),\n picker[WklyPickerOutputsPropertyKeys.ViewportChange].subscribe((value) =>\n this[WklyPickerOutputsPropertyKeys.ViewportChange].emit(value),\n ),\n picker[WklyPickerOutputsPropertyKeys.ViewModeChange].subscribe((value) =>\n this[WklyPickerOutputsPropertyKeys.ViewModeChange].emit(value),\n ),\n ];\n this.ref.component.changeDetectorRef.detectChanges();\n picker.focusDay();\n this[WklyPickerOutputsPropertyKeys.Opened].emit();\n }\n @HostListener(\"keydown\", [\"$event\"]) key(event: KeyboardEvent): void {\n if (\n event.key === \"Enter\" ||\n event.key === \" \" ||\n event.key === \"ArrowDown\"\n ) {\n event.preventDefault();\n this.open();\n }\n }\n @HostListener(\"blur\") blur(): void {\n this.touched();\n }\n close(reason: WklyCloseReason = \"programmatic\"): void {\n if (!this.ref) return;\n const ref = this.ref;\n this.ref = null;\n this.subscriptions.forEach((s) => s.unsubscribe());\n this.subscriptions = [];\n ref.destroy();\n this.touched();\n this[WklyPickerOutputsPropertyKeys.Closed].emit(reason);\n }\n ngOnChanges(): void {\n [\n WklyPickerInputsPropertyKeys.ShowSeconds,\n WklyPickerInputsPropertyKeys.AllowRangeAcrossDisabled,\n WklyPickerInputsPropertyKeys.Required,\n WklyPickerInputsPropertyKeys.Disabled,\n WklyPickerInputsPropertyKeys.CloseOnBackdrop,\n ].forEach(\n (key) => ((this as any)[key] = coerceBoolean((this as any)[key])),\n );\n this.checkValue();\n this.display();\n if (this.ref) {\n this.copy();\n this.ref.component.instance.ngOnChanges({\n [WklyPickerInputsPropertyKeys.Value]: true,\n });\n this.ref.component.changeDetectorRef.detectChanges();\n }\n }\n ngOnDestroy(): void {\n this.close();\n }\n private copy(): void {\n if (this.ref)\n for (const name of INPUT_NAMES)\n (this.ref.component.instance as any)[name] = (this as any)[name];\n }\n private display(): void {\n const host = this.element.nativeElement as HTMLInputElement;\n if (host.tagName === \"INPUT\") {\n host.readOnly = true;\n const value = this[WklyPickerInputsPropertyKeys.Value];\n host.value =\n value === null\n ? \"\"\n : typeof value === \"string\"\n ? value\n : value.join(\" — \");\n host.disabled = this[WklyPickerInputsPropertyKeys.Disabled];\n host.setAttribute(\"aria-haspopup\", \"dialog\");\n }\n }\n private checkValue(): void {\n this.errors = validateSelection(\n this[WklyPickerInputsPropertyKeys.Value],\n this,\n this[WklyPickerInputsPropertyKeys.CalendarAdapter] ||\n new WklyGregorianCalendarAdapter(\n this[WklyPickerInputsPropertyKeys.Locale] || \"en-US\",\n ),\n );\n this[WklyPickerOutputsPropertyKeys.ValidationChange].emit(this.errors);\n this.validation();\n }\n writeValue(value: WklyPickerValue): void {\n this[WklyPickerInputsPropertyKeys.Value] = value;\n this.checkValue();\n this.display();\n if (this.ref) this.ref.component.instance.writeValue(value);\n }\n registerOnChange(fn: (value: WklyPickerValue) => void): void {\n this.change = fn;\n }\n registerOnTouched(fn: () => void): void {\n this.touched = fn;\n }\n setDisabledState(value: boolean): void {\n this[WklyPickerInputsPropertyKeys.Disabled] = value;\n this.display();\n if (this.ref) this.ref.component.instance.setDisabledState(value);\n }\n validate(): ValidationErrors | null {\n return this.errors.length ? { wkly: this.errors } : null;\n }\n registerOnValidatorChange(fn: () => void): void {\n this.validation = fn;\n }\n scrollToEpochDay(day: number, options?: WklyJumpOptions): void {\n this.open();\n this.ref?.component.instance.scrollToEpochDay(day, options);\n }\n scrollToAbsoluteWeek(week: number, options?: WklyJumpOptions): void {\n this.open();\n this.ref?.component.instance.scrollToAbsoluteWeek(week, options);\n }\n scrollToCalendarDate(\n date: WklyCalendarDate,\n options?: WklyJumpOptions,\n ): void {\n this.open();\n this.ref?.component.instance.scrollToCalendarDate(date, options);\n }\n scrollToValue(value: string, options?: WklyJumpOptions): void {\n this.open();\n this.ref?.component.instance.scrollToValue(value, options);\n }\n}\n@Directive({\n selector: \"[wklyDateTimePickerDialog]\",\n exportAs: \"wklyDialog\",\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => WklyDateTimePickerDialogDirective),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => WklyDateTimePickerDialogDirective),\n multi: true,\n },\n ],\n})\nexport class WklyDateTimePickerDialogDirective extends WklyTriggerBase {\n constructor(\n element: ElementRef<HTMLElement>,\n private service: WklyDateTimePickerDialogService,\n private triggerInjector: Injector,\n ) {\n super(element);\n }\n protected create(): WklyPresentationRef {\n return this.service.open(\n this.element.nativeElement,\n (reason) => this.close(reason),\n this[WklyPickerInputsPropertyKeys.CloseOnBackdrop],\n this.triggerInjector,\n );\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n} from \"@angular/core\";\nimport { floorMod } from \"@wkly/core\";\nimport { normalizeDigits } from \"@wkly/adapters\";\n@Component({\n selector: \"wkly-field\",\n templateUrl: \"./field.component.html\",\n styleUrls: [\"./field.component.css\"],\n})\nexport class WklyFieldComponent implements OnChanges, OnDestroy {\n @Input() value: number | null = 0;\n @Input() label = \"\";\n @Input() hideLabel = false;\n @Input() previousLabel = \"\";\n @Input() nextLabel = \"\";\n @Input() min = 0;\n @Input() max = 59;\n @Input() step = 1;\n @Input() locale = \"en-US\";\n @Input() disabled = false;\n @Input() invalid = false;\n @Input() labels: readonly string[] | null = null;\n @Output() valueChange = new EventEmitter<number | null>();\n @Output() complete = new EventEmitter<void>();\n private before: number | null = null;\n private touchY = 0;\n private touchSteps = 0;\n private touchChanged = false;\n private typed: string | null = null;\n private inputTimer: ReturnType<typeof setTimeout> | null = null;\n private wheelTimer: ReturnType<typeof setTimeout> | null = null;\n get display(): string {\n if (this.typed !== null) return this.typed;\n return this.value === null\n ? \"\"\n : this.labels\n ? this.labels[this.value - this.min] || String(this.value)\n : new Intl.NumberFormat(this.locale, {\n useGrouping: false,\n minimumIntegerDigits: this.max < 60 ? 2 : 1,\n }).format(this.value);\n }\n ngOnChanges(changes: any): void {\n if (changes.value && this.min < 0 && this.typed !== null) {\n const typedValue =\n this.typed === \"\" || this.typed === \"-\" ? null : Number(this.typed);\n if (this.value !== typedValue) {\n // External date edits replace a pending relative-day preview.\n this.cancelInput();\n this.typed = null;\n }\n }\n }\n ngOnDestroy(): void {\n this.cancelInput();\n if (this.wheelTimer !== null) clearTimeout(this.wheelTimer);\n }\n next(delta: number): number {\n const count = Math.floor((this.max - this.min) / this.step) + 1;\n return (\n this.min +\n floorMod(\n Math.floor(\n ((this.value === null ? this.min : this.value) - this.min) /\n this.step,\n ) + delta,\n count,\n ) *\n this.step\n );\n }\n neighbor(delta: number): string {\n const n = this.next(delta);\n return this.labels\n ? this.labels[n - this.min] || \"\"\n : new Intl.NumberFormat(this.locale, { useGrouping: false }).format(n);\n }\n stepBy(delta: number): void {\n if (this.disabled) return;\n this.scrollBy(delta);\n this.complete.emit();\n }\n begin(event: FocusEvent): void {\n this.before = this.value;\n (event.target as HTMLInputElement).select();\n }\n type(event: Event): void {\n if (this.disabled) return;\n const input = event.target as HTMLInputElement;\n const raw = input.value;\n const numeric = Array.from(raw).every(\n (character) => normalizeDigits(character).length === 1,\n );\n if (this.min < 0 && !this.labels) {\n // Preserve the sign while using the same locale digit normalization.\n const signed = raw\n .replace(/[\\u200e\\u200f\\u061c]/g, \"\")\n .replace(/\\u2212/g, \"-\");\n const digits = normalizeDigits(signed);\n this.typed = input.value = (signed.startsWith(\"-\") ? \"-\" : \"\") + digits;\n this.value =\n digits === \"\"\n ? null\n : Math.max(this.min, Math.min(this.max, Number(this.typed)));\n if (this.value !== null && Number(this.typed) !== this.value)\n this.typed = input.value = String(this.value);\n } else if (numeric) {\n const normalized = normalizeDigits(raw);\n this.typed = input.value =\n this.min >= 0 && this.max < 100 ? normalized.slice(-2) : normalized;\n this.value = this.typed === \"\" ? null : Number(this.typed);\n } else if (this.labels) {\n const search = raw.trim().toLocaleLowerCase(this.locale);\n this.typed = raw;\n const matches = this.labels\n .map((label, index) => ({ label, index }))\n .filter((item) =>\n item.label.toLocaleLowerCase(this.locale).includes(search),\n );\n this.value = matches.length === 1 ? this.min + matches[0].index : null;\n } else {\n this.typed = input.value = normalizeDigits(raw);\n this.value = this.typed === \"\" ? null : Number(this.typed);\n }\n this.valueChange.emit(this.value);\n this.cancelInput();\n if (!numeric && this.labels && this.value !== null) this.complete.emit();\n this.inputTimer = setTimeout(() => {\n this.inputTimer = null;\n this.typed = null;\n if (!this.disabled) this.complete.emit();\n }, 1000);\n }\n key(event: KeyboardEvent): void {\n if (event.key === \"Escape\") {\n event.preventDefault();\n event.stopPropagation();\n this.cancelInput();\n this.typed = null;\n this.value = this.before;\n this.valueChange.emit(this.before);\n (event.target as HTMLInputElement).value = this.display;\n (event.target as HTMLInputElement).blur();\n }\n if (event.key === \"Enter\") {\n event.preventDefault();\n event.stopPropagation();\n this.finish();\n }\n const delta =\n event.key === \"ArrowUp\"\n ? -1\n : event.key === \"ArrowDown\"\n ? 1\n : event.key === \"PageUp\"\n ? -5\n : event.key === \"PageDown\"\n ? 5\n : 0;\n if (delta) {\n event.preventDefault();\n this.stepBy(delta);\n }\n }\n finish(): void {\n this.cancelInput();\n this.typed = null;\n this.complete.emit();\n }\n wheel(event: WheelEvent): void {\n if (this.disabled || Math.abs(event.deltaY) < 1) return;\n event.preventDefault();\n this.scrollBy(event.deltaY > 0 ? 1 : -1);\n if (this.wheelTimer !== null) clearTimeout(this.wheelTimer);\n this.wheelTimer = setTimeout(() => {\n this.wheelTimer = null;\n this.complete.emit();\n }, 140);\n }\n touchStart(event: TouchEvent): void {\n this.touchY = event.touches[0].clientY;\n this.touchSteps = 0;\n this.touchChanged = false;\n }\n touchMove(event: TouchEvent): void {\n this.applyTouchY(event.touches[0].clientY);\n }\n touchEnd(event: TouchEvent): void {\n this.applyTouchY(event.changedTouches[0].clientY);\n if (this.touchChanged) this.complete.emit();\n this.touchChanged = false;\n }\n private cancelInput(): void {\n if (this.inputTimer !== null) clearTimeout(this.inputTimer);\n this.inputTimer = null;\n }\n private scrollBy(delta: number): void {\n if (this.disabled || !delta) return;\n this.cancelInput();\n this.typed = null;\n this.value = this.next(delta);\n this.valueChange.emit(this.value);\n }\n private applyTouchY(y: number): void {\n // Count total gesture steps so repeated move events do not duplicate changes.\n if (this.disabled) return;\n const delta = this.touchY - y;\n const steps =\n Math.abs(delta) > 16\n ? Math.sign(delta) * Math.max(1, Math.round(Math.abs(delta) / 40))\n : 0;\n const change = steps - this.touchSteps;\n if (!change) return;\n this.scrollBy(change);\n this.touchSteps = steps;\n this.touchChanged = true;\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { WklyDateTimePickerComponent } from \"./picker.component\";\nimport { WklyDateTimePickerDialogDirective } from \"./presentation\";\nimport { WklyFieldComponent } from \"./field.component\";\nexport * from \"./config\";\nexport { WklyDateTimePickerComponent } from \"./picker.component\";\nexport {\n WklyPresentationRef,\n WklyDateTimePickerDialogService,\n WklyTriggerBase,\n WklyDateTimePickerDialogDirective,\n} from \"./presentation\";\nexport { WklyFieldComponent } from \"./field.component\";\nexport {\n WklyPickerValue,\n WklyIsoString,\n WklyRangeValue,\n WklySelectionMode,\n WklyValidationError,\n WklyValidationErrorCode,\n WklyViewportPreset,\n WklyHourCycle,\n WklyEndpoint,\n WklyDisabledDatePredicate,\n WklyDisabledTimePredicate,\n WklyRangeValidator,\n WklyWeekLabelMode,\n WklyWeekLabelFormatter,\n} from \"@wkly/adapters\";\n@NgModule({\n imports: [CommonModule],\n declarations: [\n WklyDateTimePickerComponent,\n WklyDateTimePickerDialogDirective,\n WklyFieldComponent,\n ],\n entryComponents: [WklyDateTimePickerComponent],\n exports: [WklyDateTimePickerComponent, WklyDateTimePickerDialogDirective],\n})\nexport class WklyDateTimePickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {WklyClock as ɵb,WklyConfiguration as ɵa,WklyStrings as ɵc,WklyTranslations as ɵd} from './config';"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wkly-datetime-picker.js","sources":["../../../projects/wkly-datetime-picker.12/src/config.ts","../../../projects/wkly-datetime-picker.12/src/picker.component.ts","../../../projects/wkly-datetime-picker.12/src/presentation.ts","../../../projects/wkly-datetime-picker.12/src/field.component.ts","../../../projects/wkly-datetime-picker.12/src/public-api.ts","../../../projects/wkly-datetime-picker.12/src/wkly-datetime-picker.ts"],"sourcesContent":["import {\n Directive,\n EventEmitter,\n InjectionToken,\n Input,\n Output,\n} from \"@angular/core\";\nimport { WklyWeekOffset } from \"@wkly/core\";\nimport {\n WklyCalendarAdapter,\n WklyDisabledDatePredicate,\n WklyDisabledTimePredicate,\n WklyHourCycle,\n WklyPickerValue,\n WklyRangeValidator,\n WklySelectionMode,\n WklyValidationError,\n WklyViewportPreset,\n WklyWeekLabelFormatter,\n WklyWeekLabelMode,\n} from \"@wkly/adapters\";\nimport {\n DEFAULT_OVERSCAN_WEEKS,\n WklyClock,\n WklyConfiguration,\n WklyCloseReason,\n WklyPickerInputs as WklyPickerInputsContract,\n WklyPickerOutputs as WklyPickerOutputsContract,\n WklyStrings,\n WklyTranslations,\n WklyViewportChange,\n WklyPickerInputsPropertyKeys,\n WklyPickerOutputsPropertyKeys,\n} from \"@wkly/presentation\";\nexport * from \"@wkly/presentation\";\nexport const WKLY_CLOCK = new InjectionToken<WklyClock>(\"WKLY_CLOCK\", {\n providedIn: \"root\",\n factory: () => ({ now: () => new Date() }),\n});\nexport const WKLY_CONFIG = new InjectionToken<WklyConfiguration>(\n \"WKLY_CONFIG\",\n { providedIn: \"root\", factory: () => ({}) },\n);\nexport const WKLY_LOCALIZATION = new InjectionToken<WklyStrings>(\n \"WKLY_LOCALIZATION\",\n { providedIn: \"root\", factory: () => ({}) },\n);\nexport const WKLY_TRANSLATIONS = new InjectionToken<WklyTranslations>(\n \"WKLY_TRANSLATIONS\",\n { providedIn: \"root\", factory: () => ({}) },\n);\n/** Shared public inputs/outputs inherited by the picker and both trigger directives. */\n// Inherited inputs need literal names in published decorator metadata.\n@Directive({\n inputs: [\n \"mode\",\n \"value\",\n \"calendarAdapter\",\n \"locale\",\n \"weekOffset\",\n \"viewportPreset\",\n \"hourCycle\",\n \"showSeconds\",\n \"minuteStep\",\n \"secondStep\",\n \"min\",\n \"max\",\n \"isDateDisabled\",\n \"isTimeDisabled\",\n \"rangeValidator\",\n \"allowRangeAcrossDisabled\",\n \"required\",\n \"disabled\",\n \"weekLabelMode\",\n \"weekLabelFormatter\",\n \"weekCacheSize\",\n \"overscanWeeks\",\n \"ariaLabel\",\n \"ariaDescribedBy\",\n \"initialEpochDay\",\n \"closeOnBackdrop\",\n \"validators\",\n \"translations\",\n ],\n outputs: [\n \"valueChange\",\n \"validationChange\",\n \"opened\",\n \"closed\",\n \"viewportChange\",\n \"viewModeChange\",\n ],\n})\nexport abstract class WklyPickerInputs\n implements WklyPickerInputsContract, WklyPickerOutputsContract\n{\n @Input() [WklyPickerInputsPropertyKeys.Mode]: WklySelectionMode = \"datetime\";\n @Input() [WklyPickerInputsPropertyKeys.Value]: WklyPickerValue = null;\n @Input() [WklyPickerInputsPropertyKeys.CalendarAdapter]!: WklyCalendarAdapter;\n @Input() [WklyPickerInputsPropertyKeys.Locale]: string = \"\";\n @Input() [WklyPickerInputsPropertyKeys.WeekOffset]: WklyWeekOffset | null =\n null;\n @Input() [WklyPickerInputsPropertyKeys.ViewportPreset]: WklyViewportPreset = {\n kind: \"full-month\",\n };\n @Input() [WklyPickerInputsPropertyKeys.HourCycle]: WklyHourCycle = \"locale\";\n @Input() [WklyPickerInputsPropertyKeys.ShowSeconds]: boolean = false;\n @Input() [WklyPickerInputsPropertyKeys.MinuteStep]: number = 1;\n @Input() [WklyPickerInputsPropertyKeys.SecondStep]: number = 1;\n @Input() [WklyPickerInputsPropertyKeys.Min]: string | null = null;\n @Input() [WklyPickerInputsPropertyKeys.Max]: string | null = null;\n @Input()\n [WklyPickerInputsPropertyKeys.IsDateDisabled]: WklyDisabledDatePredicate | null =\n null;\n @Input()\n [WklyPickerInputsPropertyKeys.IsTimeDisabled]: WklyDisabledTimePredicate | null =\n null;\n @Input()\n [WklyPickerInputsPropertyKeys.RangeValidator]: WklyRangeValidator | null =\n null;\n @Input() [WklyPickerInputsPropertyKeys.AllowRangeAcrossDisabled] = false;\n @Input() [WklyPickerInputsPropertyKeys.Required] = false;\n @Input() [WklyPickerInputsPropertyKeys.Disabled] = false;\n @Input() [WklyPickerInputsPropertyKeys.WeekLabelMode]: WklyWeekLabelMode =\n \"locale\";\n @Input()\n [WklyPickerInputsPropertyKeys.WeekLabelFormatter]: WklyWeekLabelFormatter | null =\n null;\n @Input() [WklyPickerInputsPropertyKeys.WeekCacheSize] = 256;\n @Input() [WklyPickerInputsPropertyKeys.OverscanWeeks] =\n DEFAULT_OVERSCAN_WEEKS;\n @Input() [WklyPickerInputsPropertyKeys.AriaLabel]: string | null = null;\n @Input() [WklyPickerInputsPropertyKeys.AriaDescribedBy]: string | null = null;\n @Input() [WklyPickerInputsPropertyKeys.InitialEpochDay]: number | null = null;\n @Input() [WklyPickerInputsPropertyKeys.CloseOnBackdrop] = true;\n @Input() [WklyPickerInputsPropertyKeys.Validators]: readonly ((\n value: WklyPickerValue,\n ) => WklyValidationError | null)[] = [];\n @Input()\n [WklyPickerInputsPropertyKeys.Translations]: WklyTranslations | null = null;\n @Output() [WklyPickerOutputsPropertyKeys.ValueChange] =\n new EventEmitter<WklyPickerValue>();\n @Output() [WklyPickerOutputsPropertyKeys.ValidationChange] = new EventEmitter<\n readonly WklyValidationError[]\n >(true);\n @Output() [WklyPickerOutputsPropertyKeys.Opened] = new EventEmitter<void>();\n @Output() [WklyPickerOutputsPropertyKeys.Closed] =\n new EventEmitter<WklyCloseReason>();\n @Output() [WklyPickerOutputsPropertyKeys.ViewportChange] =\n new EventEmitter<WklyViewportChange>(true);\n @Output() [WklyPickerOutputsPropertyKeys.ViewModeChange] = new EventEmitter<\n \"calendar\" | \"manual\"\n >();\n}\n","import type { WklyHourCycle } from \"@wkly/adapters\";\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n forwardRef,\n Inject,\n LOCALE_ID,\n OnChanges,\n OnDestroy,\n OnInit,\n PLATFORM_ID,\n ViewChild,\n} from \"@angular/core\";\nimport { getLocaleFirstDayOfWeek, isPlatformBrowser } from \"@angular/common\";\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n} from \"@angular/forms\";\nimport {\n absoluteWeekOf,\n createWeekGenerator,\n firstEpochDayOf,\n integer,\n WklyWeekGenerator,\n WklyWeekOffset,\n} from \"@wkly/core\";\nimport {\n decodeIso,\n error,\n resolveWeekOffset,\n validateSelection,\n WklyCalendarAdapter,\n WklyCalendarDate,\n WklyDateTime,\n WklyGregorianCalendarAdapter,\n WklyPickerValue,\n WklyValidationError,\n} from \"@wkly/adapters\";\nimport {\n draftDayDifference,\n setDraftDayDifference,\n calendarMonthBounds,\n resolveWklyTranslation,\n createWeekRows,\n validateDrafts,\n WklyDraft as Draft,\n WklyWeekRow as Row,\n} from \"@wkly/presentation\";\nimport {\n coerceBoolean,\n WKLY_CLOCK,\n WKLY_CONFIG,\n WKLY_LOCALIZATION,\n WKLY_TRANSLATIONS,\n WklyClock,\n WklyCloseReason,\n WklyConfiguration,\n WklyJumpOptions,\n WklyPickerInputs,\n WklyPickerInputsPropertyKeys,\n WklyPickerOutputsPropertyKeys,\n WklyStrings,\n WklyTranslations,\n} from \"./config\";\ndeclare class ResizeObserver {\n constructor(callback: () => void);\n observe(element: Element): void;\n disconnect(): void;\n}\n@Component({\n selector: \"wkly-datetime-picker\",\n templateUrl: \"./picker.component.html\",\n styleUrls: [\"../../wkly-datetime-picker/src/picker.component.css\"],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => WklyDateTimePickerComponent),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => WklyDateTimePickerComponent),\n multi: true,\n },\n ],\n})\nexport class WklyDateTimePickerComponent\n extends WklyPickerInputs\n implements\n OnInit,\n OnChanges,\n AfterViewInit,\n OnDestroy,\n ControlValueAccessor,\n Validator\n{\n @ViewChild(\"scroller\") scroller?: ElementRef<HTMLElement>;\n presentation: \"inline\" | \"transient\" = \"inline\";\n viewMode: \"calendar\" | \"manual\" = \"calendar\";\n endView: \"date\" | \"days\" = \"date\";\n adapter!: WklyCalendarAdapter;\n effectiveLocale = \"en-US\";\n effectiveOffset: WklyWeekOffset = 0;\n effectiveHourCycle: \"h12\" | \"h24\" = \"h24\";\n private configuredHourCycle?: WklyHourCycle;\n direction = \"ltr\";\n rows: Row[] = [];\n weekdays: string[] = [];\n drafts: Draft[] = [];\n errors: readonly WklyValidationError[] = [];\n today = 0;\n focused = 0;\n anchorWeek = 0;\n firstWeek = 0;\n visibleCount = 6;\n rowHeight = 76;\n scrollHeight = 152076;\n paddingTop = 0;\n initialized = false;\n compact = false;\n readonly WklyPickerInputsPropertyKeys = WklyPickerInputsPropertyKeys;\n private baseWeek = 0;\n private firstSupportedDay = 0;\n private lastSupportedDay = 0;\n private firstSupportedWeek = 0;\n private lastSupportedWeek = 0;\n private generator!: WklyWeekGenerator;\n private initialMonth = \"\";\n private clipMonth = false;\n private browser = false;\n private observer?: ResizeObserver;\n private destroyed = false;\n private scrollEndTimer?: ReturnType<typeof setTimeout>;\n private snapPending = false;\n private onChange: (value: WklyPickerValue) => void = () => {};\n private onTouched: () => void = () => {};\n private validatorChanged: () => void = () => {};\n private configErrors: WklyValidationError[] = [];\n private pendingValue: WklyPickerValue = null;\n private emittedValue: string | null = null;\n private manualDateEndpoint = 0;\n constructor(\n @Inject(LOCALE_ID) private defaultLocale: string,\n @Inject(WKLY_CONFIG) private defaults: WklyConfiguration,\n @Inject(WKLY_CLOCK) private clock: WklyClock,\n @Inject(WKLY_LOCALIZATION) private strings: WklyStrings,\n @Inject(WKLY_TRANSLATIONS) private defaultTranslations: WklyTranslations,\n @Inject(PLATFORM_ID) platform: Object,\n private host: ElementRef<HTMLElement>,\n private changeDetector: ChangeDetectorRef,\n ) {\n super();\n this.browser = isPlatformBrowser(platform);\n }\n ngOnInit(): void {\n this.initialize();\n }\n ngOnChanges(changes: any): void {\n if (this.initialized) {\n if (\n Object.keys(changes).length === 1 &&\n changes[WklyPickerInputsPropertyKeys.Value] &&\n this.emittedValue ===\n JSON.stringify(this[WklyPickerInputsPropertyKeys.Value])\n ) {\n this.emittedValue = null;\n return;\n }\n const focus = this.focused;\n this.configure();\n if (\n changes[WklyPickerInputsPropertyKeys.Value] ||\n changes[WklyPickerInputsPropertyKeys.Mode] ||\n changes[WklyPickerInputsPropertyKeys.CalendarAdapter]\n ) {\n this.load(this[WklyPickerInputsPropertyKeys.Value]);\n this.position(this.focused, true);\n } else {\n this.check();\n if (changes[WklyPickerInputsPropertyKeys.ViewportPreset])\n this.position(focus, true);\n else this.scrollToEpochDay(focus);\n }\n }\n }\n initialize(): void {\n if (this.initialized) return;\n this.configure();\n const initialEpochDay = this[WklyPickerInputsPropertyKeys.InitialEpochDay];\n this.today = this.browser\n ? Math.floor(this.clock.now().getTime() / 86400000)\n : initialEpochDay === null\n ? 0\n : initialEpochDay;\n this.focused =\n initialEpochDay === null\n ? this.defaults.initialEpochDay === undefined\n ? this.today\n : this.defaults.initialEpochDay\n : initialEpochDay;\n this.load(this[WklyPickerInputsPropertyKeys.Value]);\n this.initialized = true;\n this.position(this.focused, true);\n }\n configure(): void {\n this.configErrors = [];\n [\n WklyPickerInputsPropertyKeys.ShowSeconds,\n WklyPickerInputsPropertyKeys.AllowRangeAcrossDisabled,\n WklyPickerInputsPropertyKeys.Required,\n WklyPickerInputsPropertyKeys.Disabled,\n WklyPickerInputsPropertyKeys.CloseOnBackdrop,\n ].forEach(\n (key) => ((this as any)[key] = coerceBoolean((this as any)[key])),\n );\n this.effectiveLocale =\n this[WklyPickerInputsPropertyKeys.Locale] ||\n this.defaults.locale ||\n this.defaultLocale;\n this.direction = /^(ar|he|fa|ur)(-|$)/.test(this.effectiveLocale)\n ? \"rtl\"\n : \"ltr\";\n this.adapter =\n this[WklyPickerInputsPropertyKeys.CalendarAdapter] ||\n new WklyGregorianCalendarAdapter(this.effectiveLocale);\n try {\n let firstDay: number | undefined;\n try {\n firstDay = getLocaleFirstDayOfWeek(this.effectiveLocale);\n } catch (_) {}\n this.effectiveOffset = resolveWeekOffset(\n this.effectiveLocale,\n this[WklyPickerInputsPropertyKeys.WeekOffset],\n this.defaults.weekOffset,\n firstDay,\n );\n integer(this[WklyPickerInputsPropertyKeys.WeekCacheSize]);\n integer(this[WklyPickerInputsPropertyKeys.OverscanWeeks]);\n if (\n this[WklyPickerInputsPropertyKeys.WeekCacheSize] < 0 ||\n this[WklyPickerInputsPropertyKeys.OverscanWeeks] < 0 ||\n this[WklyPickerInputsPropertyKeys.OverscanWeeks] > 50\n )\n throw new RangeError();\n if (\n ![\n \"datetime\",\n \"date\",\n \"time\",\n \"datetime-range\",\n \"date-range\",\n \"time-range\",\n ].includes(this[WklyPickerInputsPropertyKeys.Mode])\n )\n throw new RangeError();\n const preset = this[WklyPickerInputsPropertyKeys.ViewportPreset];\n if (preset.kind === \"weeks\") {\n integer(preset.visibleWeekCount);\n if (preset.visibleWeekCount < 1 || preset.visibleWeekCount > 52)\n throw new RangeError();\n }\n if (preset.kind === \"full-month-and-around\")\n for (const n of [\n preset.extraWeeksBefore || 0,\n preset.extraWeeksAfter || 0,\n ]) {\n integer(n);\n if (n < 0 || n > 52) throw new RangeError();\n }\n this.generator = createWeekGenerator({\n weekOffset: this.effectiveOffset,\n cacheSize: this[WklyPickerInputsPropertyKeys.WeekCacheSize],\n });\n } catch (_) {\n this.configErrors.push(\n error(\n \"configuration-error\",\n this[WklyPickerInputsPropertyKeys.WeekOffset],\n ),\n );\n this.generator = createWeekGenerator();\n this.effectiveOffset = 0;\n }\n this.setSupportedScrollRange();\n const hourCycle = this[WklyPickerInputsPropertyKeys.HourCycle];\n // Host value/configuration feedback must retain the user's switchable format.\n if (hourCycle !== \"switchable\" || this.configuredHourCycle !== hourCycle) {\n this.effectiveHourCycle =\n hourCycle === \"h12\"\n ? \"h12\"\n : hourCycle === \"locale\"\n ? new Intl.DateTimeFormat(this.effectiveLocale, {\n hour: \"numeric\",\n timeZone: \"UTC\",\n }).resolvedOptions().hour12\n ? \"h12\"\n : \"h24\"\n : \"h24\";\n }\n this.configuredHourCycle = hourCycle;\n this.weekdays = Array.from({ length: 7 }, (_, i) =>\n this.adapter.formatWeekday(this.effectiveOffset + i, \"short\"),\n );\n }\n private setSupportedScrollRange(): void {\n let [first, last] = this.adapter.supportedEpochDayRange;\n const [firstYear, lastYear] = this.adapter.supportedYearRange;\n const yearOf = (day: number) => this.adapter.epochDayToDate(day).year;\n if (yearOf(first) < firstYear) {\n let low = first,\n high = last;\n while (low < high) {\n const mid = Math.floor((low + high) / 2);\n if (yearOf(mid) < firstYear) low = mid + 1;\n else high = mid;\n }\n first = low;\n }\n if (yearOf(last) > lastYear) {\n let low = first,\n high = last;\n while (low < high) {\n const mid = Math.ceil((low + high) / 2);\n if (yearOf(mid) > lastYear) high = mid - 1;\n else low = mid;\n }\n last = low;\n }\n if (\n first > last ||\n yearOf(first) < firstYear ||\n yearOf(first) > lastYear ||\n yearOf(last) < firstYear ||\n yearOf(last) > lastYear\n )\n throw new RangeError(\"No supported days within the calendar year range\");\n this.firstSupportedDay = first;\n this.lastSupportedDay = last;\n this.firstSupportedWeek = absoluteWeekOf(first, this.effectiveOffset);\n this.lastSupportedWeek = absoluteWeekOf(last, this.effectiveOffset);\n }\n private clampFirstWeek(week: number): number {\n // Keep supported weeks inside the viewport; renderRows adds the buffer rows.\n const last = Math.max(\n this.firstSupportedWeek,\n this.lastSupportedWeek - this.visibleCount + 1,\n );\n return Math.max(this.firstSupportedWeek, Math.min(last, week));\n }\n ngAfterViewInit(): void {\n this.resetScroll();\n if (this.browser && typeof ResizeObserver !== \"undefined\") {\n this.observer = new ResizeObserver(() => {\n this.compact = this.host.nativeElement.clientWidth < 338;\n const row = this.host.nativeElement.querySelector(\n \".week-row\",\n ) as HTMLElement;\n // CSS heights and scrollTop use layout pixels; client rectangles include zoom.\n const height = row ? parseFloat(getComputedStyle(row).height) : 0;\n if (height && height !== this.rowHeight) {\n this.rowHeight = height;\n this.scrollHeight = this.rowHeight * 2001;\n this.renderRows();\n this.resetScroll();\n }\n });\n this.observer.observe(this.host.nativeElement);\n }\n }\n ngOnDestroy(): void {\n this.destroyed = true;\n if (this.observer) this.observer.disconnect();\n if (this.scrollEndTimer) clearTimeout(this.scrollEndTimer);\n if (this.generator) this.generator.clearCache();\n }\n t(key: string): string {\n return resolveWklyTranslation(\n key,\n this.effectiveLocale,\n this[WklyPickerInputsPropertyKeys.Translations] ||\n this.defaultTranslations,\n this.strings,\n );\n }\n get isRange(): boolean {\n return this[WklyPickerInputsPropertyKeys.Mode].endsWith(\"-range\");\n }\n get hasDate(): boolean {\n return !this[WklyPickerInputsPropertyKeys.Mode].startsWith(\"time\");\n }\n get hasTime(): boolean {\n return (\n this[WklyPickerInputsPropertyKeys.Mode] !== \"date\" &&\n this[WklyPickerInputsPropertyKeys.Mode] !== \"date-range\"\n );\n }\n get submitVisible(): boolean {\n return (\n this.presentation === \"transient\" &&\n (this[WklyPickerInputsPropertyKeys.Mode] !== \"date\" ||\n this.viewMode === \"manual\")\n );\n }\n get title(): string {\n try {\n const d = this.adapter.epochDayToDate(\n Math.max(\n this.firstSupportedDay,\n Math.min(\n this.lastSupportedDay,\n firstEpochDayOf(this.anchorWeek, this.effectiveOffset),\n ),\n ),\n );\n return this.adapter.formatMonth(d) + \" \" + this.adapter.formatYear(d);\n } catch (_) {\n return \"\";\n }\n }\n get canSubmit(): boolean {\n return (\n !this[WklyPickerInputsPropertyKeys.Disabled] &&\n !this.errors.length &&\n this.pendingValue !== null\n );\n }\n private blank(day: number): Draft {\n const safe = Math.max(\n this.firstSupportedDay,\n Math.min(this.lastSupportedDay, day),\n );\n return {\n date: this.adapter.epochDayToDate(safe),\n hour: 0,\n minute: 0,\n second: 0,\n present: false,\n };\n }\n load(value: WklyPickerValue): void {\n this.drafts = [this.blank(this.focused), this.blank(this.focused)];\n const validation = validateSelection(value, this, this.adapter);\n if (value !== null && !validation.length) {\n const values = typeof value === \"string\" ? [value] : value;\n values.forEach((v, i) => {\n const d = decodeIso(v);\n this.drafts[i] = {\n date: this.hasDate\n ? this.adapter.epochDayToDate(d.epochDay)\n : this.blank(this.today).date,\n hour: d.hour,\n minute: d.minute,\n second: d.second,\n present: true,\n };\n if (i === 0 && this.hasDate) this.focused = d.epochDay;\n });\n }\n if (validation.length) {\n this.pendingValue = null;\n this.report(validation);\n } else this.check();\n }\n writeValue(value: WklyPickerValue): void {\n this[WklyPickerInputsPropertyKeys.Value] = value;\n if (this.initialized) {\n this.load(value);\n this.position(this.focused, true);\n }\n }\n registerOnChange(fn: (value: WklyPickerValue) => void): void {\n this.onChange = fn;\n }\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n setDisabledState(disabled: boolean): void {\n this[WklyPickerInputsPropertyKeys.Disabled] = disabled;\n }\n validate(_control: AbstractControl): ValidationErrors | null {\n return this.errors.length ? { wkly: this.errors } : null;\n }\n registerOnValidatorChange(fn: () => void): void {\n this.validatorChanged = fn;\n }\n touched(): void {\n Promise.resolve().then(() => this.onTouched());\n }\n private report(errors: readonly WklyValidationError[]): void {\n const changed = JSON.stringify(this.errors) !== JSON.stringify(errors);\n this.errors = errors;\n if (changed) {\n this[WklyPickerOutputsPropertyKeys.ValidationChange].emit(errors);\n this.validatorChanged();\n }\n }\n check(): void {\n const result = validateDrafts({\n drafts: this.drafts,\n configErrors: this.configErrors,\n adapter: this.adapter,\n selection: this,\n mode: this[WklyPickerInputsPropertyKeys.Mode],\n isRange: this.isRange,\n hasDate: this.hasDate,\n hasTime: this.hasTime,\n showSeconds: this[WklyPickerInputsPropertyKeys.ShowSeconds],\n required: this[WklyPickerInputsPropertyKeys.Required],\n });\n this.pendingValue = result.pendingValue;\n this.report(result.errors);\n }\n trackDraft(index: number): number {\n // Endpoint controls keep their identity and focus when draft objects swap.\n return index;\n }\n private orderDrafts(): void {\n if (!this.isRange || !this.drafts.every((draft) => draft.present)) return;\n if (this.drafts.some((draft) => draft.unsupportedEpochDay !== undefined))\n return;\n try {\n const a = this.drafts[0],\n b = this.drafts[1];\n const key = (d: Draft) =>\n this.adapter.dateToEpochDay(d.date) * 86400 +\n (d.hour || 0) * 3600 +\n (d.minute || 0) * 60 +\n (d.second || 0);\n if (key(a) > key(b)) this.drafts = [b, a];\n } catch (_) {\n // Impossible or incomplete dates remain editable until corrected.\n }\n }\n finish(): void {\n if (this[WklyPickerInputsPropertyKeys.Disabled]) return;\n this.orderDrafts();\n if (this.viewMode === \"manual\" && this.hasDate) this.positionOnManualDate();\n this.check();\n if (this.presentation === \"inline\" && this.canSubmit) this.commit();\n }\n private commit(): void {\n if (!this.canSubmit) return;\n const next = this.pendingValue;\n if (\n JSON.stringify(next) !==\n JSON.stringify(this[WklyPickerInputsPropertyKeys.Value])\n ) {\n this[WklyPickerInputsPropertyKeys.Value] = next;\n this.emittedValue = JSON.stringify(next);\n this.onChange(next);\n this[WklyPickerOutputsPropertyKeys.ValueChange].emit(next);\n }\n this.onTouched();\n }\n submit(reason: WklyCloseReason = \"submit\"): void {\n this.check();\n if (!this.canSubmit) return;\n this.commit();\n if (this.presentation === \"transient\")\n this[WklyPickerOutputsPropertyKeys.Closed].emit(reason);\n }\n cancel(reason: WklyCloseReason = \"close-button\"): void {\n if (this[WklyPickerInputsPropertyKeys.Disabled]) return;\n this.load(this[WklyPickerInputsPropertyKeys.Value]);\n this.onTouched();\n this[WklyPickerOutputsPropertyKeys.Closed].emit(reason);\n }\n now(): void {\n if (this[WklyPickerInputsPropertyKeys.Disabled]) return;\n const n = this.clock.now();\n const day = Math.floor(n.getTime() / 86400000);\n this.drafts = [0, 1].map((index) => ({\n ...this.clockDraft(day, n),\n present: index === 0 || this.isRange,\n }));\n if (\n this.hasDate &&\n (day < this.firstSupportedDay || day > this.lastSupportedDay)\n ) {\n this.report([error(\"unsupported-adapter-date\", day)]);\n return;\n }\n this.focused = day;\n this.position(day, true);\n this.check();\n this.submit(\"now\");\n }\n private clockDraft(day: number, now: Date): Draft {\n return {\n ...this.blank(day),\n hour: now.getUTCHours(),\n minute:\n Math.floor(\n now.getUTCMinutes() / this[WklyPickerInputsPropertyKeys.MinuteStep],\n ) * this[WklyPickerInputsPropertyKeys.MinuteStep],\n second: this[WklyPickerInputsPropertyKeys.ShowSeconds]\n ? Math.floor(\n now.getUTCSeconds() / this[WklyPickerInputsPropertyKeys.SecondStep],\n ) * this[WklyPickerInputsPropertyKeys.SecondStep]\n : 0,\n };\n }\n private initializeManualRange(): void {\n if (\n !this.isRange ||\n !this.hasDate ||\n this.drafts.every((draft) => draft.present)\n )\n return;\n let seed = this.drafts.find((draft) => draft.present);\n if (!seed) {\n if (this[WklyPickerInputsPropertyKeys.Value] !== null) return;\n const now = this.clock.now();\n const initialEpochDay =\n this[WklyPickerInputsPropertyKeys.InitialEpochDay];\n const day =\n initialEpochDay === null\n ? this.defaults.initialEpochDay === undefined\n ? Math.floor(now.getTime() / 86400000)\n : this.defaults.initialEpochDay\n : initialEpochDay;\n seed = { ...this.clockDraft(day, now), present: true };\n }\n // Complete missing endpoints without replacing selected or invalid drafts.\n const initial = seed;\n this.drafts = this.drafts.map((draft) =>\n draft.present ? draft : { ...initial, date: { ...initial.date } },\n );\n this.finish();\n // Positioning renders before validation; refresh completion controls afterward.\n this.changeDetector.markForCheck();\n }\n toggleView(): void {\n if (this[WklyPickerInputsPropertyKeys.Disabled] || !this.hasDate) return;\n this.viewMode = this.viewMode === \"calendar\" ? \"manual\" : \"calendar\";\n if (this.viewMode === \"manual\") this.initializeManualRange();\n if (this.viewMode === \"calendar\") this.positionOnManualDate();\n this[WklyPickerOutputsPropertyKeys.ViewModeChange].emit(this.viewMode);\n if (this.viewMode === \"calendar\") setTimeout(() => this.resetScroll());\n }\n private positionOnManualDate(): void {\n const draft = this.drafts[this.manualDateEndpoint];\n if (!draft || !draft.present) return;\n try {\n // A valid day follows the selection. An impossible day keeps its draft\n // fields but still shows the chosen month in the calendar.\n const target = this.adapter.dateToEpochDay(draft.date);\n this.focused = target;\n this.position(target, true);\n } catch (_) {\n try {\n const first = this.adapter.dateToEpochDay({ ...draft.date, day: 1 });\n this.focused = first;\n this.position(first, true);\n } catch (_) {}\n }\n }\n months(draft: Draft): readonly string[] {\n try {\n return this.adapter.getMonths(draft.date.year).map((m) => m.label);\n } catch (_) {\n return [];\n }\n }\n monthCount(draft: Draft): number {\n return this.months(draft).length || 12;\n }\n get inDays(): number | null {\n return draftDayDifference(this.drafts, this.adapter);\n }\n get inDaysLabel(): string {\n const days = this.inDays;\n return this.t(\"inDays\").replace(\n /{{\\s*days\\s*}}/g,\n days === null\n ? this.t(\"daysUnavailable\")\n : new Intl.NumberFormat(this.effectiveLocale, {\n useGrouping: false,\n }).format(days),\n );\n }\n get resultingEndDate(): string {\n try {\n const draft = this.drafts[1];\n if (\n draft.unsupportedEpochDay !== undefined ||\n this.adapter.validateDate(draft.date).length\n )\n return \"\";\n return [\n this.adapter.formatDay(draft.date),\n this.adapter.formatMonth(draft.date),\n this.adapter.formatYear(draft.date),\n ].join(\" \");\n } catch (_) {\n return \"\";\n }\n }\n toggleEndView(view: \"date\" | \"days\"): void {\n if (this[WklyPickerInputsPropertyKeys.Disabled]) return;\n this.endView = view;\n }\n days(value: number | null): void {\n if (this[WklyPickerInputsPropertyKeys.Disabled]) return;\n this.manualDateEndpoint = 1;\n setDraftDayDifference(this.drafts, this.adapter, value);\n this.check();\n }\n field(index: number, field: string, value: number | null): void {\n if (this[WklyPickerInputsPropertyKeys.Disabled]) return;\n const draft = this.drafts[index];\n draft.present = true;\n if (field === \"day\" || field === \"year\" || field === \"month\") {\n this.manualDateEndpoint = index;\n delete draft.unsupportedEpochDay;\n let date = { ...draft.date, [field]: value } as WklyCalendarDate;\n if (field === \"month\") {\n let month;\n try {\n month = this.adapter\n .getMonths(date.year)\n .find((m) => m.month === value);\n } catch (_) {}\n date = { ...date, monthCode: month ? month.monthCode : \"\" };\n }\n if (field === \"year\" && value !== null) {\n try {\n const months = this.adapter.getMonths(value);\n const month = months.find((m) => m.monthCode === date.monthCode);\n if (month) date = { ...date, month: month.month };\n } catch (_) {}\n }\n draft.date = date;\n } else if (field === \"hour\" && this.effectiveHourCycle === \"h12\")\n draft.hour =\n value === null\n ? null\n : value >= 1 && value <= 12\n ? (value % 12) + ((draft.hour || 0) >= 12 ? 12 : 0)\n : 24 + value;\n else (draft as any)[field] = value;\n this.check();\n }\n displayHour(draft: Draft): number | null {\n return draft.hour === null\n ? null\n : this.effectiveHourCycle === \"h12\"\n ? draft.hour % 12 || 12\n : draft.hour;\n }\n period(index: number, period: \"am\" | \"pm\" | \"24\"): void {\n if (this[WklyPickerInputsPropertyKeys.Disabled]) return;\n if (period === \"24\") this.effectiveHourCycle = \"h24\";\n else {\n this.effectiveHourCycle = \"h12\";\n this.drafts[index].hour =\n ((this.drafts[index].hour || 0) % 12) + (period === \"pm\" ? 12 : 0);\n this.drafts[index].present = true;\n this.finish();\n }\n }\n selected(day: number): boolean {\n return this.drafts.some((d) => {\n try {\n return d.present && this.adapter.dateToEpochDay(d.date) === day;\n } catch (_) {\n return false;\n }\n });\n }\n inRange(day: number): boolean {\n if (!this.isRange || !this.drafts.every((d) => d.present)) return false;\n try {\n const a = this.adapter.dateToEpochDay(this.drafts[0].date),\n b = this.adapter.dateToEpochDay(this.drafts[1].date);\n return day > Math.min(a, b) && day < Math.max(a, b);\n } catch (_) {\n return false;\n }\n }\n dayDisabled(day: number): boolean {\n if (day < this.firstSupportedDay || day > this.lastSupportedDay)\n return true;\n try {\n const date = this.adapter.epochDayToDate(day);\n const isDateDisabled = this[WklyPickerInputsPropertyKeys.IsDateDisabled];\n if (\n isDateDisabled &&\n isDateDisabled(day, {\n mode: this[WklyPickerInputsPropertyKeys.Mode],\n endpoint: this.isRange\n ? this.drafts[0]?.present && !this.drafts[1]?.present\n ? \"end\"\n : \"start\"\n : \"single\",\n calendarDate: date,\n })\n )\n return true;\n const min = this[WklyPickerInputsPropertyKeys.Min];\n const max = this[WklyPickerInputsPropertyKeys.Max];\n if (min && day < decodeIso(min).epochDay) return true;\n if (max && day > decodeIso(max).epochDay) return true;\n return false;\n } catch (_) {\n return true;\n }\n }\n select(day: number): void {\n if (this[WklyPickerInputsPropertyKeys.Disabled] || this.dayDisabled(day))\n return;\n this.focused = day;\n const index =\n this.isRange && this.drafts[0].present && !this.drafts[1].present ? 1 : 0;\n if (this.isRange && index === 0) this.drafts[1].present = false;\n delete this.drafts[index].unsupportedEpochDay;\n this.drafts[index].date = this.adapter.epochDayToDate(day);\n this.drafts[index].present = true;\n this.orderDrafts();\n this.renderRows();\n this.finish();\n if (\n this.presentation === \"transient\" &&\n this[WklyPickerInputsPropertyKeys.Mode] === \"date\" &&\n this.viewMode === \"calendar\"\n )\n this.submit(\"auto-submit\");\n }\n key(event: KeyboardEvent, day: number): void {\n let delta = 0;\n if (event.key === \"ArrowLeft\") delta = -1;\n if (event.key === \"ArrowRight\") delta = 1;\n if (event.key === \"ArrowUp\") delta = -7;\n if (event.key === \"ArrowDown\") delta = 7;\n if (event.key === \"PageUp\")\n delta = -7 * (event.shiftKey ? this.visibleCount : 1);\n if (event.key === \"PageDown\")\n delta = 7 * (event.shiftKey ? this.visibleCount : 1);\n if (event.key === \"Home\") {\n event.preventDefault();\n this.scrollToEpochDay(this.today, { focus: true });\n }\n if (delta) {\n event.preventDefault();\n const target = day + delta;\n if (target >= this.firstSupportedDay && target <= this.lastSupportedDay)\n this.scrollToEpochDay(target, { focus: true });\n }\n }\n private position(\n day: number,\n preset = false,\n options: WklyJumpOptions = {},\n ): void {\n day = Math.max(\n this.firstSupportedDay,\n Math.min(this.lastSupportedDay, day),\n );\n this.anchorWeek = absoluteWeekOf(day, this.effectiveOffset);\n const viewportPreset = this[WklyPickerInputsPropertyKeys.ViewportPreset];\n this.clipMonth = preset && viewportPreset.kind === \"full-month\";\n if (preset && viewportPreset.kind !== \"weeks\") {\n const d = this.adapter.epochDayToDate(day);\n this.initialMonth = d.year + \"/\" + d.monthCode;\n const [start, end] = calendarMonthBounds(this.adapter, day);\n this.firstWeek = absoluteWeekOf(start, this.effectiveOffset);\n this.visibleCount =\n absoluteWeekOf(end, this.effectiveOffset) - this.firstWeek + 1;\n if (\n viewportPreset.kind === \"full-month-and-around\" &&\n !this.configErrors.length\n ) {\n const before = viewportPreset.extraWeeksBefore || 0,\n after = viewportPreset.extraWeeksAfter || 0;\n this.firstWeek -= before;\n this.visibleCount += before + after;\n }\n } else {\n if (viewportPreset.kind === \"weeks\")\n this.visibleCount = this.configErrors.length\n ? 6\n : viewportPreset.visibleWeekCount;\n this.firstWeek =\n this.anchorWeek -\n (options.align === \"start\"\n ? 0\n : options.align === \"end\"\n ? this.visibleCount - 1\n : Math.floor(this.visibleCount / 2));\n }\n this.firstWeek = this.clampFirstWeek(this.firstWeek);\n this.baseWeek = this.firstWeek - 1000;\n this.renderRows();\n // Apply the new runway before writing scrollTop or locating a focus target.\n this.changeDetector.detectChanges();\n this.resetScroll();\n }\n private resetScroll(): void {\n // Round week boundaries to avoid scrollTop truncation under CSS zoom.\n if (this.scroller)\n this.scroller.nativeElement.scrollTop = Math.round(1000 * this.rowHeight);\n }\n scroll(event: Event): void {\n const element = event.target as HTMLElement;\n this.snapPending = true;\n this.scheduleSnap();\n // Quantize displacement around the reset point, equally in both directions.\n const relativeRows = element.scrollTop / this.rowHeight - 1000;\n const index =\n 1000 + Math.sign(relativeRows) * Math.round(Math.abs(relativeRows));\n const requestedFirst = this.baseWeek + index;\n const first = this.clampFirstWeek(requestedFirst);\n if (requestedFirst !== first) {\n element.scrollTop = Math.round((first - this.baseWeek) * this.rowHeight);\n }\n if (first === this.firstWeek) return;\n this.clipMonth = false;\n this.firstWeek = first;\n this.anchorWeek = first + Math.floor(this.visibleCount / 2);\n if (index < 100 || index > 1900) {\n // Preserve signed displacement from this week; modulo turns fractional\n // rounding just below a boundary into almost a full row after rebasing.\n const offset =\n element.scrollTop - (first - this.baseWeek) * this.rowHeight;\n this.baseWeek = first - 1000;\n element.scrollTop = Math.round(1000 * this.rowHeight + offset);\n }\n this.renderRows();\n }\n private scheduleSnap(): void {\n if (this.scrollEndTimer) clearTimeout(this.scrollEndTimer);\n this.scrollEndTimer = setTimeout(() => this.snapWeek(), 200);\n }\n snapWeek(): void {\n if (this.scrollEndTimer) clearTimeout(this.scrollEndTimer);\n this.scrollEndTimer = undefined;\n if (!this.snapPending || !this.scroller) return;\n this.snapPending = false;\n // Align the current virtual week without rebuilding or rebasing its rows.\n const element = this.scroller.nativeElement;\n const target = Math.round(\n (this.firstWeek - this.baseWeek) * this.rowHeight,\n );\n if (element.scrollTop !== target) element.scrollTop = target;\n }\n private showFirstWeek(week: number): void {\n const first = this.clampFirstWeek(week);\n if (first === this.firstWeek) return;\n this.clipMonth = false;\n this.firstWeek = first;\n this.anchorWeek = first + Math.floor(this.visibleCount / 2);\n this.baseWeek = first - 1000;\n this.renderRows();\n this.resetScroll();\n }\n canMoveWeek(delta: number): boolean {\n return this.clampFirstWeek(this.firstWeek + delta) !== this.firstWeek;\n }\n moveWeek(delta: number): void {\n if (!this[WklyPickerInputsPropertyKeys.Disabled])\n this.showFirstWeek(this.firstWeek + delta);\n }\n private renderRows(): void {\n // Keep the virtual scroll offset here; row data is shared across Angular versions.\n const overscan = Math.max(\n 0,\n Math.min(50, this[WklyPickerInputsPropertyKeys.OverscanWeeks] || 0),\n );\n const start = this.firstWeek - overscan;\n this.paddingTop = (start - this.baseWeek) * this.rowHeight;\n this.rows = createWeekRows({\n generator: this.generator,\n adapter: this.adapter,\n startWeek: start,\n count: this.visibleCount + 2 * overscan,\n firstVisibleWeek: this.firstWeek,\n firstSupportedDay: this.firstSupportedDay,\n lastSupportedDay: this.lastSupportedDay,\n clipMonth: this.clipMonth,\n initialMonth: this.initialMonth,\n weekLabelMode: this[WklyPickerInputsPropertyKeys.WeekLabelMode],\n weekLabelFormatter:\n this[WklyPickerInputsPropertyKeys.WeekLabelFormatter] || null,\n isDayDisabled: (day) => this.dayDisabled(day),\n });\n this[WklyPickerOutputsPropertyKeys.ViewportChange].emit({\n firstVisibleAbsoluteWeek: this.firstWeek,\n lastVisibleAbsoluteWeek: this.firstWeek + this.visibleCount - 1,\n anchorAbsoluteWeek: this.anchorWeek,\n });\n }\n // Retain day DOM nodes and keyboard focus when row metadata is regenerated.\n trackCell(_i: number, cell: { epochDay: number }): number {\n return cell.epochDay;\n }\n trackRow(_i: number, row: Row): number {\n return row.week.absoluteWeek;\n }\n scrollToEpochDay(day: number, options: WklyJumpOptions = {}): void {\n integer(day);\n this.adapter.epochDayToDate(day);\n day = Math.max(\n this.firstSupportedDay,\n Math.min(this.lastSupportedDay, day),\n );\n // position renders synchronously; publish the tab stop before that render.\n if (options.focus) this.focused = day;\n this.position(day, false, options);\n if (options.select) this.select(day);\n if (options.focus) this.focusDay();\n }\n scrollToAbsoluteWeek(week: number, options: WklyJumpOptions = {}): void {\n // A boundary week can start before the adapter's first supported day.\n const first = firstEpochDayOf(week, this.effectiveOffset);\n this.scrollToEpochDay(\n week === this.firstSupportedWeek\n ? Math.max(first, this.firstSupportedDay)\n : first,\n options,\n );\n }\n scrollToCalendarDate(\n date: WklyCalendarDate,\n options: WklyJumpOptions = {},\n ): void {\n this.scrollToEpochDay(this.adapter.dateToEpochDay(date), options);\n }\n scrollToValue(value: string, options: WklyJumpOptions = {}): void {\n this.scrollToEpochDay(decodeIso(value).epochDay, options);\n }\n focusDay(): void {\n if (!this.browser) return;\n setTimeout(() => {\n if (this.destroyed) return;\n this.changeDetector.detectChanges();\n const day = this.host.nativeElement.querySelector(\n '[data-day=\"' + this.focused + '\"]',\n ) as HTMLElement;\n const fallback = this.host.nativeElement.querySelector(\n \"button:not(:disabled),input:not(:disabled)\",\n ) as HTMLElement;\n (day || fallback)?.focus({ preventScroll: true });\n });\n }\n}\n","import {\n ApplicationRef,\n ComponentFactoryResolver,\n ComponentRef,\n Directive,\n ElementRef,\n forwardRef,\n HostListener,\n Inject,\n Injectable,\n Injector,\n OnChanges,\n OnDestroy,\n Optional,\n PLATFORM_ID,\n} from \"@angular/core\";\nimport { DOCUMENT, isPlatformBrowser } from \"@angular/common\";\nimport {\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n} from \"@angular/forms\";\nimport {\n validateSelection,\n WklyGregorianCalendarAdapter,\n WklyCalendarDate,\n WklyPickerValue,\n WklyValidationError,\n} from \"@wkly/adapters\";\nimport { Subscription } from \"rxjs\";\nimport {\n coerceBoolean,\n INPUT_NAMES,\n WklyCloseReason,\n WklyJumpOptions,\n WklyPickerInputs,\n WklyPickerInputsPropertyKeys,\n WklyPickerOutputsPropertyKeys,\n} from \"./config\";\nimport { WklyDateTimePickerComponent } from \"./picker.component\";\nexport interface WklyPresentationRef {\n readonly component: ComponentRef<WklyDateTimePickerComponent>;\n destroy(): void;\n}\n/** Native-dialog factory. Browser resources are allocated only by open(). */\n@Injectable({ providedIn: \"root\" })\nexport class WklyDateTimePickerDialogService {\n constructor(\n private resolver: ComponentFactoryResolver,\n private injector: Injector,\n private app: ApplicationRef,\n @Inject(DOCUMENT) private document: Document,\n @Inject(PLATFORM_ID) private platform: Object,\n ) {}\n open(\n trigger: HTMLElement,\n onCancel: (reason: WklyCloseReason) => void,\n backdrop = true,\n injector?: Injector,\n ): WklyPresentationRef {\n if (!isPlatformBrowser(this.platform))\n throw new Error(\"Picker presentations can only open in a browser\");\n const dialog = this.document.createElement(\n \"dialog\",\n ) as HTMLDialogElement & {\n showModal(): void;\n close(): void;\n };\n dialog.setAttribute(\"aria-label\", \"Date and time picker\");\n Object.assign(dialog.style, {\n padding: \"0\",\n border: \"0\",\n borderRadius: \"14px\",\n width: \"min(390px, 100vw)\",\n maxWidth: \"100vw\",\n maxHeight: \"94vh\",\n background: \"transparent\",\n });\n const component = this.resolver\n .resolveComponentFactory(WklyDateTimePickerComponent)\n .create(injector || this.injector);\n component.instance.presentation = \"transient\";\n dialog.appendChild(component.location.nativeElement);\n this.document.body.appendChild(dialog);\n this.app.attachView(component.hostView);\n const cancel = (event: Event) => {\n event.preventDefault();\n onCancel(\"escape\");\n };\n const click = (event: MouseEvent) => {\n if (backdrop && event.target === dialog) {\n const r = dialog.getBoundingClientRect();\n if (\n event.clientX < r.left ||\n event.clientX > r.right ||\n event.clientY < r.top ||\n event.clientY > r.bottom\n )\n onCancel(\"backdrop\");\n }\n };\n const keydown = (event: KeyboardEvent) => {\n if (event.key !== \"Tab\") return;\n const controls = Array.from(\n dialog.querySelectorAll<HTMLElement>(\n 'button:not(:disabled),input:not(:disabled),[tabindex=\"0\"]',\n ),\n ).filter(\n (el) =>\n el.tabIndex >= 0 &&\n el.getClientRects().length &&\n getComputedStyle(el).visibility !== \"hidden\",\n );\n const first = controls[0],\n last = controls[controls.length - 1];\n if (\n first &&\n (event.shiftKey\n ? this.document.activeElement === first\n : this.document.activeElement === last)\n ) {\n event.preventDefault();\n (event.shiftKey ? last : first).focus();\n }\n };\n dialog.addEventListener(\"cancel\", cancel);\n dialog.addEventListener(\"click\", click);\n dialog.addEventListener(\"keydown\", keydown);\n dialog.showModal();\n return {\n component,\n destroy: () => {\n dialog.removeEventListener(\"cancel\", cancel);\n dialog.removeEventListener(\"click\", click);\n dialog.removeEventListener(\"keydown\", keydown);\n dialog.close();\n this.app.detachView(component.hostView);\n component.destroy();\n dialog.remove();\n trigger.focus();\n },\n };\n }\n}\n/** Shared trigger lifecycle; optional presentation packages extend this class. */\n@Directive()\nexport abstract class WklyTriggerBase\n extends WklyPickerInputs\n implements ControlValueAccessor, Validator, OnChanges, OnDestroy\n{\n protected ref: WklyPresentationRef | null = null;\n protected subscriptions: Subscription[] = [];\n private errors: readonly WklyValidationError[] = [];\n private change: (value: WklyPickerValue) => void = () => {};\n private touched: () => void = () => {};\n private validation: () => void = () => {};\n constructor(protected element: ElementRef<HTMLElement>) {\n super();\n }\n protected abstract create(): WklyPresentationRef;\n @HostListener(\"click\") open(): void {\n if (this[WklyPickerInputsPropertyKeys.Disabled] || this.ref) return;\n this.ref = this.create();\n const picker = this.ref.component.instance;\n this.copy();\n this.subscriptions = [\n picker[WklyPickerOutputsPropertyKeys.ValueChange].subscribe((value) => {\n this[WklyPickerInputsPropertyKeys.Value] = value;\n this.change(value);\n this[WklyPickerOutputsPropertyKeys.ValueChange].emit(value);\n this.display();\n }),\n picker[WklyPickerOutputsPropertyKeys.ValidationChange].subscribe(\n (errors) => {\n this.errors = errors;\n this[WklyPickerOutputsPropertyKeys.ValidationChange].emit(errors);\n this.validation();\n },\n ),\n picker[WklyPickerOutputsPropertyKeys.Closed].subscribe((reason) =>\n this.close(reason),\n ),\n picker[WklyPickerOutputsPropertyKeys.ViewportChange].subscribe((value) =>\n this[WklyPickerOutputsPropertyKeys.ViewportChange].emit(value),\n ),\n picker[WklyPickerOutputsPropertyKeys.ViewModeChange].subscribe((value) =>\n this[WklyPickerOutputsPropertyKeys.ViewModeChange].emit(value),\n ),\n ];\n this.ref.component.changeDetectorRef.detectChanges();\n picker.focusDay();\n this[WklyPickerOutputsPropertyKeys.Opened].emit();\n }\n @HostListener(\"keydown\", [\"$event\"]) key(event: KeyboardEvent): void {\n if (\n event.key === \"Enter\" ||\n event.key === \" \" ||\n event.key === \"ArrowDown\"\n ) {\n event.preventDefault();\n this.open();\n }\n }\n @HostListener(\"blur\") blur(): void {\n this.touched();\n }\n close(reason: WklyCloseReason = \"programmatic\"): void {\n if (!this.ref) return;\n const ref = this.ref;\n this.ref = null;\n this.subscriptions.forEach((s) => s.unsubscribe());\n this.subscriptions = [];\n ref.destroy();\n this.touched();\n this[WklyPickerOutputsPropertyKeys.Closed].emit(reason);\n }\n ngOnChanges(): void {\n [\n WklyPickerInputsPropertyKeys.ShowSeconds,\n WklyPickerInputsPropertyKeys.AllowRangeAcrossDisabled,\n WklyPickerInputsPropertyKeys.Required,\n WklyPickerInputsPropertyKeys.Disabled,\n WklyPickerInputsPropertyKeys.CloseOnBackdrop,\n ].forEach(\n (key) => ((this as any)[key] = coerceBoolean((this as any)[key])),\n );\n this.checkValue();\n this.display();\n if (this.ref) {\n this.copy();\n this.ref.component.instance.ngOnChanges({\n [WklyPickerInputsPropertyKeys.Value]: true,\n });\n this.ref.component.changeDetectorRef.detectChanges();\n }\n }\n ngOnDestroy(): void {\n this.close();\n }\n private copy(): void {\n if (this.ref)\n for (const name of INPUT_NAMES)\n (this.ref.component.instance as any)[name] = (this as any)[name];\n }\n private display(): void {\n const host = this.element.nativeElement as HTMLInputElement;\n if (host.tagName === \"INPUT\") {\n host.readOnly = true;\n const value = this[WklyPickerInputsPropertyKeys.Value];\n host.value =\n value === null\n ? \"\"\n : typeof value === \"string\"\n ? value\n : value.join(\" — \");\n host.disabled = this[WklyPickerInputsPropertyKeys.Disabled];\n host.setAttribute(\"aria-haspopup\", \"dialog\");\n }\n }\n private checkValue(): void {\n this.errors = validateSelection(\n this[WklyPickerInputsPropertyKeys.Value],\n this,\n this[WklyPickerInputsPropertyKeys.CalendarAdapter] ||\n new WklyGregorianCalendarAdapter(\n this[WklyPickerInputsPropertyKeys.Locale] || \"en-US\",\n ),\n );\n this[WklyPickerOutputsPropertyKeys.ValidationChange].emit(this.errors);\n this.validation();\n }\n writeValue(value: WklyPickerValue): void {\n this[WklyPickerInputsPropertyKeys.Value] = value;\n this.checkValue();\n this.display();\n if (this.ref) this.ref.component.instance.writeValue(value);\n }\n registerOnChange(fn: (value: WklyPickerValue) => void): void {\n this.change = fn;\n }\n registerOnTouched(fn: () => void): void {\n this.touched = fn;\n }\n setDisabledState(value: boolean): void {\n this[WklyPickerInputsPropertyKeys.Disabled] = value;\n this.display();\n if (this.ref) this.ref.component.instance.setDisabledState(value);\n }\n validate(): ValidationErrors | null {\n return this.errors.length ? { wkly: this.errors } : null;\n }\n registerOnValidatorChange(fn: () => void): void {\n this.validation = fn;\n }\n scrollToEpochDay(day: number, options?: WklyJumpOptions): void {\n this.open();\n this.ref?.component.instance.scrollToEpochDay(day, options);\n }\n scrollToAbsoluteWeek(week: number, options?: WklyJumpOptions): void {\n this.open();\n this.ref?.component.instance.scrollToAbsoluteWeek(week, options);\n }\n scrollToCalendarDate(\n date: WklyCalendarDate,\n options?: WklyJumpOptions,\n ): void {\n this.open();\n this.ref?.component.instance.scrollToCalendarDate(date, options);\n }\n scrollToValue(value: string, options?: WklyJumpOptions): void {\n this.open();\n this.ref?.component.instance.scrollToValue(value, options);\n }\n}\n@Directive({\n selector: \"[wklyDateTimePickerDialog]\",\n exportAs: \"wklyDialog\",\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => WklyDateTimePickerDialogDirective),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => WklyDateTimePickerDialogDirective),\n multi: true,\n },\n ],\n})\nexport class WklyDateTimePickerDialogDirective extends WklyTriggerBase {\n constructor(\n element: ElementRef<HTMLElement>,\n private service: WklyDateTimePickerDialogService,\n private triggerInjector: Injector,\n ) {\n super(element);\n }\n protected create(): WklyPresentationRef {\n return this.service.open(\n this.element.nativeElement,\n (reason) => this.close(reason),\n this[WklyPickerInputsPropertyKeys.CloseOnBackdrop],\n this.triggerInjector,\n );\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n} from \"@angular/core\";\nimport { floorMod } from \"@wkly/core\";\nimport { normalizeDigits } from \"@wkly/adapters\";\n@Component({\n selector: \"wkly-field\",\n templateUrl: \"./field.component.html\",\n styleUrls: [\"./field.component.css\"],\n})\nexport class WklyFieldComponent implements OnChanges, OnDestroy {\n @Input() value: number | null = 0;\n @Input() label = \"\";\n @Input() hideLabel = false;\n @Input() previousLabel = \"\";\n @Input() nextLabel = \"\";\n @Input() min = 0;\n @Input() max = 59;\n @Input() step = 1;\n @Input() locale = \"en-US\";\n @Input() disabled = false;\n @Input() invalid = false;\n @Input() labels: readonly string[] | null = null;\n @Output() valueChange = new EventEmitter<number | null>();\n @Output() complete = new EventEmitter<void>();\n private before: number | null = null;\n private touchY = 0;\n private touchSteps = 0;\n private touchChanged = false;\n private typed: string | null = null;\n private inputTimer: ReturnType<typeof setTimeout> | null = null;\n private wheelTimer: ReturnType<typeof setTimeout> | null = null;\n get display(): string {\n if (this.typed !== null) return this.typed;\n return this.value === null\n ? \"\"\n : this.labels\n ? this.labels[this.value - this.min] || String(this.value)\n : new Intl.NumberFormat(this.locale, {\n useGrouping: false,\n minimumIntegerDigits: this.max < 60 ? 2 : 1,\n }).format(this.value);\n }\n ngOnChanges(changes: any): void {\n if (changes.value && this.min < 0 && this.typed !== null) {\n const typedValue =\n this.typed === \"\" || this.typed === \"-\" ? null : Number(this.typed);\n if (this.value !== typedValue) {\n // External date edits replace a pending relative-day preview.\n this.cancelInput();\n this.typed = null;\n }\n }\n }\n ngOnDestroy(): void {\n this.cancelInput();\n if (this.wheelTimer !== null) clearTimeout(this.wheelTimer);\n }\n next(delta: number): number {\n const count = Math.floor((this.max - this.min) / this.step) + 1;\n return (\n this.min +\n floorMod(\n Math.floor(\n ((this.value === null ? this.min : this.value) - this.min) /\n this.step,\n ) + delta,\n count,\n ) *\n this.step\n );\n }\n neighbor(delta: number): string {\n const n = this.next(delta);\n return this.labels\n ? this.labels[n - this.min] || \"\"\n : new Intl.NumberFormat(this.locale, { useGrouping: false }).format(n);\n }\n stepBy(delta: number): void {\n if (this.disabled) return;\n this.scrollBy(delta);\n this.complete.emit();\n }\n begin(event: FocusEvent): void {\n this.before = this.value;\n (event.target as HTMLInputElement).select();\n }\n type(event: Event): void {\n if (this.disabled) return;\n const input = event.target as HTMLInputElement;\n const raw = input.value;\n const numeric = Array.from(raw).every(\n (character) => normalizeDigits(character).length === 1,\n );\n if (this.min < 0 && !this.labels) {\n // Preserve the sign while using the same locale digit normalization.\n const signed = raw\n .replace(/[\\u200e\\u200f\\u061c]/g, \"\")\n .replace(/\\u2212/g, \"-\");\n const digits = normalizeDigits(signed);\n this.typed = input.value = (signed.startsWith(\"-\") ? \"-\" : \"\") + digits;\n this.value =\n digits === \"\"\n ? null\n : Math.max(this.min, Math.min(this.max, Number(this.typed)));\n if (this.value !== null && Number(this.typed) !== this.value)\n this.typed = input.value = String(this.value);\n } else if (numeric) {\n const normalized = normalizeDigits(raw);\n this.typed = input.value =\n this.min >= 0 && this.max < 100 ? normalized.slice(-2) : normalized;\n this.value = this.typed === \"\" ? null : Number(this.typed);\n } else if (this.labels) {\n const search = raw.trim().toLocaleLowerCase(this.locale);\n this.typed = raw;\n const matches = this.labels\n .map((label, index) => ({ label, index }))\n .filter((item) =>\n item.label.toLocaleLowerCase(this.locale).includes(search),\n );\n this.value = matches.length === 1 ? this.min + matches[0].index : null;\n } else {\n this.typed = input.value = normalizeDigits(raw);\n this.value = this.typed === \"\" ? null : Number(this.typed);\n }\n this.valueChange.emit(this.value);\n this.cancelInput();\n if (!numeric && this.labels && this.value !== null) this.complete.emit();\n this.inputTimer = setTimeout(() => {\n this.inputTimer = null;\n this.typed = null;\n if (!this.disabled) this.complete.emit();\n }, 1000);\n }\n key(event: KeyboardEvent): void {\n if (event.key === \"Escape\") {\n event.preventDefault();\n event.stopPropagation();\n this.cancelInput();\n this.typed = null;\n this.value = this.before;\n this.valueChange.emit(this.before);\n (event.target as HTMLInputElement).value = this.display;\n (event.target as HTMLInputElement).blur();\n }\n if (event.key === \"Enter\") {\n event.preventDefault();\n event.stopPropagation();\n this.finish();\n }\n const delta =\n event.key === \"ArrowUp\"\n ? -1\n : event.key === \"ArrowDown\"\n ? 1\n : event.key === \"PageUp\"\n ? -5\n : event.key === \"PageDown\"\n ? 5\n : 0;\n if (delta) {\n event.preventDefault();\n this.stepBy(delta);\n }\n }\n finish(): void {\n this.cancelInput();\n this.typed = null;\n this.complete.emit();\n }\n wheel(event: WheelEvent): void {\n if (this.disabled || Math.abs(event.deltaY) < 1) return;\n event.preventDefault();\n this.scrollBy(event.deltaY > 0 ? 1 : -1);\n if (this.wheelTimer !== null) clearTimeout(this.wheelTimer);\n this.wheelTimer = setTimeout(() => {\n this.wheelTimer = null;\n this.complete.emit();\n }, 140);\n }\n touchStart(event: TouchEvent): void {\n this.touchY = event.touches[0].clientY;\n this.touchSteps = 0;\n this.touchChanged = false;\n }\n touchMove(event: TouchEvent): void {\n this.applyTouchY(event.touches[0].clientY);\n }\n touchEnd(event: TouchEvent): void {\n this.applyTouchY(event.changedTouches[0].clientY);\n if (this.touchChanged) this.complete.emit();\n this.touchChanged = false;\n }\n private cancelInput(): void {\n if (this.inputTimer !== null) clearTimeout(this.inputTimer);\n this.inputTimer = null;\n }\n private scrollBy(delta: number): void {\n if (this.disabled || !delta) return;\n this.cancelInput();\n this.typed = null;\n this.value = this.next(delta);\n this.valueChange.emit(this.value);\n }\n private applyTouchY(y: number): void {\n // Count total gesture steps so repeated move events do not duplicate changes.\n if (this.disabled) return;\n const delta = this.touchY - y;\n const steps =\n Math.abs(delta) > 16\n ? Math.sign(delta) * Math.max(1, Math.round(Math.abs(delta) / 40))\n : 0;\n const change = steps - this.touchSteps;\n if (!change) return;\n this.scrollBy(change);\n this.touchSteps = steps;\n this.touchChanged = true;\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { WklyDateTimePickerComponent } from \"./picker.component\";\nimport { WklyDateTimePickerDialogDirective } from \"./presentation\";\nimport { WklyFieldComponent } from \"./field.component\";\nexport * from \"./config\";\nexport { WklyDateTimePickerComponent } from \"./picker.component\";\nexport {\n WklyPresentationRef,\n WklyDateTimePickerDialogService,\n WklyTriggerBase,\n WklyDateTimePickerDialogDirective,\n} from \"./presentation\";\nexport { WklyFieldComponent } from \"./field.component\";\nexport {\n WklyPickerValue,\n WklyIsoString,\n WklyRangeValue,\n WklySelectionMode,\n WklyValidationError,\n WklyValidationErrorCode,\n WklyViewportPreset,\n WklyHourCycle,\n WklyEndpoint,\n WklyDisabledDatePredicate,\n WklyDisabledTimePredicate,\n WklyRangeValidator,\n WklyWeekLabelMode,\n WklyWeekLabelFormatter,\n} from \"@wkly/adapters\";\n@NgModule({\n imports: [CommonModule],\n declarations: [\n WklyDateTimePickerComponent,\n WklyDateTimePickerDialogDirective,\n WklyFieldComponent,\n ],\n entryComponents: [WklyDateTimePickerComponent],\n exports: [WklyDateTimePickerComponent, WklyDateTimePickerDialogDirective],\n})\nexport class WklyDateTimePickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {WklyClock as ɵb,WklyConfiguration as ɵa,WklyStrings as ɵc,WklyTranslations as ɵd} from './config';"],"names":[],"mappings":"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"}