@angular/material 20.2.7 → 20.2.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/datepicker/index.d.ts +34 -34
  2. package/fesm2022/animation.mjs.map +1 -1
  3. package/fesm2022/autocomplete/testing.mjs.map +1 -1
  4. package/fesm2022/autocomplete.mjs.map +1 -1
  5. package/fesm2022/badge/testing.mjs.map +1 -1
  6. package/fesm2022/badge.mjs.map +1 -1
  7. package/fesm2022/bottom-sheet/testing.mjs.map +1 -1
  8. package/fesm2022/bottom-sheet.mjs.map +1 -1
  9. package/fesm2022/button/testing.mjs.map +1 -1
  10. package/fesm2022/button-toggle/testing.mjs.map +1 -1
  11. package/fesm2022/button-toggle.mjs +2 -2
  12. package/fesm2022/button-toggle.mjs.map +1 -1
  13. package/fesm2022/button.mjs.map +1 -1
  14. package/fesm2022/card/testing.mjs.map +1 -1
  15. package/fesm2022/card.mjs.map +1 -1
  16. package/fesm2022/checkbox/testing.mjs.map +1 -1
  17. package/fesm2022/checkbox.mjs +2 -2
  18. package/fesm2022/checkbox.mjs.map +1 -1
  19. package/fesm2022/chips/testing.mjs.map +1 -1
  20. package/fesm2022/chips.mjs.map +1 -1
  21. package/fesm2022/common-module.mjs.map +1 -1
  22. package/fesm2022/core/testing.mjs.map +1 -1
  23. package/fesm2022/core.mjs +1 -1
  24. package/fesm2022/core.mjs.map +1 -1
  25. package/fesm2022/date-formats.mjs.map +1 -1
  26. package/fesm2022/date-range-input-harness.mjs.map +1 -1
  27. package/fesm2022/datepicker/testing.mjs.map +1 -1
  28. package/fesm2022/datepicker.mjs +71 -72
  29. package/fesm2022/datepicker.mjs.map +1 -1
  30. package/fesm2022/dialog/testing.mjs.map +1 -1
  31. package/fesm2022/dialog-module.mjs.map +1 -1
  32. package/fesm2022/dialog.mjs.map +1 -1
  33. package/fesm2022/divider/testing.mjs.map +1 -1
  34. package/fesm2022/divider.mjs.map +1 -1
  35. package/fesm2022/error-options.mjs.map +1 -1
  36. package/fesm2022/error-state.mjs.map +1 -1
  37. package/fesm2022/expansion/testing.mjs.map +1 -1
  38. package/fesm2022/expansion.mjs.map +1 -1
  39. package/fesm2022/form-field/testing/control.mjs.map +1 -1
  40. package/fesm2022/form-field/testing.mjs.map +1 -1
  41. package/fesm2022/form-field-module.mjs.map +1 -1
  42. package/fesm2022/form-field.mjs.map +1 -1
  43. package/fesm2022/form-field2.mjs.map +1 -1
  44. package/fesm2022/grid-list/testing.mjs.map +1 -1
  45. package/fesm2022/grid-list.mjs.map +1 -1
  46. package/fesm2022/icon/testing.mjs.map +1 -1
  47. package/fesm2022/icon-button.mjs.map +1 -1
  48. package/fesm2022/icon-registry.mjs.map +1 -1
  49. package/fesm2022/icon.mjs.map +1 -1
  50. package/fesm2022/input/testing.mjs.map +1 -1
  51. package/fesm2022/input-harness.mjs.map +1 -1
  52. package/fesm2022/input-value-accessor.mjs.map +1 -1
  53. package/fesm2022/input.mjs.map +1 -1
  54. package/fesm2022/internal-form-field.mjs.map +1 -1
  55. package/fesm2022/line.mjs.map +1 -1
  56. package/fesm2022/list/testing.mjs.map +1 -1
  57. package/fesm2022/list.mjs +2 -2
  58. package/fesm2022/list.mjs.map +1 -1
  59. package/fesm2022/material.mjs.map +1 -1
  60. package/fesm2022/menu/testing.mjs.map +1 -1
  61. package/fesm2022/menu.mjs.map +1 -1
  62. package/fesm2022/option-harness.mjs.map +1 -1
  63. package/fesm2022/option-module.mjs.map +1 -1
  64. package/fesm2022/option.mjs.map +1 -1
  65. package/fesm2022/paginator/testing.mjs.map +1 -1
  66. package/fesm2022/paginator.mjs.map +1 -1
  67. package/fesm2022/progress-bar/testing.mjs.map +1 -1
  68. package/fesm2022/progress-bar.mjs.map +1 -1
  69. package/fesm2022/progress-spinner/testing.mjs.map +1 -1
  70. package/fesm2022/progress-spinner.mjs.map +1 -1
  71. package/fesm2022/pseudo-checkbox-module.mjs.map +1 -1
  72. package/fesm2022/pseudo-checkbox.mjs.map +1 -1
  73. package/fesm2022/public-api.mjs.map +1 -1
  74. package/fesm2022/radio/testing.mjs.map +1 -1
  75. package/fesm2022/radio.mjs +2 -2
  76. package/fesm2022/radio.mjs.map +1 -1
  77. package/fesm2022/ripple-loader.mjs.map +1 -1
  78. package/fesm2022/ripple-module.mjs.map +1 -1
  79. package/fesm2022/ripple.mjs.map +1 -1
  80. package/fesm2022/select/testing.mjs.map +1 -1
  81. package/fesm2022/select-module.mjs.map +1 -1
  82. package/fesm2022/select.mjs.map +1 -1
  83. package/fesm2022/sidenav/testing.mjs.map +1 -1
  84. package/fesm2022/sidenav.mjs.map +1 -1
  85. package/fesm2022/slide-toggle/testing.mjs.map +1 -1
  86. package/fesm2022/slide-toggle.mjs.map +1 -1
  87. package/fesm2022/slider/testing.mjs.map +1 -1
  88. package/fesm2022/slider.mjs.map +1 -1
  89. package/fesm2022/snack-bar/testing.mjs.map +1 -1
  90. package/fesm2022/snack-bar.mjs +2 -2
  91. package/fesm2022/snack-bar.mjs.map +1 -1
  92. package/fesm2022/sort/testing.mjs.map +1 -1
  93. package/fesm2022/sort.mjs +2 -2
  94. package/fesm2022/sort.mjs.map +1 -1
  95. package/fesm2022/stepper/testing.mjs.map +1 -1
  96. package/fesm2022/stepper.mjs.map +1 -1
  97. package/fesm2022/structural-styles.mjs.map +1 -1
  98. package/fesm2022/table/testing.mjs.map +1 -1
  99. package/fesm2022/table.mjs.map +1 -1
  100. package/fesm2022/tabs/testing.mjs.map +1 -1
  101. package/fesm2022/tabs.mjs.map +1 -1
  102. package/fesm2022/timepicker/testing.mjs.map +1 -1
  103. package/fesm2022/timepicker.mjs +15 -9
  104. package/fesm2022/timepicker.mjs.map +1 -1
  105. package/fesm2022/toolbar/testing.mjs.map +1 -1
  106. package/fesm2022/toolbar.mjs.map +1 -1
  107. package/fesm2022/tooltip/testing.mjs.map +1 -1
  108. package/fesm2022/tooltip-module.mjs.map +1 -1
  109. package/fesm2022/tooltip.mjs.map +1 -1
  110. package/fesm2022/tooltip2.mjs.map +1 -1
  111. package/fesm2022/tree/testing.mjs.map +1 -1
  112. package/fesm2022/tree.mjs.map +1 -1
  113. package/package.json +2 -2
  114. package/schematics/ng-add/index.js +1 -1
  115. package/timepicker/index.d.ts +2 -0
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, inject, ElementRef, NgZone, EventEmitter, Injector, Renderer2, afterNextRender, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, Output, Optional, SkipSelf, InjectionToken, ChangeDetectorRef, ViewChild, ViewContainerRef, DOCUMENT, booleanAttribute, Directive, forwardRef, signal, HostAttributeToken, ContentChild, TemplateRef, NgModule } from '@angular/core';
2
+ import { Injectable, inject, ElementRef, NgZone, EventEmitter, Injector, Renderer2, afterNextRender, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, Output, Optional, SkipSelf, InjectionToken, ChangeDetectorRef, signal, ViewChild, ViewContainerRef, DOCUMENT, booleanAttribute, Directive, forwardRef, HostAttributeToken, ContentChild, TemplateRef, NgModule } from '@angular/core';
3
3
  import { Subject, Subscription, merge, of } from 'rxjs';
