@angular/material 21.0.3 → 21.0.5

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 (84) hide show
  1. package/core/focus-indicators/_private.scss +1 -1
  2. package/fesm2022/_error-options-chunk.mjs +6 -6
  3. package/fesm2022/_form-field-chunk.mjs +32 -32
  4. package/fesm2022/_form-field-chunk.mjs.map +1 -1
  5. package/fesm2022/_icon-button-chunk.mjs +8 -8
  6. package/fesm2022/_icon-button-chunk.mjs.map +1 -1
  7. package/fesm2022/_icon-registry-chunk.mjs +3 -3
  8. package/fesm2022/_internal-form-field-chunk.mjs +3 -3
  9. package/fesm2022/_line-chunk.mjs +7 -7
  10. package/fesm2022/_option-chunk.mjs +6 -6
  11. package/fesm2022/_option-module-chunk.mjs +4 -4
  12. package/fesm2022/_pseudo-checkbox-chunk.mjs +3 -3
  13. package/fesm2022/_pseudo-checkbox-module-chunk.mjs +4 -4
  14. package/fesm2022/_ripple-chunk.mjs +6 -6
  15. package/fesm2022/_ripple-loader-chunk.mjs +3 -3
  16. package/fesm2022/_ripple-module-chunk.mjs +4 -4
  17. package/fesm2022/_structural-styles-chunk.mjs +5 -5
  18. package/fesm2022/_structural-styles-chunk.mjs.map +1 -1
  19. package/fesm2022/_tooltip-chunk.mjs +7 -8
  20. package/fesm2022/_tooltip-chunk.mjs.map +1 -1
  21. package/fesm2022/autocomplete.mjs +13 -13
  22. package/fesm2022/badge.mjs +10 -10
  23. package/fesm2022/bottom-sheet.mjs +10 -10
  24. package/fesm2022/button-toggle.mjs +10 -10
  25. package/fesm2022/button.mjs +19 -19
  26. package/fesm2022/button.mjs.map +1 -1
  27. package/fesm2022/card.mjs +46 -46
  28. package/fesm2022/checkbox.mjs +9 -9
  29. package/fesm2022/checkbox.mjs.map +1 -1
  30. package/fesm2022/chips.mjs +52 -52
  31. package/fesm2022/chips.mjs.map +1 -1
  32. package/fesm2022/core.mjs +12 -12
  33. package/fesm2022/core.mjs.map +1 -1
  34. package/fesm2022/datepicker.mjs +84 -84
  35. package/fesm2022/datepicker.mjs.map +1 -1
  36. package/fesm2022/dialog.mjs +25 -25
  37. package/fesm2022/divider.mjs +7 -7
  38. package/fesm2022/expansion.mjs +25 -25
  39. package/fesm2022/form-field.mjs +4 -4
  40. package/fesm2022/grid-list.mjs +22 -22
  41. package/fesm2022/icon-testing.mjs +7 -7
  42. package/fesm2022/icon.mjs +7 -7
  43. package/fesm2022/input.mjs +7 -7
  44. package/fesm2022/list.mjs +57 -57
  45. package/fesm2022/list.mjs.map +1 -1
  46. package/fesm2022/menu.mjs +22 -22
  47. package/fesm2022/paginator.mjs +10 -10
  48. package/fesm2022/progress-bar.mjs +7 -7
  49. package/fesm2022/progress-spinner.mjs +7 -7
  50. package/fesm2022/radio.mjs +10 -10
  51. package/fesm2022/select.mjs +10 -10
  52. package/fesm2022/sidenav.mjs +22 -22
  53. package/fesm2022/slide-toggle.mjs +9 -9
  54. package/fesm2022/slide-toggle.mjs.map +1 -1
  55. package/fesm2022/slider.mjs +16 -16
  56. package/fesm2022/snack-bar.mjs +22 -22
  57. package/fesm2022/sort.mjs +13 -13
  58. package/fesm2022/stepper.mjs +33 -33
  59. package/fesm2022/stepper.mjs.map +1 -1
  60. package/fesm2022/table.mjs +55 -55
  61. package/fesm2022/table.mjs.map +1 -1
  62. package/fesm2022/tabs.mjs +43 -43
  63. package/fesm2022/timepicker.mjs +83 -88
  64. package/fesm2022/timepicker.mjs.map +1 -1
  65. package/fesm2022/toolbar.mjs +10 -10
  66. package/fesm2022/tooltip.mjs +4 -4
  67. package/fesm2022/tree.mjs +25 -25
  68. package/fesm2022/tree.mjs.map +1 -1
  69. package/package.json +2 -2
  70. package/schematics/ng-add/index.js +1 -1
  71. package/schematics/ng-add/setup-project.js +1 -39
  72. package/schematics/ng-add/setup-project.js.map +1 -1
  73. package/schematics/ng-add/theming/{create-custom-theme.d.ts → create-theme.d.ts} +2 -2
  74. package/schematics/ng-add/theming/{create-custom-theme.js → create-theme.js} +6 -4
  75. package/schematics/ng-add/theming/create-theme.js.map +1 -0
  76. package/schematics/ng-add/theming/theming.js +15 -15
  77. package/schematics/ng-add/theming/theming.js.map +1 -1
  78. package/types/_tooltip-chunk.d.ts +305 -0
  79. package/types/paginator.d.ts +1 -0
  80. package/types/stepper.d.ts +4 -4
  81. package/types/table.d.ts +4 -2
  82. package/types/timepicker.d.ts +2 -2
  83. package/types/tooltip.d.ts +7 -297
  84. package/schematics/ng-add/theming/create-custom-theme.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"timepicker.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/timepicker/util.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/timepicker/timepicker.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/timepicker/timepicker.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/timepicker/timepicker-input.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/timepicker/timepicker-toggle.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/timepicker/timepicker-toggle.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/timepicker/timepicker-module.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {InjectionToken} from '@angular/core';\nimport {DateAdapter, MatDateFormats} from '../core';\n\n/** Pattern that interval strings have to match. */\nconst INTERVAL_PATTERN = /^(\\d*\\.?\\d+)\\s*(h|hour|hours|m|min|minute|minutes|s|second|seconds)?$/i;\n\n/**\n * Object that can be used to configure the default options for the timepicker component.\n */\nexport interface MatTimepickerConfig {\n /** Default interval for all time pickers. */\n interval?: string | number;\n\n /** Whether ripples inside the timepicker should be disabled by default. */\n disableRipple?: boolean;\n}\n\n/**\n * Injection token that can be used to configure the default options for the timepicker component.\n */\nexport const MAT_TIMEPICKER_CONFIG = new InjectionToken<MatTimepickerConfig>(\n 'MAT_TIMEPICKER_CONFIG',\n);\n\n/**\n * Time selection option that can be displayed within a `mat-timepicker`.\n */\nexport interface MatTimepickerOption<D = unknown> {\n /** Date value of the option. */\n value: D;\n\n /** Label to show to the user. */\n label: string;\n}\n\n/** Parses an interval value into seconds. */\nexport function parseInterval(value: number | string | null): number | null {\n let result: number;\n\n if (value === null) {\n return null;\n } else if (typeof value === 'number') {\n result = value;\n } else {\n if (value.trim().length === 0) {\n return null;\n }\n\n const parsed = value.match(INTERVAL_PATTERN);\n const amount = parsed ? parseFloat(parsed[1]) : null;\n const unit = parsed?.[2]?.toLowerCase() || null;\n\n if (!parsed || amount === null || isNaN(amount)) {\n return null;\n }\n\n if (unit === 'h' || unit === 'hour' || unit === 'hours') {\n result = amount * 3600;\n } else if (unit === 'm' || unit === 'min' || unit === 'minute' || unit === 'minutes') {\n result = amount * 60;\n } else {\n result = amount;\n }\n }\n\n return result;\n}\n\n/**\n * Generates the options to show in a timepicker.\n * @param adapter Date adapter to be used to generate the options.\n * @param formats Formatting config to use when displaying the options.\n * @param min Time from which to start generating the options.\n * @param max Time at which to stop generating the options.\n * @param interval Amount of seconds between each option.\n */\nexport function generateOptions<D>(\n adapter: DateAdapter<D>,\n formats: MatDateFormats,\n min: D,\n max: D,\n interval: number,\n): MatTimepickerOption<D>[] {\n const options: MatTimepickerOption<D>[] = [];\n let current = adapter.compareTime(min, max) < 1 ? min : max;\n\n while (\n adapter.sameDate(current, min) &&\n adapter.compareTime(current, max) < 1 &&\n adapter.isValid(current)\n ) {\n options.push({value: current, label: adapter.format(current, formats.display.timeOptionLabel)});\n current = adapter.addSeconds(current, interval);\n }\n\n return options;\n}\n\n/** Checks whether a date adapter is set up correctly for use with the timepicker. */\nexport function validateAdapter(\n adapter: DateAdapter<unknown> | null,\n formats: MatDateFormats | null,\n) {\n function missingAdapterError(provider: string) {\n return Error(\n `MatTimepicker: No provider found for ${provider}. You must add one of the following ` +\n `to your app config: provideNativeDateAdapter, provideDateFnsAdapter, ` +\n `provideLuxonDateAdapter, provideMomentDateAdapter, or provide a custom implementation.`,\n );\n }\n\n if (!adapter) {\n throw missingAdapterError('DateAdapter');\n }\n\n if (!formats) {\n throw missingAdapterError('MAT_DATE_FORMATS');\n }\n\n if (\n formats.display.timeInput === undefined ||\n formats.display.timeOptionLabel === undefined ||\n formats.parse.timeInput === undefined\n ) {\n throw new Error(\n 'MatTimepicker: Incomplete `MAT_DATE_FORMATS` has been provided. ' +\n '`MAT_DATE_FORMATS` must provide `display.timeInput`, `display.timeOptionLabel` ' +\n 'and `parse.timeInput` formats in order to be compatible with MatTimepicker.',\n );\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n afterNextRender,\n AfterRenderRef,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n InjectionToken,\n Injector,\n input,\n InputSignal,\n InputSignalWithTransform,\n OnDestroy,\n output,\n OutputEmitterRef,\n Signal,\n signal,\n TemplateRef,\n untracked,\n viewChild,\n viewChildren,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n _animationsDisabled,\n DateAdapter,\n MAT_DATE_FORMATS,\n MAT_OPTION_PARENT_COMPONENT,\n MatOption,\n MatOptionParentComponent,\n} from '../core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {\n createFlexibleConnectedPositionStrategy,\n createOverlayRef,\n createRepositionScrollStrategy,\n OverlayRef,\n ScrollStrategy,\n} from '@angular/cdk/overlay';\nimport {TemplatePortal} from '@angular/cdk/portal';\nimport {_getEventTarget} from '@angular/cdk/platform';\nimport {ENTER, ESCAPE, hasModifierKey, TAB} from '@angular/cdk/keycodes';\nimport {_IdGenerator, ActiveDescendantKeyManager} from '@angular/cdk/a11y';\nimport {\n generateOptions,\n MAT_TIMEPICKER_CONFIG,\n MatTimepickerOption,\n parseInterval,\n validateAdapter,\n} from './util';\nimport {Subscription} from 'rxjs';\n\n/** Event emitted when a value is selected in the timepicker. */\nexport interface MatTimepickerSelected<D> {\n value: D;\n source: MatTimepicker<D>;\n}\n\n/** Injection token used to configure the behavior of the timepicker dropdown while scrolling. */\nexport const MAT_TIMEPICKER_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>(\n 'MAT_TIMEPICKER_SCROLL_STRATEGY',\n {\n providedIn: 'root',\n factory: () => {\n const injector = inject(Injector);\n return () => createRepositionScrollStrategy(injector);\n },\n },\n);\n\n/** Represents an input that is connected to a `mat-timepicker`. */\nexport interface MatTimepickerConnectedInput<D> {\n /** Current value of the input. */\n value: Signal<D | null>;\n\n /** Minimum allowed time. */\n min: Signal<D | null>;\n\n /** Maximum allowed time. */\n max: Signal<D | null>;\n\n /** Whether the input is disabled. */\n disabled: Signal<boolean>;\n\n /** Focuses the input. */\n focus(): void;\n\n /** Gets the element to which to connect the timepicker overlay. */\n getOverlayOrigin(): ElementRef<HTMLElement>;\n\n /** Gets the ID of the input's label. */\n getLabelId(): string | null;\n\n /** Callback invoked when the timepicker assigns a value. */\n timepickerValueAssigned(value: D | null): void;\n}\n\n/**\n * Renders out a listbox that can be used to select a time of day.\n * Intended to be used together with `MatTimepickerInput`.\n */\n@Component({\n selector: 'mat-timepicker',\n exportAs: 'matTimepicker',\n templateUrl: 'timepicker.html',\n styleUrl: 'timepicker.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [MatOption],\n providers: [\n {\n provide: MAT_OPTION_PARENT_COMPONENT,\n useExisting: MatTimepicker,\n },\n ],\n})\nexport class MatTimepicker<D> implements OnDestroy, MatOptionParentComponent {\n private _dir = inject(Directionality, {optional: true});\n private _viewContainerRef = inject(ViewContainerRef);\n private _injector = inject(Injector);\n private _defaultConfig = inject(MAT_TIMEPICKER_CONFIG, {optional: true});\n private _dateAdapter = inject<DateAdapter<D>>(DateAdapter, {optional: true})!;\n private _dateFormats = inject(MAT_DATE_FORMATS, {optional: true})!;\n private _scrollStrategyFactory = inject(MAT_TIMEPICKER_SCROLL_STRATEGY);\n protected _animationsDisabled = _animationsDisabled();\n\n private _isOpen = signal(false);\n private _activeDescendant = signal<string | null>(null);\n\n private _input = signal<MatTimepickerConnectedInput<D> | null>(null);\n private _overlayRef: OverlayRef | null = null;\n private _portal: TemplatePortal<unknown> | null = null;\n private _optionsCacheKey: string | null = null;\n private _localeChanges: Subscription;\n private _onOpenRender: AfterRenderRef | null = null;\n\n protected _panelTemplate = viewChild.required<TemplateRef<unknown>>('panelTemplate');\n protected _timeOptions: readonly MatTimepickerOption<D>[] = [];\n protected _options = viewChildren(MatOption);\n\n private _keyManager = new ActiveDescendantKeyManager(this._options, this._injector)\n .withHomeAndEnd(true)\n .withPageUpDown(true)\n .withVerticalOrientation(true);\n\n /**\n * Interval between each option in the timepicker. The value can either be an amount of\n * seconds (e.g. 90) or a number with a unit (e.g. 45m). Supported units are `s` for seconds,\n * `m` for minutes or `h` for hours.\n */\n readonly interval: InputSignalWithTransform<number | null, number | string | null> = input(\n parseInterval(this._defaultConfig?.interval || null),\n {transform: parseInterval},\n );\n\n /**\n * Array of pre-defined options that the user can select from, as an alternative to using the\n * `interval` input. An error will be thrown if both `options` and `interval` are specified.\n */\n readonly options: InputSignal<readonly MatTimepickerOption<D>[] | null> = input<\n readonly MatTimepickerOption<D>[] | null\n >(null);\n\n /** Whether the timepicker is open. */\n readonly isOpen: Signal<boolean> = this._isOpen.asReadonly();\n\n /** Emits when the user selects a time. */\n readonly selected: OutputEmitterRef<MatTimepickerSelected<D>> = output();\n\n /** Emits when the timepicker is opened. */\n readonly opened: OutputEmitterRef<void> = output();\n\n /** Emits when the timepicker is closed. */\n readonly closed: OutputEmitterRef<void> = output();\n\n /** ID of the active descendant option. */\n readonly activeDescendant: Signal<string | null> = this._activeDescendant.asReadonly();\n\n /** Unique ID of the timepicker's panel */\n readonly panelId: string = inject(_IdGenerator).getId('mat-timepicker-panel-');\n\n /** Whether ripples within the timepicker should be disabled. */\n readonly disableRipple: InputSignalWithTransform<boolean, unknown> = input(\n this._defaultConfig?.disableRipple ?? false,\n {\n transform: booleanAttribute,\n },\n );\n\n /** ARIA label for the timepicker panel. */\n readonly ariaLabel: InputSignal<string | null> = input<string | null>(null, {\n alias: 'aria-label',\n });\n\n /** ID of the label element for the timepicker panel. */\n readonly ariaLabelledby: InputSignal<string | null> = input<string | null>(null, {\n alias: 'aria-labelledby',\n });\n\n /** Whether the timepicker is currently disabled. */\n readonly disabled: Signal<boolean> = computed(() => !!this._input()?.disabled());\n\n constructor() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n validateAdapter(this._dateAdapter, this._dateFormats);\n\n effect(() => {\n const options = this.options();\n const interval = this.interval();\n\n if (options !== null && interval !== null) {\n throw new Error(\n 'Cannot specify both the `options` and `interval` inputs at the same time',\n );\n } else if (options?.length === 0) {\n throw new Error('Value of `options` input cannot be an empty array');\n }\n });\n }\n\n // Since the panel ID is static, we can set it once without having to maintain a host binding.\n const element = inject<ElementRef<HTMLElement>>(ElementRef);\n element.nativeElement.setAttribute('mat-timepicker-panel-id', this.panelId);\n this._handleLocaleChanges();\n this._handleInputStateChanges();\n this._keyManager.change.subscribe(() =>\n this._activeDescendant.set(this._keyManager.activeItem?.id || null),\n );\n }\n\n /** Opens the timepicker. */\n open(): void {\n const input = this._input();\n\n if (!input) {\n return;\n }\n\n // Focus should already be on the input, but this call is in case the timepicker is opened\n // programmatically. We need to call this even if the timepicker is already open, because\n // the user might be clicking the toggle.\n input.focus();\n\n if (this._isOpen()) {\n return;\n }\n\n this._isOpen.set(true);\n this._generateOptions();\n const overlayRef = this._getOverlayRef();\n overlayRef.updateSize({width: input.getOverlayOrigin().nativeElement.offsetWidth});\n this._portal ??= new TemplatePortal(this._panelTemplate(), this._viewContainerRef);\n\n // We need to check this in case `isOpen` was flipped, but change detection hasn't\n // had a chance to run yet. See https://github.com/angular/components/issues/30637\n if (!overlayRef.hasAttached()) {\n overlayRef.attach(this._portal);\n }\n\n this._onOpenRender?.destroy();\n this._onOpenRender = afterNextRender(\n () => {\n const options = this._options();\n this._syncSelectedState(input.value(), options, options[0]);\n this._onOpenRender = null;\n },\n {injector: this._injector},\n );\n\n this.opened.emit();\n }\n\n /** Closes the timepicker. */\n close(): void {\n if (this._isOpen()) {\n this._isOpen.set(false);\n this.closed.emit();\n\n if (this._animationsDisabled) {\n this._overlayRef?.detach();\n }\n }\n }\n\n /** Registers an input with the timepicker. */\n registerInput(input: MatTimepickerConnectedInput<D>): void {\n const currentInput = this._input();\n\n if (currentInput && input !== currentInput && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw new Error('MatTimepicker can only be registered with one input at a time');\n }\n\n this._input.set(input);\n }\n\n ngOnDestroy(): void {\n this._keyManager.destroy();\n this._localeChanges.unsubscribe();\n this._onOpenRender?.destroy();\n this._overlayRef?.dispose();\n }\n\n _getOverlayHost() {\n return this._overlayRef?.hostElement;\n }\n\n /** Selects a specific time value. */\n protected _selectValue(option: MatOption<D>) {\n this.close();\n this._keyManager.setActiveItem(option);\n this._options().forEach(current => {\n // This is primarily here so we don't show two selected options while animating away.\n if (current !== option) {\n current.deselect(false);\n }\n });\n // Notify the input first so it can sync up the form control before emitting to `selected`.\n this._input()?.timepickerValueAssigned(option.value);\n this.selected.emit({value: option.value, source: this});\n this._input()?.focus();\n }\n\n /** Gets the value of the `aria-labelledby` attribute. */\n protected _getAriaLabelledby(): string | null {\n if (this.ariaLabel()) {\n return null;\n }\n return this.ariaLabelledby() || this._input()?.getLabelId() || null;\n }\n\n /** Handles animation events coming from the panel. */\n protected _handleAnimationEnd(event: AnimationEvent) {\n if (event.animationName === '_mat-timepicker-exit') {\n this._overlayRef?.detach();\n }\n }\n\n /** Creates an overlay reference for the timepicker panel. */\n private _getOverlayRef(): OverlayRef {\n if (this._overlayRef) {\n return this._overlayRef;\n }\n\n const positionStrategy = createFlexibleConnectedPositionStrategy(\n this._injector,\n this._input()!.getOverlayOrigin(),\n )\n .withFlexibleDimensions(false)\n .withPush(false)\n .withTransformOriginOn('.mat-timepicker-panel')\n .withPopoverLocation('inline')\n .withPositions([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n panelClass: 'mat-timepicker-above',\n },\n ]);\n\n this._overlayRef = createOverlayRef(this._injector, {\n positionStrategy,\n scrollStrategy: this._scrollStrategyFactory(),\n direction: this._dir || 'ltr',\n hasBackdrop: false,\n disableAnimations: this._animationsDisabled,\n });\n\n this._overlayRef.detachments().subscribe(() => this.close());\n this._overlayRef.keydownEvents().subscribe(event => this._handleKeydown(event));\n this._overlayRef.outsidePointerEvents().subscribe(event => {\n const target = _getEventTarget(event) as HTMLElement;\n const origin = this._input()?.getOverlayOrigin().nativeElement;\n\n if (target && origin && target !== origin && !origin.contains(target)) {\n this.close();\n }\n });\n\n return this._overlayRef;\n }\n\n /** Generates the list of options from which the user can select.. */\n private _generateOptions(): void {\n // Default the interval to 30 minutes.\n const interval = this.interval() ?? 30 * 60;\n const options = this.options();\n\n if (options !== null) {\n this._timeOptions = options;\n } else {\n const input = this._input();\n const adapter = this._dateAdapter;\n const timeFormat = this._dateFormats.display.timeInput;\n const min = input?.min() || adapter.setTime(adapter.today(), 0, 0, 0);\n const max = input?.max() || adapter.setTime(adapter.today(), 23, 59, 0);\n const cacheKey =\n interval + '/' + adapter.format(min, timeFormat) + '/' + adapter.format(max, timeFormat);\n\n // Don't re-generate the options if the inputs haven't changed.\n if (cacheKey !== this._optionsCacheKey) {\n this._optionsCacheKey = cacheKey;\n this._timeOptions = generateOptions(adapter, this._dateFormats, min, max, interval);\n }\n }\n }\n\n /**\n * Synchronizes the internal state of the component based on a specific selected date.\n * @param value Currently selected date.\n * @param options Options rendered out in the timepicker.\n * @param fallback Option to set as active if no option is selected.\n */\n private _syncSelectedState(\n value: D | null,\n options: readonly MatOption[],\n fallback: MatOption | null,\n ): void {\n let hasSelected = false;\n\n for (const option of options) {\n if (value && this._dateAdapter.sameTime(option.value, value)) {\n option.select(false);\n scrollOptionIntoView(option, 'center');\n untracked(() => this._keyManager.setActiveItem(option));\n hasSelected = true;\n } else {\n option.deselect(false);\n }\n }\n\n // If no option was selected, we need to reset the key manager since\n // it might be holding onto an option that no longer exists.\n if (!hasSelected) {\n if (fallback) {\n untracked(() => this._keyManager.setActiveItem(fallback));\n scrollOptionIntoView(fallback, 'center');\n } else {\n untracked(() => this._keyManager.setActiveItem(-1));\n }\n }\n }\n\n /** Handles keyboard events while the overlay is open. */\n private _handleKeydown(event: KeyboardEvent): void {\n const keyCode = event.keyCode;\n\n if (keyCode === TAB) {\n this.close();\n } else if (keyCode === ESCAPE && !hasModifierKey(event)) {\n event.preventDefault();\n this.close();\n } else if (keyCode === ENTER) {\n event.preventDefault();\n\n if (this._keyManager.activeItem) {\n this._selectValue(this._keyManager.activeItem);\n } else {\n this.close();\n }\n } else {\n const previousActive = this._keyManager.activeItem;\n this._keyManager.onKeydown(event);\n const currentActive = this._keyManager.activeItem;\n\n if (currentActive && currentActive !== previousActive) {\n scrollOptionIntoView(currentActive, 'nearest');\n }\n }\n }\n\n /** Sets up the logic that updates the timepicker when the locale changes. */\n private _handleLocaleChanges(): void {\n // Re-generate the options list if the locale changes.\n this._localeChanges = this._dateAdapter.localeChanges.subscribe(() => {\n this._optionsCacheKey = null;\n\n if (this.isOpen()) {\n this._generateOptions();\n }\n });\n }\n\n /**\n * Sets up the logic that updates the timepicker when the state of the connected input changes.\n */\n private _handleInputStateChanges(): void {\n effect(() => {\n const input = this._input();\n const options = this._options();\n\n if (this._isOpen() && input) {\n this._syncSelectedState(input.value(), options, null);\n }\n });\n }\n}\n\n/**\n * Scrolls an option into view.\n * @param option Option to be scrolled into view.\n * @param position Position to which to align the option relative to the scrollable container.\n */\nfunction scrollOptionIntoView(option: MatOption, position: ScrollLogicalPosition) {\n option._getHostElement().scrollIntoView({block: position, inline: position});\n}\n","<ng-template #panelTemplate>\n <div\n role=\"listbox\"\n class=\"mat-timepicker-panel\"\n [class.mat-timepicker-panel-animations-enabled]=\"!_animationsDisabled\"\n [class.mat-timepicker-panel-exit]=\"!isOpen()\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-labelledby]=\"_getAriaLabelledby()\"\n [id]=\"panelId\"\n (animationend)=\"_handleAnimationEnd($event)\">\n @for (option of _timeOptions; track option.value) {\n <mat-option\n [value]=\"option.value\"\n (onSelectionChange)=\"_selectValue($event.source)\">{{option.label}}</mat-option>\n }\n </div>\n</ng-template>\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n booleanAttribute,\n computed,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n InputSignal,\n InputSignalWithTransform,\n model,\n ModelSignal,\n OnDestroy,\n OutputRefSubscription,\n Renderer2,\n Signal,\n signal,\n} from '@angular/core';\nimport {DateAdapter, MAT_DATE_FORMATS} from '../core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n ValidatorFn,\n Validators,\n} from '@angular/forms';\nimport {MAT_FORM_FIELD} from '../form-field';\nimport {MatTimepicker, MatTimepickerConnectedInput} from './timepicker';\nimport {MAT_INPUT_VALUE_ACCESSOR} from '../input';\nimport {Subscription} from 'rxjs';\nimport {DOWN_ARROW, ESCAPE, hasModifierKey, UP_ARROW} from '@angular/cdk/keycodes';\nimport {validateAdapter} from './util';\nimport {_getEventTarget, _getFocusedElementPierceShadowDom} from '@angular/cdk/platform';\n\n/**\n * Input that can be used to enter time and connect to a `mat-timepicker`.\n */\n@Directive({\n selector: 'input[matTimepicker]',\n exportAs: 'matTimepickerInput',\n host: {\n 'class': 'mat-timepicker-input',\n 'role': 'combobox',\n 'type': 'text',\n 'aria-haspopup': 'listbox',\n '[attr.aria-activedescendant]': '_ariaActiveDescendant()',\n '[attr.aria-expanded]': '_ariaExpanded()',\n '[attr.aria-controls]': '_ariaControls()',\n '[attr.mat-timepicker-id]': 'timepicker()?.panelId',\n '[disabled]': 'disabled()',\n '(blur)': '_handleBlur()',\n '(input)': '_handleInput($event)',\n '(keydown)': '_handleKeydown($event)',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: MatTimepickerInput,\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: MatTimepickerInput,\n multi: true,\n },\n {\n provide: MAT_INPUT_VALUE_ACCESSOR,\n useExisting: MatTimepickerInput,\n },\n ],\n})\nexport class MatTimepickerInput<D>\n implements MatTimepickerConnectedInput<D>, ControlValueAccessor, Validator, OnDestroy\n{\n private _elementRef = inject<ElementRef<HTMLInputElement>>(ElementRef);\n private _dateAdapter = inject<DateAdapter<D>>(DateAdapter, {optional: true})!;\n private _dateFormats = inject(MAT_DATE_FORMATS, {optional: true})!;\n private _formField = inject(MAT_FORM_FIELD, {optional: true});\n\n private _onChange: ((value: any) => void) | undefined;\n private _onTouched: (() => void) | undefined;\n private _validatorOnChange: (() => void) | undefined;\n private _cleanupClick: () => void;\n private _accessorDisabled = signal(false);\n private _localeSubscription: Subscription;\n private _timepickerSubscription: OutputRefSubscription | undefined;\n private _validator: ValidatorFn;\n private _lastValueValid = true;\n private _minValid = true;\n private _maxValid = true;\n private _lastValidDate: D | null = null;\n\n /** Value of the `aria-activedescendant` attribute. */\n protected readonly _ariaActiveDescendant = computed(() => {\n const timepicker = this.timepicker();\n const isOpen = timepicker.isOpen();\n const activeDescendant = timepicker.activeDescendant();\n return isOpen && activeDescendant ? activeDescendant : null;\n });\n\n /** Value of the `aria-expanded` attribute. */\n protected readonly _ariaExpanded = computed(() => this.timepicker().isOpen() + '');\n\n /** Value of the `aria-controls` attribute. */\n protected readonly _ariaControls = computed(() => {\n const timepicker = this.timepicker();\n return timepicker.isOpen() ? timepicker.panelId : null;\n });\n\n /** Current value of the input. */\n readonly value: ModelSignal<D | null> = model<D | null>(null);\n\n /** Timepicker that the input is associated with. */\n readonly timepicker: InputSignal<MatTimepicker<D>> = input.required<MatTimepicker<D>>({\n alias: 'matTimepicker',\n });\n\n /**\n * Minimum time that can be selected or typed in. Can be either\n * a date object (only time will be used) or a valid time string.\n */\n readonly min: InputSignalWithTransform<D | null, unknown> = input(null, {\n alias: 'matTimepickerMin',\n transform: (value: unknown) => this._transformDateInput<D>(value),\n });\n\n /**\n * Maximum time that can be selected or typed in. Can be either\n * a date object (only time will be used) or a valid time string.\n */\n readonly max: InputSignalWithTransform<D | null, unknown> = input(null, {\n alias: 'matTimepickerMax',\n transform: (value: unknown) => this._transformDateInput<D>(value),\n });\n\n /**\n * Whether to open the timepicker overlay when clicking on the input. Enabled by default.\n * Note that when disabling this option, you'll have to provide your own logic for opening\n * the overlay.\n */\n readonly openOnClick: InputSignalWithTransform<boolean, unknown> = input(true, {\n alias: 'matTimepickerOpenOnClick',\n transform: booleanAttribute,\n });\n\n /** Whether the input is disabled. */\n readonly disabled: Signal<boolean> = computed(\n () => this.disabledInput() || this._accessorDisabled(),\n );\n\n /**\n * Whether the input should be disabled through the template.\n * @docs-private\n */\n readonly disabledInput: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n alias: 'disabled',\n });\n\n constructor() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n validateAdapter(this._dateAdapter, this._dateFormats);\n }\n\n const renderer = inject(Renderer2);\n this._validator = this._getValidator();\n this._updateFormsState();\n this._registerTimepicker();\n this._localeSubscription = this._dateAdapter.localeChanges.subscribe(() => {\n if (!this._hasFocus()) {\n this._formatValue(this.value());\n }\n });\n\n // Bind the click listener manually to the overlay origin, because we want the entire\n // form field to be clickable, if the timepicker is used in `mat-form-field`.\n this._cleanupClick = renderer.listen(\n this.getOverlayOrigin().nativeElement,\n 'click',\n this._handleClick,\n );\n }\n\n /**\n * Implemented as a part of `ControlValueAccessor`.\n * @docs-private\n */\n writeValue(value: any): void {\n // Note that we need to deserialize here, rather than depend on the value change effect,\n // because `getValidDateOrNull` will clobber the value if it's parseable, but not created by\n // the current adapter (see #30140).\n const deserialized = this._dateAdapter.deserialize(value);\n this.value.set(this._dateAdapter.getValidDateOrNull(deserialized));\n }\n\n /**\n * Implemented as a part of `ControlValueAccessor`.\n * @docs-private\n */\n registerOnChange(fn: (value: any) => void): void {\n this._onChange = fn;\n }\n\n /**\n * Implemented as a part of `ControlValueAccessor`.\n * @docs-private\n */\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n /**\n * Implemented as a part of `ControlValueAccessor`.\n * @docs-private\n */\n setDisabledState(isDisabled: boolean): void {\n this._accessorDisabled.set(isDisabled);\n }\n\n /**\n * Implemented as a part of `Validator`.\n * @docs-private\n */\n validate(control: AbstractControl): ValidationErrors | null {\n return this._validator(control);\n }\n\n /**\n * Implemented as a part of `Validator`.\n * @docs-private\n */\n registerOnValidatorChange(fn: () => void): void {\n this._validatorOnChange = fn;\n }\n\n /** Gets the element to which the timepicker popup should be attached. */\n getOverlayOrigin(): ElementRef<HTMLElement> {\n return this._formField?.getConnectedOverlayOrigin() || this._elementRef;\n }\n\n /** Focuses the input. */\n focus(): void {\n this._elementRef.nativeElement.focus();\n }\n\n ngOnDestroy(): void {\n this._cleanupClick();\n this._timepickerSubscription?.unsubscribe();\n this._localeSubscription.unsubscribe();\n }\n\n /** Gets the ID of the input's label. */\n getLabelId(): string | null {\n return this._formField?.getLabelId() || null;\n }\n\n /** Handles clicks on the input or the containing form field. */\n private _handleClick = (event: MouseEvent): void => {\n if (this.disabled() || !this.openOnClick()) {\n return;\n }\n\n const target = _getEventTarget(event) as Node | null;\n const overlayHost = this.timepicker()._getOverlayHost();\n\n if (!target || !overlayHost || !overlayHost.contains(target)) {\n this.timepicker().open();\n }\n };\n\n /** Handles the `input` event. */\n protected _handleInput(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n const currentValue = this.value();\n const date = this._dateAdapter.parseTime(value, this._dateFormats.parse.timeInput);\n const hasChanged = !this._dateAdapter.sameTime(date, currentValue);\n\n if (!date || hasChanged || !!(value && !currentValue)) {\n // We need to fire the CVA change event for all nulls, otherwise the validators won't run.\n this._assignUserSelection(date, true);\n } else {\n // Call the validator even if the value hasn't changed since\n // some fields change depending on what the user has entered.\n this._validatorOnChange?.();\n }\n }\n\n /** Handles the `blur` event. */\n protected _handleBlur() {\n const value = this.value();\n\n // Only reformat on blur so the value doesn't change while the user is interacting.\n if (value && this._isValid(value)) {\n this._formatValue(value);\n }\n\n if (!this.timepicker().isOpen()) {\n this._onTouched?.();\n }\n }\n\n /** Handles the `keydown` event. */\n protected _handleKeydown(event: KeyboardEvent) {\n // All keyboard events while open are handled through the timepicker.\n if (this.timepicker().isOpen() || this.disabled()) {\n return;\n }\n\n if (event.keyCode === ESCAPE && !hasModifierKey(event) && this.value() !== null) {\n event.preventDefault();\n this.value.set(null);\n this._formatValue(null);\n } else if (event.keyCode === DOWN_ARROW || event.keyCode === UP_ARROW) {\n event.preventDefault();\n this.timepicker().open();\n }\n }\n\n /** Called by the timepicker to sync up the user-selected value. */\n timepickerValueAssigned(value: D | null) {\n if (!this._dateAdapter.sameTime(value, this.value())) {\n this._assignUserSelection(value, true);\n this._formatValue(value);\n }\n }\n\n /** Sets up the code that keeps the input state in sync with the forms module. */\n private _updateFormsState(): void {\n effect(() => {\n const {\n _dateAdapter: adapter,\n _lastValueValid: prevValueValid,\n _minValid: prevMinValid,\n _maxValid: prevMaxValid,\n } = this;\n const value = adapter.deserialize(this.value());\n const min = this.min();\n const max = this.max();\n const valueValid = (this._lastValueValid = this._isValid(value));\n this._minValid = !min || !value || !valueValid || adapter.compareTime(min, value) <= 0;\n this._maxValid = !max || !value || !valueValid || adapter.compareTime(max, value) >= 0;\n const stateChanged =\n prevValueValid !== valueValid ||\n prevMinValid !== this._minValid ||\n prevMaxValid !== this._maxValid;\n\n // Reformat the value if it changes while the user isn't interacting.\n if (!this._hasFocus()) {\n this._formatValue(value);\n }\n\n if (value && valueValid) {\n this._lastValidDate = value;\n }\n\n // Trigger the validator if the state changed.\n if (stateChanged) {\n this._validatorOnChange?.();\n }\n });\n }\n\n /** Sets up the logic that registers the input with the timepicker. */\n private _registerTimepicker(): void {\n effect(() => {\n const timepicker = this.timepicker();\n timepicker.registerInput(this);\n timepicker.closed.subscribe(() => this._onTouched?.());\n });\n }\n\n /**\n * Assigns a value set by the user to the input's model.\n * @param selection Time selected by the user that should be assigned.\n * @param propagateToAccessor Whether the value should be propagated to the ControlValueAccessor.\n */\n private _assignUserSelection(selection: D | null, propagateToAccessor: boolean) {\n let toAssign: D | null;\n\n if (selection == null || !this._isValid(selection)) {\n toAssign = selection;\n } else {\n // If a datepicker and timepicker are writing to the same object and the user enters an\n // invalid time into the timepicker, we may end up clearing their selection from the\n // datepicker. If the user enters a valid time afterwards, the datepicker's selection will\n // have been lost. This logic restores the previously-valid date and sets its time to\n // the newly-selected time.\n const adapter = this._dateAdapter;\n const target = adapter.getValidDateOrNull(this._lastValidDate || this.value());\n const hours = adapter.getHours(selection);\n const minutes = adapter.getMinutes(selection);\n const seconds = adapter.getSeconds(selection);\n toAssign = target ? adapter.setTime(target, hours, minutes, seconds) : selection;\n }\n\n // Propagate to the form control before emitting to `valueChange`.\n if (propagateToAccessor) {\n this._onChange?.(toAssign);\n }\n\n this.value.set(toAssign);\n }\n\n /** Formats the current value and assigns it to the input. */\n private _formatValue(value: D | null): void {\n value = this._dateAdapter.getValidDateOrNull(value);\n this._elementRef.nativeElement.value =\n value == null ? '' : this._dateAdapter.format(value, this._dateFormats.display.timeInput);\n }\n\n /** Checks whether a value is valid. */\n private _isValid(value: D | null): boolean {\n return !value || this._dateAdapter.isValid(value);\n }\n\n /** Transforms an arbitrary value into a value that can be assigned to a date-based input. */\n private _transformDateInput<D>(value: unknown): D | null {\n const date =\n typeof value === 'string'\n ? this._dateAdapter.parseTime(value, this._dateFormats.parse.timeInput)\n : this._dateAdapter.deserialize(value);\n return date && this._dateAdapter.isValid(date) ? (date as D) : null;\n }\n\n /** Whether the input is currently focused. */\n private _hasFocus(): boolean {\n return _getFocusedElementPierceShadowDom() === this._elementRef.nativeElement;\n }\n\n /** Gets a function that can be used to validate the input. */\n private _getValidator(): ValidatorFn {\n return Validators.compose([\n () =>\n this._lastValueValid\n ? null\n : {'matTimepickerParse': {'text': this._elementRef.nativeElement.value}},\n control =>\n this._minValid\n ? null\n : {\n 'matTimepickerMin': {\n 'min': this.min(),\n 'actual': this._dateAdapter.getValidDateOrNull(\n this._dateAdapter.deserialize(control.value),\n ),\n },\n },\n control =>\n this._maxValid\n ? null\n : {\n 'matTimepickerMax': {\n 'max': this.max(),\n 'actual': this._dateAdapter.getValidDateOrNull(\n this._dateAdapter.deserialize(control.value),\n ),\n },\n },\n ])!;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n HostAttributeToken,\n inject,\n input,\n InputSignal,\n InputSignalWithTransform,\n ViewEncapsulation,\n} from '@angular/core';\nimport {MatIconButton} from '../button';\nimport {MAT_TIMEPICKER_CONFIG} from './util';\nimport type {MatTimepicker} from './timepicker';\n\n/** Button that can be used to open a `mat-timepicker`. */\n@Component({\n selector: 'mat-timepicker-toggle',\n templateUrl: 'timepicker-toggle.html',\n host: {\n 'class': 'mat-timepicker-toggle',\n '[attr.tabindex]': 'null',\n // Bind the `click` on the host, rather than the inner `button`, so that we can call\n // `stopPropagation` on it without affecting the user's `click` handlers. We need to stop\n // it so that the input doesn't get focused automatically by the form field (See #21836).\n '(click)': '_open($event)',\n },\n exportAs: 'matTimepickerToggle',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatIconButton],\n})\nexport class MatTimepickerToggle<D> {\n private _defaultConfig = inject(MAT_TIMEPICKER_CONFIG, {optional: true});\n private _defaultTabIndex = (() => {\n const value = inject(new HostAttributeToken('tabindex'), {optional: true});\n const parsed = Number(value);\n return isNaN(parsed) ? null : parsed;\n })();\n\n protected _isDisabled = computed(() => {\n const timepicker = this.timepicker();\n return this.disabled() || timepicker.disabled();\n });\n\n /** Timepicker instance that the button will toggle. */\n readonly timepicker: InputSignal<MatTimepicker<D>> = input.required<MatTimepicker<D>>({\n alias: 'for',\n });\n\n /** Screen-reader label for the button. */\n readonly ariaLabel = input<string | undefined>(undefined, {\n alias: 'aria-label',\n });\n\n /** Screen-reader labelled by id for the button. */\n readonly ariaLabelledby = input<string | undefined>(undefined, {\n alias: 'aria-labelledby',\n });\n\n /** Default aria-label for the toggle if none is provided. */\n private readonly _defaultAriaLabel = 'Open timepicker options';\n\n /** Whether the toggle button is disabled. */\n readonly disabled: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n alias: 'disabled',\n });\n\n /** Tabindex for the toggle. */\n readonly tabIndex: InputSignal<number | null> = input(this._defaultTabIndex);\n\n /** Whether ripples on the toggle should be disabled. */\n readonly disableRipple: InputSignalWithTransform<boolean, unknown> = input(\n this._defaultConfig?.disableRipple ?? false,\n {transform: booleanAttribute},\n );\n\n /** Opens the connected timepicker. */\n protected _open(event: Event): void {\n if (this.timepicker() && !this._isDisabled()) {\n this.timepicker().open();\n event.stopPropagation();\n }\n }\n\n /**\n * Checks for ariaLabelledby and if empty uses custom\n * aria-label or defaultAriaLabel if neither is provided.\n */\n getAriaLabel(): string | null {\n return this.ariaLabelledby() ? null : this.ariaLabel() || this._defaultAriaLabel;\n }\n}\n","<button\n matIconButton\n type=\"button\"\n aria-haspopup=\"listbox\"\n [attr.aria-label]=\"getAriaLabel()\"\n [attr.aria-labelledby]=\"ariaLabelledby()\"\n [attr.aria-expanded]=\"timepicker().isOpen()\"\n [tabIndex]=\"_isDisabled() ? -1 : tabIndex()\"\n [disabled]=\"_isDisabled()\"\n [disableRipple]=\"disableRipple()\">\n\n <ng-content select=\"[matTimepickerToggleIcon]\">\n <svg\n class=\"mat-timepicker-toggle-default-icon\"\n height=\"24px\"\n width=\"24px\"\n viewBox=\"0 -960 960 960\"\n fill=\"currentColor\"\n focusable=\"false\"\n aria-hidden=\"true\">\n <path d=\"m612-292 56-56-148-148v-184h-80v216l172 172ZM480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-400Zm0 320q133 0 226.5-93.5T800-480q0-133-93.5-226.5T480-800q-133 0-226.5 93.5T160-480q0 133 93.5 226.5T480-160Z\"/>\n </svg>\n </ng-content>\n</button>\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {NgModule} from '@angular/core';\nimport {CdkScrollableModule} from '@angular/cdk/scrolling';\nimport {MatTimepicker} from './timepicker';\nimport {MatTimepickerInput} from './timepicker-input';\nimport {MatTimepickerToggle} from './timepicker-toggle';\n\n@NgModule({\n imports: [MatTimepicker, MatTimepickerInput, MatTimepickerToggle],\n exports: [CdkScrollableModule, MatTimepicker, MatTimepickerInput, MatTimepickerToggle],\n})\nexport class MatTimepickerModule {}\n"],"names":["INTERVAL_PATTERN","MAT_TIMEPICKER_CONFIG","InjectionToken","parseInterval","value","result","trim","length","parsed","match","amount","parseFloat","unit","toLowerCase","isNaN","generateOptions","adapter","formats","min","max","interval","options","current","compareTime","sameDate","isValid","push","label","format","display","timeOptionLabel","addSeconds","validateAdapter","missingAdapterError","provider","Error","timeInput","undefined","parse","MAT_TIMEPICKER_SCROLL_STRATEGY","providedIn","factory","injector","inject","Injector","createRepositionScrollStrategy","MatTimepicker","_dir","Directionality","optional","_viewContainerRef","ViewContainerRef","_injector","_defaultConfig","_dateAdapter","DateAdapter","_dateFormats","MAT_DATE_FORMATS","_scrollStrategyFactory","_animationsDisabled","_isOpen","signal","_activeDescendant","_input","_overlayRef","_portal","_optionsCacheKey","_localeChanges","_onOpenRender","_panelTemplate","viewChild","required","_timeOptions","_options","viewChildren","MatOption","_keyManager","ActiveDescendantKeyManager","withHomeAndEnd","withPageUpDown","withVerticalOrientation","input","ngDevMode","debugName","transform","isOpen","asReadonly","selected","output","opened","closed","activeDescendant","panelId","_IdGenerator","getId","disableRipple","booleanAttribute","ariaLabel","alias","ariaLabelledby","disabled","computed","constructor","effect","element","ElementRef","nativeElement","setAttribute","_handleLocaleChanges","_handleInputStateChanges","change","subscribe","set","activeItem","id","open","focus","_generateOptions","overlayRef","_getOverlayRef","updateSize","width","getOverlayOrigin","offsetWidth","TemplatePortal","hasAttached","attach","destroy","afterNextRender","_syncSelectedState","emit","close","detach","registerInput","currentInput","ngOnDestroy","unsubscribe","dispose","_getOverlayHost","hostElement","_selectValue","option","setActiveItem","forEach","deselect","timepickerValueAssigned","source","_getAriaLabelledby","getLabelId","_handleAnimationEnd","event","animationName","positionStrategy","createFlexibleConnectedPositionStrategy","withFlexibleDimensions","withPush","withTransformOriginOn","withPopoverLocation","withPositions","originX","originY","overlayX","overlayY","panelClass","createOverlayRef","scrollStrategy","direction","hasBackdrop","disableAnimations","detachments","keydownEvents","_handleKeydown","outsidePointerEvents","target","_getEventTarget","origin","contains","timeFormat","setTime","today","cacheKey","fallback","hasSelected","sameTime","select","scrollOptionIntoView","untracked","keyCode","TAB","ESCAPE","hasModifierKey","preventDefault","ENTER","previousActive","onKeydown","currentActive","localeChanges","deps","i0","ɵɵFactoryTarget","Component","ɵcmp","ɵɵngDeclareComponent","minVersion","version","type","isStandalone","selector","inputs","classPropertyName","publicName","isSignal","isRequired","transformFunction","outputs","providers","provide","MAT_OPTION_PARENT_COMPONENT","useExisting","viewQueries","propertyName","first","predicate","descendants","exportAs","ngImport","template","styles","dependencies","kind","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","decorators","args","imports","ctorParameters","propDecorators","ViewChild","Input","Output","position","_getHostElement","scrollIntoView","block","inline","MatTimepickerInput","_elementRef","_formField","MAT_FORM_FIELD","_onChange","_onTouched","_validatorOnChange","_cleanupClick","_accessorDisabled","_localeSubscription","_timepickerSubscription","_validator","_lastValueValid","_minValid","_maxValid","_lastValidDate","_ariaActiveDescendant","timepicker","_ariaExpanded","_ariaControls","model","_transformDateInput","openOnClick","disabledInput","renderer","Renderer2","_getValidator","_updateFormsState","_registerTimepicker","_hasFocus","_formatValue","listen","_handleClick","writeValue","deserialized","deserialize","getValidDateOrNull","registerOnChange","fn","registerOnTouched","setDisabledState","isDisabled","validate","control","registerOnValidatorChange","getConnectedOverlayOrigin","overlayHost","_handleInput","currentValue","date","parseTime","hasChanged","_assignUserSelection","_handleBlur","_isValid","DOWN_ARROW","UP_ARROW","prevValueValid","prevMinValid","prevMaxValid","valueValid","stateChanged","selection","propagateToAccessor","toAssign","hours","getHours","minutes","getMinutes","seconds","getSeconds","_getFocusedElementPierceShadowDom","Validators","compose","Directive","ɵdir","ɵɵngDeclareDirective","host","attributes","listeners","properties","classAttribute","NG_VALUE_ACCESSOR","multi","NG_VALIDATORS","MAT_INPUT_VALUE_ACCESSOR","MatTimepickerToggle","_defaultTabIndex","HostAttributeToken","Number","_isDisabled","_defaultAriaLabel","tabIndex","_open","stopPropagation","getAriaLabel","MatIconButton","MatTimepickerModule","NgModule","ɵmod","ɵɵngDeclareNgModule","exports","CdkScrollableModule","ɵinj","ɵɵngDeclareInjector"],"mappings":"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"}
