@angular/material 21.2.0-next.1 → 21.2.0-next.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/fesm2022/core.mjs CHANGED
@@ -24,7 +24,7 @@ import '@angular/cdk/private';
24
24
  import '@angular/cdk/platform';
25
25
  import '@angular/cdk/coercion';
26
26
 
27
- const VERSION = new Version('21.2.0-next.1');
27
+ const VERSION = new Version('21.2.0-next.2');
28
28
 
29
29
  const ISO_8601_REGEX = /^\d{4}-\d{2}-\d{2}(?:T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|(?:(?:\+|-)\d{2}:\d{2}))?)?$/;
30
30
  const TIME_REGEX = /^(\d?\d)[:.](\d?\d)(?:[:.](\d?\d))?\s*(AM|PM)?$/i;
@@ -1 +1 @@
1
- {"version":3,"file":"core.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/core/version.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/core/datetime/native-date-adapter.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/core/datetime/native-date-formats.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/core/datetime/index.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 {Version} from '@angular/core';\n\n/** Current version of Angular Material. */\nexport const VERSION = new Version('21.2.0-next.1');\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 {inject, Injectable} from '@angular/core';\nimport {DateAdapter, MAT_DATE_LOCALE} from './date-adapter';\n\n/**\n * Matches strings that have the form of a valid RFC 3339 string\n * (https://tools.ietf.org/html/rfc3339). Note that the string may not actually be a valid date\n * because the regex will match strings with an out of bounds month, date, etc.\n */\nconst ISO_8601_REGEX =\n /^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|(?:(?:\\+|-)\\d{2}:\\d{2}))?)?$/;\n\n/**\n * Matches a time string. Supported formats:\n * - {{hours}}:{{minutes}}\n * - {{hours}}:{{minutes}}:{{seconds}}\n * - {{hours}}:{{minutes}} AM/PM\n * - {{hours}}:{{minutes}}:{{seconds}} AM/PM\n * - {{hours}}.{{minutes}}\n * - {{hours}}.{{minutes}}.{{seconds}}\n * - {{hours}}.{{minutes}} AM/PM\n * - {{hours}}.{{minutes}}.{{seconds}} AM/PM\n */\nconst TIME_REGEX = /^(\\d?\\d)[:.](\\d?\\d)(?:[:.](\\d?\\d))?\\s*(AM|PM)?$/i;\n\n/** Creates an array and fills it with values. */\nfunction range<T>(length: number, valueFunction: (index: number) => T): T[] {\n const valuesArray = Array(length);\n for (let i = 0; i < length; i++) {\n valuesArray[i] = valueFunction(i);\n }\n return valuesArray;\n}\n\n/** Adapts the native JS Date for use with cdk-based components that work with dates. */\n@Injectable()\nexport class NativeDateAdapter extends DateAdapter<Date> {\n /** The injected locale. */\n private readonly _matDateLocale = inject(MAT_DATE_LOCALE, {optional: true});\n\n constructor(...args: unknown[]);\n\n constructor() {\n super();\n\n const matDateLocale = inject(MAT_DATE_LOCALE, {optional: true});\n\n if (matDateLocale !== undefined) {\n this._matDateLocale = matDateLocale;\n }\n\n super.setLocale(this._matDateLocale);\n }\n\n getYear(date: Date): number {\n return date.getFullYear();\n }\n\n getMonth(date: Date): number {\n return date.getMonth();\n }\n\n getDate(date: Date): number {\n return date.getDate();\n }\n\n getDayOfWeek(date: Date): number {\n return date.getDay();\n }\n\n getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\n const dtf = new Intl.DateTimeFormat(this.locale, {month: style, timeZone: 'utc'});\n return range(12, i => this._format(dtf, new Date(2017, i, 1)));\n }\n\n getDateNames(): string[] {\n const dtf = new Intl.DateTimeFormat(this.locale, {day: 'numeric', timeZone: 'utc'});\n return range(31, i => this._format(dtf, new Date(2017, 0, i + 1)));\n }\n\n getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\n const dtf = new Intl.DateTimeFormat(this.locale, {weekday: style, timeZone: 'utc'});\n return range(7, i => this._format(dtf, new Date(2017, 0, i + 1)));\n }\n\n getYearName(date: Date): string {\n const dtf = new Intl.DateTimeFormat(this.locale, {year: 'numeric', timeZone: 'utc'});\n return this._format(dtf, date);\n }\n\n getFirstDayOfWeek(): number {\n // At the time of writing `Intl.Locale` isn't available\n // in the internal types so we need to cast to `any`.\n if (typeof Intl !== 'undefined' && (Intl as any).Locale) {\n const locale = new (Intl as any).Locale(this.locale) as {\n getWeekInfo?: () => {firstDay: number};\n weekInfo?: {firstDay: number};\n };\n\n // Some browsers implement a `getWeekInfo` method while others have a `weekInfo` getter.\n // Note that this isn't supported in all browsers so we need to null check it.\n const firstDay = (locale.getWeekInfo?.() || locale.weekInfo)?.firstDay ?? 0;\n\n // `weekInfo.firstDay` is a number between 1 and 7 where, starting from Monday,\n // whereas our representation is 0 to 6 where 0 is Sunday so we need to normalize it.\n return firstDay === 7 ? 0 : firstDay;\n }\n\n // Default to Sunday if the browser doesn't provide the week information.\n return 0;\n }\n\n getNumDaysInMonth(date: Date): number {\n return this.getDate(\n this._createDateWithOverflow(this.getYear(date), this.getMonth(date) + 1, 0),\n );\n }\n\n clone(date: Date): Date {\n return new Date(date.getTime());\n }\n\n createDate(year: number, month: number, date: number): Date {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n // Check for invalid month and date (except upper bound on date which we have to check after\n // creating the Date).\n if (month < 0 || month > 11) {\n throw Error(`Invalid month index \"${month}\". Month index has to be between 0 and 11.`);\n }\n\n if (date < 1) {\n throw Error(`Invalid date \"${date}\". Date has to be greater than 0.`);\n }\n }\n\n let result = this._createDateWithOverflow(year, month, date);\n // Check that the date wasn't above the upper bound for the month, causing the month to overflow\n if (result.getMonth() != month && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(`Invalid date \"${date}\" for month with index \"${month}\".`);\n }\n\n return result;\n }\n\n today(): Date {\n return new Date();\n }\n\n parse(value: any, parseFormat?: any): Date | null {\n // We have no way using the native JS Date to set the parse format or locale, so we ignore these\n // parameters.\n if (typeof value == 'number') {\n return new Date(value);\n }\n return value ? new Date(Date.parse(value)) : null;\n }\n\n format(date: Date, displayFormat: Object): string {\n if (!this.isValid(date)) {\n throw Error('NativeDateAdapter: Cannot format invalid date.');\n }\n\n const dtf = new Intl.DateTimeFormat(this.locale, {...displayFormat, timeZone: 'utc'});\n return this._format(dtf, date);\n }\n\n addCalendarYears(date: Date, years: number): Date {\n return this.addCalendarMonths(date, years * 12);\n }\n\n addCalendarMonths(date: Date, months: number): Date {\n let newDate = this._createDateWithOverflow(\n this.getYear(date),\n this.getMonth(date) + months,\n this.getDate(date),\n );\n\n // It's possible to wind up in the wrong month if the original month has more days than the new\n // month. In this case we want to go to the last day of the desired month.\n // Note: the additional + 12 % 12 ensures we end up with a positive number, since JS % doesn't\n // guarantee this.\n if (this.getMonth(newDate) != (((this.getMonth(date) + months) % 12) + 12) % 12) {\n newDate = this._createDateWithOverflow(this.getYear(newDate), this.getMonth(newDate), 0);\n }\n\n return newDate;\n }\n\n addCalendarDays(date: Date, days: number): Date {\n return this._createDateWithOverflow(\n this.getYear(date),\n this.getMonth(date),\n this.getDate(date) + days,\n );\n }\n\n toIso8601(date: Date): string {\n return [\n date.getUTCFullYear(),\n this._2digit(date.getUTCMonth() + 1),\n this._2digit(date.getUTCDate()),\n ].join('-');\n }\n\n /**\n * Returns the given value if given a valid Date or null. Deserializes valid ISO 8601 strings\n * (https://www.ietf.org/rfc/rfc3339.txt) into valid Dates and empty string into null. Returns an\n * invalid date for all other values.\n */\n override deserialize(value: any): Date | null {\n if (typeof value === 'string') {\n if (!value) {\n return null;\n }\n // The `Date` constructor accepts formats other than ISO 8601, so we need to make sure the\n // string is the right format first.\n if (ISO_8601_REGEX.test(value)) {\n let date = new Date(value);\n if (this.isValid(date)) {\n return date;\n }\n }\n }\n return super.deserialize(value);\n }\n\n isDateInstance(obj: any) {\n return obj instanceof Date;\n }\n\n isValid(date: Date) {\n return !isNaN(date.getTime());\n }\n\n invalid(): Date {\n return new Date(NaN);\n }\n\n override setTime(target: Date, hours: number, minutes: number, seconds: number): Date {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!inRange(hours, 0, 23)) {\n throw Error(`Invalid hours \"${hours}\". Hours value must be between 0 and 23.`);\n }\n\n if (!inRange(minutes, 0, 59)) {\n throw Error(`Invalid minutes \"${minutes}\". Minutes value must be between 0 and 59.`);\n }\n\n if (!inRange(seconds, 0, 59)) {\n throw Error(`Invalid seconds \"${seconds}\". Seconds value must be between 0 and 59.`);\n }\n }\n\n const clone = this.clone(target);\n clone.setHours(hours, minutes, seconds, 0);\n return clone;\n }\n\n override getHours(date: Date): number {\n return date.getHours();\n }\n\n override getMinutes(date: Date): number {\n return date.getMinutes();\n }\n\n override getSeconds(date: Date): number {\n return date.getSeconds();\n }\n\n override parseTime(userValue: any, parseFormat?: any): Date | null {\n if (typeof userValue !== 'string') {\n return userValue instanceof Date ? new Date(userValue.getTime()) : null;\n }\n\n const value = userValue.trim();\n\n if (value.length === 0) {\n return null;\n }\n\n // Attempt to parse the value directly.\n let result = this._parseTimeString(value);\n\n // Some locales add extra characters around the time, but are otherwise parseable\n // (e.g. `00:05 ч.` in bg-BG). Try replacing all non-number and non-colon characters.\n if (result === null) {\n const withoutExtras = value.replace(/[^0-9:(AM|PM)]/gi, '').trim();\n\n if (withoutExtras.length > 0) {\n result = this._parseTimeString(withoutExtras);\n }\n }\n\n return result || this.invalid();\n }\n\n override addSeconds(date: Date, amount: number): Date {\n return new Date(date.getTime() + amount * 1000);\n }\n\n /** Creates a date but allows the month and date to overflow. */\n private _createDateWithOverflow(year: number, month: number, date: number) {\n // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\n // To work around this we use `setFullYear` and `setHours` instead.\n const d = new Date();\n d.setFullYear(year, month, date);\n d.setHours(0, 0, 0, 0);\n return d;\n }\n\n /**\n * Pads a number to make it two digits.\n * @param n The number to pad.\n * @returns The padded number.\n */\n private _2digit(n: number) {\n return ('00' + n).slice(-2);\n }\n\n /**\n * When converting Date object to string, javascript built-in functions may return wrong\n * results because it applies its internal DST rules. The DST rules around the world change\n * very frequently, and the current valid rule is not always valid in previous years though.\n * We work around this problem building a new Date object which has its internal UTC\n * representation with the local date and time.\n * @param dtf Intl.DateTimeFormat object, containing the desired string format. It must have\n * timeZone set to 'utc' to work fine.\n * @param date Date from which we want to get the string representation according to dtf\n * @returns A Date object with its UTC representation based on the passed in date info\n */\n private _format(dtf: Intl.DateTimeFormat, date: Date) {\n // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\n // To work around this we use `setUTCFullYear` and `setUTCHours` instead.\n const d = new Date();\n d.setUTCFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n d.setUTCHours(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n return dtf.format(d);\n }\n\n /**\n * Attempts to parse a time string into a date object. Returns null if it cannot be parsed.\n * @param value Time string to parse.\n */\n private _parseTimeString(value: string): Date | null {\n // Note: we can technically rely on the browser for the time parsing by generating\n // an ISO string and appending the string to the end of it. We don't do it, because\n // browsers aren't consistent in what they support. Some examples:\n // - Safari doesn't support AM/PM.\n // - Firefox produces a valid date object if the time string has overflows (e.g. 12:75) while\n // other browsers produce an invalid date.\n // - Safari doesn't allow padded numbers.\n const parsed = value.toUpperCase().match(TIME_REGEX);\n\n if (parsed) {\n let hours = parseInt(parsed[1]);\n const minutes = parseInt(parsed[2]);\n let seconds: number | undefined = parsed[3] == null ? undefined : parseInt(parsed[3]);\n const amPm = parsed[4] as 'AM' | 'PM' | undefined;\n\n if (hours === 12) {\n hours = amPm === 'AM' ? 0 : hours;\n } else if (amPm === 'PM') {\n hours += 12;\n }\n\n if (\n inRange(hours, 0, 23) &&\n inRange(minutes, 0, 59) &&\n (seconds == null || inRange(seconds, 0, 59))\n ) {\n return this.setTime(this.today(), hours, minutes, seconds || 0);\n }\n }\n\n return null;\n }\n}\n\n/** Checks whether a number is within a certain range. */\nfunction inRange(value: number, min: number, max: number): boolean {\n return !isNaN(value) && value >= min && value <= max;\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 {MatDateFormats} from './date-formats';\n\nexport const MAT_NATIVE_DATE_FORMATS: MatDateFormats = {\n parse: {\n dateInput: null,\n timeInput: null,\n },\n display: {\n dateInput: {year: 'numeric', month: 'numeric', day: 'numeric'},\n timeInput: {hour: 'numeric', minute: 'numeric'},\n monthYearLabel: {year: 'numeric', month: 'short'},\n dateA11yLabel: {year: 'numeric', month: 'long', day: 'numeric'},\n monthYearA11yLabel: {year: 'numeric', month: 'long'},\n timeOptionLabel: {hour: 'numeric', minute: 'numeric'},\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 {NgModule, Provider} from '@angular/core';\nimport {DateAdapter} from './date-adapter';\nimport {MAT_DATE_FORMATS, MatDateFormats} from './date-formats';\nimport {NativeDateAdapter} from './native-date-adapter';\nimport {MAT_NATIVE_DATE_FORMATS} from './native-date-formats';\n\nexport * from './date-adapter';\nexport * from './date-formats';\nexport * from './native-date-adapter';\nexport * from './native-date-formats';\n\n@NgModule({\n providers: [{provide: DateAdapter, useClass: NativeDateAdapter}],\n})\nexport class NativeDateModule {}\n\n@NgModule({\n providers: [provideNativeDateAdapter()],\n})\nexport class MatNativeDateModule {}\n\nexport function provideNativeDateAdapter(\n formats: MatDateFormats = MAT_NATIVE_DATE_FORMATS,\n): Provider[] {\n return [\n {provide: DateAdapter, useClass: NativeDateAdapter},\n {provide: MAT_DATE_FORMATS, useValue: formats},\n ];\n}\n"],"names":["VERSION","Version","ISO_8601_REGEX","TIME_REGEX","range","length","valueFunction","valuesArray","Array","i","NativeDateAdapter","DateAdapter","_matDateLocale","inject","MAT_DATE_LOCALE","optional","constructor","matDateLocale","undefined","setLocale","getYear","date","getFullYear","getMonth","getDate","getDayOfWeek","getDay","getMonthNames","style","dtf","Intl","DateTimeFormat","locale","month","timeZone","_format","Date","getDateNames","day","getDayOfWeekNames","weekday","getYearName","year","getFirstDayOfWeek","Locale","firstDay","getWeekInfo","weekInfo","getNumDaysInMonth","_createDateWithOverflow","clone","getTime","createDate","ngDevMode","Error","result","today","parse","value","parseFormat","format","displayFormat","isValid","addCalendarYears","years","addCalendarMonths","months","newDate","addCalendarDays","days","toIso8601","getUTCFullYear","_2digit","getUTCMonth","getUTCDate","join","deserialize","test","isDateInstance","obj","isNaN","invalid","NaN","setTime","target","hours","minutes","seconds","inRange","setHours","getHours","getMinutes","getSeconds","parseTime","userValue","trim","_parseTimeString","withoutExtras","replace","addSeconds","amount","d","setFullYear","n","slice","setUTCFullYear","setUTCHours","getMilliseconds","parsed","toUpperCase","match","parseInt","amPm","deps","i0","ɵɵFactoryTarget","Injectable","decorators","min","max","MAT_NATIVE_DATE_FORMATS","dateInput","timeInput","display","hour","minute","monthYearLabel","dateA11yLabel","monthYearA11yLabel","timeOptionLabel","NativeDateModule","NgModule","providers","provide","useClass","args","MatNativeDateModule","ɵinj","ɵɵngDeclareInjector","minVersion","version","ngImport","type","provideNativeDateAdapter","formats","MAT_DATE_FORMATS","useValue"],"mappings":"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"}
1
+ {"version":3,"file":"core.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/core/version.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/core/datetime/native-date-adapter.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/core/datetime/native-date-formats.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/core/datetime/index.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 {Version} from '@angular/core';\n\n/** Current version of Angular Material. */\nexport const VERSION = new Version('21.2.0-next.2');\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 {inject, Injectable} from '@angular/core';\nimport {DateAdapter, MAT_DATE_LOCALE} from './date-adapter';\n\n/**\n * Matches strings that have the form of a valid RFC 3339 string\n * (https://tools.ietf.org/html/rfc3339). Note that the string may not actually be a valid date\n * because the regex will match strings with an out of bounds month, date, etc.\n */\nconst ISO_8601_REGEX =\n /^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|(?:(?:\\+|-)\\d{2}:\\d{2}))?)?$/;\n\n/**\n * Matches a time string. Supported formats:\n * - {{hours}}:{{minutes}}\n * - {{hours}}:{{minutes}}:{{seconds}}\n * - {{hours}}:{{minutes}} AM/PM\n * - {{hours}}:{{minutes}}:{{seconds}} AM/PM\n * - {{hours}}.{{minutes}}\n * - {{hours}}.{{minutes}}.{{seconds}}\n * - {{hours}}.{{minutes}} AM/PM\n * - {{hours}}.{{minutes}}.{{seconds}} AM/PM\n */\nconst TIME_REGEX = /^(\\d?\\d)[:.](\\d?\\d)(?:[:.](\\d?\\d))?\\s*(AM|PM)?$/i;\n\n/** Creates an array and fills it with values. */\nfunction range<T>(length: number, valueFunction: (index: number) => T): T[] {\n const valuesArray = Array(length);\n for (let i = 0; i < length; i++) {\n valuesArray[i] = valueFunction(i);\n }\n return valuesArray;\n}\n\n/** Adapts the native JS Date for use with cdk-based components that work with dates. */\n@Injectable()\nexport class NativeDateAdapter extends DateAdapter<Date> {\n /** The injected locale. */\n private readonly _matDateLocale = inject(MAT_DATE_LOCALE, {optional: true});\n\n constructor(...args: unknown[]);\n\n constructor() {\n super();\n\n const matDateLocale = inject(MAT_DATE_LOCALE, {optional: true});\n\n if (matDateLocale !== undefined) {\n this._matDateLocale = matDateLocale;\n }\n\n super.setLocale(this._matDateLocale);\n }\n\n getYear(date: Date): number {\n return date.getFullYear();\n }\n\n getMonth(date: Date): number {\n return date.getMonth();\n }\n\n getDate(date: Date): number {\n return date.getDate();\n }\n\n getDayOfWeek(date: Date): number {\n return date.getDay();\n }\n\n getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\n const dtf = new Intl.DateTimeFormat(this.locale, {month: style, timeZone: 'utc'});\n return range(12, i => this._format(dtf, new Date(2017, i, 1)));\n }\n\n getDateNames(): string[] {\n const dtf = new Intl.DateTimeFormat(this.locale, {day: 'numeric', timeZone: 'utc'});\n return range(31, i => this._format(dtf, new Date(2017, 0, i + 1)));\n }\n\n getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\n const dtf = new Intl.DateTimeFormat(this.locale, {weekday: style, timeZone: 'utc'});\n return range(7, i => this._format(dtf, new Date(2017, 0, i + 1)));\n }\n\n getYearName(date: Date): string {\n const dtf = new Intl.DateTimeFormat(this.locale, {year: 'numeric', timeZone: 'utc'});\n return this._format(dtf, date);\n }\n\n getFirstDayOfWeek(): number {\n // At the time of writing `Intl.Locale` isn't available\n // in the internal types so we need to cast to `any`.\n if (typeof Intl !== 'undefined' && (Intl as any).Locale) {\n const locale = new (Intl as any).Locale(this.locale) as {\n getWeekInfo?: () => {firstDay: number};\n weekInfo?: {firstDay: number};\n };\n\n // Some browsers implement a `getWeekInfo` method while others have a `weekInfo` getter.\n // Note that this isn't supported in all browsers so we need to null check it.\n const firstDay = (locale.getWeekInfo?.() || locale.weekInfo)?.firstDay ?? 0;\n\n // `weekInfo.firstDay` is a number between 1 and 7 where, starting from Monday,\n // whereas our representation is 0 to 6 where 0 is Sunday so we need to normalize it.\n return firstDay === 7 ? 0 : firstDay;\n }\n\n // Default to Sunday if the browser doesn't provide the week information.\n return 0;\n }\n\n getNumDaysInMonth(date: Date): number {\n return this.getDate(\n this._createDateWithOverflow(this.getYear(date), this.getMonth(date) + 1, 0),\n );\n }\n\n clone(date: Date): Date {\n return new Date(date.getTime());\n }\n\n createDate(year: number, month: number, date: number): Date {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n // Check for invalid month and date (except upper bound on date which we have to check after\n // creating the Date).\n if (month < 0 || month > 11) {\n throw Error(`Invalid month index \"${month}\". Month index has to be between 0 and 11.`);\n }\n\n if (date < 1) {\n throw Error(`Invalid date \"${date}\". Date has to be greater than 0.`);\n }\n }\n\n let result = this._createDateWithOverflow(year, month, date);\n // Check that the date wasn't above the upper bound for the month, causing the month to overflow\n if (result.getMonth() != month && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw Error(`Invalid date \"${date}\" for month with index \"${month}\".`);\n }\n\n return result;\n }\n\n today(): Date {\n return new Date();\n }\n\n parse(value: any, parseFormat?: any): Date | null {\n // We have no way using the native JS Date to set the parse format or locale, so we ignore these\n // parameters.\n if (typeof value == 'number') {\n return new Date(value);\n }\n return value ? new Date(Date.parse(value)) : null;\n }\n\n format(date: Date, displayFormat: Object): string {\n if (!this.isValid(date)) {\n throw Error('NativeDateAdapter: Cannot format invalid date.');\n }\n\n const dtf = new Intl.DateTimeFormat(this.locale, {...displayFormat, timeZone: 'utc'});\n return this._format(dtf, date);\n }\n\n addCalendarYears(date: Date, years: number): Date {\n return this.addCalendarMonths(date, years * 12);\n }\n\n addCalendarMonths(date: Date, months: number): Date {\n let newDate = this._createDateWithOverflow(\n this.getYear(date),\n this.getMonth(date) + months,\n this.getDate(date),\n );\n\n // It's possible to wind up in the wrong month if the original month has more days than the new\n // month. In this case we want to go to the last day of the desired month.\n // Note: the additional + 12 % 12 ensures we end up with a positive number, since JS % doesn't\n // guarantee this.\n if (this.getMonth(newDate) != (((this.getMonth(date) + months) % 12) + 12) % 12) {\n newDate = this._createDateWithOverflow(this.getYear(newDate), this.getMonth(newDate), 0);\n }\n\n return newDate;\n }\n\n addCalendarDays(date: Date, days: number): Date {\n return this._createDateWithOverflow(\n this.getYear(date),\n this.getMonth(date),\n this.getDate(date) + days,\n );\n }\n\n toIso8601(date: Date): string {\n return [\n date.getUTCFullYear(),\n this._2digit(date.getUTCMonth() + 1),\n this._2digit(date.getUTCDate()),\n ].join('-');\n }\n\n /**\n * Returns the given value if given a valid Date or null. Deserializes valid ISO 8601 strings\n * (https://www.ietf.org/rfc/rfc3339.txt) into valid Dates and empty string into null. Returns an\n * invalid date for all other values.\n */\n override deserialize(value: any): Date | null {\n if (typeof value === 'string') {\n if (!value) {\n return null;\n }\n // The `Date` constructor accepts formats other than ISO 8601, so we need to make sure the\n // string is the right format first.\n if (ISO_8601_REGEX.test(value)) {\n let date = new Date(value);\n if (this.isValid(date)) {\n return date;\n }\n }\n }\n return super.deserialize(value);\n }\n\n isDateInstance(obj: any) {\n return obj instanceof Date;\n }\n\n isValid(date: Date) {\n return !isNaN(date.getTime());\n }\n\n invalid(): Date {\n return new Date(NaN);\n }\n\n override setTime(target: Date, hours: number, minutes: number, seconds: number): Date {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (!inRange(hours, 0, 23)) {\n throw Error(`Invalid hours \"${hours}\". Hours value must be between 0 and 23.`);\n }\n\n if (!inRange(minutes, 0, 59)) {\n throw Error(`Invalid minutes \"${minutes}\". Minutes value must be between 0 and 59.`);\n }\n\n if (!inRange(seconds, 0, 59)) {\n throw Error(`Invalid seconds \"${seconds}\". Seconds value must be between 0 and 59.`);\n }\n }\n\n const clone = this.clone(target);\n clone.setHours(hours, minutes, seconds, 0);\n return clone;\n }\n\n override getHours(date: Date): number {\n return date.getHours();\n }\n\n override getMinutes(date: Date): number {\n return date.getMinutes();\n }\n\n override getSeconds(date: Date): number {\n return date.getSeconds();\n }\n\n override parseTime(userValue: any, parseFormat?: any): Date | null {\n if (typeof userValue !== 'string') {\n return userValue instanceof Date ? new Date(userValue.getTime()) : null;\n }\n\n const value = userValue.trim();\n\n if (value.length === 0) {\n return null;\n }\n\n // Attempt to parse the value directly.\n let result = this._parseTimeString(value);\n\n // Some locales add extra characters around the time, but are otherwise parseable\n // (e.g. `00:05 ч.` in bg-BG). Try replacing all non-number and non-colon characters.\n if (result === null) {\n const withoutExtras = value.replace(/[^0-9:(AM|PM)]/gi, '').trim();\n\n if (withoutExtras.length > 0) {\n result = this._parseTimeString(withoutExtras);\n }\n }\n\n return result || this.invalid();\n }\n\n override addSeconds(date: Date, amount: number): Date {\n return new Date(date.getTime() + amount * 1000);\n }\n\n /** Creates a date but allows the month and date to overflow. */\n private _createDateWithOverflow(year: number, month: number, date: number) {\n // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\n // To work around this we use `setFullYear` and `setHours` instead.\n const d = new Date();\n d.setFullYear(year, month, date);\n d.setHours(0, 0, 0, 0);\n return d;\n }\n\n /**\n * Pads a number to make it two digits.\n * @param n The number to pad.\n * @returns The padded number.\n */\n private _2digit(n: number) {\n return ('00' + n).slice(-2);\n }\n\n /**\n * When converting Date object to string, javascript built-in functions may return wrong\n * results because it applies its internal DST rules. The DST rules around the world change\n * very frequently, and the current valid rule is not always valid in previous years though.\n * We work around this problem building a new Date object which has its internal UTC\n * representation with the local date and time.\n * @param dtf Intl.DateTimeFormat object, containing the desired string format. It must have\n * timeZone set to 'utc' to work fine.\n * @param date Date from which we want to get the string representation according to dtf\n * @returns A Date object with its UTC representation based on the passed in date info\n */\n private _format(dtf: Intl.DateTimeFormat, date: Date) {\n // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\n // To work around this we use `setUTCFullYear` and `setUTCHours` instead.\n const d = new Date();\n d.setUTCFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n d.setUTCHours(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n return dtf.format(d);\n }\n\n /**\n * Attempts to parse a time string into a date object. Returns null if it cannot be parsed.\n * @param value Time string to parse.\n */\n private _parseTimeString(value: string): Date | null {\n // Note: we can technically rely on the browser for the time parsing by generating\n // an ISO string and appending the string to the end of it. We don't do it, because\n // browsers aren't consistent in what they support. Some examples:\n // - Safari doesn't support AM/PM.\n // - Firefox produces a valid date object if the time string has overflows (e.g. 12:75) while\n // other browsers produce an invalid date.\n // - Safari doesn't allow padded numbers.\n const parsed = value.toUpperCase().match(TIME_REGEX);\n\n if (parsed) {\n let hours = parseInt(parsed[1]);\n const minutes = parseInt(parsed[2]);\n let seconds: number | undefined = parsed[3] == null ? undefined : parseInt(parsed[3]);\n const amPm = parsed[4] as 'AM' | 'PM' | undefined;\n\n if (hours === 12) {\n hours = amPm === 'AM' ? 0 : hours;\n } else if (amPm === 'PM') {\n hours += 12;\n }\n\n if (\n inRange(hours, 0, 23) &&\n inRange(minutes, 0, 59) &&\n (seconds == null || inRange(seconds, 0, 59))\n ) {\n return this.setTime(this.today(), hours, minutes, seconds || 0);\n }\n }\n\n return null;\n }\n}\n\n/** Checks whether a number is within a certain range. */\nfunction inRange(value: number, min: number, max: number): boolean {\n return !isNaN(value) && value >= min && value <= max;\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 {MatDateFormats} from './date-formats';\n\nexport const MAT_NATIVE_DATE_FORMATS: MatDateFormats = {\n parse: {\n dateInput: null,\n timeInput: null,\n },\n display: {\n dateInput: {year: 'numeric', month: 'numeric', day: 'numeric'},\n timeInput: {hour: 'numeric', minute: 'numeric'},\n monthYearLabel: {year: 'numeric', month: 'short'},\n dateA11yLabel: {year: 'numeric', month: 'long', day: 'numeric'},\n monthYearA11yLabel: {year: 'numeric', month: 'long'},\n timeOptionLabel: {hour: 'numeric', minute: 'numeric'},\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 {NgModule, Provider} from '@angular/core';\nimport {DateAdapter} from './date-adapter';\nimport {MAT_DATE_FORMATS, MatDateFormats} from './date-formats';\nimport {NativeDateAdapter} from './native-date-adapter';\nimport {MAT_NATIVE_DATE_FORMATS} from './native-date-formats';\n\nexport * from './date-adapter';\nexport * from './date-formats';\nexport * from './native-date-adapter';\nexport * from './native-date-formats';\n\n@NgModule({\n providers: [{provide: DateAdapter, useClass: NativeDateAdapter}],\n})\nexport class NativeDateModule {}\n\n@NgModule({\n providers: [provideNativeDateAdapter()],\n})\nexport class MatNativeDateModule {}\n\nexport function provideNativeDateAdapter(\n formats: MatDateFormats = MAT_NATIVE_DATE_FORMATS,\n): Provider[] {\n return [\n {provide: DateAdapter, useClass: NativeDateAdapter},\n {provide: MAT_DATE_FORMATS, useValue: formats},\n ];\n}\n"],"names":["VERSION","Version","ISO_8601_REGEX","TIME_REGEX","range","length","valueFunction","valuesArray","Array","i","NativeDateAdapter","DateAdapter","_matDateLocale","inject","MAT_DATE_LOCALE","optional","constructor","matDateLocale","undefined","setLocale","getYear","date","getFullYear","getMonth","getDate","getDayOfWeek","getDay","getMonthNames","style","dtf","Intl","DateTimeFormat","locale","month","timeZone","_format","Date","getDateNames","day","getDayOfWeekNames","weekday","getYearName","year","getFirstDayOfWeek","Locale","firstDay","getWeekInfo","weekInfo","getNumDaysInMonth","_createDateWithOverflow","clone","getTime","createDate","ngDevMode","Error","result","today","parse","value","parseFormat","format","displayFormat","isValid","addCalendarYears","years","addCalendarMonths","months","newDate","addCalendarDays","days","toIso8601","getUTCFullYear","_2digit","getUTCMonth","getUTCDate","join","deserialize","test","isDateInstance","obj","isNaN","invalid","NaN","setTime","target","hours","minutes","seconds","inRange","setHours","getHours","getMinutes","getSeconds","parseTime","userValue","trim","_parseTimeString","withoutExtras","replace","addSeconds","amount","d","setFullYear","n","slice","setUTCFullYear","setUTCHours","getMilliseconds","parsed","toUpperCase","match","parseInt","amPm","deps","i0","ɵɵFactoryTarget","Injectable","decorators","min","max","MAT_NATIVE_DATE_FORMATS","dateInput","timeInput","display","hour","minute","monthYearLabel","dateA11yLabel","monthYearA11yLabel","timeOptionLabel","NativeDateModule","NgModule","providers","provide","useClass","args","MatNativeDateModule","ɵinj","ɵɵngDeclareInjector","minVersion","version","ngImport","type","provideNativeDateAdapter","formats","MAT_DATE_FORMATS","useValue"],"mappings":"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"}
@@ -353,7 +353,7 @@ class MatDrawer {
353
353
  }