4
4
  import { DateAdapter, MAT_DATE_FORMATS } from './date-formats.mjs';
5
5
  import { _IdGenerator, CdkMonitorFocus, CdkTrapFocus, A11yModule } from '@angular/cdk/a11y';
@@ -547,7 +547,9 @@ class MatCalendarBody {
547
547
  const row = cell.getAttribute('data-mat-row');
548
548
  const col = cell.getAttribute('data-mat-col');
549
549
  if (row && col) {
550
- return this.rows[parseInt(row)][parseInt(col)];
550
+ // We need the optional read here, because this can
551
+ // fire too late when the user is navigating quickly.
552
+ return this.rows[parseInt(row)]?.[parseInt(col)] || null;
551
553
  }
552
554
  }
553
555
  return null;
@@ -1033,29 +1035,29 @@ class MatMonthView {
1033
1035
  /** The body of calendar table */
1034
1036
  _matCalendarBody;
1035
1037
  /** The label for this month (e.g. "January 2017"). */
1036
- _monthLabel;
1038
+ _monthLabel = signal('', ...(ngDevMode ? [{ debugName: "_monthLabel" }] : []));
1037
1039
  /** Grid of calendar cells representing the dates of the month. */
1038
- _weeks;
1040
+ _weeks = signal([], ...(ngDevMode ? [{ debugName: "_weeks" }] : []));
1039
1041
  /** The number of blank cells in the first row before the 1st of the month. */
1040
- _firstWeekOffset;
1042
+ _firstWeekOffset = signal(0, ...(ngDevMode ? [{ debugName: "_firstWeekOffset" }] : []));
1041
1043
  /** Start value of the currently-shown date range. */
1042
- _rangeStart;
1044
+ _rangeStart = signal(null, ...(ngDevMode ? [{ debugName: "_rangeStart" }] : []));
1043
1045
  /** End value of the currently-shown date range. */
1044
- _rangeEnd;
1046
+ _rangeEnd = signal(null, ...(ngDevMode ? [{ debugName: "_rangeEnd" }] : []));
1045
1047
  /** Start value of the currently-shown comparison date range. */
1046
- _comparisonRangeStart;
1048
+ _comparisonRangeStart = signal(null, ...(ngDevMode ? [{ debugName: "_comparisonRangeStart" }] : []));
1047
1049
  /** End value of the currently-shown comparison date range. */
1048
- _comparisonRangeEnd;
1050
+ _comparisonRangeEnd = signal(null, ...(ngDevMode ? [{ debugName: "_comparisonRangeEnd" }] : []));
1049
1051
  /** Start of the preview range. */
1050
- _previewStart;
1052
+ _previewStart = signal(null, ...(ngDevMode ? [{ debugName: "_previewStart" }] : []));
1051
1053
  /** End of the preview range. */
1052
- _previewEnd;
1054
+ _previewEnd = signal(null, ...(ngDevMode ? [{ debugName: "_previewEnd" }] : []));
1053
1055
  /** Whether the user is currently selecting a range of dates. */
1054
- _isRange;
1056
+ _isRange = signal(false, ...(ngDevMode ? [{ debugName: "_isRange" }] : []));
1055
1057
  /** The date of the month that today falls on. Null if today is in another month. */
1056
- _todayDate;
1058
+ _todayDate = signal(null, ...(ngDevMode ? [{ debugName: "_todayDate" }] : []));
1057
1059
  /** The names of the weekdays. */
1058
- _weekdays;
1060
+ _weekdays = signal([], ...(ngDevMode ? [{ debugName: "_weekdays" }] : []));
1059
1061
  constructor() {
1060
1062
  inject(_CdkPrivateStyleLoader).load(_VisuallyHiddenLoader);
1061
1063
  if (typeof ngDevMode === 'undefined' || ngDevMode) {
@@ -1174,7 +1176,7 @@ class MatMonthView {
1174
1176
  return;
1175
1177
  case ESCAPE:
1176
1178
  // Abort the current range selection if the user presses escape mid-selection.
1177
- if (this._previewEnd != null && !hasModifierKey(event)) {
1179
+ if (this._previewEnd() != null && !hasModifierKey(event)) {
1178
1180
  this._clearPreview();
1179
1181
  // If a drag is in progress, cancel the drag without changing the
1180
1182
  // current selection.
@@ -1212,17 +1214,16 @@ class MatMonthView {
1212
1214
  /** Initializes this month view. */
1213
1215
  _init() {
1214
1216
  this._setRanges(this.selected);
1215
- this._todayDate = this._getCellCompareValue(this._dateAdapter.today());
1216
- this._monthLabel = this._dateFormats.display.monthLabel
1217
+ this._todayDate.set(this._getCellCompareValue(this._dateAdapter.today()));
1218
+ this._monthLabel.set(this._dateFormats.display.monthLabel
1217
1219
  ? this._dateAdapter.format(this.activeDate, this._dateFormats.display.monthLabel)
1218
1220
  : this._dateAdapter
1219
- .getMonthNames('short')[this._dateAdapter.getMonth(this.activeDate)].toLocaleUpperCase();
1221
+ .getMonthNames('short')[this._dateAdapter.getMonth(this.activeDate)].toLocaleUpperCase());
1220
1222
  let firstOfMonth = this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), this._dateAdapter.getMonth(this.activeDate), 1);
1221
- this._firstWeekOffset =
1222
- (DAYS_PER_WEEK +
1223
- this._dateAdapter.getDayOfWeek(firstOfMonth) -
1224
- this._dateAdapter.getFirstDayOfWeek()) %
1225
- DAYS_PER_WEEK;
1223
+ this._firstWeekOffset.set((DAYS_PER_WEEK +
1224
+ this._dateAdapter.getDayOfWeek(firstOfMonth) -
1225
+ this._dateAdapter.getFirstDayOfWeek()) %
1226
+ DAYS_PER_WEEK);
1226
1227
  this._initWeekdays();
1227
1228
  this._createWeekCells();
1228
1229
  this._changeDetectorRef.markForCheck();
@@ -1242,20 +1243,15 @@ class MatMonthView {
1242
1243
  // events aren't fired for single date selections.
1243
1244
  const value = cell ? cell.rawValue : null;
1244
1245
  const previewRange = this._rangeStrategy.createPreview(value, this.selected, event);
1245
- this._previewStart = this._getCellCompareValue(previewRange.start);
1246
- this._previewEnd = this._getCellCompareValue(previewRange.end);
1246
+ this._previewStart.set(this._getCellCompareValue(previewRange.start));
1247
+ this._previewEnd.set(this._getCellCompareValue(previewRange.end));
1247
1248
  if (this.activeDrag && value) {
1248
1249
  const dragRange = this._rangeStrategy.createDrag?.(this.activeDrag.value, this.selected, value, event);
1249
1250
  if (dragRange) {
1250
- this._previewStart = this._getCellCompareValue(dragRange.start);
1251
- this._previewEnd = this._getCellCompareValue(dragRange.end);
1251
+ this._previewStart.set(this._getCellCompareValue(dragRange.start));
1252
+ this._previewEnd.set(this._getCellCompareValue(dragRange.end));
1252
1253
  }
1253
1254
  }
1254
- // Note that here we need to use `detectChanges`, rather than `markForCheck`, because
1255
- // the way `_focusActiveCell` is set up at the moment makes it fire at the wrong time
1256
- // when navigating one month back using the keyboard which will cause this handler
1257
- // to throw a "changed after checked" error when updating the preview state.
1258
- this._changeDetectorRef.detectChanges();
1259
1255
  }
1260
1256
  }
1261
1257
  /**
@@ -1287,27 +1283,28 @@ class MatMonthView {
1287
1283
  const narrowWeekdays = this._dateAdapter.getDayOfWeekNames('narrow');
1288
1284
  const longWeekdays = this._dateAdapter.getDayOfWeekNames('long');
1289
1285
  // Rotate the labels for days of the week based on the configured first day of the week.
1290
- let weekdays = longWeekdays.map((long, i) => {
1286
+ const weekdays = longWeekdays.map((long, i) => {
1291
1287
  return { long, narrow: narrowWeekdays[i], id: uniqueIdCounter++ };
1292
1288
  });
1293
- this._weekdays = weekdays.slice(firstDayOfWeek).concat(weekdays.slice(0, firstDayOfWeek));
1289
+ this._weekdays.set(weekdays.slice(firstDayOfWeek).concat(weekdays.slice(0, firstDayOfWeek)));
1294
1290
  }
1295
1291
  /** Creates MatCalendarCells for the dates in this month. */
1296
1292
  _createWeekCells() {
1297
1293
  const daysInMonth = this._dateAdapter.getNumDaysInMonth(this.activeDate);
1298
1294
  const dateNames = this._dateAdapter.getDateNames();
1299
- this._weeks = [[]];
1300
- for (let i = 0, cell = this._firstWeekOffset; i < daysInMonth; i++, cell++) {
1295
+ const weeks = [[]];
1296
+ for (let i = 0, cell = this._firstWeekOffset(); i < daysInMonth; i++, cell++) {
1301
1297
  if (cell == DAYS_PER_WEEK) {
1302
- this._weeks.push([]);
1298
+ weeks.push([]);
1303
1299
  cell = 0;
1304
1300
  }
1305
1301
  const date = this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), this._dateAdapter.getMonth(this.activeDate), i + 1);
1306
1302
  const enabled = this._shouldEnableDate(date);
1307
1303
  const ariaLabel = this._dateAdapter.format(date, this._dateFormats.display.dateA11yLabel);
1308
1304
  const cellClasses = this.dateClass ? this.dateClass(date, 'month') : undefined;
1309
- this._weeks[this._weeks.length - 1].push(new MatCalendarCell(i + 1, dateNames[i], ariaLabel, enabled, cellClasses, this._getCellCompareValue(date), date));
1305
+ weeks[weeks.length - 1].push(new MatCalendarCell(i + 1, dateNames[i], ariaLabel, enabled, cellClasses, this._getCellCompareValue(date), date));
1310
1306
  }
1307
+ this._weeks.set(weeks);
1311
1308
  }
1312
1309
  /** Date filter for the month */
1313
1310
  _shouldEnableDate(date) {
@@ -1351,16 +1348,17 @@ class MatMonthView {
1351
1348
  /** Sets the current range based on a model value. */
1352
1349
  _setRanges(selectedValue) {
1353
1350
  if (selectedValue instanceof DateRange) {
1354
- this._rangeStart = this._getCellCompareValue(selectedValue.start);
1355
- this._rangeEnd = this._getCellCompareValue(selectedValue.end);
1356
- this._isRange = true;
1351
+ this._rangeStart.set(this._getCellCompareValue(selectedValue.start));
1352
+ this._rangeEnd.set(this._getCellCompareValue(selectedValue.end));
1353
+ this._isRange.set(true);
1357
1354
  }
1358
1355
  else {
1359
- this._rangeStart = this._rangeEnd = this._getCellCompareValue(selectedValue);
1360
- this._isRange = false;
1356
+ this._rangeStart.set(this._getCellCompareValue(selectedValue));
1357
+ this._rangeEnd.set(this._rangeStart());
1358
+ this._isRange.set(false);
1361
1359
  }
1362
- this._comparisonRangeStart = this._getCellCompareValue(this.comparisonStart);
1363
- this._comparisonRangeEnd = this._getCellCompareValue(this.comparisonEnd);
1360
+ this._comparisonRangeStart.set(this._getCellCompareValue(this.comparisonStart));
1361
+ this._comparisonRangeEnd.set(this._getCellCompareValue(this.comparisonEnd));
1364
1362
  }
1365
1363
  /** Gets whether a date can be selected in the month view. */
1366
1364
  _canSelect(date) {
@@ -1368,14 +1366,15 @@ class MatMonthView {
1368
1366
  }
1369
1367
  /** Clears out preview state. */
1370
1368
  _clearPreview() {
1371
- this._previewStart = this._previewEnd = null;
1369
+ this._previewStart.set(null);
1370
+ this._previewEnd.set(null);
1372
1371
  }
1373
1372
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: MatMonthView, deps: [], target: i0.ɵɵFactoryTarget.Component });
1374
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.2.0-next.2", type: MatMonthView, isStandalone: true, selector: "mat-month-view", inputs: { activeDate: "activeDate", selected: "selected", minDate: "minDate", maxDate: "maxDate", dateFilter: "dateFilter", dateClass: "dateClass", comparisonStart: "comparisonStart", comparisonEnd: "comparisonEnd", startDateAccessibleName: "startDateAccessibleName", endDateAccessibleName: "endDateAccessibleName", activeDrag: "activeDrag" }, outputs: { selectedChange: "selectedChange", _userSelection: "_userSelection", dragStarted: "dragStarted", dragEnded: "dragEnded", activeDateChange: "activeDateChange" }, viewQueries: [{ propertyName: "_matCalendarBody", first: true, predicate: MatCalendarBody, descendants: true }], exportAs: ["matMonthView"], usesOnChanges: true, ngImport: i0, template: "<table class=\"mat-calendar-table\" role=\"grid\">\n <thead class=\"mat-calendar-table-header\">\n <tr>\n @for (day of _weekdays; track day.id) {\n <th scope=\"col\">\n <span class=\"cdk-visually-hidden\">{{day.long}}</span>\n <span aria-hidden=\"true\">{{day.narrow}}</span>\n </th>\n }\n </tr>\n <tr aria-hidden=\"true\"><th class=\"mat-calendar-table-header-divider\" colspan=\"7\"></th></tr>\n </thead>\n <tbody mat-calendar-body\n [label]=\"_monthLabel\"\n [rows]=\"_weeks\"\n [todayValue]=\"_todayDate!\"\n [startValue]=\"_rangeStart!\"\n [endValue]=\"_rangeEnd!\"\n [comparisonStart]=\"_comparisonRangeStart\"\n [comparisonEnd]=\"_comparisonRangeEnd\"\n [previewStart]=\"_previewStart\"\n [previewEnd]=\"_previewEnd\"\n [isRange]=\"_isRange\"\n [labelMinRequiredCells]=\"3\"\n [activeCell]=\"_dateAdapter.getDate(activeDate) - 1\"\n [startDateAccessibleName]=\"startDateAccessibleName\"\n [endDateAccessibleName]=\"endDateAccessibleName\"\n (selectedValueChange)=\"_dateSelected($event)\"\n (activeDateChange)=\"_updateActiveDate($event)\"\n (previewChange)=\"_previewChanged($event)\"\n (dragStarted)=\"dragStarted.emit($event)\"\n (dragEnded)=\"_dragEnded($event)\"\n (keyup)=\"_handleCalendarBodyKeyup($event)\"\n (keydown)=\"_handleCalendarBodyKeydown($event)\">\n </tbody>\n</table>\n", dependencies: [{ kind: "component", type: MatCalendarBody, selector: "[mat-calendar-body]", inputs: ["label", "rows", "todayValue", "startValue", "endValue", "labelMinRequiredCells", "numCols", "activeCell", "isRange", "cellAspectRatio", "comparisonStart", "comparisonEnd", "previewStart", "previewEnd", "startDateAccessibleName", "endDateAccessibleName"], outputs: ["selectedValueChange", "previewChange", "activeDateChange", "dragStarted", "dragEnded"], exportAs: ["matCalendarBody"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1373
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.2.0-next.2", type: MatMonthView, isStandalone: true, selector: "mat-month-view", inputs: { activeDate: "activeDate", selected: "selected", minDate: "minDate", maxDate: "maxDate", dateFilter: "dateFilter", dateClass: "dateClass", comparisonStart: "comparisonStart", comparisonEnd: "comparisonEnd", startDateAccessibleName: "startDateAccessibleName", endDateAccessibleName: "endDateAccessibleName", activeDrag: "activeDrag" }, outputs: { selectedChange: "selectedChange", _userSelection: "_userSelection", dragStarted: "dragStarted", dragEnded: "dragEnded", activeDateChange: "activeDateChange" }, viewQueries: [{ propertyName: "_matCalendarBody", first: true, predicate: MatCalendarBody, descendants: true }], exportAs: ["matMonthView"], usesOnChanges: true, ngImport: i0, template: "<table class=\"mat-calendar-table\" role=\"grid\">\n <thead class=\"mat-calendar-table-header\">\n <tr>\n @for (day of _weekdays(); track day.id) {\n <th scope=\"col\">\n <span class=\"cdk-visually-hidden\">{{day.long}}</span>\n <span aria-hidden=\"true\">{{day.narrow}}</span>\n </th>\n }\n </tr>\n <tr aria-hidden=\"true\"><th class=\"mat-calendar-table-header-divider\" colspan=\"7\"></th></tr>\n </thead>\n <tbody mat-calendar-body\n [label]=\"_monthLabel()\"\n [rows]=\"_weeks()\"\n [todayValue]=\"_todayDate()!\"\n [startValue]=\"_rangeStart()!\"\n [endValue]=\"_rangeEnd()!\"\n [comparisonStart]=\"_comparisonRangeStart()\"\n [comparisonEnd]=\"_comparisonRangeEnd()\"\n [previewStart]=\"_previewStart()\"\n [previewEnd]=\"_previewEnd()\"\n [isRange]=\"_isRange()\"\n [labelMinRequiredCells]=\"3\"\n [activeCell]=\"_dateAdapter.getDate(activeDate) - 1\"\n [startDateAccessibleName]=\"startDateAccessibleName\"\n [endDateAccessibleName]=\"endDateAccessibleName\"\n (selectedValueChange)=\"_dateSelected($event)\"\n (activeDateChange)=\"_updateActiveDate($event)\"\n (previewChange)=\"_previewChanged($event)\"\n (dragStarted)=\"dragStarted.emit($event)\"\n (dragEnded)=\"_dragEnded($event)\"\n (keyup)=\"_handleCalendarBodyKeyup($event)\"\n (keydown)=\"_handleCalendarBodyKeydown($event)\">\n </tbody>\n</table>\n", dependencies: [{ kind: "component", type: MatCalendarBody, selector: "[mat-calendar-body]", inputs: ["label", "rows", "todayValue", "startValue", "endValue", "labelMinRequiredCells", "numCols", "activeCell", "isRange", "cellAspectRatio", "comparisonStart", "comparisonEnd", "previewStart", "previewEnd", "startDateAccessibleName", "endDateAccessibleName"], outputs: ["selectedValueChange", "previewChange", "activeDateChange", "dragStarted", "dragEnded"], exportAs: ["matCalendarBody"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1375
1374
  }
1376
1375
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: MatMonthView, decorators: [{
1377
1376
  type: Component,
1378
- args: [{ selector: 'mat-month-view', exportAs: 'matMonthView', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [MatCalendarBody], template: "<table class=\"mat-calendar-table\" role=\"grid\">\n <thead class=\"mat-calendar-table-header\">\n <tr>\n @for (day of _weekdays; track day.id) {\n <th scope=\"col\">\n <span class=\"cdk-visually-hidden\">{{day.long}}</span>\n <span aria-hidden=\"true\">{{day.narrow}}</span>\n </th>\n }\n </tr>\n <tr aria-hidden=\"true\"><th class=\"mat-calendar-table-header-divider\" colspan=\"7\"></th></tr>\n </thead>\n <tbody mat-calendar-body\n [label]=\"_monthLabel\"\n [rows]=\"_weeks\"\n [todayValue]=\"_todayDate!\"\n [startValue]=\"_rangeStart!\"\n [endValue]=\"_rangeEnd!\"\n [comparisonStart]=\"_comparisonRangeStart\"\n [comparisonEnd]=\"_comparisonRangeEnd\"\n [previewStart]=\"_previewStart\"\n [previewEnd]=\"_previewEnd\"\n [isRange]=\"_isRange\"\n [labelMinRequiredCells]=\"3\"\n [activeCell]=\"_dateAdapter.getDate(activeDate) - 1\"\n [startDateAccessibleName]=\"startDateAccessibleName\"\n [endDateAccessibleName]=\"endDateAccessibleName\"\n (selectedValueChange)=\"_dateSelected($event)\"\n (activeDateChange)=\"_updateActiveDate($event)\"\n (previewChange)=\"_previewChanged($event)\"\n (dragStarted)=\"dragStarted.emit($event)\"\n (dragEnded)=\"_dragEnded($event)\"\n (keyup)=\"_handleCalendarBodyKeyup($event)\"\n (keydown)=\"_handleCalendarBodyKeydown($event)\">\n </tbody>\n</table>\n" }]
1377
+ args: [{ selector: 'mat-month-view', exportAs: 'matMonthView', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [MatCalendarBody], template: "<table class=\"mat-calendar-table\" role=\"grid\">\n <thead class=\"mat-calendar-table-header\">\n <tr>\n @for (day of _weekdays(); track day.id) {\n <th scope=\"col\">\n <span class=\"cdk-visually-hidden\">{{day.long}}</span>\n <span aria-hidden=\"true\">{{day.narrow}}</span>\n </th>\n }\n </tr>\n <tr aria-hidden=\"true\"><th class=\"mat-calendar-table-header-divider\" colspan=\"7\"></th></tr>\n </thead>\n <tbody mat-calendar-body\n [label]=\"_monthLabel()\"\n [rows]=\"_weeks()\"\n [todayValue]=\"_todayDate()!\"\n [startValue]=\"_rangeStart()!\"\n [endValue]=\"_rangeEnd()!\"\n [comparisonStart]=\"_comparisonRangeStart()\"\n [comparisonEnd]=\"_comparisonRangeEnd()\"\n [previewStart]=\"_previewStart()\"\n [previewEnd]=\"_previewEnd()\"\n [isRange]=\"_isRange()\"\n [labelMinRequiredCells]=\"3\"\n [activeCell]=\"_dateAdapter.getDate(activeDate) - 1\"\n [startDateAccessibleName]=\"startDateAccessibleName\"\n [endDateAccessibleName]=\"endDateAccessibleName\"\n (selectedValueChange)=\"_dateSelected($event)\"\n (activeDateChange)=\"_updateActiveDate($event)\"\n (previewChange)=\"_previewChanged($event)\"\n (dragStarted)=\"dragStarted.emit($event)\"\n (dragEnded)=\"_dragEnded($event)\"\n (keyup)=\"_handleCalendarBodyKeyup($event)\"\n (keydown)=\"_handleCalendarBodyKeydown($event)\">\n </tbody>\n</table>\n" }]
1379
1378
  }], ctorParameters: () => [], propDecorators: { activeDate: [{
1380
1379
  type: Input
1381
1380
  }], selected: [{
@@ -1483,11 +1482,11 @@ class MatMultiYearView {
1483
1482
  /** The body of calendar table */
1484
1483
  _matCalendarBody;
1485
1484
  /** Grid of calendar cells representing the currently displayed years. */
1486
- _years;
1485
+ _years = signal([], ...(ngDevMode ? [{ debugName: "_years" }] : []));
1487
1486
  /** The year that today falls on. */
1488
- _todayYear;
1487
+ _todayYear = signal(0, ...(ngDevMode ? [{ debugName: "_todayYear" }] : []));
1489
1488
  /** The year of the selected date. Null if the selected date is null. */
1490
- _selectedYear;
1489
+ _selectedYear = signal(null, ...(ngDevMode ? [{ debugName: "_selectedYear" }] : []));
1491
1490
  constructor() {
1492
1491
  if (!this._dateAdapter && (typeof ngDevMode === 'undefined' || ngDevMode)) {
1493
1492
  throw createMissingDateImplError('DateAdapter');
@@ -1504,7 +1503,7 @@ class MatMultiYearView {
1504
1503
  }
1505
1504
  /** Initializes this multi-year view. */
1506
1505
  _init() {
1507
- this._todayYear = this._dateAdapter.getYear(this._dateAdapter.today());
1506
+ this._todayYear.set(this._dateAdapter.getYear(this._dateAdapter.today()));
1508
1507
  // We want a range years such that we maximize the number of
1509
1508
  // enabled dates visible at once. This prevents issues where the minimum year
1510
1509
  // is the last item of a page OR the maximum year is the first item of a page.
@@ -1512,14 +1511,15 @@ class MatMultiYearView {
1512
1511
  // *actual* first rendered year in the multi-year view.
1513
1512
  const activeYear = this._dateAdapter.getYear(this._activeDate);
1514
1513
  const minYearOfPage = activeYear - getActiveOffset(this._dateAdapter, this.activeDate, this.minDate, this.maxDate);
1515
- this._years = [];
1514
+ const years = [];
1516
1515
  for (let i = 0, row = []; i < yearsPerPage; i++) {
1517
1516
  row.push(minYearOfPage + i);
1518
1517
  if (row.length == yearsPerRow) {
1519
- this._years.push(row.map(year => this._createCellForYear(year)));
1518
+ years.push(row.map(year => this._createCellForYear(year)));
1520
1519
  row = [];
1521
1520
  }
1522
1521
  }
1522
+ this._years.set(years);
1523
1523
  this._changeDetectorRef.markForCheck();
1524
1524
  }
1525
1525
  /** Handles when a new year is selected. */
@@ -1663,23 +1663,23 @@ class MatMultiYearView {
1663
1663
  }
1664
1664
  /** Sets the currently-highlighted year based on a model value. */
1665
1665
  _setSelectedYear(value) {
1666
- this._selectedYear = null;
1666
+ this._selectedYear.set(null);
1667
1667
  if (value instanceof DateRange) {
1668
1668
  const displayValue = value.start || value.end;
1669
1669
  if (displayValue) {
1670
- this._selectedYear = this._dateAdapter.getYear(displayValue);
1670
+ this._selectedYear.set(this._dateAdapter.getYear(displayValue));
1671
1671
  }
1672
1672
  }
1673
1673
  else if (value) {
1674
- this._selectedYear = this._dateAdapter.getYear(value);
1674
+ this._selectedYear.set(this._dateAdapter.getYear(value));
1675
1675
  }
1676
1676
  }
1677
1677
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: MatMultiYearView, deps: [], target: i0.ɵɵFactoryTarget.Component });
1678
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.0-next.2", type: MatMultiYearView, isStandalone: true, selector: "mat-multi-year-view", inputs: { activeDate: "activeDate", selected: "selected", minDate: "minDate", maxDate: "maxDate", dateFilter: "dateFilter", dateClass: "dateClass" }, outputs: { selectedChange: "selectedChange", yearSelected: "yearSelected", activeDateChange: "activeDateChange" }, viewQueries: [{ propertyName: "_matCalendarBody", first: true, predicate: MatCalendarBody, descendants: true }], exportAs: ["matMultiYearView"], ngImport: i0, template: "<table class=\"mat-calendar-table\" role=\"grid\">\n <thead aria-hidden=\"true\" class=\"mat-calendar-table-header\">\n <tr><th class=\"mat-calendar-table-header-divider\" colspan=\"4\"></th></tr>\n </thead>\n <tbody mat-calendar-body\n [rows]=\"_years\"\n [todayValue]=\"_todayYear\"\n [startValue]=\"_selectedYear!\"\n [endValue]=\"_selectedYear!\"\n [numCols]=\"4\"\n [cellAspectRatio]=\"4 / 7\"\n [activeCell]=\"_getActiveCell()\"\n (selectedValueChange)=\"_yearSelected($event)\"\n (activeDateChange)=\"_updateActiveDate($event)\"\n (keyup)=\"_handleCalendarBodyKeyup($event)\"\n (keydown)=\"_handleCalendarBodyKeydown($event)\">\n </tbody>\n</table>\n", dependencies: [{ kind: "component", type: MatCalendarBody, selector: "[mat-calendar-body]", inputs: ["label", "rows", "todayValue", "startValue", "endValue", "labelMinRequiredCells", "numCols", "activeCell", "isRange", "cellAspectRatio", "comparisonStart", "comparisonEnd", "previewStart", "previewEnd", "startDateAccessibleName", "endDateAccessibleName"], outputs: ["selectedValueChange", "previewChange", "activeDateChange", "dragStarted", "dragEnded"], exportAs: ["matCalendarBody"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1678
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.0-next.2", type: MatMultiYearView, isStandalone: true, selector: "mat-multi-year-view", inputs: { activeDate: "activeDate", selected: "selected", minDate: "minDate", maxDate: "maxDate", dateFilter: "dateFilter", dateClass: "dateClass" }, outputs: { selectedChange: "selectedChange", yearSelected: "yearSelected", activeDateChange: "activeDateChange" }, viewQueries: [{ propertyName: "_matCalendarBody", first: true, predicate: MatCalendarBody, descendants: true }], exportAs: ["matMultiYearView"], ngImport: i0, template: "<table class=\"mat-calendar-table\" role=\"grid\">\n <thead aria-hidden=\"true\" class=\"mat-calendar-table-header\">\n <tr><th class=\"mat-calendar-table-header-divider\" colspan=\"4\"></th></tr>\n </thead>\n <tbody mat-calendar-body\n [rows]=\"_years()\"\n [todayValue]=\"_todayYear()\"\n [startValue]=\"_selectedYear()!\"\n [endValue]=\"_selectedYear()!\"\n [numCols]=\"4\"\n [cellAspectRatio]=\"4 / 7\"\n [activeCell]=\"_getActiveCell()\"\n (selectedValueChange)=\"_yearSelected($event)\"\n (activeDateChange)=\"_updateActiveDate($event)\"\n (keyup)=\"_handleCalendarBodyKeyup($event)\"\n (keydown)=\"_handleCalendarBodyKeydown($event)\">\n </tbody>\n</table>\n", dependencies: [{ kind: "component", type: MatCalendarBody, selector: "[mat-calendar-body]", inputs: ["label", "rows", "todayValue", "startValue", "endValue", "labelMinRequiredCells", "numCols", "activeCell", "isRange", "cellAspectRatio", "comparisonStart", "comparisonEnd", "previewStart", "previewEnd", "startDateAccessibleName", "endDateAccessibleName"], outputs: ["selectedValueChange", "previewChange", "activeDateChange", "dragStarted", "dragEnded"], exportAs: ["matCalendarBody"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1679
1679
  }
1680
1680
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: MatMultiYearView, decorators: [{
1681
1681
  type: Component,
1682
- args: [{ selector: 'mat-multi-year-view', exportAs: 'matMultiYearView', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [MatCalendarBody], template: "<table class=\"mat-calendar-table\" role=\"grid\">\n <thead aria-hidden=\"true\" class=\"mat-calendar-table-header\">\n <tr><th class=\"mat-calendar-table-header-divider\" colspan=\"4\"></th></tr>\n </thead>\n <tbody mat-calendar-body\n [rows]=\"_years\"\n [todayValue]=\"_todayYear\"\n [startValue]=\"_selectedYear!\"\n [endValue]=\"_selectedYear!\"\n [numCols]=\"4\"\n [cellAspectRatio]=\"4 / 7\"\n [activeCell]=\"_getActiveCell()\"\n (selectedValueChange)=\"_yearSelected($event)\"\n (activeDateChange)=\"_updateActiveDate($event)\"\n (keyup)=\"_handleCalendarBodyKeyup($event)\"\n (keydown)=\"_handleCalendarBodyKeydown($event)\">\n </tbody>\n</table>\n" }]
1682
+ args: [{ selector: 'mat-multi-year-view', exportAs: 'matMultiYearView', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [MatCalendarBody], template: "<table class=\"mat-calendar-table\" role=\"grid\">\n <thead aria-hidden=\"true\" class=\"mat-calendar-table-header\">\n <tr><th class=\"mat-calendar-table-header-divider\" colspan=\"4\"></th></tr>\n </thead>\n <tbody mat-calendar-body\n [rows]=\"_years()\"\n [todayValue]=\"_todayYear()\"\n [startValue]=\"_selectedYear()!\"\n [endValue]=\"_selectedYear()!\"\n [numCols]=\"4\"\n [cellAspectRatio]=\"4 / 7\"\n [activeCell]=\"_getActiveCell()\"\n (selectedValueChange)=\"_yearSelected($event)\"\n (activeDateChange)=\"_updateActiveDate($event)\"\n (keyup)=\"_handleCalendarBodyKeyup($event)\"\n (keydown)=\"_handleCalendarBodyKeydown($event)\">\n </tbody>\n</table>\n" }]
1683
1683
  }], ctorParameters: () => [], propDecorators: { activeDate: [{
1684
1684
  type: Input
1685
1685
  }], selected: [{
@@ -1807,16 +1807,16 @@ class MatYearView {
1807
1807
  /** The body of calendar table */
1808
1808
  _matCalendarBody;
1809
1809
  /** Grid of calendar cells representing the months of the year. */
1810
- _months;
1810
+ _months = signal([], ...(ngDevMode ? [{ debugName: "_months" }] : []));
1811
1811
  /** The label for this year (e.g. "2017"). */
1812
- _yearLabel;
1812
+ _yearLabel = signal('', ...(ngDevMode ? [{ debugName: "_yearLabel" }] : []));
1813
1813
  /** The month in this year that today falls on. Null if today is in a different year. */
1814
- _todayMonth;
1814
+ _todayMonth = signal(null, ...(ngDevMode ? [{ debugName: "_todayMonth" }] : []));
1815
1815
  /**
1816
1816
  * The month in this year that the selected Date falls on.
1817
1817
  * Null if the selected Date is in a different year.
1818
1818
  */
1819
- _selectedMonth;
1819
+ _selectedMonth = signal(null, ...(ngDevMode ? [{ debugName: "_selectedMonth" }] : []));
1820
1820
  constructor() {
1821
1821
  if (typeof ngDevMode === 'undefined' || ngDevMode) {
1822
1822
  if (!this._dateAdapter) {
@@ -1925,15 +1925,15 @@ class MatYearView {
1925
1925
  /** Initializes this year view. */
1926
1926
  _init() {
1927
1927
  this._setSelectedMonth(this.selected);
1928
- this._todayMonth = this._getMonthInCurrentYear(this._dateAdapter.today());
1929
- this._yearLabel = this._dateAdapter.getYearName(this.activeDate);
1928
+ this._todayMonth.set(this._getMonthInCurrentYear(this._dateAdapter.today()));
1929
+ this._yearLabel.set(this._dateAdapter.getYearName(this.activeDate));
1930
1930
  let monthNames = this._dateAdapter.getMonthNames('short');
1931
1931
  // First row of months only contains 5 elements so we can fit the year label on the same row.
1932
- this._months = [
1932
+ this._months.set([
1933
1933
  [0, 1, 2, 3],
1934
1934
  [4, 5, 6, 7],
1935
1935
  [8, 9, 10, 11],
1936
- ].map(row => row.map(month => this._createCellForMonth(month, monthNames[month])));
1936
+ ].map(row => row.map(month => this._createCellForMonth(month, monthNames[month]))));
1937
1937
  this._changeDetectorRef.markForCheck();
1938
1938
  }
1939
1939
  /** Focuses the active cell after the microtask queue is empty. */
@@ -2021,19 +2021,18 @@ class MatYearView {
2021
2021
  /** Sets the currently-selected month based on a model value. */
2022
2022
  _setSelectedMonth(value) {
2023
2023
  if (value instanceof DateRange) {
2024
- this._selectedMonth =
2025
- this._getMonthInCurrentYear(value.start) || this._getMonthInCurrentYear(value.end);
2024
+ this._selectedMonth.set(this._getMonthInCurrentYear(value.start) || this._getMonthInCurrentYear(value.end));
2026
2025
  }
2027
2026
  else {
2028
- this._selectedMonth = this._getMonthInCurrentYear(value);
2027
+ this._selectedMonth.set(this._getMonthInCurrentYear(value));
2029
2028
  }
2030
2029
  }
2031
2030
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: MatYearView, deps: [], target: i0.ɵɵFactoryTarget.Component });
2032
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.0-next.2", type: MatYearView, isStandalone: true, selector: "mat-year-view", inputs: { activeDate: "activeDate", selected: "selected", minDate: "minDate", maxDate: "maxDate", dateFilter: "dateFilter", dateClass: "dateClass" }, outputs: { selectedChange: "selectedChange", monthSelected: "monthSelected", activeDateChange: "activeDateChange" }, viewQueries: [{ propertyName: "_matCalendarBody", first: true, predicate: MatCalendarBody, descendants: true }], exportAs: ["matYearView"], ngImport: i0, template: "<table class=\"mat-calendar-table\" role=\"grid\">\n <thead aria-hidden=\"true\" class=\"mat-calendar-table-header\">\n <tr><th class=\"mat-calendar-table-header-divider\" colspan=\"4\"></th></tr>\n </thead>\n <tbody mat-calendar-body\n [label]=\"_yearLabel\"\n [rows]=\"_months\"\n [todayValue]=\"_todayMonth!\"\n [startValue]=\"_selectedMonth!\"\n [endValue]=\"_selectedMonth!\"\n [labelMinRequiredCells]=\"2\"\n [numCols]=\"4\"\n [cellAspectRatio]=\"4 / 7\"\n [activeCell]=\"_dateAdapter.getMonth(activeDate)\"\n (selectedValueChange)=\"_monthSelected($event)\"\n (activeDateChange)=\"_updateActiveDate($event)\"\n (keyup)=\"_handleCalendarBodyKeyup($event)\"\n (keydown)=\"_handleCalendarBodyKeydown($event)\">\n </tbody>\n</table>\n", dependencies: [{ kind: "component", type: MatCalendarBody, selector: "[mat-calendar-body]", inputs: ["label", "rows", "todayValue", "startValue", "endValue", "labelMinRequiredCells", "numCols", "activeCell", "isRange", "cellAspectRatio", "comparisonStart", "comparisonEnd", "previewStart", "previewEnd", "startDateAccessibleName", "endDateAccessibleName"], outputs: ["selectedValueChange", "previewChange", "activeDateChange", "dragStarted", "dragEnded"], exportAs: ["matCalendarBody"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
2031
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.0-next.2", type: MatYearView, isStandalone: true, selector: "mat-year-view", inputs: { activeDate: "activeDate", selected: "selected", minDate: "minDate", maxDate: "maxDate", dateFilter: "dateFilter", dateClass: "dateClass" }, outputs: { selectedChange: "selectedChange", monthSelected: "monthSelected", activeDateChange: "activeDateChange" }, viewQueries: [{ propertyName: "_matCalendarBody", first: true, predicate: MatCalendarBody, descendants: true }], exportAs: ["matYearView"], ngImport: i0, template: "<table class=\"mat-calendar-table\" role=\"grid\">\n <thead aria-hidden=\"true\" class=\"mat-calendar-table-header\">\n <tr><th class=\"mat-calendar-table-header-divider\" colspan=\"4\"></th></tr>\n </thead>\n <tbody mat-calendar-body\n [label]=\"_yearLabel()\"\n [rows]=\"_months()\"\n [todayValue]=\"_todayMonth()!\"\n [startValue]=\"_selectedMonth()!\"\n [endValue]=\"_selectedMonth()!\"\n [labelMinRequiredCells]=\"2\"\n [numCols]=\"4\"\n [cellAspectRatio]=\"4 / 7\"\n [activeCell]=\"_dateAdapter.getMonth(activeDate)\"\n (selectedValueChange)=\"_monthSelected($event)\"\n (activeDateChange)=\"_updateActiveDate($event)\"\n (keyup)=\"_handleCalendarBodyKeyup($event)\"\n (keydown)=\"_handleCalendarBodyKeydown($event)\">\n </tbody>\n</table>\n", dependencies: [{ kind: "component", type: MatCalendarBody, selector: "[mat-calendar-body]", inputs: ["label", "rows", "todayValue", "startValue", "endValue", "labelMinRequiredCells", "numCols", "activeCell", "isRange", "cellAspectRatio", "comparisonStart", "comparisonEnd", "previewStart", "previewEnd", "startDateAccessibleName", "endDateAccessibleName"], outputs: ["selectedValueChange", "previewChange", "activeDateChange", "dragStarted", "dragEnded"], exportAs: ["matCalendarBody"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
2033
2032
  }
2034
2033
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0-next.2", ngImport: i0, type: MatYearView, decorators: [{
2035
2034
  type: Component,
2036
- args: [{ selector: 'mat-year-view', exportAs: 'matYearView', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [MatCalendarBody], template: "<table class=\"mat-calendar-table\" role=\"grid\">\n <thead aria-hidden=\"true\" class=\"mat-calendar-table-header\">\n <tr><th class=\"mat-calendar-table-header-divider\" colspan=\"4\"></th></tr>\n </thead>\n <tbody mat-calendar-body\n [label]=\"_yearLabel\"\n [rows]=\"_months\"\n [todayValue]=\"_todayMonth!\"\n [startValue]=\"_selectedMonth!\"\n [endValue]=\"_selectedMonth!\"\n [labelMinRequiredCells]=\"2\"\n [numCols]=\"4\"\n [cellAspectRatio]=\"4 / 7\"\n [activeCell]=\"_dateAdapter.getMonth(activeDate)\"\n (selectedValueChange)=\"_monthSelected($event)\"\n (activeDateChange)=\"_updateActiveDate($event)\"\n (keyup)=\"_handleCalendarBodyKeyup($event)\"\n (keydown)=\"_handleCalendarBodyKeydown($event)\">\n </tbody>\n</table>\n" }]
2035
+ args: [{ selector: 'mat-year-view', exportAs: 'matYearView', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [MatCalendarBody], template: "<table class=\"mat-calendar-table\" role=\"grid\">\n <thead aria-hidden=\"true\" class=\"mat-calendar-table-header\">\n <tr><th class=\"mat-calendar-table-header-divider\" colspan=\"4\"></th></tr>\n </thead>\n <tbody mat-calendar-body\n [label]=\"_yearLabel()\"\n [rows]=\"_months()\"\n [todayValue]=\"_todayMonth()!\"\n [startValue]=\"_selectedMonth()!\"\n [endValue]=\"_selectedMonth()!\"\n [labelMinRequiredCells]=\"2\"\n [numCols]=\"4\"\n [cellAspectRatio]=\"4 / 7\"\n [activeCell]=\"_dateAdapter.getMonth(activeDate)\"\n (selectedValueChange)=\"_monthSelected($event)\"\n (activeDateChange)=\"_updateActiveDate($event)\"\n (keyup)=\"_handleCalendarBodyKeyup($event)\"\n (keydown)=\"_handleCalendarBodyKeydown($event)\">\n </tbody>\n</table>\n" }]
2037
2036
  }], ctorParameters: () => [], propDecorators: { activeDate: [{
2038
2037
  type: Input
2039
2038
  }], selected: [{