1
+ {"version":3,"file":"timepicker.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/timepicker/util.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/timepicker/timepicker.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/timepicker/timepicker.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/timepicker/timepicker-input.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/timepicker/timepicker-toggle.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/timepicker/timepicker-toggle.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/timepicker/timepicker-module.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {InjectionToken} from '@angular/core';\nimport {DateAdapter, MatDateFormats} from '../core';\n\n/** Pattern that interval strings have to match. */\nconst INTERVAL_PATTERN = /^(\\d*\\.?\\d+)\\s*(h|hour|hours|m|min|minute|minutes|s|second|seconds)?$/i;\n\n/**\n * Object that can be used to configure the default options for the timepicker component.\n */\nexport interface MatTimepickerConfig {\n /** Default interval for all time pickers. */\n interval?: string | number;\n\n /** Whether ripples inside the timepicker should be disabled by default. */\n disableRipple?: boolean;\n}\n\n/**\n * Injection token that can be used to configure the default options for the timepicker component.\n */\nexport const MAT_TIMEPICKER_CONFIG = new InjectionToken<MatTimepickerConfig>(\n 'MAT_TIMEPICKER_CONFIG',\n);\n\n/**\n * Time selection option that can be displayed within a `mat-timepicker`.\n */\nexport interface MatTimepickerOption<D = unknown> {\n /** Date value of the option. */\n value: D;\n\n /** Label to show to the user. */\n label: string;\n}\n\n/** Parses an interval value into seconds. */\nexport function parseInterval(value: number | string | null): number | null {\n let result: number;\n\n if (value === null) {\n return null;\n } else if (typeof value === 'number') {\n result = value;\n } else {\n if (value.trim().length === 0) {\n return null;\n }\n\n const parsed = value.match(INTERVAL_PATTERN);\n const amount = parsed ? parseFloat(parsed[1]) : null;\n const unit = parsed?.[2]?.toLowerCase() || null;\n\n if (!parsed || amount === null || isNaN(amount)) {\n return null;\n }\n\n if (unit === 'h' || unit === 'hour' || unit === 'hours') {\n result = amount * 3600;\n } else if (unit === 'm' || unit === 'min' || unit === 'minute' || unit === 'minutes') {\n result = amount * 60;\n } else {\n result = amount;\n }\n }\n\n return result;\n}\n\n/**\n * Generates the options to show in a timepicker.\n * @param adapter Date adapter to be used to generate the options.\n * @param formats Formatting config to use when displaying the options.\n * @param min Time from which to start generating the options.\n * @param max Time at which to stop generating the options.\n * @param interval Amount of seconds between each option.\n */\nexport function generateOptions<D>(\n adapter: DateAdapter<D>,\n formats: MatDateFormats,\n min: D,\n max: D,\n interval: number,\n): MatTimepickerOption<D>[] {\n const options: MatTimepickerOption<D>[] = [];\n let current = adapter.compareTime(min, max) < 1 ? min : max;\n\n while (\n adapter.sameDate(current, min) &&\n adapter.compareTime(current, max) < 1 &&\n adapter.isValid(current)\n ) {\n options.push({value: current, label: adapter.format(current, formats.display.timeOptionLabel)});\n current = adapter.addSeconds(current, interval);\n }\n\n return options;\n}\n\n/** Checks whether a date adapter is set up correctly for use with the timepicker. */\nexport function validateAdapter(\n adapter: DateAdapter<unknown> | null,\n formats: MatDateFormats | null,\n) {\n function missingAdapterError(provider: string) {\n return Error(\n `MatTimepicker: No provider found for ${provider}. You must add one of the following ` +\n `to your app config: provideNativeDateAdapter, provideDateFnsAdapter, ` +\n `provideLuxonDateAdapter, provideMomentDateAdapter, or provide a custom implementation.`,\n );\n }\n\n if (!adapter) {\n throw missingAdapterError('DateAdapter');\n }\n\n if (!formats) {\n throw missingAdapterError('MAT_DATE_FORMATS');\n }\n\n if (\n formats.display.timeInput === undefined ||\n formats.display.timeOptionLabel === undefined ||\n formats.parse.timeInput === undefined\n ) {\n throw new Error(\n 'MatTimepicker: Incomplete `MAT_DATE_FORMATS` has been provided. ' +\n '`MAT_DATE_FORMATS` must provide `display.timeInput`, `display.timeOptionLabel` ' +\n 'and `parse.timeInput` formats in order to be compatible with MatTimepicker.',\n );\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n afterNextRender,\n AfterRenderRef,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n InjectionToken,\n Injector,\n input,\n InputSignal,\n InputSignalWithTransform,\n OnDestroy,\n output,\n OutputEmitterRef,\n Signal,\n signal,\n TemplateRef,\n untracked,\n viewChild,\n viewChildren,\n ViewContainerRef,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n _animationsDisabled,\n DateAdapter,\n MAT_DATE_FORMATS,\n MAT_OPTION_PARENT_COMPONENT,\n MatOption,\n MatOptionParentComponent,\n} from '../core';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {\n createFlexibleConnectedPositionStrategy,\n createOverlayRef,\n createRepositionScrollStrategy,\n OverlayRef,\n ScrollStrategy,\n} from '@angular/cdk/overlay';\nimport {TemplatePortal} from '@angular/cdk/portal';\nimport {_getEventTarget} from '@angular/cdk/platform';\nimport {ENTER, ESCAPE, hasModifierKey, TAB} from '@angular/cdk/keycodes';\nimport {_IdGenerator, ActiveDescendantKeyManager} from '@angular/cdk/a11y';\nimport {\n generateOptions,\n MAT_TIMEPICKER_CONFIG,\n MatTimepickerOption,\n parseInterval,\n validateAdapter,\n} from './util';\nimport {Subscription} from 'rxjs';\n\n/** Event emitted when a value is selected in the timepicker. */\nexport interface MatTimepickerSelected<D> {\n value: D;\n source: MatTimepicker<D>;\n}\n\n/** Injection token used to configure the behavior of the timepicker dropdown while scrolling. */\nexport const MAT_TIMEPICKER_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>(\n 'MAT_TIMEPICKER_SCROLL_STRATEGY',\n {\n providedIn: 'root',\n factory: () => {\n const injector = inject(Injector);\n return () => createRepositionScrollStrategy(injector);\n },\n },\n);\n\n/** Represents an input that is connected to a `mat-timepicker`. */\nexport interface MatTimepickerConnectedInput<D> {\n /** Current value of the input. */\n value: Signal<D | null>;\n\n /** Minimum allowed time. */\n min: Signal<D | null>;\n\n /** Maximum allowed time. */\n max: Signal<D | null>;\n\n /** Whether the input is disabled. */\n disabled: Signal<boolean>;\n\n /** Focuses the input. */\n focus(): void;\n\n /** Gets the element to which to connect the timepicker overlay. */\n getOverlayOrigin(): ElementRef<HTMLElement>;\n\n /** Gets the ID of the input's label. */\n getLabelId(): string | null;\n\n /** Callback invoked when the timepicker assigns a value. */\n timepickerValueAssigned(value: D | null): void;\n}\n\n/**\n * Renders out a listbox that can be used to select a time of day.\n * Intended to be used together with `MatTimepickerInput`.\n */\n@Component({\n selector: 'mat-timepicker',\n exportAs: 'matTimepicker',\n templateUrl: 'timepicker.html',\n styleUrl: 'timepicker.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [MatOption],\n providers: [\n {\n provide: MAT_OPTION_PARENT_COMPONENT,\n useExisting: MatTimepicker,\n },\n ],\n})\nexport class MatTimepicker<D> implements OnDestroy, MatOptionParentComponent {\n private _dir = inject(Directionality, {optional: true});\n private _viewContainerRef = inject(ViewContainerRef);\n private _injector = inject(Injector);\n private _defaultConfig = inject(MAT_TIMEPICKER_CONFIG, {optional: true});\n private _dateAdapter = inject<DateAdapter<D>>(DateAdapter, {optional: true})!;\n private _dateFormats = inject(MAT_DATE_FORMATS, {optional: true})!;\n private _scrollStrategyFactory = inject(MAT_TIMEPICKER_SCROLL_STRATEGY);\n protected _animationsDisabled = _animationsDisabled();\n\n private _isOpen = signal(false);\n private _activeDescendant = signal<string | null>(null);\n\n private _input = signal<MatTimepickerConnectedInput<D> | null>(null);\n private _overlayRef: OverlayRef | null = null;\n private _portal: TemplatePortal<unknown> | null = null;\n private _optionsCacheKey: string | null = null;\n private _localeChanges: Subscription;\n private _onOpenRender: AfterRenderRef | null = null;\n\n protected _panelTemplate = viewChild.required<TemplateRef<unknown>>('panelTemplate');\n protected _timeOptions: readonly MatTimepickerOption<D>[] = [];\n protected _options = viewChildren(MatOption);\n\n private _keyManager = new ActiveDescendantKeyManager(this._options, this._injector)\n .withHomeAndEnd(true)\n .withPageUpDown(true)\n .withVerticalOrientation(true);\n\n /**\n * Interval between each option in the timepicker. The value can either be an amount of\n * seconds (e.g. 90) or a number with a unit (e.g. 45m). Supported units are `s` for seconds,\n * `m` for minutes or `h` for hours.\n */\n readonly interval: InputSignalWithTransform<number | null, number | string | null> = input(\n parseInterval(this._defaultConfig?.interval || null),\n {transform: parseInterval},\n );\n\n /**\n * Array of pre-defined options that the user can select from, as an alternative to using the\n * `interval` input. An error will be thrown if both `options` and `interval` are specified.\n */\n readonly options: InputSignal<readonly MatTimepickerOption<D>[] | null> = input<\n readonly MatTimepickerOption<D>[] | null\n >(null);\n\n /** Whether the timepicker is open. */\n readonly isOpen: Signal<boolean> = this._isOpen.asReadonly();\n\n /** Emits when the user selects a time. */\n readonly selected: OutputEmitterRef<MatTimepickerSelected<D>> = output();\n\n /** Emits when the timepicker is opened. */\n readonly opened: OutputEmitterRef<void> = output();\n\n /** Emits when the timepicker is closed. */\n readonly closed: OutputEmitterRef<void> = output();\n\n /** ID of the active descendant option. */\n readonly activeDescendant: Signal<string | null> = this._activeDescendant.asReadonly();\n\n /** Unique ID of the timepicker's panel */\n readonly panelId: string = inject(_IdGenerator).getId('mat-timepicker-panel-');\n\n /** Whether ripples within the timepicker should be disabled. */\n readonly disableRipple: InputSignalWithTransform<boolean, unknown> = input(\n this._defaultConfig?.disableRipple ?? false,\n {\n transform: booleanAttribute,\n },\n );\n\n /** ARIA label for the timepicker panel. */\n readonly ariaLabel: InputSignal<string | null> = input<string | null>(null, {\n alias: 'aria-label',\n });\n\n /** ID of the label element for the timepicker panel. */\n readonly ariaLabelledby: InputSignal<string | null> = input<string | null>(null, {\n alias: 'aria-labelledby',\n });\n\n /** Whether the timepicker is currently disabled. */\n readonly disabled: Signal<boolean> = computed(() => !!this._input()?.disabled());\n\n constructor() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n validateAdapter(this._dateAdapter, this._dateFormats);\n\n effect(() => {\n const options = this.options();\n const interval = this.interval();\n\n if (options !== null && interval !== null) {\n throw new Error(\n 'Cannot specify both the `options` and `interval` inputs at the same time',\n );\n } else if (options?.length === 0) {\n throw new Error('Value of `options` input cannot be an empty array');\n }\n });\n }\n\n // Since the panel ID is static, we can set it once without having to maintain a host binding.\n const element = inject<ElementRef<HTMLElement>>(ElementRef);\n element.nativeElement.setAttribute('mat-timepicker-panel-id', this.panelId);\n this._handleLocaleChanges();\n this._handleInputStateChanges();\n this._keyManager.change.subscribe(() =>\n this._activeDescendant.set(this._keyManager.activeItem?.id || null),\n );\n }\n\n /** Opens the timepicker. */\n open(): void {\n const input = this._input();\n\n if (!input) {\n return;\n }\n\n // Focus should already be on the input, but this call is in case the timepicker is opened\n // programmatically. We need to call this even if the timepicker is already open, because\n // the user might be clicking the toggle.\n input.focus();\n\n if (this._isOpen()) {\n return;\n }\n\n this._isOpen.set(true);\n this._generateOptions();\n const overlayRef = this._getOverlayRef();\n overlayRef.updateSize({width: input.getOverlayOrigin().nativeElement.offsetWidth});\n this._portal ??= new TemplatePortal(this._panelTemplate(), this._viewContainerRef);\n\n // We need to check this in case `isOpen` was flipped, but change detection hasn't\n // had a chance to run yet. See https://github.com/angular/components/issues/30637\n if (!overlayRef.hasAttached()) {\n overlayRef.attach(this._portal);\n }\n\n this._onOpenRender?.destroy();\n this._onOpenRender = afterNextRender(\n () => {\n const options = this._options();\n this._syncSelectedState(input.value(), options, options[0]);\n this._onOpenRender = null;\n },\n {injector: this._injector},\n );\n\n this.opened.emit();\n }\n\n /** Closes the timepicker. */\n close(): void {\n if (this._isOpen()) {\n this._isOpen.set(false);\n this.closed.emit();\n\n if (this._animationsDisabled) {\n this._overlayRef?.detach();\n }\n }\n }\n\n /** Registers an input with the timepicker. */\n registerInput(input: MatTimepickerConnectedInput<D>): void {\n const currentInput = this._input();\n\n if (currentInput && input !== currentInput && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw new Error('MatTimepicker can only be registered with one input at a time');\n }\n\n this._input.set(input);\n }\n\n ngOnDestroy(): void {\n this._keyManager.destroy();\n this._localeChanges.unsubscribe();\n this._onOpenRender?.destroy();\n this._overlayRef?.dispose();\n }\n\n _getOverlayHost() {\n return this._overlayRef?.hostElement;\n }\n\n /** Selects a specific time value. */\n protected _selectValue(option: MatOption<D>) {\n this.close();\n this._keyManager.setActiveItem(option);\n this._options().forEach(current => {\n // This is primarily here so we don't show two selected options while animating away.\n if (current !== option) {\n current.deselect(false);\n }\n });\n // Notify the input first so it can sync up the form control before emitting to `selected`.\n this._input()?.timepickerValueAssigned(option.value);\n this.selected.emit({value: option.value, source: this});\n this._input()?.focus();\n }\n\n /** Gets the value of the `aria-labelledby` attribute. */\n protected _getAriaLabelledby(): string | null {\n if (this.ariaLabel()) {\n return null;\n }\n return this.ariaLabelledby() || this._input()?.getLabelId() || null;\n }\n\n /** Handles animation events coming from the panel. */\n protected _handleAnimationEnd(event: AnimationEvent) {\n if (event.animationName === '_mat-timepicker-exit') {\n this._overlayRef?.detach();\n }\n }\n\n /** Creates an overlay reference for the timepicker panel. */\n private _getOverlayRef(): OverlayRef {\n if (this._overlayRef) {\n return this._overlayRef;\n }\n\n const positionStrategy = createFlexibleConnectedPositionStrategy(\n this._injector,\n this._input()!.getOverlayOrigin(),\n )\n .withFlexibleDimensions(false)\n .withPush(false)\n .withTransformOriginOn('.mat-timepicker-panel')\n .withPopoverLocation('inline')\n .withPositions([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n panelClass: 'mat-timepicker-above',\n },\n ]);\n\n this._overlayRef = createOverlayRef(this._injector, {\n positionStrategy,\n scrollStrategy: this._scrollStrategyFactory(),\n direction: this._dir || 'ltr',\n hasBackdrop: false,\n disableAnimations: this._animationsDisabled,\n });\n\n this._overlayRef.detachments().subscribe(() => this.close());\n this._overlayRef.keydownEvents().subscribe(event => this._handleKeydown(event));\n this._overlayRef.outsidePointerEvents().subscribe(event => {\n const target = _getEventTarget(event) as HTMLElement;\n const origin = this._input()?.getOverlayOrigin().nativeElement;\n\n if (target && origin && target !== origin && !origin.contains(target)) {\n this.close();\n }\n });\n\n return this._overlayRef;\n }\n\n /** Generates the list of options from which the user can select.. */\n private _generateOptions(): void {\n // Default the interval to 30 minutes.\n const interval = this.interval() ?? 30 * 60;\n const options = this.options();\n\n if (options !== null) {\n this._timeOptions = options;\n } else {\n const input = this._input();\n const adapter = this._dateAdapter;\n const timeFormat = this._dateFormats.display.timeInput;\n const min = input?.min() || adapter.setTime(adapter.today(), 0, 0, 0);\n const max = input?.max() || adapter.setTime(adapter.today(), 23, 59, 0);\n const cacheKey =\n interval + '/' + adapter.format(min, timeFormat) + '/' + adapter.format(max, timeFormat);\n\n // Don't re-generate the options if the inputs haven't changed.\n if (cacheKey !== this._optionsCacheKey) {\n this._optionsCacheKey = cacheKey;\n this._timeOptions = generateOptions(adapter, this._dateFormats, min, max, interval);\n }\n }\n }\n\n /**\n * Synchronizes the internal state of the component based on a specific selected date.\n * @param value Currently selected date.\n * @param options Options rendered out in the timepicker.\n * @param fallback Option to set as active if no option is selected.\n */\n private _syncSelectedState(\n value: D | null,\n options: readonly MatOption[],\n fallback: MatOption | null,\n ): void {\n let hasSelected = false;\n\n for (const option of options) {\n if (value && this._dateAdapter.sameTime(option.value, value)) {\n option.select(false);\n scrollOptionIntoView(option, 'center');\n untracked(() => this._keyManager.setActiveItem(option));\n hasSelected = true;\n } else {\n option.deselect(false);\n }\n }\n\n // If no option was selected, we need to reset the key manager since\n // it might be holding onto an option that no longer exists.\n if (!hasSelected) {\n if (fallback) {\n untracked(() => this._keyManager.setActiveItem(fallback));\n scrollOptionIntoView(fallback, 'center');\n } else {\n untracked(() => this._keyManager.setActiveItem(-1));\n }\n }\n }\n\n /** Handles keyboard events while the overlay is open. */\n private _handleKeydown(event: KeyboardEvent): void {\n const keyCode = event.keyCode;\n\n if (keyCode === TAB) {\n this.close();\n } else if (keyCode === ESCAPE && !hasModifierKey(event)) {\n event.preventDefault();\n this.close();\n } else if (keyCode === ENTER) {\n event.preventDefault();\n\n if (this._keyManager.activeItem) {\n this._selectValue(this._keyManager.activeItem);\n } else {\n this.close();\n }\n } else {\n const previousActive = this._keyManager.activeItem;\n this._keyManager.onKeydown(event);\n const currentActive = this._keyManager.activeItem;\n\n if (currentActive && currentActive !== previousActive) {\n scrollOptionIntoView(currentActive, 'nearest');\n }\n }\n }\n\n /** Sets up the logic that updates the timepicker when the locale changes. */\n private _handleLocaleChanges(): void {\n // Re-generate the options list if the locale changes.\n this._localeChanges = this._dateAdapter.localeChanges.subscribe(() => {\n this._optionsCacheKey = null;\n\n if (this.isOpen()) {\n this._generateOptions();\n }\n });\n }\n\n /**\n * Sets up the logic that updates the timepicker when the state of the connected input changes.\n */\n private _handleInputStateChanges(): void {\n effect(() => {\n const input = this._input();\n const options = this._options();\n\n if (this._isOpen() && input) {\n this._syncSelectedState(input.value(), options, null);\n }\n });\n }\n}\n\n/**\n * Scrolls an option into view.\n * @param option Option to be scrolled into view.\n * @param position Position to which to align the option relative to the scrollable container.\n */\nfunction scrollOptionIntoView(option: MatOption, position: ScrollLogicalPosition) {\n option._getHostElement().scrollIntoView({block: position, inline: position});\n}\n","<ng-template #panelTemplate>\n <div\n role=\"listbox\"\n class=\"mat-timepicker-panel\"\n [class.mat-timepicker-panel-animations-enabled]=\"!_animationsDisabled\"\n [class.mat-timepicker-panel-exit]=\"!isOpen()\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-labelledby]=\"_getAriaLabelledby()\"\n [id]=\"panelId\"\n (animationend)=\"_handleAnimationEnd($event)\">\n @for (option of _timeOptions; track option.value) {\n <mat-option\n [value]=\"option.value\"\n (onSelectionChange)=\"_selectValue($event.source)\">{{option.label}}</mat-option>\n }\n </div>\n</ng-template>\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n booleanAttribute,\n computed,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n InputSignal,\n InputSignalWithTransform,\n model,\n ModelSignal,\n OnDestroy,\n OutputRefSubscription,\n Renderer2,\n Signal,\n signal,\n} from '@angular/core';\nimport {DateAdapter, MAT_DATE_FORMATS} from '../core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n ValidatorFn,\n Validators,\n} from '@angular/forms';\nimport {MAT_FORM_FIELD} from '../form-field';\nimport {MatTimepicker, MatTimepickerConnectedInput} from './timepicker';\nimport {MAT_INPUT_VALUE_ACCESSOR} from '../input';\nimport {Subscription} from 'rxjs';\nimport {DOWN_ARROW, ESCAPE, hasModifierKey, UP_ARROW} from '@angular/cdk/keycodes';\nimport {validateAdapter} from './util';\nimport {_getEventTarget, _getFocusedElementPierceShadowDom} from '@angular/cdk/platform';\n\n/**\n * Input that can be used to enter time and connect to a `mat-timepicker`.\n */\n@Directive({\n selector: 'input[matTimepicker]',\n exportAs: 'matTimepickerInput',\n host: {\n 'class': 'mat-timepicker-input',\n 'role': 'combobox',\n 'type': 'text',\n 'aria-haspopup': 'listbox',\n '[attr.aria-activedescendant]': '_ariaActiveDescendant()',\n '[attr.aria-expanded]': '_ariaExpanded()',\n '[attr.aria-controls]': '_ariaControls()',\n '[attr.mat-timepicker-id]': 'timepicker()?.panelId',\n '[disabled]': 'disabled()',\n '(blur)': '_handleBlur()',\n '(input)': '_handleInput($event)',\n '(keydown)': '_handleKeydown($event)',\n },\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: MatTimepickerInput,\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: MatTimepickerInput,\n multi: true,\n },\n {\n provide: MAT_INPUT_VALUE_ACCESSOR,\n useExisting: MatTimepickerInput,\n },\n ],\n})\nexport class MatTimepickerInput<D>\n implements MatTimepickerConnectedInput<D>, ControlValueAccessor, Validator, OnDestroy\n{\n private _elementRef = inject<ElementRef<HTMLInputElement>>(ElementRef);\n private _dateAdapter = inject<DateAdapter<D>>(DateAdapter, {optional: true})!;\n private _dateFormats = inject(MAT_DATE_FORMATS, {optional: true})!;\n private _formField = inject(MAT_FORM_FIELD, {optional: true});\n\n private _onChange: ((value: unknown) => void) | undefined;\n private _onTouched: (() => void) | undefined;\n private _validatorOnChange: (() => void) | undefined;\n private _cleanupClick: () => void;\n private _accessorDisabled = signal(false);\n private _localeSubscription: Subscription;\n private _timepickerSubscription: OutputRefSubscription | undefined;\n private _validator: ValidatorFn;\n private _lastValueValid = true;\n private _minValid = true;\n private _maxValid = true;\n private _lastValidDate: D | null = null;\n\n /** Value of the `aria-activedescendant` attribute. */\n protected readonly _ariaActiveDescendant = computed(() => {\n const timepicker = this.timepicker();\n const isOpen = timepicker.isOpen();\n const activeDescendant = timepicker.activeDescendant();\n return isOpen && activeDescendant ? activeDescendant : null;\n });\n\n /** Value of the `aria-expanded` attribute. */\n protected readonly _ariaExpanded = computed(() => this.timepicker().isOpen() + '');\n\n /** Value of the `aria-controls` attribute. */\n protected readonly _ariaControls = computed(() => {\n const timepicker = this.timepicker();\n return timepicker.isOpen() ? timepicker.panelId : null;\n });\n\n /** Current value of the input. */\n readonly value: ModelSignal<D | null> = model<D | null>(null);\n\n /** Timepicker that the input is associated with. */\n readonly timepicker: InputSignal<MatTimepicker<D>> = input.required<MatTimepicker<D>>({\n alias: 'matTimepicker',\n });\n\n /**\n * Minimum time that can be selected or typed in. Can be either\n * a date object (only time will be used) or a valid time string.\n */\n readonly min: InputSignalWithTransform<D | null, unknown> = input(null, {\n alias: 'matTimepickerMin',\n transform: (value: unknown) => this._transformDateInput<D>(value),\n });\n\n /**\n * Maximum time that can be selected or typed in. Can be either\n * a date object (only time will be used) or a valid time string.\n */\n readonly max: InputSignalWithTransform<D | null, unknown> = input(null, {\n alias: 'matTimepickerMax',\n transform: (value: unknown) => this._transformDateInput<D>(value),\n });\n\n /**\n * Whether to open the timepicker overlay when clicking on the input. Enabled by default.\n * Note that when disabling this option, you'll have to provide your own logic for opening\n * the overlay.\n */\n readonly openOnClick: InputSignalWithTransform<boolean, unknown> = input(true, {\n alias: 'matTimepickerOpenOnClick',\n transform: booleanAttribute,\n });\n\n /** Whether the input is disabled. */\n readonly disabled: Signal<boolean> = computed(\n () => this.disabledInput() || this._accessorDisabled(),\n );\n\n /**\n * Whether the input should be disabled through the template.\n * @docs-private\n */\n readonly disabledInput: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n alias: 'disabled',\n });\n\n constructor() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n validateAdapter(this._dateAdapter, this._dateFormats);\n }\n\n const renderer = inject(Renderer2);\n this._validator = this._getValidator();\n this._updateFormsState();\n this._registerTimepicker();\n this._localeSubscription = this._dateAdapter.localeChanges.subscribe(() => {\n if (!this._hasFocus()) {\n this._formatValue(this.value());\n }\n });\n\n // Bind the click listener manually to the overlay origin, because we want the entire\n // form field to be clickable, if the timepicker is used in `mat-form-field`.\n this._cleanupClick = renderer.listen(\n this.getOverlayOrigin().nativeElement,\n 'click',\n this._handleClick,\n );\n }\n\n /**\n * Implemented as a part of `ControlValueAccessor`.\n * @docs-private\n */\n writeValue(value: unknown): void {\n // Note that we need to deserialize here, rather than depend on the value change effect,\n // because `getValidDateOrNull` will clobber the value if it's parseable, but not created by\n // the current adapter (see #30140).\n const deserialized = this._dateAdapter.deserialize(value);\n this.value.set(this._dateAdapter.getValidDateOrNull(deserialized));\n }\n\n /**\n * Implemented as a part of `ControlValueAccessor`.\n * @docs-private\n */\n registerOnChange(fn: (value: unknown) => void): void {\n this._onChange = fn;\n }\n\n /**\n * Implemented as a part of `ControlValueAccessor`.\n * @docs-private\n */\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n /**\n * Implemented as a part of `ControlValueAccessor`.\n * @docs-private\n */\n setDisabledState(isDisabled: boolean): void {\n this._accessorDisabled.set(isDisabled);\n }\n\n /**\n * Implemented as a part of `Validator`.\n * @docs-private\n */\n validate(control: AbstractControl): ValidationErrors | null {\n return this._validator(control);\n }\n\n /**\n * Implemented as a part of `Validator`.\n * @docs-private\n */\n registerOnValidatorChange(fn: () => void): void {\n this._validatorOnChange = fn;\n }\n\n /** Gets the element to which the timepicker popup should be attached. */\n getOverlayOrigin(): ElementRef<HTMLElement> {\n return this._formField?.getConnectedOverlayOrigin() || this._elementRef;\n }\n\n /** Focuses the input. */\n focus(): void {\n this._elementRef.nativeElement.focus();\n }\n\n ngOnDestroy(): void {\n this._cleanupClick();\n this._timepickerSubscription?.unsubscribe();\n this._localeSubscription.unsubscribe();\n }\n\n /** Gets the ID of the input's label. */\n getLabelId(): string | null {\n return this._formField?.getLabelId() || null;\n }\n\n /** Handles clicks on the input or the containing form field. */\n private _handleClick = (event: MouseEvent): void => {\n if (this.disabled() || !this.openOnClick()) {\n return;\n }\n\n const target = _getEventTarget(event) as Node | null;\n const overlayHost = this.timepicker()._getOverlayHost();\n\n if (!target || !overlayHost || !overlayHost.contains(target)) {\n this.timepicker().open();\n }\n };\n\n /** Handles the `input` event. */\n protected _handleInput(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n const currentValue = this.value();\n const date = this._dateAdapter.parseTime(value, this._dateFormats.parse.timeInput);\n const hasChanged = !this._dateAdapter.sameTime(date, currentValue);\n\n if (!date || hasChanged || !!(value && !currentValue)) {\n // We need to fire the CVA change event for all nulls, otherwise the validators won't run.\n this._assignUserSelection(date, true);\n } else {\n // Call the validator even if the value hasn't changed since\n // some fields change depending on what the user has entered.\n this._validatorOnChange?.();\n }\n }\n\n /** Handles the `blur` event. */\n protected _handleBlur() {\n const value = this.value();\n\n // Only reformat on blur so the value doesn't change while the user is interacting.\n if (value && this._isValid(value)) {\n this._formatValue(value);\n }\n\n if (!this.timepicker().isOpen()) {\n this._onTouched?.();\n }\n }\n\n /** Handles the `keydown` event. */\n protected _handleKeydown(event: KeyboardEvent) {\n // All keyboard events while open are handled through the timepicker.\n if (this.timepicker().isOpen() || this.disabled()) {\n return;\n }\n\n if (event.keyCode === ESCAPE && !hasModifierKey(event) && this.value() !== null) {\n event.preventDefault();\n this.value.set(null);\n this._formatValue(null);\n } else if (event.keyCode === DOWN_ARROW || event.keyCode === UP_ARROW) {\n event.preventDefault();\n this.timepicker().open();\n }\n }\n\n /** Called by the timepicker to sync up the user-selected value. */\n timepickerValueAssigned(value: D | null) {\n if (!this._dateAdapter.sameTime(value, this.value())) {\n this._assignUserSelection(value, true);\n this._formatValue(value);\n }\n }\n\n /** Sets up the code that keeps the input state in sync with the forms module. */\n private _updateFormsState(): void {\n effect(() => {\n const {\n _dateAdapter: adapter,\n _lastValueValid: prevValueValid,\n _minValid: prevMinValid,\n _maxValid: prevMaxValid,\n } = this;\n const value = adapter.deserialize(this.value());\n const min = this.min();\n const max = this.max();\n const valueValid = (this._lastValueValid = this._isValid(value));\n this._minValid = !min || !value || !valueValid || adapter.compareTime(min, value) <= 0;\n this._maxValid = !max || !value || !valueValid || adapter.compareTime(max, value) >= 0;\n const stateChanged =\n prevValueValid !== valueValid ||\n prevMinValid !== this._minValid ||\n prevMaxValid !== this._maxValid;\n\n // Reformat the value if it changes while the user isn't interacting.\n if (!this._hasFocus()) {\n this._formatValue(value);\n }\n\n if (value && valueValid) {\n this._lastValidDate = value;\n }\n\n // Trigger the validator if the state changed.\n if (stateChanged) {\n this._validatorOnChange?.();\n }\n });\n }\n\n /** Sets up the logic that registers the input with the timepicker. */\n private _registerTimepicker(): void {\n effect(() => {\n const timepicker = this.timepicker();\n timepicker.registerInput(this);\n timepicker.closed.subscribe(() => this._onTouched?.());\n });\n }\n\n /**\n * Assigns a value set by the user to the input's model.\n * @param selection Time selected by the user that should be assigned.\n * @param propagateToAccessor Whether the value should be propagated to the ControlValueAccessor.\n */\n private _assignUserSelection(selection: D | null, propagateToAccessor: boolean) {\n let toAssign: D | null;\n\n if (selection == null || !this._isValid(selection)) {\n toAssign = selection;\n } else {\n // If a datepicker and timepicker are writing to the same object and the user enters an\n // invalid time into the timepicker, we may end up clearing their selection from the\n // datepicker. If the user enters a valid time afterwards, the datepicker's selection will\n // have been lost. This logic restores the previously-valid date and sets its time to\n // the newly-selected time.\n const adapter = this._dateAdapter;\n const target = adapter.getValidDateOrNull(this._lastValidDate || this.value());\n const hours = adapter.getHours(selection);\n const minutes = adapter.getMinutes(selection);\n const seconds = adapter.getSeconds(selection);\n toAssign = target ? adapter.setTime(target, hours, minutes, seconds) : selection;\n }\n\n // Propagate to the form control before emitting to `valueChange`.\n if (propagateToAccessor) {\n this._onChange?.(toAssign);\n }\n\n this.value.set(toAssign);\n }\n\n /** Formats the current value and assigns it to the input. */\n private _formatValue(value: D | null): void {\n value = this._dateAdapter.getValidDateOrNull(value);\n this._elementRef.nativeElement.value =\n value == null ? '' : this._dateAdapter.format(value, this._dateFormats.display.timeInput);\n }\n\n /** Checks whether a value is valid. */\n private _isValid(value: D | null): boolean {\n return !value || this._dateAdapter.isValid(value);\n }\n\n /** Transforms an arbitrary value into a value that can be assigned to a date-based input. */\n private _transformDateInput<D>(value: unknown): D | null {\n const date =\n typeof value === 'string'\n ? this._dateAdapter.parseTime(value, this._dateFormats.parse.timeInput)\n : this._dateAdapter.deserialize(value);\n return date && this._dateAdapter.isValid(date) ? (date as D) : null;\n }\n\n /** Whether the input is currently focused. */\n private _hasFocus(): boolean {\n return _getFocusedElementPierceShadowDom() === this._elementRef.nativeElement;\n }\n\n /** Gets a function that can be used to validate the input. */\n private _getValidator(): ValidatorFn {\n return Validators.compose([\n () =>\n this._lastValueValid\n ? null\n : {'matTimepickerParse': {'text': this._elementRef.nativeElement.value}},\n control =>\n this._minValid\n ? null\n : {\n 'matTimepickerMin': {\n 'min': this.min(),\n 'actual': this._dateAdapter.getValidDateOrNull(\n this._dateAdapter.deserialize(control.value),\n ),\n },\n },\n control =>\n this._maxValid\n ? null\n : {\n 'matTimepickerMax': {\n 'max': this.max(),\n 'actual': this._dateAdapter.getValidDateOrNull(\n this._dateAdapter.deserialize(control.value),\n ),\n },\n },\n ])!;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n HostAttributeToken,\n inject,\n input,\n InputSignal,\n InputSignalWithTransform,\n ViewEncapsulation,\n} from '@angular/core';\nimport {MatIconButton} from '../button';\nimport {MAT_TIMEPICKER_CONFIG} from './util';\nimport type {MatTimepicker} from './timepicker';\n\n/** Button that can be used to open a `mat-timepicker`. */\n@Component({\n selector: 'mat-timepicker-toggle',\n templateUrl: 'timepicker-toggle.html',\n host: {\n 'class': 'mat-timepicker-toggle',\n '[attr.tabindex]': 'null',\n // Bind the `click` on the host, rather than the inner `button`, so that we can call\n // `stopPropagation` on it without affecting the user's `click` handlers. We need to stop\n // it so that the input doesn't get focused automatically by the form field (See #21836).\n '(click)': '_open($event)',\n },\n exportAs: 'matTimepickerToggle',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatIconButton],\n})\nexport class MatTimepickerToggle<D> {\n private _defaultConfig = inject(MAT_TIMEPICKER_CONFIG, {optional: true});\n private _defaultTabIndex = (() => {\n const value = inject(new HostAttributeToken('tabindex'), {optional: true});\n const parsed = Number(value);\n return isNaN(parsed) ? null : parsed;\n })();\n\n protected _isDisabled = computed(() => {\n const timepicker = this.timepicker();\n return this.disabled() || timepicker.disabled();\n });\n\n /** Timepicker instance that the button will toggle. */\n readonly timepicker: InputSignal<MatTimepicker<D>> = input.required<MatTimepicker<D>>({\n alias: 'for',\n });\n\n /** Screen-reader label for the button. */\n readonly ariaLabel = input<string | undefined>(undefined, {\n alias: 'aria-label',\n });\n\n /** Screen-reader labelled by id for the button. */\n readonly ariaLabelledby = input<string | undefined>(undefined, {\n alias: 'aria-labelledby',\n });\n\n /** Default aria-label for the toggle if none is provided. */\n private readonly _defaultAriaLabel = 'Open timepicker options';\n\n /** Whether the toggle button is disabled. */\n readonly disabled: InputSignalWithTransform<boolean, unknown> = input(false, {\n transform: booleanAttribute,\n alias: 'disabled',\n });\n\n /** Tabindex for the toggle. */\n readonly tabIndex: InputSignal<number | null> = input(this._defaultTabIndex);\n\n /** Whether ripples on the toggle should be disabled. */\n readonly disableRipple: InputSignalWithTransform<boolean, unknown> = input(\n this._defaultConfig?.disableRipple ?? false,\n {transform: booleanAttribute},\n );\n\n /** Opens the connected timepicker. */\n protected _open(event: Event): void {\n if (this.timepicker() && !this._isDisabled()) {\n this.timepicker().open();\n event.stopPropagation();\n }\n }\n\n /**\n * Checks for ariaLabelledby and if empty uses custom\n * aria-label or defaultAriaLabel if neither is provided.\n */\n getAriaLabel(): string | null {\n return this.ariaLabelledby() ? null : this.ariaLabel() || this._defaultAriaLabel;\n }\n}\n","<button\n matIconButton\n type=\"button\"\n aria-haspopup=\"listbox\"\n [attr.aria-label]=\"getAriaLabel()\"\n [attr.aria-labelledby]=\"ariaLabelledby()\"\n [attr.aria-expanded]=\"timepicker().isOpen()\"\n [tabIndex]=\"_isDisabled() ? -1 : tabIndex()\"\n [disabled]=\"_isDisabled()\"\n [disableRipple]=\"disableRipple()\">\n\n <ng-content select=\"[matTimepickerToggleIcon]\">\n <svg\n class=\"mat-timepicker-toggle-default-icon\"\n height=\"24px\"\n width=\"24px\"\n viewBox=\"0 -960 960 960\"\n fill=\"currentColor\"\n focusable=\"false\"\n aria-hidden=\"true\">\n <path d=\"m612-292 56-56-148-148v-184h-80v216l172 172ZM480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-400Zm0 320q133 0 226.5-93.5T800-480q0-133-93.5-226.5T480-800q-133 0-226.5 93.5T160-480q0 133 93.5 226.5T480-160Z\"/>\n </svg>\n </ng-content>\n</button>\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {NgModule} from '@angular/core';\nimport {CdkScrollableModule} from '@angular/cdk/scrolling';\nimport {MatTimepicker} from './timepicker';\nimport {MatTimepickerInput} from './timepicker-input';\nimport {MatTimepickerToggle} from './timepicker-toggle';\n\n@NgModule({\n imports: [MatTimepicker, MatTimepickerInput, MatTimepickerToggle],\n exports: [CdkScrollableModule, MatTimepicker, MatTimepickerInput, MatTimepickerToggle],\n})\nexport class MatTimepickerModule {}\n"],"names":["INTERVAL_PATTERN","MAT_TIMEPICKER_CONFIG","InjectionToken","parseInterval","value","result","trim","length","parsed","match","amount","parseFloat","unit","toLowerCase","isNaN","generateOptions","adapter","formats","min","max","interval","options","current","compareTime","sameDate","isValid","push","label","format","display","timeOptionLabel","addSeconds","validateAdapter","missingAdapterError","provider","Error","timeInput","undefined","parse","MAT_TIMEPICKER_SCROLL_STRATEGY","providedIn","factory","injector","inject","Injector","createRepositionScrollStrategy","MatTimepicker","_dir","Directionality","optional","_viewContainerRef","ViewContainerRef","_injector","_defaultConfig","_dateAdapter","DateAdapter","_dateFormats","MAT_DATE_FORMATS","_scrollStrategyFactory","_animationsDisabled","_isOpen","signal","_activeDescendant","_input","_overlayRef","_portal","_optionsCacheKey","_localeChanges","_onOpenRender","_panelTemplate","viewChild","required","_timeOptions","_options","viewChildren","MatOption","_keyManager","ActiveDescendantKeyManager","withHomeAndEnd","withPageUpDown","withVerticalOrientation","input","ngDevMode","debugName","transform","isOpen","asReadonly","selected","output","opened","closed","activeDescendant","panelId","_IdGenerator","getId","disableRipple","booleanAttribute","ariaLabel","alias","ariaLabelledby","disabled","computed","constructor","effect","element","ElementRef","nativeElement","setAttribute","_handleLocaleChanges","_handleInputStateChanges","change","subscribe","set","activeItem","id","open","focus","_generateOptions","overlayRef","_getOverlayRef","updateSize","width","getOverlayOrigin","offsetWidth","TemplatePortal","hasAttached","attach","destroy","afterNextRender","_syncSelectedState","emit","close","detach","registerInput","currentInput","ngOnDestroy","unsubscribe","dispose","_getOverlayHost","hostElement","_selectValue","option","setActiveItem","forEach","deselect","timepickerValueAssigned","source","_getAriaLabelledby","getLabelId","_handleAnimationEnd","event","animationName","positionStrategy","createFlexibleConnectedPositionStrategy","withFlexibleDimensions","withPush","withTransformOriginOn","withPopoverLocation","withPositions","originX","originY","overlayX","overlayY","panelClass","createOverlayRef","scrollStrategy","direction","hasBackdrop","disableAnimations","detachments","keydownEvents","_handleKeydown","outsidePointerEvents","target","_getEventTarget","origin","contains","timeFormat","setTime","today","cacheKey","fallback","hasSelected","sameTime","select","scrollOptionIntoView","untracked","keyCode","TAB","ESCAPE","hasModifierKey","preventDefault","ENTER","previousActive","onKeydown","currentActive","localeChanges","deps","i0","ɵɵFactoryTarget","Component","ɵcmp","ɵɵngDeclareComponent","minVersion","version","type","isStandalone","selector","inputs","classPropertyName","publicName","isSignal","isRequired","transformFunction","outputs","providers","provide","MAT_OPTION_PARENT_COMPONENT","useExisting","viewQueries","propertyName","first","predicate","descendants","exportAs","ngImport","template","styles","dependencies","kind","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","decorators","args","imports","ctorParameters","propDecorators","ViewChild","Input","Output","position","_getHostElement","scrollIntoView","block","inline","MatTimepickerInput","_elementRef","_formField","MAT_FORM_FIELD","_onChange","_onTouched","_validatorOnChange","_cleanupClick","_accessorDisabled","_localeSubscription","_timepickerSubscription","_validator","_lastValueValid","_minValid","_maxValid","_lastValidDate","_ariaActiveDescendant","timepicker","_ariaExpanded","_ariaControls","model","_transformDateInput","openOnClick","disabledInput","renderer","Renderer2","_getValidator","_updateFormsState","_registerTimepicker","_hasFocus","_formatValue","listen","_handleClick","writeValue","deserialized","deserialize","getValidDateOrNull","registerOnChange","fn","registerOnTouched","setDisabledState","isDisabled","validate","control","registerOnValidatorChange","getConnectedOverlayOrigin","overlayHost","_handleInput","currentValue","date","parseTime","hasChanged","_assignUserSelection","_handleBlur","_isValid","DOWN_ARROW","UP_ARROW","prevValueValid","prevMinValid","prevMaxValid","valueValid","stateChanged","selection","propagateToAccessor","toAssign","hours","getHours","minutes","getMinutes","seconds","getSeconds","_getFocusedElementPierceShadowDom","Validators","compose","Directive","ɵdir","ɵɵngDeclareDirective","host","attributes","listeners","properties","classAttribute","NG_VALUE_ACCESSOR","multi","NG_VALIDATORS","MAT_INPUT_VALUE_ACCESSOR","MatTimepickerToggle","_defaultTabIndex","HostAttributeToken","Number","_isDisabled","_defaultAriaLabel","tabIndex","_open","stopPropagation","getAriaLabel","MatIconButton","MatTimepickerModule","NgModule","ɵmod","ɵɵngDeclareNgModule","exports","CdkScrollableModule","ɵinj","ɵɵngDeclareInjector"],"mappings":"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"}
@@ -6,7 +6,7 @@ import { Platform } from '@angular/cdk/platform';
6
6
  class MatToolbarRow {
7
7
  static ɵfac = i0.ɵɵngDeclareFactory({
8
8
  minVersion: "12.0.0",
9
- version: "21.0.0",
9
+ version: "21.0.3",
10
10
  ngImport: i0,
11
11
  type: MatToolbarRow,
12
12
  deps: [],
@@ -14,7 +14,7 @@ class MatToolbarRow {
14
14
  });
15
15
  static ɵdir = i0.ɵɵngDeclareDirective({
16
16
  minVersion: "14.0.0",
17
- version: "21.0.0",
17
+ version: "21.0.3",
18
18
  type: MatToolbarRow,
19
19
  isStandalone: true,
20
20
  selector: "mat-toolbar-row",
@@ -27,7 +27,7 @@ class MatToolbarRow {
27
27
  }
28
28
  i0.ɵɵngDeclareClassMetadata({
29
29
  minVersion: "12.0.0",
30
- version: "21.0.0",
30
+ version: "21.0.3",
31
31
  ngImport: i0,
32
32
  type: MatToolbarRow,
33
33
  decorators: [{
@@ -64,7 +64,7 @@ class MatToolbar {
64
64
  }
65
65
  static ɵfac = i0.ɵɵngDeclareFactory({
66
66
  minVersion: "12.0.0",
67
- version: "21.0.0",
67
+ version: "21.0.3",
68
68
  ngImport: i0,
69
69
  type: MatToolbar,
70
70
  deps: [],
@@ -72,7 +72,7 @@ class MatToolbar {
72
72
  });
73
73
  static ɵcmp = i0.ɵɵngDeclareComponent({
74
74
  minVersion: "14.0.0",
75
- version: "21.0.0",
75
+ version: "21.0.3",
76
76
  type: MatToolbar,
77
77
  isStandalone: true,
78
78
  selector: "mat-toolbar",
@@ -102,7 +102,7 @@ class MatToolbar {
102
102
  }
103
103
  i0.ɵɵngDeclareClassMetadata({
104
104
  minVersion: "12.0.0",
105
- version: "21.0.0",
105
+ version: "21.0.3",
106
106
  ngImport: i0,
107
107
  type: MatToolbar,
108
108
  decorators: [{
@@ -142,7 +142,7 @@ function throwToolbarMixedModesError() {
142
142
  class MatToolbarModule {
143
143
  static ɵfac = i0.ɵɵngDeclareFactory({
144
144
  minVersion: "12.0.0",
145
- version: "21.0.0",
145
+ version: "21.0.3",
146
146
  ngImport: i0,
147
147
  type: MatToolbarModule,
148
148
  deps: [],
@@ -150,7 +150,7 @@ class MatToolbarModule {
150
150
  });
151
151
  static ɵmod = i0.ɵɵngDeclareNgModule({
152
152
  minVersion: "14.0.0",
153
- version: "21.0.0",
153
+ version: "21.0.3",
154
154
  ngImport: i0,
155
155
  type: MatToolbarModule,
156
156
  imports: [MatToolbar, MatToolbarRow],
@@ -158,7 +158,7 @@ class MatToolbarModule {
158
158
  });
159
159
  static ɵinj = i0.ɵɵngDeclareInjector({
160
160
  minVersion: "12.0.0",
161
- version: "21.0.0",
161
+ version: "21.0.3",
162
162
  ngImport: i0,
163
163
  type: MatToolbarModule,
164
164
  imports: [BidiModule]
@@ -166,7 +166,7 @@ class MatToolbarModule {
166
166
  }
167
167
  i0.ɵɵngDeclareClassMetadata({
168
168
  minVersion: "12.0.0",
169
- version: "21.0.0",
169
+ version: "21.0.3",
170
170
  ngImport: i0,
171
171
  type: MatToolbarModule,
172
172
  decorators: [{
@@ -19,7 +19,7 @@ import '@angular/cdk/layout';
19
19
  class MatTooltipModule {
20
20
  static ɵfac = i0.ɵɵngDeclareFactory({
21
21
  minVersion: "12.0.0",
22
- version: "21.0.0",
22
+ version: "21.0.3",
23
23
  ngImport: i0,
24
24
  type: MatTooltipModule,
25
25
  deps: [],
@@ -27,7 +27,7 @@ class MatTooltipModule {
27
27
  });
28
28
  static ɵmod = i0.ɵɵngDeclareNgModule({
29
29
  minVersion: "14.0.0",
30
- version: "21.0.0",
30
+ version: "21.0.3",
31
31
  ngImport: i0,
32
32
  type: MatTooltipModule,
33
33
  imports: [A11yModule, OverlayModule, MatTooltip, TooltipComponent],
@@ -35,7 +35,7 @@ class MatTooltipModule {
35
35
  });
36
36
  static ɵinj = i0.ɵɵngDeclareInjector({
37
37
  minVersion: "12.0.0",
38
- version: "21.0.0",
38
+ version: "21.0.3",
39
39
  ngImport: i0,
40
40
  type: MatTooltipModule,
41
41
  imports: [A11yModule, OverlayModule, BidiModule, CdkScrollableModule]
@@ -43,7 +43,7 @@ class MatTooltipModule {
43
43
  }
44
44
  i0.ɵɵngDeclareClassMetadata({
45
45
  minVersion: "12.0.0",
46
- version: "21.0.0",
46
+ version: "21.0.3",
47
47
  ngImport: i0,
48
48
  type: MatTooltipModule,
49
49
  decorators: [{