354
354
  _updateFocusTrapState() {
355
355
  if (this._focusTrap) {
356
- this._focusTrap.enabled = !!this._container?.hasBackdrop && this.opened;
356
+ this._focusTrap.enabled = this.opened && !!this._container?._isShowingBackdrop();
357
357
  }
358
358
  }
359
359
  _updatePositionInParent(newPosition) {
@@ -1 +1 @@
1
- {"version":3,"file":"sidenav.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/sidenav/drawer.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/sidenav/drawer.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/sidenav/drawer-container.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/sidenav/sidenav.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/sidenav/sidenav-container.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/sidenav/sidenav-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 */\nimport {\n FocusMonitor,\n FocusOrigin,\n FocusTrap,\n FocusTrapFactory,\n InteractivityChecker,\n} from '@angular/cdk/a11y';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {ESCAPE, hasModifierKey} from '@angular/cdk/keycodes';\nimport {Platform} from '@angular/cdk/platform';\nimport {CdkScrollable, ScrollDispatcher, ViewportRuler} from '@angular/cdk/scrolling';\n\nimport {\n AfterContentInit,\n afterNextRender,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n DoCheck,\n ElementRef,\n EventEmitter,\n inject,\n InjectionToken,\n Injector,\n Input,\n NgZone,\n OnDestroy,\n Output,\n QueryList,\n Renderer2,\n ViewChild,\n ViewEncapsulation,\n DOCUMENT,\n signal,\n} from '@angular/core';\nimport {merge, Observable, Subject} from 'rxjs';\nimport {debounceTime, filter, map, mapTo, startWith, take, takeUntil} from 'rxjs/operators';\nimport {_animationsDisabled} from '../core';\n\n/**\n * Throws an exception when two MatDrawer are matching the same position.\n * @docs-private\n */\nexport function throwMatDuplicatedDrawerError(position: string) {\n throw Error(`A drawer was already declared for 'position=\"${position}\"'`);\n}\n\n/** Options for where to set focus to automatically on dialog open */\nexport type AutoFocusTarget = 'dialog' | 'first-tabbable' | 'first-heading';\n\n/** Result of the toggle promise that indicates the state of the drawer. */\nexport type MatDrawerToggleResult = 'open' | 'close';\n\n/** Drawer and SideNav display modes. */\nexport type MatDrawerMode = 'over' | 'push' | 'side';\n\n/** Configures whether drawers should use auto sizing by default. */\nexport const MAT_DRAWER_DEFAULT_AUTOSIZE = new InjectionToken<boolean>(\n 'MAT_DRAWER_DEFAULT_AUTOSIZE',\n {\n providedIn: 'root',\n factory: () => false,\n },\n);\n\n/**\n * Used to provide a drawer container to a drawer while avoiding circular references.\n * @docs-private\n */\nexport const MAT_DRAWER_CONTAINER = new InjectionToken('MAT_DRAWER_CONTAINER');\n\n@Component({\n selector: 'mat-drawer-content',\n template: '<ng-content></ng-content>',\n host: {\n 'class': 'mat-drawer-content',\n '[style.margin-left.px]': '_container._contentMargins.left',\n '[style.margin-right.px]': '_container._contentMargins.right',\n '[class.mat-drawer-content-hidden]': '_shouldBeHidden()',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: CdkScrollable,\n useExisting: MatDrawerContent,\n },\n ],\n})\nexport class MatDrawerContent extends CdkScrollable implements AfterContentInit {\n private _platform = inject(Platform);\n private _changeDetectorRef = inject(ChangeDetectorRef);\n _container = inject(MatDrawerContainer);\n\n constructor(...args: unknown[]);\n\n constructor() {\n const elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n const scrollDispatcher = inject(ScrollDispatcher);\n const ngZone = inject(NgZone);\n\n super(elementRef, scrollDispatcher, ngZone);\n }\n\n ngAfterContentInit() {\n this._container._contentMarginChanges.subscribe(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\n\n /** Determines whether the content element should be hidden from the user. */\n protected _shouldBeHidden(): boolean {\n // In some modes the content is pushed based on the width of the opened sidenavs, however on\n // the server we can't measure the sidenav so the margin is always zero. This can cause the\n // content to jump around when it's rendered on the server and hydrated on the client. We\n // avoid it by hiding the content on the initial render and then showing it once the sidenav\n // has been measured on the client.\n if (this._platform.isBrowser) {\n return false;\n }\n\n const {start, end} = this._container;\n return (\n (start != null && start.mode !== 'over' && start.opened) ||\n (end != null && end.mode !== 'over' && end.opened)\n );\n }\n}\n\n/**\n * This component corresponds to a drawer that can be opened on the drawer container.\n */\n@Component({\n selector: 'mat-drawer',\n exportAs: 'matDrawer',\n templateUrl: 'drawer.html',\n host: {\n 'class': 'mat-drawer',\n // must prevent the browser from aligning text based on value\n '[attr.align]': 'null',\n '[class.mat-drawer-end]': 'position === \"end\"',\n '[class.mat-drawer-over]': 'mode === \"over\"',\n '[class.mat-drawer-push]': 'mode === \"push\"',\n '[class.mat-drawer-side]': 'mode === \"side\"',\n // The styles that render the sidenav off-screen come from the drawer container. Prior to #30235\n // this was also done by the animations module which some internal tests seem to depend on.\n // Simulate it by toggling the `hidden` attribute instead.\n '[style.visibility]': '(!_container && !opened) ? \"hidden\" : null',\n // The sidenav container should not be focused on when used in side mode. See b/286459024 for\n // reference. Updates tabIndex of drawer/container to default to null if in side mode.\n '[attr.tabIndex]': '(mode !== \"side\") ? \"-1\" : null',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [CdkScrollable],\n})\nexport class MatDrawer implements AfterViewInit, OnDestroy {\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private _focusTrapFactory = inject(FocusTrapFactory);\n private _focusMonitor = inject(FocusMonitor);\n private _platform = inject(Platform);\n private _ngZone = inject(NgZone);\n private _renderer = inject(Renderer2);\n private readonly _interactivityChecker = inject(InteractivityChecker);\n private _doc = inject(DOCUMENT);\n _container? = inject<MatDrawerContainer>(MAT_DRAWER_CONTAINER, {optional: true});\n\n private _focusTrap: FocusTrap | null = null;\n private _elementFocusedBeforeDrawerWasOpened: HTMLElement | null = null;\n private _eventCleanups!: (() => void)[];\n\n /** Whether the view of the component has been attached. */\n private _isAttached = false;\n\n /** Anchor node used to restore the drawer to its initial position. */\n private _anchor: Comment | null = null;\n\n /** The side that the drawer is attached to. */\n @Input()\n get position(): 'start' | 'end' {\n return this._position;\n }\n set position(value: 'start' | 'end') {\n // Make sure we have a valid value.\n value = value === 'end' ? 'end' : 'start';\n if (value !== this._position) {\n // Static inputs in Ivy are set before the element is in the DOM.\n if (this._isAttached) {\n this._updatePositionInParent(value);\n }\n\n this._position = value;\n this.onPositionChanged.emit();\n }\n }\n private _position: 'start' | 'end' = 'start';\n\n /** Mode of the drawer; one of 'over', 'push' or 'side'. */\n @Input()\n get mode(): MatDrawerMode {\n return this._mode;\n }\n set mode(value: MatDrawerMode) {\n this._mode = value;\n this._updateFocusTrapState();\n this._modeChanged.next();\n }\n private _mode: MatDrawerMode = 'over';\n\n /** Whether the drawer can be closed with the escape key or by clicking on the backdrop. */\n @Input()\n get disableClose(): boolean {\n return this._disableClose;\n }\n set disableClose(value: BooleanInput) {\n this._disableClose = coerceBooleanProperty(value);\n }\n private _disableClose: boolean = false;\n\n /**\n * Whether the drawer should focus the first focusable element automatically when opened.\n * Defaults to false in when `mode` is set to `side`, otherwise defaults to `true`. If explicitly\n * enabled, focus will be moved into the sidenav in `side` mode as well.\n * @breaking-change 14.0.0 Remove boolean option from autoFocus. Use string or AutoFocusTarget\n * instead.\n */\n @Input()\n get autoFocus(): AutoFocusTarget | string | boolean {\n const value = this._autoFocus;\n\n // Note that usually we don't allow autoFocus to be set to `first-tabbable` in `side` mode,\n // because we don't know how the sidenav is being used, but in some cases it still makes\n // sense to do it. The consumer can explicitly set `autoFocus`.\n if (value == null) {\n if (this.mode === 'side') {\n return 'dialog';\n } else {\n return 'first-tabbable';\n }\n }\n return value;\n }\n set autoFocus(value: AutoFocusTarget | string | BooleanInput) {\n if (value === 'true' || value === 'false' || value == null) {\n value = coerceBooleanProperty(value);\n }\n this._autoFocus = value;\n }\n private _autoFocus: AutoFocusTarget | string | boolean | undefined;\n\n /**\n * Whether the drawer is opened. We overload this because we trigger an event when it\n * starts or end.\n */\n @Input()\n get opened(): boolean {\n return this._opened();\n }\n set opened(value: BooleanInput) {\n this.toggle(coerceBooleanProperty(value));\n }\n private _opened = signal(false);\n\n /** How the sidenav was opened (keypress, mouse click etc.) */\n private _openedVia: FocusOrigin | null = null;\n\n /** Emits whenever the drawer has started animating. */\n readonly _animationStarted = new Subject();\n\n /** Emits whenever the drawer is done animating. */\n readonly _animationEnd = new Subject();\n\n /** Event emitted when the drawer open state is changed. */\n @Output() readonly openedChange: EventEmitter<boolean> =\n // Note this has to be async in order to avoid some issues with two-bindings (see #8872).\n new EventEmitter<boolean>(/* isAsync */ true);\n\n /** Event emitted when the drawer has been opened. */\n @Output('opened')\n readonly _openedStream = this.openedChange.pipe(\n filter(o => o),\n map(() => {}),\n );\n\n /** Event emitted when the drawer has started opening. */\n @Output()\n readonly openedStart: Observable<void> = this._animationStarted.pipe(\n filter(() => this.opened),\n mapTo(undefined),\n );\n\n /** Event emitted when the drawer has been closed. */\n @Output('closed')\n readonly _closedStream = this.openedChange.pipe(\n filter(o => !o),\n map(() => {}),\n );\n\n /** Event emitted when the drawer has started closing. */\n @Output()\n readonly closedStart: Observable<void> = this._animationStarted.pipe(\n filter(() => !this.opened),\n mapTo(undefined),\n );\n\n /** Emits when the component is destroyed. */\n private readonly _destroyed = new Subject<void>();\n\n /** Event emitted when the drawer's position changes. */\n // tslint:disable-next-line:no-output-on-prefix\n @Output('positionChanged') readonly onPositionChanged = new EventEmitter<void>();\n\n /** Reference to the inner element that contains all the content. */\n @ViewChild('content') _content!: ElementRef<HTMLElement>;\n\n /**\n * An observable that emits when the drawer mode changes. This is used by the drawer container to\n * to know when to when the mode changes so it can adapt the margins on the content.\n */\n readonly _modeChanged = new Subject<void>();\n\n private _injector = inject(Injector);\n private _changeDetectorRef = inject(ChangeDetectorRef);\n\n constructor(...args: unknown[]);\n\n constructor() {\n this.openedChange.pipe(takeUntil(this._destroyed)).subscribe((opened: boolean) => {\n if (opened) {\n this._elementFocusedBeforeDrawerWasOpened = this._doc.activeElement as HTMLElement;\n this._takeFocus();\n } else if (this._isFocusWithinDrawer()) {\n this._restoreFocus(this._openedVia || 'program');\n }\n });\n\n /**\n * Listen to `keydown` events outside the zone so that change detection is not run every\n * time a key is pressed. Instead we re-enter the zone only if the `ESC` key is pressed\n * and we don't have close disabled.\n */\n this._eventCleanups = this._ngZone.runOutsideAngular(() => {\n const renderer = this._renderer;\n const element = this._elementRef.nativeElement;\n\n return [\n renderer.listen(element, 'keydown', (event: KeyboardEvent) => {\n if (event.keyCode === ESCAPE && !this.disableClose && !hasModifierKey(event)) {\n this._ngZone.run(() => {\n this.close();\n event.stopPropagation();\n event.preventDefault();\n });\n }\n }),\n renderer.listen(element, 'transitionrun', this._handleTransitionEvent),\n renderer.listen(element, 'transitionend', this._handleTransitionEvent),\n renderer.listen(element, 'transitioncancel', this._handleTransitionEvent),\n ];\n });\n\n this._animationEnd.subscribe(() => {\n this.openedChange.emit(this.opened);\n });\n }\n\n /**\n * Focuses the provided element. If the element is not focusable, it will add a tabIndex\n * attribute to forcefully focus it. The attribute is removed after focus is moved.\n * @param element The element to focus.\n */\n private _forceFocus(element: HTMLElement, options?: FocusOptions) {\n if (!this._interactivityChecker.isFocusable(element)) {\n element.tabIndex = -1;\n // The tabindex attribute should be removed to avoid navigating to that element again\n this._ngZone.runOutsideAngular(() => {\n const callback = () => {\n cleanupBlur();\n cleanupMousedown();\n element.removeAttribute('tabindex');\n };\n\n const cleanupBlur = this._renderer.listen(element, 'blur', callback);\n const cleanupMousedown = this._renderer.listen(element, 'mousedown', callback);\n });\n }\n element.focus(options);\n }\n\n /**\n * Focuses the first element that matches the given selector within the focus trap.\n * @param selector The CSS selector for the element to set focus to.\n */\n private _focusByCssSelector(selector: string, options?: FocusOptions) {\n let elementToFocus = this._elementRef.nativeElement.querySelector(\n selector,\n ) as HTMLElement | null;\n if (elementToFocus) {\n this._forceFocus(elementToFocus, options);\n }\n }\n\n /**\n * Moves focus into the drawer. Note that this works even if\n * the focus trap is disabled in `side` mode.\n */\n private _takeFocus() {\n if (!this._focusTrap) {\n return;\n }\n\n const element = this._elementRef.nativeElement;\n\n // When autoFocus is not on the sidenav, if the element cannot be focused or does\n // not exist, focus the sidenav itself so the keyboard navigation still works.\n // We need to check that `focus` is a function due to Universal.\n switch (this.autoFocus) {\n case false:\n case 'dialog':\n return;\n case true:\n case 'first-tabbable':\n afterNextRender(\n () => {\n const hasMovedFocus = this._focusTrap!.focusInitialElement();\n if (!hasMovedFocus && typeof element.focus === 'function') {\n element.focus();\n }\n },\n {injector: this._injector},\n );\n break;\n case 'first-heading':\n this._focusByCssSelector('h1, h2, h3, h4, h5, h6, [role=\"heading\"]');\n break;\n default:\n this._focusByCssSelector(this.autoFocus!);\n break;\n }\n }\n\n /**\n * Restores focus to the element that was originally focused when the drawer opened.\n * If no element was focused at that time, the focus will be restored to the drawer.\n */\n private _restoreFocus(focusOrigin: Exclude<FocusOrigin, null>) {\n if (this.autoFocus === 'dialog') {\n return;\n }\n\n if (this._elementFocusedBeforeDrawerWasOpened) {\n this._focusMonitor.focusVia(this._elementFocusedBeforeDrawerWasOpened, focusOrigin);\n } else {\n this._elementRef.nativeElement.blur();\n }\n\n this._elementFocusedBeforeDrawerWasOpened = null;\n }\n\n /** Whether focus is currently within the drawer. */\n private _isFocusWithinDrawer(): boolean {\n const activeEl = this._doc.activeElement;\n return !!activeEl && this._elementRef.nativeElement.contains(activeEl);\n }\n\n ngAfterViewInit() {\n this._isAttached = true;\n\n // Only update the DOM position when the sidenav is positioned at\n // the end since we project the sidenav before the content by default.\n if (this._position === 'end') {\n this._updatePositionInParent('end');\n }\n\n // Needs to happen after the position is updated\n // so the focus trap anchors are in the right place.\n if (this._platform.isBrowser) {\n this._focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement);\n this._updateFocusTrapState();\n }\n }\n\n ngOnDestroy() {\n this._eventCleanups.forEach(cleanup => cleanup());\n this._focusTrap?.destroy();\n this._anchor?.remove();\n this._anchor = null;\n this._animationStarted.complete();\n this._animationEnd.complete();\n this._modeChanged.complete();\n this._destroyed.next();\n this._destroyed.complete();\n }\n\n /**\n * Open the drawer.\n * @param openedVia Whether the drawer was opened by a key press, mouse click or programmatically.\n * Used for focus management after the sidenav is closed.\n */\n open(openedVia?: FocusOrigin): Promise<MatDrawerToggleResult> {\n return this.toggle(true, openedVia);\n }\n\n /** Close the drawer. */\n close(): Promise<MatDrawerToggleResult> {\n return this.toggle(false);\n }\n\n /** Closes the drawer with context that the backdrop was clicked. */\n _closeViaBackdropClick(): Promise<MatDrawerToggleResult> {\n // If the drawer is closed upon a backdrop click, we always want to restore focus. We\n // don't need to check whether focus is currently in the drawer, as clicking on the\n // backdrop causes blurs the active element.\n return this._setOpen(/* isOpen */ false, /* restoreFocus */ true, 'mouse');\n }\n\n /**\n * Toggle this drawer.\n * @param isOpen Whether the drawer should be open.\n * @param openedVia Whether the drawer was opened by a key press, mouse click or programmatically.\n * Used for focus management after the sidenav is closed.\n */\n toggle(isOpen: boolean = !this.opened, openedVia?: FocusOrigin): Promise<MatDrawerToggleResult> {\n // If the focus is currently inside the drawer content and we are closing the drawer,\n // restore the focus to the initially focused element (when the drawer opened).\n if (isOpen && openedVia) {\n this._openedVia = openedVia;\n }\n\n const result = this._setOpen(\n isOpen,\n /* restoreFocus */ !isOpen && this._isFocusWithinDrawer(),\n this._openedVia || 'program',\n );\n\n if (!isOpen) {\n this._openedVia = null;\n }\n\n return result;\n }\n\n /**\n * Toggles the opened state of the drawer.\n * @param isOpen Whether the drawer should open or close.\n * @param restoreFocus Whether focus should be restored on close.\n * @param focusOrigin Origin to use when restoring focus.\n */\n private _setOpen(\n isOpen: boolean,\n restoreFocus: boolean,\n focusOrigin: Exclude<FocusOrigin, null>,\n ): Promise<MatDrawerToggleResult> {\n if (isOpen === this.opened) {\n return Promise.resolve(isOpen ? 'open' : 'close');\n }\n\n this._opened.set(isOpen);\n\n if (this._container?._transitionsEnabled) {\n // Note: it's importatnt to set this as early as possible,\n // otherwise the animation can look glitchy in some cases.\n this._setIsAnimating(true);\n } else {\n // Simulate the animation events if animations are disabled.\n setTimeout(() => {\n this._animationStarted.next();\n this._animationEnd.next();\n });\n }\n\n this._elementRef.nativeElement.classList.toggle('mat-drawer-opened', isOpen);\n\n if (!isOpen && restoreFocus) {\n this._restoreFocus(focusOrigin);\n }\n\n // Needed to ensure that the closing sequence fires off correctly.\n this._changeDetectorRef.markForCheck();\n this._updateFocusTrapState();\n\n return new Promise<MatDrawerToggleResult>(resolve => {\n this.openedChange.pipe(take(1)).subscribe(open => resolve(open ? 'open' : 'close'));\n });\n }\n\n /** Toggles whether the drawer is currently animating. */\n private _setIsAnimating(isAnimating: boolean) {\n this._elementRef.nativeElement.classList.toggle('mat-drawer-animating', isAnimating);\n }\n\n _getWidth(): number {\n return this._elementRef.nativeElement.offsetWidth || 0;\n }\n\n /** Updates the enabled state of the focus trap. */\n private _updateFocusTrapState() {\n if (this._focusTrap) {\n // Trap focus only if the backdrop is enabled. Otherwise, allow end user to interact with the\n // sidenav content.\n this._focusTrap.enabled = !!this._container?.hasBackdrop && this.opened;\n }\n }\n\n /**\n * Updates the position of the drawer in the DOM. We need to move the element around ourselves\n * when it's in the `end` position so that it comes after the content and the visual order\n * matches the tab order. We also need to be able to move it back to `start` if the sidenav\n * started off as `end` and was changed to `start`.\n */\n private _updatePositionInParent(newPosition: 'start' | 'end'): void {\n // Don't move the DOM node around on the server, because it can throw off hydration.\n if (!this._platform.isBrowser) {\n return;\n }\n\n const element = this._elementRef.nativeElement;\n const parent = element.parentNode!;\n\n if (newPosition === 'end') {\n if (!this._anchor) {\n this._anchor = this._doc.createComment('mat-drawer-anchor')!;\n parent.insertBefore(this._anchor!, element);\n }\n\n parent.appendChild(element);\n } else if (this._anchor) {\n this._anchor.parentNode!.insertBefore(element, this._anchor);\n }\n }\n\n /** Event handler for animation events. */\n private _handleTransitionEvent = (event: TransitionEvent) => {\n const element = this._elementRef.nativeElement;\n\n if (event.target === element) {\n this._ngZone.run(() => {\n if (event.type === 'transitionrun') {\n this._animationStarted.next(event);\n } else {\n // Don't toggle the animating state on `transitioncancel` since another animation should\n // start afterwards. This prevents the drawer from blinking if an animation is interrupted.\n if (event.type === 'transitionend') {\n this._setIsAnimating(false);\n }\n\n this._animationEnd.next(event);\n }\n });\n }\n };\n}\n\n/**\n * `<mat-drawer-container>` component.\n *\n * This is the parent component to one or two `<mat-drawer>`s that validates the state internally\n * and coordinates the backdrop and content styling.\n */\n@Component({\n selector: 'mat-drawer-container',\n exportAs: 'matDrawerContainer',\n templateUrl: 'drawer-container.html',\n styleUrl: 'drawer.css',\n host: {\n 'class': 'mat-drawer-container',\n '[class.mat-drawer-container-explicit-backdrop]': '_backdropOverride',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: MAT_DRAWER_CONTAINER,\n useExisting: MatDrawerContainer,\n },\n ],\n imports: [MatDrawerContent],\n})\nexport class MatDrawerContainer implements AfterContentInit, DoCheck, OnDestroy {\n private _dir = inject(Directionality, {optional: true});\n private _element = inject<ElementRef<HTMLElement>>(ElementRef);\n private _ngZone = inject(NgZone);\n private _changeDetectorRef = inject(ChangeDetectorRef);\n private _animationDisabled = _animationsDisabled();\n _transitionsEnabled = false;\n\n /** All drawers in the container. Includes drawers from inside nested containers. */\n @ContentChildren(MatDrawer, {\n // We need to use `descendants: true`, because Ivy will no longer match\n // indirect descendants if it's left as false.\n descendants: true,\n })\n _allDrawers!: QueryList<MatDrawer>;\n\n /** Drawers that belong to this container. */\n _drawers = new QueryList<MatDrawer>();\n\n @ContentChild(MatDrawerContent) _content!: MatDrawerContent;\n @ViewChild(MatDrawerContent) _userContent!: MatDrawerContent;\n\n /** The drawer child with the `start` position. */\n get start(): MatDrawer | null {\n return this._start;\n }\n\n /** The drawer child with the `end` position. */\n get end(): MatDrawer | null {\n return this._end;\n }\n\n /**\n * Whether to automatically resize the container whenever\n * the size of any of its drawers changes.\n *\n * **Use at your own risk!** Enabling this option can cause layout thrashing by measuring\n * the drawers on every change detection cycle. Can be configured globally via the\n * `MAT_DRAWER_DEFAULT_AUTOSIZE` token.\n */\n @Input()\n get autosize(): boolean {\n return this._autosize;\n }\n set autosize(value: BooleanInput) {\n this._autosize = coerceBooleanProperty(value);\n }\n private _autosize = inject(MAT_DRAWER_DEFAULT_AUTOSIZE);\n\n /**\n * Whether the drawer container should have a backdrop while one of the sidenavs is open.\n * If explicitly set to `true`, the backdrop will be enabled for drawers in the `side`\n * mode as well.\n */\n @Input()\n get hasBackdrop(): boolean {\n return this._drawerHasBackdrop(this._start) || this._drawerHasBackdrop(this._end);\n }\n set hasBackdrop(value: BooleanInput) {\n this._backdropOverride = value == null ? null : coerceBooleanProperty(value);\n }\n _backdropOverride: boolean | null = null;\n\n /** Event emitted when the drawer backdrop is clicked. */\n @Output() readonly backdropClick: EventEmitter<void> = new EventEmitter<void>();\n\n /** The drawer at the start/end position, independent of direction. */\n private _start: MatDrawer | null = null;\n private _end: MatDrawer | null = null;\n\n /**\n * The drawer at the left/right. When direction changes, these will change as well.\n * They're used as aliases for the above to set the left/right style properly.\n * In LTR, _left == _start and _right == _end.\n * In RTL, _left == _end and _right == _start.\n */\n private _left: MatDrawer | null = null;\n private _right: MatDrawer | null = null;\n\n /** Emits when the component is destroyed. */\n private readonly _destroyed = new Subject<void>();\n\n /** Emits on every ngDoCheck. Used for debouncing reflows. */\n private readonly _doCheckSubject = new Subject<void>();\n\n /**\n * Margins to be applied to the content. These are used to push / shrink the drawer content when a\n * drawer is open. We use margin rather than transform even for push mode because transform breaks\n * fixed position elements inside of the transformed element.\n */\n _contentMargins: {left: number | null; right: number | null} = {left: null, right: null};\n\n readonly _contentMarginChanges = new Subject<{left: number | null; right: number | null}>();\n\n /** Reference to the CdkScrollable instance that wraps the scrollable content. */\n get scrollable(): CdkScrollable {\n return this._userContent || this._content;\n }\n\n private _injector = inject(Injector);\n\n constructor(...args: unknown[]);\n\n constructor() {\n const platform = inject(Platform);\n const viewportRuler = inject(ViewportRuler);\n\n // If a `Dir` directive exists up the tree, listen direction changes\n // and update the left/right properties to point to the proper start/end.\n this._dir?.change.pipe(takeUntil(this._destroyed)).subscribe(() => {\n this._validateDrawers();\n this.updateContentMargins();\n });\n\n // Since the minimum width of the sidenav depends on the viewport width,\n // we need to recompute the margins if the viewport changes.\n viewportRuler\n .change()\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => this.updateContentMargins());\n\n if (!this._animationDisabled && platform.isBrowser) {\n this._ngZone.runOutsideAngular(() => {\n // Enable the animations after a delay in order to skip\n // the initial transition if a drawer is open by default.\n setTimeout(() => {\n this._element.nativeElement.classList.add('mat-drawer-transition');\n this._transitionsEnabled = true;\n }, 200);\n });\n }\n }\n\n ngAfterContentInit() {\n this._allDrawers.changes\n .pipe(startWith(this._allDrawers), takeUntil(this._destroyed))\n .subscribe((drawer: QueryList<MatDrawer>) => {\n this._drawers.reset(drawer.filter(item => !item._container || item._container === this));\n this._drawers.notifyOnChanges();\n });\n\n this._drawers.changes.pipe(startWith(null)).subscribe(() => {\n this._validateDrawers();\n\n this._drawers.forEach((drawer: MatDrawer) => {\n this._watchDrawerToggle(drawer);\n this._watchDrawerPosition(drawer);\n this._watchDrawerMode(drawer);\n });\n\n if (\n !this._drawers.length ||\n this._isDrawerOpen(this._start) ||\n this._isDrawerOpen(this._end)\n ) {\n this.updateContentMargins();\n }\n\n this._changeDetectorRef.markForCheck();\n });\n\n // Avoid hitting the NgZone through the debounce timeout.\n this._ngZone.runOutsideAngular(() => {\n this._doCheckSubject\n .pipe(\n debounceTime(10), // Arbitrary debounce time, less than a frame at 60fps\n takeUntil(this._destroyed),\n )\n .subscribe(() => this.updateContentMargins());\n });\n }\n\n ngOnDestroy() {\n this._contentMarginChanges.complete();\n this._doCheckSubject.complete();\n this._drawers.destroy();\n this._destroyed.next();\n this._destroyed.complete();\n }\n\n /** Calls `open` of both start and end drawers */\n open(): void {\n this._drawers.forEach(drawer => drawer.open());\n }\n\n /** Calls `close` of both start and end drawers */\n close(): void {\n this._drawers.forEach(drawer => drawer.close());\n }\n\n /**\n * Recalculates and updates the inline styles for the content. Note that this should be used\n * sparingly, because it causes a reflow.\n */\n updateContentMargins() {\n // 1. For drawers in `over` mode, they don't affect the content.\n // 2. For drawers in `side` mode they should shrink the content. We do this by adding to the\n // left margin (for left drawer) or right margin (for right the drawer).\n // 3. For drawers in `push` mode the should shift the content without resizing it. We do this by\n // adding to the left or right margin and simultaneously subtracting the same amount of\n // margin from the other side.\n let left = 0;\n let right = 0;\n\n if (this._left && this._left.opened) {\n if (this._left.mode == 'side') {\n left += this._left._getWidth();\n } else if (this._left.mode == 'push') {\n const width = this._left._getWidth();\n left += width;\n right -= width;\n }\n }\n\n if (this._right && this._right.opened) {\n if (this._right.mode == 'side') {\n right += this._right._getWidth();\n } else if (this._right.mode == 'push') {\n const width = this._right._getWidth();\n right += width;\n left -= width;\n }\n }\n\n // If either `right` or `left` is zero, don't set a style to the element. This\n // allows users to specify a custom size via CSS class in SSR scenarios where the\n // measured widths will always be zero. Note that we reset to `null` here, rather\n // than below, in order to ensure that the types in the `if` below are consistent.\n left = left || null!;\n right = right || null!;\n\n if (left !== this._contentMargins.left || right !== this._contentMargins.right) {\n this._contentMargins = {left, right};\n\n // Pull back into the NgZone since in some cases we could be outside. We need to be careful\n // to do it only when something changed, otherwise we can end up hitting the zone too often.\n this._ngZone.run(() => this._contentMarginChanges.next(this._contentMargins));\n }\n }\n\n ngDoCheck() {\n // If users opted into autosizing, do a check every change detection cycle.\n if (this._autosize && this._isPushed()) {\n // Run outside the NgZone, otherwise the debouncer will throw us into an infinite loop.\n this._ngZone.runOutsideAngular(() => this._doCheckSubject.next());\n }\n }\n\n /**\n * Subscribes to drawer events in order to set a class on the main container element when the\n * drawer is open and the backdrop is visible. This ensures any overflow on the container element\n * is properly hidden.\n */\n private _watchDrawerToggle(drawer: MatDrawer): void {\n drawer._animationStarted.pipe(takeUntil(this._drawers.changes)).subscribe(() => {\n this.updateContentMargins();\n this._changeDetectorRef.markForCheck();\n });\n\n if (drawer.mode !== 'side') {\n drawer.openedChange\n .pipe(takeUntil(this._drawers.changes))\n .subscribe(() => this._setContainerClass(drawer.opened));\n }\n }\n\n /**\n * Subscribes to drawer onPositionChanged event in order to\n * re-validate drawers when the position changes.\n */\n private _watchDrawerPosition(drawer: MatDrawer): void {\n // NOTE: We need to wait for the microtask queue to be empty before validating,\n // since both drawers may be swapping positions at the same time.\n drawer.onPositionChanged.pipe(takeUntil(this._drawers.changes)).subscribe(() => {\n afterNextRender({read: () => this._validateDrawers()}, {injector: this._injector});\n });\n }\n\n /** Subscribes to changes in drawer mode so we can run change detection. */\n private _watchDrawerMode(drawer: MatDrawer): void {\n drawer._modeChanged\n .pipe(takeUntil(merge(this._drawers.changes, this._destroyed)))\n .subscribe(() => {\n this.updateContentMargins();\n this._changeDetectorRef.markForCheck();\n });\n }\n\n /** Toggles the 'mat-drawer-opened' class on the main 'mat-drawer-container' element. */\n private _setContainerClass(isAdd: boolean): void {\n const classList = this._element.nativeElement.classList;\n const className = 'mat-drawer-container-has-open';\n\n if (isAdd) {\n classList.add(className);\n } else {\n classList.remove(className);\n }\n }\n\n /** Validate the state of the drawer children components. */\n private _validateDrawers() {\n this._start = this._end = null;\n\n // Ensure that we have at most one start and one end drawer.\n this._drawers.forEach(drawer => {\n if (drawer.position == 'end') {\n if (this._end != null && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatDuplicatedDrawerError('end');\n }\n this._end = drawer;\n } else {\n if (this._start != null && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatDuplicatedDrawerError('start');\n }\n this._start = drawer;\n }\n });\n\n this._right = this._left = null;\n\n // Detect if we're LTR or RTL.\n if (this._dir && this._dir.value === 'rtl') {\n this._left = this._end;\n this._right = this._start;\n } else {\n this._left = this._start;\n this._right = this._end;\n }\n }\n\n /** Whether the container is being pushed to the side by one of the drawers. */\n private _isPushed() {\n return (\n (this._isDrawerOpen(this._start) && this._start.mode != 'over') ||\n (this._isDrawerOpen(this._end) && this._end.mode != 'over')\n );\n }\n\n _onBackdropClicked() {\n this.backdropClick.emit();\n this._closeModalDrawersViaBackdrop();\n }\n\n _closeModalDrawersViaBackdrop() {\n // Close all open drawers where closing is not disabled and the mode is not `side`.\n [this._start, this._end]\n .filter(drawer => drawer && !drawer.disableClose && this._drawerHasBackdrop(drawer))\n .forEach(drawer => drawer!._closeViaBackdropClick());\n }\n\n _isShowingBackdrop(): boolean {\n return (\n (this._isDrawerOpen(this._start) && this._drawerHasBackdrop(this._start)) ||\n (this._isDrawerOpen(this._end) && this._drawerHasBackdrop(this._end))\n );\n }\n\n private _isDrawerOpen(drawer: MatDrawer | null): drawer is MatDrawer {\n return drawer != null && drawer.opened;\n }\n\n // Whether argument drawer should have a backdrop when it opens\n private _drawerHasBackdrop(drawer: MatDrawer | null) {\n if (this._backdropOverride == null) {\n return !!drawer && drawer.mode !== 'side';\n }\n\n return this._backdropOverride;\n }\n}\n","<div class=\"mat-drawer-inner-container\" cdkScrollable #content>\r\n <ng-content></ng-content>\r\n</div>\r\n","@if (hasBackdrop) {\n <div class=\"mat-drawer-backdrop\" (click)=\"_onBackdropClicked()\"\n [class.mat-drawer-shown]=\"_isShowingBackdrop()\"></div>\n}\n\n<ng-content select=\"mat-drawer\"></ng-content>\n\n<ng-content select=\"mat-drawer-content\">\n</ng-content>\n\n@if (!_content) {\n <mat-drawer-content>\n <ng-content></ng-content>\n </mat-drawer-content>\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 ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n Input,\n ViewEncapsulation,\n QueryList,\n} from '@angular/core';\nimport {MatDrawer, MatDrawerContainer, MatDrawerContent, MAT_DRAWER_CONTAINER} from './drawer';\nimport {\n BooleanInput,\n coerceBooleanProperty,\n coerceNumberProperty,\n NumberInput,\n} from '@angular/cdk/coercion';\nimport {CdkScrollable} from '@angular/cdk/scrolling';\n\n@Component({\n selector: 'mat-sidenav-content',\n template: '<ng-content></ng-content>',\n host: {\n 'class': 'mat-drawer-content mat-sidenav-content',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: CdkScrollable,\n useExisting: MatSidenavContent,\n },\n ],\n})\nexport class MatSidenavContent extends MatDrawerContent {}\n\n@Component({\n selector: 'mat-sidenav',\n exportAs: 'matSidenav',\n templateUrl: 'drawer.html',\n host: {\n 'class': 'mat-drawer mat-sidenav',\n // The sidenav container should not be focused on when used in side mode. See b/286459024 for\n // reference. Updates tabIndex of drawer/container to default to null if in side mode.\n '[attr.tabIndex]': '(mode !== \"side\") ? \"-1\" : null',\n // must prevent the browser from aligning text based on value\n '[attr.align]': 'null',\n '[class.mat-drawer-end]': 'position === \"end\"',\n '[class.mat-drawer-over]': 'mode === \"over\"',\n '[class.mat-drawer-push]': 'mode === \"push\"',\n '[class.mat-drawer-side]': 'mode === \"side\"',\n '[class.mat-sidenav-fixed]': 'fixedInViewport',\n '[style.top.px]': 'fixedInViewport ? fixedTopGap : null',\n '[style.bottom.px]': 'fixedInViewport ? fixedBottomGap : null',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [CdkScrollable],\n providers: [{provide: MatDrawer, useExisting: MatSidenav}],\n})\nexport class MatSidenav extends MatDrawer {\n /** Whether the sidenav is fixed in the viewport. */\n @Input()\n get fixedInViewport(): boolean {\n return this._fixedInViewport;\n }\n set fixedInViewport(value: BooleanInput) {\n this._fixedInViewport = coerceBooleanProperty(value);\n }\n private _fixedInViewport = false;\n\n /**\n * The gap between the top of the sidenav and the top of the viewport when the sidenav is in fixed\n * mode.\n */\n @Input()\n get fixedTopGap(): number {\n return this._fixedTopGap;\n }\n set fixedTopGap(value: NumberInput) {\n this._fixedTopGap = coerceNumberProperty(value);\n }\n private _fixedTopGap = 0;\n\n /**\n * The gap between the bottom of the sidenav and the bottom of the viewport when the sidenav is in\n * fixed mode.\n */\n @Input()\n get fixedBottomGap(): number {\n return this._fixedBottomGap;\n }\n set fixedBottomGap(value: NumberInput) {\n this._fixedBottomGap = coerceNumberProperty(value);\n }\n private _fixedBottomGap = 0;\n}\n\n@Component({\n selector: 'mat-sidenav-container',\n exportAs: 'matSidenavContainer',\n templateUrl: 'sidenav-container.html',\n styleUrl: 'drawer.css',\n host: {\n 'class': 'mat-drawer-container mat-sidenav-container',\n '[class.mat-drawer-container-explicit-backdrop]': '_backdropOverride',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: MAT_DRAWER_CONTAINER,\n useExisting: MatSidenavContainer,\n },\n {\n provide: MatDrawerContainer,\n useExisting: MatSidenavContainer,\n },\n ],\n imports: [MatSidenavContent],\n})\nexport class MatSidenavContainer extends MatDrawerContainer {\n @ContentChildren(MatSidenav, {\n // We need to use `descendants: true`, because Ivy will no longer match\n // indirect descendants if it's left as false.\n descendants: true,\n })\n // We need an initializer here to avoid a TS error.\n override _allDrawers: QueryList<MatSidenav> = undefined!;\n\n // We need an initializer here to avoid a TS error.\n @ContentChild(MatSidenavContent) override _content: MatSidenavContent = undefined!;\n}\n","@if (hasBackdrop) {\n <div class=\"mat-drawer-backdrop\" (click)=\"_onBackdropClicked()\"\n [class.mat-drawer-shown]=\"_isShowingBackdrop()\"></div>\n}\n\n<ng-content select=\"mat-sidenav\"></ng-content>\n\n<ng-content select=\"mat-sidenav-content\">\n</ng-content>\n\n@if (!_content) {\n <mat-sidenav-content>\n <ng-content></ng-content>\n </mat-sidenav-content>\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 */\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {CdkScrollableModule} from '@angular/cdk/scrolling';\nimport {NgModule} from '@angular/core';\nimport {MatDrawer, MatDrawerContainer, MatDrawerContent} from './drawer';\nimport {MatSidenav, MatSidenavContainer, MatSidenavContent} from './sidenav';\n\n@NgModule({\n imports: [\n CdkScrollableModule,\n MatDrawer,\n MatDrawerContainer,\n MatDrawerContent,\n MatSidenav,\n MatSidenavContainer,\n MatSidenavContent,\n ],\n exports: [\n BidiModule,\n CdkScrollableModule,\n MatDrawer,\n MatDrawerContainer,\n MatDrawerContent,\n MatSidenav,\n MatSidenavContainer,\n MatSidenavContent,\n ],\n})\nexport class MatSidenavModule {}\n"],"names":["throwMatDuplicatedDrawerError","position","Error","MAT_DRAWER_DEFAULT_AUTOSIZE","InjectionToken","providedIn","factory","MAT_DRAWER_CONTAINER","MatDrawerContent","CdkScrollable","_platform","inject","Platform","_changeDetectorRef","ChangeDetectorRef","_container","MatDrawerContainer","constructor","elementRef","ElementRef","scrollDispatcher","ScrollDispatcher","ngZone","NgZone","ngAfterContentInit","_contentMarginChanges","subscribe","markForCheck","_shouldBeHidden","isBrowser","start","end","mode","opened","deps","target","i0","ɵɵFactoryTarget","Component","ɵcmp","ɵɵngDeclareComponent","minVersion","version","type","isStandalone","selector","host","properties","classAttribute","providers","provide","useExisting","usesInheritance","ngImport","template","isInline","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","decorators","args","MatDrawer","_elementRef","_focusTrapFactory","FocusTrapFactory","_focusMonitor","FocusMonitor","_ngZone","_renderer","Renderer2","_interactivityChecker","InteractivityChecker","_doc","DOCUMENT","optional","_focusTrap","_elementFocusedBeforeDrawerWasOpened","_eventCleanups","_isAttached","_anchor","_position","value","_updatePositionInParent","onPositionChanged","emit","_mode","_updateFocusTrapState","_modeChanged","next","disableClose","_disableClose","coerceBooleanProperty","autoFocus","_autoFocus","_opened","toggle","signal","_openedVia","_animationStarted","Subject","_animationEnd","openedChange","EventEmitter","_openedStream","pipe","filter","o","map","openedStart","mapTo","undefined","_closedStream","closedStart","_destroyed","_content","_injector","Injector","takeUntil","activeElement","_takeFocus","_isFocusWithinDrawer","_restoreFocus","runOutsideAngular","renderer","element","nativeElement","listen","event","keyCode","ESCAPE","hasModifierKey","run","close","stopPropagation","preventDefault","_handleTransitionEvent","_forceFocus","options","isFocusable","tabIndex","callback","cleanupBlur","cleanupMousedown","removeAttribute","focus","_focusByCssSelector","elementToFocus","querySelector","afterNextRender","hasMovedFocus","focusInitialElement","injector","focusOrigin","focusVia","blur","activeEl","contains","ngAfterViewInit","create","ngOnDestroy","forEach","cleanup","destroy","remove","complete","open","openedVia","_closeViaBackdropClick","_setOpen","isOpen","result","restoreFocus","Promise","resolve","set","_transitionsEnabled","_setIsAnimating","setTimeout","classList","take","isAnimating","_getWidth","offsetWidth","enabled","hasBackdrop","newPosition","parent","parentNode","createComment","insertBefore","appendChild","inputs","outputs","viewQueries","propertyName","first","predicate","descendants","exportAs","dependencies","kind","imports","Input","Output","ViewChild","_dir","Directionality","_element","_animationDisabled","_animationsDisabled","_allDrawers","_drawers","QueryList","_userContent","_start","_end","autosize","_autosize","_drawerHasBackdrop","_backdropOverride","backdropClick","_left","_right","_doCheckSubject","_contentMargins","left","right","scrollable","platform","viewportRuler","ViewportRuler","change","_validateDrawers","updateContentMargins","add","changes","startWith","drawer","reset","item","notifyOnChanges","_watchDrawerToggle","_watchDrawerPosition","_watchDrawerMode","length","_isDrawerOpen","debounceTime","width","ngDoCheck","_isPushed","_setContainerClass","read","merge","isAdd","className","ngDevMode","_onBackdropClicked","_closeModalDrawersViaBackdrop","_isShowingBackdrop","queries","styles","ContentChildren","ContentChild","MatSidenavContent","MatSidenav","fixedInViewport","_fixedInViewport","fixedTopGap","_fixedTopGap","coerceNumberProperty","fixedBottomGap","_fixedBottomGap","MatSidenavContainer","MatSidenavModule","NgModule","ɵmod","ɵɵngDeclareNgModule","CdkScrollableModule","BidiModule","exports"],"mappings":"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"}
1
+ {"version":3,"file":"sidenav.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/sidenav/drawer.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/sidenav/drawer.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/sidenav/drawer-container.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/sidenav/sidenav.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/sidenav/sidenav-container.html","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/sidenav/sidenav-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 */\nimport {\n FocusMonitor,\n FocusOrigin,\n FocusTrap,\n FocusTrapFactory,\n InteractivityChecker,\n} from '@angular/cdk/a11y';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {ESCAPE, hasModifierKey} from '@angular/cdk/keycodes';\nimport {Platform} from '@angular/cdk/platform';\nimport {CdkScrollable, ScrollDispatcher, ViewportRuler} from '@angular/cdk/scrolling';\n\nimport {\n AfterContentInit,\n afterNextRender,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n DoCheck,\n ElementRef,\n EventEmitter,\n inject,\n InjectionToken,\n Injector,\n Input,\n NgZone,\n OnDestroy,\n Output,\n QueryList,\n Renderer2,\n ViewChild,\n ViewEncapsulation,\n DOCUMENT,\n signal,\n} from '@angular/core';\nimport {merge, Observable, Subject} from 'rxjs';\nimport {debounceTime, filter, map, mapTo, startWith, take, takeUntil} from 'rxjs/operators';\nimport {_animationsDisabled} from '../core';\n\n/**\n * Throws an exception when two MatDrawer are matching the same position.\n * @docs-private\n */\nexport function throwMatDuplicatedDrawerError(position: string) {\n throw Error(`A drawer was already declared for 'position=\"${position}\"'`);\n}\n\n/** Options for where to set focus to automatically on dialog open */\nexport type AutoFocusTarget = 'dialog' | 'first-tabbable' | 'first-heading';\n\n/** Result of the toggle promise that indicates the state of the drawer. */\nexport type MatDrawerToggleResult = 'open' | 'close';\n\n/** Drawer and SideNav display modes. */\nexport type MatDrawerMode = 'over' | 'push' | 'side';\n\n/** Configures whether drawers should use auto sizing by default. */\nexport const MAT_DRAWER_DEFAULT_AUTOSIZE = new InjectionToken<boolean>(\n 'MAT_DRAWER_DEFAULT_AUTOSIZE',\n {\n providedIn: 'root',\n factory: () => false,\n },\n);\n\n/**\n * Used to provide a drawer container to a drawer while avoiding circular references.\n * @docs-private\n */\nexport const MAT_DRAWER_CONTAINER = new InjectionToken('MAT_DRAWER_CONTAINER');\n\n@Component({\n selector: 'mat-drawer-content',\n template: '<ng-content></ng-content>',\n host: {\n 'class': 'mat-drawer-content',\n '[style.margin-left.px]': '_container._contentMargins.left',\n '[style.margin-right.px]': '_container._contentMargins.right',\n '[class.mat-drawer-content-hidden]': '_shouldBeHidden()',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: CdkScrollable,\n useExisting: MatDrawerContent,\n },\n ],\n})\nexport class MatDrawerContent extends CdkScrollable implements AfterContentInit {\n private _platform = inject(Platform);\n private _changeDetectorRef = inject(ChangeDetectorRef);\n _container = inject(MatDrawerContainer);\n\n constructor(...args: unknown[]);\n\n constructor() {\n const elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n const scrollDispatcher = inject(ScrollDispatcher);\n const ngZone = inject(NgZone);\n\n super(elementRef, scrollDispatcher, ngZone);\n }\n\n ngAfterContentInit() {\n this._container._contentMarginChanges.subscribe(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\n\n /** Determines whether the content element should be hidden from the user. */\n protected _shouldBeHidden(): boolean {\n // In some modes the content is pushed based on the width of the opened sidenavs, however on\n // the server we can't measure the sidenav so the margin is always zero. This can cause the\n // content to jump around when it's rendered on the server and hydrated on the client. We\n // avoid it by hiding the content on the initial render and then showing it once the sidenav\n // has been measured on the client.\n if (this._platform.isBrowser) {\n return false;\n }\n\n const {start, end} = this._container;\n return (\n (start != null && start.mode !== 'over' && start.opened) ||\n (end != null && end.mode !== 'over' && end.opened)\n );\n }\n}\n\n/**\n * This component corresponds to a drawer that can be opened on the drawer container.\n */\n@Component({\n selector: 'mat-drawer',\n exportAs: 'matDrawer',\n templateUrl: 'drawer.html',\n host: {\n 'class': 'mat-drawer',\n // must prevent the browser from aligning text based on value\n '[attr.align]': 'null',\n '[class.mat-drawer-end]': 'position === \"end\"',\n '[class.mat-drawer-over]': 'mode === \"over\"',\n '[class.mat-drawer-push]': 'mode === \"push\"',\n '[class.mat-drawer-side]': 'mode === \"side\"',\n // The styles that render the sidenav off-screen come from the drawer container. Prior to #30235\n // this was also done by the animations module which some internal tests seem to depend on.\n // Simulate it by toggling the `hidden` attribute instead.\n '[style.visibility]': '(!_container && !opened) ? \"hidden\" : null',\n // The sidenav container should not be focused on when used in side mode. See b/286459024 for\n // reference. Updates tabIndex of drawer/container to default to null if in side mode.\n '[attr.tabIndex]': '(mode !== \"side\") ? \"-1\" : null',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [CdkScrollable],\n})\nexport class MatDrawer implements AfterViewInit, OnDestroy {\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private _focusTrapFactory = inject(FocusTrapFactory);\n private _focusMonitor = inject(FocusMonitor);\n private _platform = inject(Platform);\n private _ngZone = inject(NgZone);\n private _renderer = inject(Renderer2);\n private readonly _interactivityChecker = inject(InteractivityChecker);\n private _doc = inject(DOCUMENT);\n _container? = inject<MatDrawerContainer>(MAT_DRAWER_CONTAINER, {optional: true});\n\n private _focusTrap: FocusTrap | null = null;\n private _elementFocusedBeforeDrawerWasOpened: HTMLElement | null = null;\n private _eventCleanups!: (() => void)[];\n\n /** Whether the view of the component has been attached. */\n private _isAttached = false;\n\n /** Anchor node used to restore the drawer to its initial position. */\n private _anchor: Comment | null = null;\n\n /** The side that the drawer is attached to. */\n @Input()\n get position(): 'start' | 'end' {\n return this._position;\n }\n set position(value: 'start' | 'end') {\n // Make sure we have a valid value.\n value = value === 'end' ? 'end' : 'start';\n if (value !== this._position) {\n // Static inputs in Ivy are set before the element is in the DOM.\n if (this._isAttached) {\n this._updatePositionInParent(value);\n }\n\n this._position = value;\n this.onPositionChanged.emit();\n }\n }\n private _position: 'start' | 'end' = 'start';\n\n /** Mode of the drawer; one of 'over', 'push' or 'side'. */\n @Input()\n get mode(): MatDrawerMode {\n return this._mode;\n }\n set mode(value: MatDrawerMode) {\n this._mode = value;\n this._updateFocusTrapState();\n this._modeChanged.next();\n }\n private _mode: MatDrawerMode = 'over';\n\n /** Whether the drawer can be closed with the escape key or by clicking on the backdrop. */\n @Input()\n get disableClose(): boolean {\n return this._disableClose;\n }\n set disableClose(value: BooleanInput) {\n this._disableClose = coerceBooleanProperty(value);\n }\n private _disableClose: boolean = false;\n\n /**\n * Whether the drawer should focus the first focusable element automatically when opened.\n * Defaults to false in when `mode` is set to `side`, otherwise defaults to `true`. If explicitly\n * enabled, focus will be moved into the sidenav in `side` mode as well.\n * @breaking-change 14.0.0 Remove boolean option from autoFocus. Use string or AutoFocusTarget\n * instead.\n */\n @Input()\n get autoFocus(): AutoFocusTarget | string | boolean {\n const value = this._autoFocus;\n\n // Note that usually we don't allow autoFocus to be set to `first-tabbable` in `side` mode,\n // because we don't know how the sidenav is being used, but in some cases it still makes\n // sense to do it. The consumer can explicitly set `autoFocus`.\n if (value == null) {\n if (this.mode === 'side') {\n return 'dialog';\n } else {\n return 'first-tabbable';\n }\n }\n return value;\n }\n set autoFocus(value: AutoFocusTarget | string | BooleanInput) {\n if (value === 'true' || value === 'false' || value == null) {\n value = coerceBooleanProperty(value);\n }\n this._autoFocus = value;\n }\n private _autoFocus: AutoFocusTarget | string | boolean | undefined;\n\n /**\n * Whether the drawer is opened. We overload this because we trigger an event when it\n * starts or end.\n */\n @Input()\n get opened(): boolean {\n return this._opened();\n }\n set opened(value: BooleanInput) {\n this.toggle(coerceBooleanProperty(value));\n }\n private _opened = signal(false);\n\n /** How the sidenav was opened (keypress, mouse click etc.) */\n private _openedVia: FocusOrigin | null = null;\n\n /** Emits whenever the drawer has started animating. */\n readonly _animationStarted = new Subject();\n\n /** Emits whenever the drawer is done animating. */\n readonly _animationEnd = new Subject();\n\n /** Event emitted when the drawer open state is changed. */\n @Output() readonly openedChange: EventEmitter<boolean> =\n // Note this has to be async in order to avoid some issues with two-bindings (see #8872).\n new EventEmitter<boolean>(/* isAsync */ true);\n\n /** Event emitted when the drawer has been opened. */\n @Output('opened')\n readonly _openedStream = this.openedChange.pipe(\n filter(o => o),\n map(() => {}),\n );\n\n /** Event emitted when the drawer has started opening. */\n @Output()\n readonly openedStart: Observable<void> = this._animationStarted.pipe(\n filter(() => this.opened),\n mapTo(undefined),\n );\n\n /** Event emitted when the drawer has been closed. */\n @Output('closed')\n readonly _closedStream = this.openedChange.pipe(\n filter(o => !o),\n map(() => {}),\n );\n\n /** Event emitted when the drawer has started closing. */\n @Output()\n readonly closedStart: Observable<void> = this._animationStarted.pipe(\n filter(() => !this.opened),\n mapTo(undefined),\n );\n\n /** Emits when the component is destroyed. */\n private readonly _destroyed = new Subject<void>();\n\n /** Event emitted when the drawer's position changes. */\n // tslint:disable-next-line:no-output-on-prefix\n @Output('positionChanged') readonly onPositionChanged = new EventEmitter<void>();\n\n /** Reference to the inner element that contains all the content. */\n @ViewChild('content') _content!: ElementRef<HTMLElement>;\n\n /**\n * An observable that emits when the drawer mode changes. This is used by the drawer container to\n * to know when to when the mode changes so it can adapt the margins on the content.\n */\n readonly _modeChanged = new Subject<void>();\n\n private _injector = inject(Injector);\n private _changeDetectorRef = inject(ChangeDetectorRef);\n\n constructor(...args: unknown[]);\n\n constructor() {\n this.openedChange.pipe(takeUntil(this._destroyed)).subscribe((opened: boolean) => {\n if (opened) {\n this._elementFocusedBeforeDrawerWasOpened = this._doc.activeElement as HTMLElement;\n this._takeFocus();\n } else if (this._isFocusWithinDrawer()) {\n this._restoreFocus(this._openedVia || 'program');\n }\n });\n\n /**\n * Listen to `keydown` events outside the zone so that change detection is not run every\n * time a key is pressed. Instead we re-enter the zone only if the `ESC` key is pressed\n * and we don't have close disabled.\n */\n this._eventCleanups = this._ngZone.runOutsideAngular(() => {\n const renderer = this._renderer;\n const element = this._elementRef.nativeElement;\n\n return [\n renderer.listen(element, 'keydown', (event: KeyboardEvent) => {\n if (event.keyCode === ESCAPE && !this.disableClose && !hasModifierKey(event)) {\n this._ngZone.run(() => {\n this.close();\n event.stopPropagation();\n event.preventDefault();\n });\n }\n }),\n renderer.listen(element, 'transitionrun', this._handleTransitionEvent),\n renderer.listen(element, 'transitionend', this._handleTransitionEvent),\n renderer.listen(element, 'transitioncancel', this._handleTransitionEvent),\n ];\n });\n\n this._animationEnd.subscribe(() => {\n this.openedChange.emit(this.opened);\n });\n }\n\n /**\n * Focuses the provided element. If the element is not focusable, it will add a tabIndex\n * attribute to forcefully focus it. The attribute is removed after focus is moved.\n * @param element The element to focus.\n */\n private _forceFocus(element: HTMLElement, options?: FocusOptions) {\n if (!this._interactivityChecker.isFocusable(element)) {\n element.tabIndex = -1;\n // The tabindex attribute should be removed to avoid navigating to that element again\n this._ngZone.runOutsideAngular(() => {\n const callback = () => {\n cleanupBlur();\n cleanupMousedown();\n element.removeAttribute('tabindex');\n };\n\n const cleanupBlur = this._renderer.listen(element, 'blur', callback);\n const cleanupMousedown = this._renderer.listen(element, 'mousedown', callback);\n });\n }\n element.focus(options);\n }\n\n /**\n * Focuses the first element that matches the given selector within the focus trap.\n * @param selector The CSS selector for the element to set focus to.\n */\n private _focusByCssSelector(selector: string, options?: FocusOptions) {\n let elementToFocus = this._elementRef.nativeElement.querySelector(\n selector,\n ) as HTMLElement | null;\n if (elementToFocus) {\n this._forceFocus(elementToFocus, options);\n }\n }\n\n /**\n * Moves focus into the drawer. Note that this works even if\n * the focus trap is disabled in `side` mode.\n */\n private _takeFocus() {\n if (!this._focusTrap) {\n return;\n }\n\n const element = this._elementRef.nativeElement;\n\n // When autoFocus is not on the sidenav, if the element cannot be focused or does\n // not exist, focus the sidenav itself so the keyboard navigation still works.\n // We need to check that `focus` is a function due to Universal.\n switch (this.autoFocus) {\n case false:\n case 'dialog':\n return;\n case true:\n case 'first-tabbable':\n afterNextRender(\n () => {\n const hasMovedFocus = this._focusTrap!.focusInitialElement();\n if (!hasMovedFocus && typeof element.focus === 'function') {\n element.focus();\n }\n },\n {injector: this._injector},\n );\n break;\n case 'first-heading':\n this._focusByCssSelector('h1, h2, h3, h4, h5, h6, [role=\"heading\"]');\n break;\n default:\n this._focusByCssSelector(this.autoFocus!);\n break;\n }\n }\n\n /**\n * Restores focus to the element that was originally focused when the drawer opened.\n * If no element was focused at that time, the focus will be restored to the drawer.\n */\n private _restoreFocus(focusOrigin: Exclude<FocusOrigin, null>) {\n if (this.autoFocus === 'dialog') {\n return;\n }\n\n if (this._elementFocusedBeforeDrawerWasOpened) {\n this._focusMonitor.focusVia(this._elementFocusedBeforeDrawerWasOpened, focusOrigin);\n } else {\n this._elementRef.nativeElement.blur();\n }\n\n this._elementFocusedBeforeDrawerWasOpened = null;\n }\n\n /** Whether focus is currently within the drawer. */\n private _isFocusWithinDrawer(): boolean {\n const activeEl = this._doc.activeElement;\n return !!activeEl && this._elementRef.nativeElement.contains(activeEl);\n }\n\n ngAfterViewInit() {\n this._isAttached = true;\n\n // Only update the DOM position when the sidenav is positioned at\n // the end since we project the sidenav before the content by default.\n if (this._position === 'end') {\n this._updatePositionInParent('end');\n }\n\n // Needs to happen after the position is updated\n // so the focus trap anchors are in the right place.\n if (this._platform.isBrowser) {\n this._focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement);\n this._updateFocusTrapState();\n }\n }\n\n ngOnDestroy() {\n this._eventCleanups.forEach(cleanup => cleanup());\n this._focusTrap?.destroy();\n this._anchor?.remove();\n this._anchor = null;\n this._animationStarted.complete();\n this._animationEnd.complete();\n this._modeChanged.complete();\n this._destroyed.next();\n this._destroyed.complete();\n }\n\n /**\n * Open the drawer.\n * @param openedVia Whether the drawer was opened by a key press, mouse click or programmatically.\n * Used for focus management after the sidenav is closed.\n */\n open(openedVia?: FocusOrigin): Promise<MatDrawerToggleResult> {\n return this.toggle(true, openedVia);\n }\n\n /** Close the drawer. */\n close(): Promise<MatDrawerToggleResult> {\n return this.toggle(false);\n }\n\n /** Closes the drawer with context that the backdrop was clicked. */\n _closeViaBackdropClick(): Promise<MatDrawerToggleResult> {\n // If the drawer is closed upon a backdrop click, we always want to restore focus. We\n // don't need to check whether focus is currently in the drawer, as clicking on the\n // backdrop causes blurs the active element.\n return this._setOpen(/* isOpen */ false, /* restoreFocus */ true, 'mouse');\n }\n\n /**\n * Toggle this drawer.\n * @param isOpen Whether the drawer should be open.\n * @param openedVia Whether the drawer was opened by a key press, mouse click or programmatically.\n * Used for focus management after the sidenav is closed.\n */\n toggle(isOpen: boolean = !this.opened, openedVia?: FocusOrigin): Promise<MatDrawerToggleResult> {\n // If the focus is currently inside the drawer content and we are closing the drawer,\n // restore the focus to the initially focused element (when the drawer opened).\n if (isOpen && openedVia) {\n this._openedVia = openedVia;\n }\n\n const result = this._setOpen(\n isOpen,\n /* restoreFocus */ !isOpen && this._isFocusWithinDrawer(),\n this._openedVia || 'program',\n );\n\n if (!isOpen) {\n this._openedVia = null;\n }\n\n return result;\n }\n\n /**\n * Toggles the opened state of the drawer.\n * @param isOpen Whether the drawer should open or close.\n * @param restoreFocus Whether focus should be restored on close.\n * @param focusOrigin Origin to use when restoring focus.\n */\n private _setOpen(\n isOpen: boolean,\n restoreFocus: boolean,\n focusOrigin: Exclude<FocusOrigin, null>,\n ): Promise<MatDrawerToggleResult> {\n if (isOpen === this.opened) {\n return Promise.resolve(isOpen ? 'open' : 'close');\n }\n\n this._opened.set(isOpen);\n\n if (this._container?._transitionsEnabled) {\n // Note: it's important to set this as early as possible,\n // otherwise the animation can look glitchy in some cases.\n this._setIsAnimating(true);\n } else {\n // Simulate the animation events if animations are disabled.\n setTimeout(() => {\n this._animationStarted.next();\n this._animationEnd.next();\n });\n }\n\n this._elementRef.nativeElement.classList.toggle('mat-drawer-opened', isOpen);\n\n if (!isOpen && restoreFocus) {\n this._restoreFocus(focusOrigin);\n }\n\n // Needed to ensure that the closing sequence fires off correctly.\n this._changeDetectorRef.markForCheck();\n this._updateFocusTrapState();\n\n return new Promise<MatDrawerToggleResult>(resolve => {\n this.openedChange.pipe(take(1)).subscribe(open => resolve(open ? 'open' : 'close'));\n });\n }\n\n /** Toggles whether the drawer is currently animating. */\n private _setIsAnimating(isAnimating: boolean) {\n this._elementRef.nativeElement.classList.toggle('mat-drawer-animating', isAnimating);\n }\n\n _getWidth(): number {\n return this._elementRef.nativeElement.offsetWidth || 0;\n }\n\n /** Updates the enabled state of the focus trap. */\n private _updateFocusTrapState() {\n if (this._focusTrap) {\n // Trap focus only if the backdrop is enabled. Otherwise, allow end user to interact with the\n // sidenav content.\n this._focusTrap.enabled = this.opened && !!this._container?._isShowingBackdrop();\n }\n }\n\n /**\n * Updates the position of the drawer in the DOM. We need to move the element around ourselves\n * when it's in the `end` position so that it comes after the content and the visual order\n * matches the tab order. We also need to be able to move it back to `start` if the sidenav\n * started off as `end` and was changed to `start`.\n */\n private _updatePositionInParent(newPosition: 'start' | 'end'): void {\n // Don't move the DOM node around on the server, because it can throw off hydration.\n if (!this._platform.isBrowser) {\n return;\n }\n\n const element = this._elementRef.nativeElement;\n const parent = element.parentNode!;\n\n if (newPosition === 'end') {\n if (!this._anchor) {\n this._anchor = this._doc.createComment('mat-drawer-anchor')!;\n parent.insertBefore(this._anchor!, element);\n }\n\n parent.appendChild(element);\n } else if (this._anchor) {\n this._anchor.parentNode!.insertBefore(element, this._anchor);\n }\n }\n\n /** Event handler for animation events. */\n private _handleTransitionEvent = (event: TransitionEvent) => {\n const element = this._elementRef.nativeElement;\n\n if (event.target === element) {\n this._ngZone.run(() => {\n if (event.type === 'transitionrun') {\n this._animationStarted.next(event);\n } else {\n // Don't toggle the animating state on `transitioncancel` since another animation should\n // start afterwards. This prevents the drawer from blinking if an animation is interrupted.\n if (event.type === 'transitionend') {\n this._setIsAnimating(false);\n }\n\n this._animationEnd.next(event);\n }\n });\n }\n };\n}\n\n/**\n * `<mat-drawer-container>` component.\n *\n * This is the parent component to one or two `<mat-drawer>`s that validates the state internally\n * and coordinates the backdrop and content styling.\n */\n@Component({\n selector: 'mat-drawer-container',\n exportAs: 'matDrawerContainer',\n templateUrl: 'drawer-container.html',\n styleUrl: 'drawer.css',\n host: {\n 'class': 'mat-drawer-container',\n '[class.mat-drawer-container-explicit-backdrop]': '_backdropOverride',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: MAT_DRAWER_CONTAINER,\n useExisting: MatDrawerContainer,\n },\n ],\n imports: [MatDrawerContent],\n})\nexport class MatDrawerContainer implements AfterContentInit, DoCheck, OnDestroy {\n private _dir = inject(Directionality, {optional: true});\n private _element = inject<ElementRef<HTMLElement>>(ElementRef);\n private _ngZone = inject(NgZone);\n private _changeDetectorRef = inject(ChangeDetectorRef);\n private _animationDisabled = _animationsDisabled();\n _transitionsEnabled = false;\n\n /** All drawers in the container. Includes drawers from inside nested containers. */\n @ContentChildren(MatDrawer, {\n // We need to use `descendants: true`, because Ivy will no longer match\n // indirect descendants if it's left as false.\n descendants: true,\n })\n _allDrawers!: QueryList<MatDrawer>;\n\n /** Drawers that belong to this container. */\n _drawers = new QueryList<MatDrawer>();\n\n @ContentChild(MatDrawerContent) _content!: MatDrawerContent;\n @ViewChild(MatDrawerContent) _userContent!: MatDrawerContent;\n\n /** The drawer child with the `start` position. */\n get start(): MatDrawer | null {\n return this._start;\n }\n\n /** The drawer child with the `end` position. */\n get end(): MatDrawer | null {\n return this._end;\n }\n\n /**\n * Whether to automatically resize the container whenever\n * the size of any of its drawers changes.\n *\n * **Use at your own risk!** Enabling this option can cause layout thrashing by measuring\n * the drawers on every change detection cycle. Can be configured globally via the\n * `MAT_DRAWER_DEFAULT_AUTOSIZE` token.\n */\n @Input()\n get autosize(): boolean {\n return this._autosize;\n }\n set autosize(value: BooleanInput) {\n this._autosize = coerceBooleanProperty(value);\n }\n private _autosize = inject(MAT_DRAWER_DEFAULT_AUTOSIZE);\n\n /**\n * Whether the drawer container should have a backdrop while one of the sidenavs is open.\n * If explicitly set to `true`, the backdrop will be enabled for drawers in the `side`\n * mode as well.\n */\n @Input()\n get hasBackdrop(): boolean {\n return this._drawerHasBackdrop(this._start) || this._drawerHasBackdrop(this._end);\n }\n set hasBackdrop(value: BooleanInput) {\n this._backdropOverride = value == null ? null : coerceBooleanProperty(value);\n }\n _backdropOverride: boolean | null = null;\n\n /** Event emitted when the drawer backdrop is clicked. */\n @Output() readonly backdropClick: EventEmitter<void> = new EventEmitter<void>();\n\n /** The drawer at the start/end position, independent of direction. */\n private _start: MatDrawer | null = null;\n private _end: MatDrawer | null = null;\n\n /**\n * The drawer at the left/right. When direction changes, these will change as well.\n * They're used as aliases for the above to set the left/right style properly.\n * In LTR, _left == _start and _right == _end.\n * In RTL, _left == _end and _right == _start.\n */\n private _left: MatDrawer | null = null;\n private _right: MatDrawer | null = null;\n\n /** Emits when the component is destroyed. */\n private readonly _destroyed = new Subject<void>();\n\n /** Emits on every ngDoCheck. Used for debouncing reflows. */\n private readonly _doCheckSubject = new Subject<void>();\n\n /**\n * Margins to be applied to the content. These are used to push / shrink the drawer content when a\n * drawer is open. We use margin rather than transform even for push mode because transform breaks\n * fixed position elements inside of the transformed element.\n */\n _contentMargins: {left: number | null; right: number | null} = {left: null, right: null};\n\n readonly _contentMarginChanges = new Subject<{left: number | null; right: number | null}>();\n\n /** Reference to the CdkScrollable instance that wraps the scrollable content. */\n get scrollable(): CdkScrollable {\n return this._userContent || this._content;\n }\n\n private _injector = inject(Injector);\n\n constructor(...args: unknown[]);\n\n constructor() {\n const platform = inject(Platform);\n const viewportRuler = inject(ViewportRuler);\n\n // If a `Dir` directive exists up the tree, listen direction changes\n // and update the left/right properties to point to the proper start/end.\n this._dir?.change.pipe(takeUntil(this._destroyed)).subscribe(() => {\n this._validateDrawers();\n this.updateContentMargins();\n });\n\n // Since the minimum width of the sidenav depends on the viewport width,\n // we need to recompute the margins if the viewport changes.\n viewportRuler\n .change()\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => this.updateContentMargins());\n\n if (!this._animationDisabled && platform.isBrowser) {\n this._ngZone.runOutsideAngular(() => {\n // Enable the animations after a delay in order to skip\n // the initial transition if a drawer is open by default.\n setTimeout(() => {\n this._element.nativeElement.classList.add('mat-drawer-transition');\n this._transitionsEnabled = true;\n }, 200);\n });\n }\n }\n\n ngAfterContentInit() {\n this._allDrawers.changes\n .pipe(startWith(this._allDrawers), takeUntil(this._destroyed))\n .subscribe((drawer: QueryList<MatDrawer>) => {\n this._drawers.reset(drawer.filter(item => !item._container || item._container === this));\n this._drawers.notifyOnChanges();\n });\n\n this._drawers.changes.pipe(startWith(null)).subscribe(() => {\n this._validateDrawers();\n\n this._drawers.forEach((drawer: MatDrawer) => {\n this._watchDrawerToggle(drawer);\n this._watchDrawerPosition(drawer);\n this._watchDrawerMode(drawer);\n });\n\n if (\n !this._drawers.length ||\n this._isDrawerOpen(this._start) ||\n this._isDrawerOpen(this._end)\n ) {\n this.updateContentMargins();\n }\n\n this._changeDetectorRef.markForCheck();\n });\n\n // Avoid hitting the NgZone through the debounce timeout.\n this._ngZone.runOutsideAngular(() => {\n this._doCheckSubject\n .pipe(\n debounceTime(10), // Arbitrary debounce time, less than a frame at 60fps\n takeUntil(this._destroyed),\n )\n .subscribe(() => this.updateContentMargins());\n });\n }\n\n ngOnDestroy() {\n this._contentMarginChanges.complete();\n this._doCheckSubject.complete();\n this._drawers.destroy();\n this._destroyed.next();\n this._destroyed.complete();\n }\n\n /** Calls `open` of both start and end drawers */\n open(): void {\n this._drawers.forEach(drawer => drawer.open());\n }\n\n /** Calls `close` of both start and end drawers */\n close(): void {\n this._drawers.forEach(drawer => drawer.close());\n }\n\n /**\n * Recalculates and updates the inline styles for the content. Note that this should be used\n * sparingly, because it causes a reflow.\n */\n updateContentMargins() {\n // 1. For drawers in `over` mode, they don't affect the content.\n // 2. For drawers in `side` mode they should shrink the content. We do this by adding to the\n // left margin (for left drawer) or right margin (for right the drawer).\n // 3. For drawers in `push` mode the should shift the content without resizing it. We do this by\n // adding to the left or right margin and simultaneously subtracting the same amount of\n // margin from the other side.\n let left = 0;\n let right = 0;\n\n if (this._left && this._left.opened) {\n if (this._left.mode == 'side') {\n left += this._left._getWidth();\n } else if (this._left.mode == 'push') {\n const width = this._left._getWidth();\n left += width;\n right -= width;\n }\n }\n\n if (this._right && this._right.opened) {\n if (this._right.mode == 'side') {\n right += this._right._getWidth();\n } else if (this._right.mode == 'push') {\n const width = this._right._getWidth();\n right += width;\n left -= width;\n }\n }\n\n // If either `right` or `left` is zero, don't set a style to the element. This\n // allows users to specify a custom size via CSS class in SSR scenarios where the\n // measured widths will always be zero. Note that we reset to `null` here, rather\n // than below, in order to ensure that the types in the `if` below are consistent.\n left = left || null!;\n right = right || null!;\n\n if (left !== this._contentMargins.left || right !== this._contentMargins.right) {\n this._contentMargins = {left, right};\n\n // Pull back into the NgZone since in some cases we could be outside. We need to be careful\n // to do it only when something changed, otherwise we can end up hitting the zone too often.\n this._ngZone.run(() => this._contentMarginChanges.next(this._contentMargins));\n }\n }\n\n ngDoCheck() {\n // If users opted into autosizing, do a check every change detection cycle.\n if (this._autosize && this._isPushed()) {\n // Run outside the NgZone, otherwise the debouncer will throw us into an infinite loop.\n this._ngZone.runOutsideAngular(() => this._doCheckSubject.next());\n }\n }\n\n /**\n * Subscribes to drawer events in order to set a class on the main container element when the\n * drawer is open and the backdrop is visible. This ensures any overflow on the container element\n * is properly hidden.\n */\n private _watchDrawerToggle(drawer: MatDrawer): void {\n drawer._animationStarted.pipe(takeUntil(this._drawers.changes)).subscribe(() => {\n this.updateContentMargins();\n this._changeDetectorRef.markForCheck();\n });\n\n if (drawer.mode !== 'side') {\n drawer.openedChange\n .pipe(takeUntil(this._drawers.changes))\n .subscribe(() => this._setContainerClass(drawer.opened));\n }\n }\n\n /**\n * Subscribes to drawer onPositionChanged event in order to\n * re-validate drawers when the position changes.\n */\n private _watchDrawerPosition(drawer: MatDrawer): void {\n // NOTE: We need to wait for the microtask queue to be empty before validating,\n // since both drawers may be swapping positions at the same time.\n drawer.onPositionChanged.pipe(takeUntil(this._drawers.changes)).subscribe(() => {\n afterNextRender({read: () => this._validateDrawers()}, {injector: this._injector});\n });\n }\n\n /** Subscribes to changes in drawer mode so we can run change detection. */\n private _watchDrawerMode(drawer: MatDrawer): void {\n drawer._modeChanged\n .pipe(takeUntil(merge(this._drawers.changes, this._destroyed)))\n .subscribe(() => {\n this.updateContentMargins();\n this._changeDetectorRef.markForCheck();\n });\n }\n\n /** Toggles the 'mat-drawer-opened' class on the main 'mat-drawer-container' element. */\n private _setContainerClass(isAdd: boolean): void {\n const classList = this._element.nativeElement.classList;\n const className = 'mat-drawer-container-has-open';\n\n if (isAdd) {\n classList.add(className);\n } else {\n classList.remove(className);\n }\n }\n\n /** Validate the state of the drawer children components. */\n private _validateDrawers() {\n this._start = this._end = null;\n\n // Ensure that we have at most one start and one end drawer.\n this._drawers.forEach(drawer => {\n if (drawer.position == 'end') {\n if (this._end != null && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatDuplicatedDrawerError('end');\n }\n this._end = drawer;\n } else {\n if (this._start != null && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throwMatDuplicatedDrawerError('start');\n }\n this._start = drawer;\n }\n });\n\n this._right = this._left = null;\n\n // Detect if we're LTR or RTL.\n if (this._dir && this._dir.value === 'rtl') {\n this._left = this._end;\n this._right = this._start;\n } else {\n this._left = this._start;\n this._right = this._end;\n }\n }\n\n /** Whether the container is being pushed to the side by one of the drawers. */\n private _isPushed() {\n return (\n (this._isDrawerOpen(this._start) && this._start.mode != 'over') ||\n (this._isDrawerOpen(this._end) && this._end.mode != 'over')\n );\n }\n\n _onBackdropClicked() {\n this.backdropClick.emit();\n this._closeModalDrawersViaBackdrop();\n }\n\n _closeModalDrawersViaBackdrop() {\n // Close all open drawers where closing is not disabled and the mode is not `side`.\n [this._start, this._end]\n .filter(drawer => drawer && !drawer.disableClose && this._drawerHasBackdrop(drawer))\n .forEach(drawer => drawer!._closeViaBackdropClick());\n }\n\n _isShowingBackdrop(): boolean {\n return (\n (this._isDrawerOpen(this._start) && this._drawerHasBackdrop(this._start)) ||\n (this._isDrawerOpen(this._end) && this._drawerHasBackdrop(this._end))\n );\n }\n\n private _isDrawerOpen(drawer: MatDrawer | null): drawer is MatDrawer {\n return drawer != null && drawer.opened;\n }\n\n // Whether argument drawer should have a backdrop when it opens\n private _drawerHasBackdrop(drawer: MatDrawer | null) {\n if (this._backdropOverride == null) {\n return !!drawer && drawer.mode !== 'side';\n }\n\n return this._backdropOverride;\n }\n}\n","<div class=\"mat-drawer-inner-container\" cdkScrollable #content>\r\n <ng-content></ng-content>\r\n</div>\r\n","@if (hasBackdrop) {\n <div class=\"mat-drawer-backdrop\" (click)=\"_onBackdropClicked()\"\n [class.mat-drawer-shown]=\"_isShowingBackdrop()\"></div>\n}\n\n<ng-content select=\"mat-drawer\"></ng-content>\n\n<ng-content select=\"mat-drawer-content\">\n</ng-content>\n\n@if (!_content) {\n <mat-drawer-content>\n <ng-content></ng-content>\n </mat-drawer-content>\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 ChangeDetectionStrategy,\n Component,\n ContentChild,\n ContentChildren,\n Input,\n ViewEncapsulation,\n QueryList,\n} from '@angular/core';\nimport {MatDrawer, MatDrawerContainer, MatDrawerContent, MAT_DRAWER_CONTAINER} from './drawer';\nimport {\n BooleanInput,\n coerceBooleanProperty,\n coerceNumberProperty,\n NumberInput,\n} from '@angular/cdk/coercion';\nimport {CdkScrollable} from '@angular/cdk/scrolling';\n\n@Component({\n selector: 'mat-sidenav-content',\n template: '<ng-content></ng-content>',\n host: {\n 'class': 'mat-drawer-content mat-sidenav-content',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: CdkScrollable,\n useExisting: MatSidenavContent,\n },\n ],\n})\nexport class MatSidenavContent extends MatDrawerContent {}\n\n@Component({\n selector: 'mat-sidenav',\n exportAs: 'matSidenav',\n templateUrl: 'drawer.html',\n host: {\n 'class': 'mat-drawer mat-sidenav',\n // The sidenav container should not be focused on when used in side mode. See b/286459024 for\n // reference. Updates tabIndex of drawer/container to default to null if in side mode.\n '[attr.tabIndex]': '(mode !== \"side\") ? \"-1\" : null',\n // must prevent the browser from aligning text based on value\n '[attr.align]': 'null',\n '[class.mat-drawer-end]': 'position === \"end\"',\n '[class.mat-drawer-over]': 'mode === \"over\"',\n '[class.mat-drawer-push]': 'mode === \"push\"',\n '[class.mat-drawer-side]': 'mode === \"side\"',\n '[class.mat-sidenav-fixed]': 'fixedInViewport',\n '[style.top.px]': 'fixedInViewport ? fixedTopGap : null',\n '[style.bottom.px]': 'fixedInViewport ? fixedBottomGap : null',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [CdkScrollable],\n providers: [{provide: MatDrawer, useExisting: MatSidenav}],\n})\nexport class MatSidenav extends MatDrawer {\n /** Whether the sidenav is fixed in the viewport. */\n @Input()\n get fixedInViewport(): boolean {\n return this._fixedInViewport;\n }\n set fixedInViewport(value: BooleanInput) {\n this._fixedInViewport = coerceBooleanProperty(value);\n }\n private _fixedInViewport = false;\n\n /**\n * The gap between the top of the sidenav and the top of the viewport when the sidenav is in fixed\n * mode.\n */\n @Input()\n get fixedTopGap(): number {\n return this._fixedTopGap;\n }\n set fixedTopGap(value: NumberInput) {\n this._fixedTopGap = coerceNumberProperty(value);\n }\n private _fixedTopGap = 0;\n\n /**\n * The gap between the bottom of the sidenav and the bottom of the viewport when the sidenav is in\n * fixed mode.\n */\n @Input()\n get fixedBottomGap(): number {\n return this._fixedBottomGap;\n }\n set fixedBottomGap(value: NumberInput) {\n this._fixedBottomGap = coerceNumberProperty(value);\n }\n private _fixedBottomGap = 0;\n}\n\n@Component({\n selector: 'mat-sidenav-container',\n exportAs: 'matSidenavContainer',\n templateUrl: 'sidenav-container.html',\n styleUrl: 'drawer.css',\n host: {\n 'class': 'mat-drawer-container mat-sidenav-container',\n '[class.mat-drawer-container-explicit-backdrop]': '_backdropOverride',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: MAT_DRAWER_CONTAINER,\n useExisting: MatSidenavContainer,\n },\n {\n provide: MatDrawerContainer,\n useExisting: MatSidenavContainer,\n },\n ],\n imports: [MatSidenavContent],\n})\nexport class MatSidenavContainer extends MatDrawerContainer {\n @ContentChildren(MatSidenav, {\n // We need to use `descendants: true`, because Ivy will no longer match\n // indirect descendants if it's left as false.\n descendants: true,\n })\n // We need an initializer here to avoid a TS error.\n override _allDrawers: QueryList<MatSidenav> = undefined!;\n\n // We need an initializer here to avoid a TS error.\n @ContentChild(MatSidenavContent) override _content: MatSidenavContent = undefined!;\n}\n","@if (hasBackdrop) {\n <div class=\"mat-drawer-backdrop\" (click)=\"_onBackdropClicked()\"\n [class.mat-drawer-shown]=\"_isShowingBackdrop()\"></div>\n}\n\n<ng-content select=\"mat-sidenav\"></ng-content>\n\n<ng-content select=\"mat-sidenav-content\">\n</ng-content>\n\n@if (!_content) {\n <mat-sidenav-content>\n <ng-content></ng-content>\n </mat-sidenav-content>\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 */\nimport {BidiModule} from '@angular/cdk/bidi';\nimport {CdkScrollableModule} from '@angular/cdk/scrolling';\nimport {NgModule} from '@angular/core';\nimport {MatDrawer, MatDrawerContainer, MatDrawerContent} from './drawer';\nimport {MatSidenav, MatSidenavContainer, MatSidenavContent} from './sidenav';\n\n@NgModule({\n imports: [\n CdkScrollableModule,\n MatDrawer,\n MatDrawerContainer,\n MatDrawerContent,\n MatSidenav,\n MatSidenavContainer,\n MatSidenavContent,\n ],\n exports: [\n BidiModule,\n CdkScrollableModule,\n MatDrawer,\n MatDrawerContainer,\n MatDrawerContent,\n MatSidenav,\n MatSidenavContainer,\n MatSidenavContent,\n ],\n})\nexport class MatSidenavModule {}\n"],"names":["throwMatDuplicatedDrawerError","position","Error","MAT_DRAWER_DEFAULT_AUTOSIZE","InjectionToken","providedIn","factory","MAT_DRAWER_CONTAINER","MatDrawerContent","CdkScrollable","_platform","inject","Platform","_changeDetectorRef","ChangeDetectorRef","_container","MatDrawerContainer","constructor","elementRef","ElementRef","scrollDispatcher","ScrollDispatcher","ngZone","NgZone","ngAfterContentInit","_contentMarginChanges","subscribe","markForCheck","_shouldBeHidden","isBrowser","start","end","mode","opened","deps","target","i0","ɵɵFactoryTarget","Component","ɵcmp","ɵɵngDeclareComponent","minVersion","version","type","isStandalone","selector","host","properties","classAttribute","providers","provide","useExisting","usesInheritance","ngImport","template","isInline","changeDetection","ChangeDetectionStrategy","OnPush","encapsulation","ViewEncapsulation","None","decorators","args","MatDrawer","_elementRef","_focusTrapFactory","FocusTrapFactory","_focusMonitor","FocusMonitor","_ngZone","_renderer","Renderer2","_interactivityChecker","InteractivityChecker","_doc","DOCUMENT","optional","_focusTrap","_elementFocusedBeforeDrawerWasOpened","_eventCleanups","_isAttached","_anchor","_position","value","_updatePositionInParent","onPositionChanged","emit","_mode","_updateFocusTrapState","_modeChanged","next","disableClose","_disableClose","coerceBooleanProperty","autoFocus","_autoFocus","_opened","toggle","signal","_openedVia","_animationStarted","Subject","_animationEnd","openedChange","EventEmitter","_openedStream","pipe","filter","o","map","openedStart","mapTo","undefined","_closedStream","closedStart","_destroyed","_content","_injector","Injector","takeUntil","activeElement","_takeFocus","_isFocusWithinDrawer","_restoreFocus","runOutsideAngular","renderer","element","nativeElement","listen","event","keyCode","ESCAPE","hasModifierKey","run","close","stopPropagation","preventDefault","_handleTransitionEvent","_forceFocus","options","isFocusable","tabIndex","callback","cleanupBlur","cleanupMousedown","removeAttribute","focus","_focusByCssSelector","elementToFocus","querySelector","afterNextRender","hasMovedFocus","focusInitialElement","injector","focusOrigin","focusVia","blur","activeEl","contains","ngAfterViewInit","create","ngOnDestroy","forEach","cleanup","destroy","remove","complete","open","openedVia","_closeViaBackdropClick","_setOpen","isOpen","result","restoreFocus","Promise","resolve","set","_transitionsEnabled","_setIsAnimating","setTimeout","classList","take","isAnimating","_getWidth","offsetWidth","enabled","_isShowingBackdrop","newPosition","parent","parentNode","createComment","insertBefore","appendChild","inputs","outputs","viewQueries","propertyName","first","predicate","descendants","exportAs","dependencies","kind","imports","Input","Output","ViewChild","_dir","Directionality","_element","_animationDisabled","_animationsDisabled","_allDrawers","_drawers","QueryList","_userContent","_start","_end","autosize","_autosize","hasBackdrop","_drawerHasBackdrop","_backdropOverride","backdropClick","_left","_right","_doCheckSubject","_contentMargins","left","right","scrollable","platform","viewportRuler","ViewportRuler","change","_validateDrawers","updateContentMargins","add","changes","startWith","drawer","reset","item","notifyOnChanges","_watchDrawerToggle","_watchDrawerPosition","_watchDrawerMode","length","_isDrawerOpen","debounceTime","width","ngDoCheck","_isPushed","_setContainerClass","read","merge","isAdd","className","ngDevMode","_onBackdropClicked","_closeModalDrawersViaBackdrop","queries","styles","ContentChildren","ContentChild","MatSidenavContent","MatSidenav","fixedInViewport","_fixedInViewport","fixedTopGap","_fixedTopGap","coerceNumberProperty","fixedBottomGap","_fixedBottomGap","MatSidenavContainer","MatSidenavModule","NgModule","ɵmod","ɵɵngDeclareNgModule","CdkScrollableModule","BidiModule","exports"],"mappings":"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"}
@@ -161,6 +161,9 @@ class MatTimepicker {
161
161
  disabled = computed(() => !!this._input()?.disabled(), ...(ngDevMode ? [{
162
162
  debugName: "disabled"
163
163
  }] : []));
164
+ panelClass = input(...(ngDevMode ? [undefined, {
165
+ debugName: "panelClass"
166
+ }] : []));
164
167
  constructor() {
165
168
  if (typeof ngDevMode === 'undefined' || ngDevMode) {
166
169
  validateAdapter(this._dateAdapter, this._dateFormats);
@@ -281,7 +284,8 @@ class MatTimepicker {
281
284
  scrollStrategy: this._scrollStrategyFactory(),
282
285
  direction: this._dir || 'ltr',
283
286
  hasBackdrop: false,
284
- disableAnimations: this._animationsDisabled
287
+ disableAnimations: this._animationsDisabled,
288
+ panelClass: this.panelClass()
285
289
  });
286
290
  this._overlayRef.detachments().subscribe(() => this.close());
287
291
  this._overlayRef.keydownEvents().subscribe(event => this._handleKeydown(event));
@@ -422,6 +426,13 @@ class MatTimepicker {
422
426
  isSignal: true,
423
427
  isRequired: false,
424
428
  transformFunction: null
429
+ },
430
+ panelClass: {
431
+ classPropertyName: "panelClass",
432
+ publicName: "panelClass",
433
+ isSignal: true,
434
+ isRequired: false,
435
+ transformFunction: null
425
436
  }
426
437
  },
427
438
  outputs: {
@@ -547,6 +558,14 @@ i0.ɵɵngDeclareClassMetadata({
547
558
  alias: "aria-labelledby",
548
559
  required: false
549
560
  }]
561
+ }],
562
+ panelClass: [{
563
+ type: i0.Input,
564
+ args: [{
565
+ isSignal: true,
566
+ alias: "panelClass",
567
+ required: false
568
+ }]
550
569
  }]
551
570
  }
552
571
  });
@@ -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 | undefined;\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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"}
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 | undefined;\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 /** Classes to be passed to the timepicker panel. */\n readonly panelClass = input<string | string[]>();\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 panelClass: this.panelClass(),\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","panelClass","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","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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@angular/material",
3
- "version": "21.2.0-next.1",
3
+ "version": "21.2.0-next.2",
4
4
  "description": "Angular Material",
5
5
  "repository": {
6
6
  "type": "git",
@@ -353,7 +353,7 @@
353
353
  }
354
354
  },
355
355
  "peerDependencies": {
356
- "@angular/cdk": "21.2.0-next.1",
356
+ "@angular/cdk": "21.2.0-next.2",
357
357
  "@angular/core": "^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0",
358
358
  "@angular/common": "^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0",
359
359
  "@angular/forms": "^21.0.0-0 || ^21.1.0-0 || ^21.2.0-0 || ^21.3.0-0 || ^22.0.0-0",
@@ -19,7 +19,7 @@ const package_config_1 = require("./package-config");
19
19
  * Note that the fallback version range does not use caret, but tilde because that is
20
20
  * the default for Angular framework dependencies in CLI projects.
21
21
  */
22
- const fallbackMaterialVersionRange = `~21.2.0-next.1`;
22
+ const fallbackMaterialVersionRange = `~21.2.0-next.2`;
23
23
  /**
24
24
  * Schematic factory entry-point for the `ng-add` schematic. The ng-add schematic will be
25
25
  * automatically executed if developers run `ng add @angular/material`.
@@ -113,6 +113,8 @@ declare class MatTimepicker<D> implements OnDestroy, MatOptionParentComponent {
113
113
  readonly ariaLabelledby: InputSignal<string | null>;
114
114
  /** Whether the timepicker is currently disabled. */
115
115
  readonly disabled: Signal<boolean>;
116
+ /** Classes to be passed to the timepicker panel. */
117
+ readonly panelClass: InputSignal<string | string[] | undefined>;
116
118
  constructor();
117
119
  /** Opens the timepicker. */
118
120
  open(): void;
@@ -148,7 +150,7 @@ declare class MatTimepicker<D> implements OnDestroy, MatOptionParentComponent {
148
150
  */
149
151
  private _handleInputStateChanges;
150
152
  static ɵfac: i0.ɵɵFactoryDeclaration<MatTimepicker<any>, never>;
151
- static ɵcmp: i0.ɵɵComponentDeclaration<MatTimepicker<any>, "mat-timepicker", ["matTimepicker"], { "interval": { "alias": "interval"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "disableRipple": { "alias": "disableRipple"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "ariaLabelledby": { "alias": "aria-labelledby"; "required": false; "isSignal": true; }; }, { "selected": "selected"; "opened": "opened"; "closed": "closed"; }, never, never, true, never>;
153
+ static ɵcmp: i0.ɵɵComponentDeclaration<MatTimepicker<any>, "mat-timepicker", ["matTimepicker"], { "interval": { "alias": "interval"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "disableRipple": { "alias": "disableRipple"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "ariaLabelledby": { "alias": "aria-labelledby"; "required": false; "isSignal": true; }; "panelClass": { "alias": "panelClass"; "required": false; "isSignal": true; }; }, { "selected": "selected"; "opened": "opened"; "closed": "closed"; }, never, never, true, never>;
152
154
  }
153
155
 
154
156
  /**