@angular/material 12.2.2 → 12.2.6

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 (74) hide show
  1. package/autocomplete/index.metadata.json +1 -1
  2. package/bundles/material-autocomplete.umd.js +4 -2
  3. package/bundles/material-autocomplete.umd.js.map +1 -1
  4. package/bundles/material-button-testing.umd.js +1 -9
  5. package/bundles/material-button-testing.umd.js.map +1 -1
  6. package/bundles/material-chips.umd.js +4 -2
  7. package/bundles/material-chips.umd.js.map +1 -1
  8. package/bundles/material-core.umd.js +2 -2
  9. package/bundles/material-core.umd.js.map +1 -1
  10. package/bundles/material-datepicker.umd.js +51 -8
  11. package/bundles/material-datepicker.umd.js.map +1 -1
  12. package/bundles/material-form-field.umd.js +1 -1
  13. package/bundles/material-menu.umd.js +109 -93
  14. package/bundles/material-menu.umd.js.map +1 -1
  15. package/bundles/material-stepper.umd.js +1 -1
  16. package/bundles/material-stepper.umd.js.map +1 -1
  17. package/bundles/material-tabs.umd.js.map +1 -1
  18. package/chips/index.metadata.json +1 -1
  19. package/core/index.metadata.json +1 -1
  20. package/datepicker/_datepicker-theme.scss +1 -4
  21. package/datepicker/index.metadata.json +1 -1
  22. package/datepicker/month-view.d.ts +6 -0
  23. package/datepicker/multi-year-view.d.ts +4 -0
  24. package/datepicker/year-view.d.ts +4 -0
  25. package/esm2015/autocomplete/autocomplete-trigger.js +2 -2
  26. package/esm2015/autocomplete/autocomplete.js +4 -2
  27. package/esm2015/button/testing/button-harness.js +3 -10
  28. package/esm2015/chips/chip-list.js +5 -3
  29. package/esm2015/core/common-behaviors/common-module.js +1 -1
  30. package/esm2015/core/version.js +1 -1
  31. package/esm2015/datepicker/date-range-input.js +2 -2
  32. package/esm2015/datepicker/month-view.js +21 -4
  33. package/esm2015/datepicker/multi-year-view.js +16 -3
  34. package/esm2015/datepicker/year-view.js +16 -3
  35. package/esm2015/form-field/form-field.js +1 -1
  36. package/esm2015/menu/menu-content.js +16 -11
  37. package/esm2015/menu/menu-module.js +10 -20
  38. package/esm2015/menu/menu-trigger.js +33 -21
  39. package/esm2015/menu/public-api.js +2 -2
  40. package/esm2015/stepper/stepper.js +2 -2
  41. package/esm2015/tabs/tab-group.js +1 -1
  42. package/fesm2015/autocomplete.js +4 -2
  43. package/fesm2015/autocomplete.js.map +1 -1
  44. package/fesm2015/button/testing.js +2 -9
  45. package/fesm2015/button/testing.js.map +1 -1
  46. package/fesm2015/chips.js +4 -2
  47. package/fesm2015/chips.js.map +1 -1
  48. package/fesm2015/core.js +2 -2
  49. package/fesm2015/core.js.map +1 -1
  50. package/fesm2015/datepicker.js +51 -8
  51. package/fesm2015/datepicker.js.map +1 -1
  52. package/fesm2015/form-field.js +1 -1
  53. package/fesm2015/menu.js +57 -50
  54. package/fesm2015/menu.js.map +1 -1
  55. package/fesm2015/stepper.js +1 -1
  56. package/fesm2015/stepper.js.map +1 -1
  57. package/fesm2015/tabs.js.map +1 -1
  58. package/form-field/index.metadata.json +1 -1
  59. package/menu/index.metadata.json +1 -1
  60. package/menu/menu-content.d.ts +6 -4
  61. package/menu/menu-module.d.ts +0 -6
  62. package/menu/menu-trigger.d.ts +7 -2
  63. package/menu/public-api.d.ts +1 -1
  64. package/package.json +2 -2
  65. package/prebuilt-themes/deeppurple-amber.css +1 -1
  66. package/prebuilt-themes/indigo-pink.css +1 -1
  67. package/prebuilt-themes/pink-bluegrey.css +1 -1
  68. package/prebuilt-themes/purple-green.css +1 -1
  69. package/schematics/ng-add/index.js +1 -1
  70. package/schematics/ng-add/index.mjs +1 -1
  71. package/stepper/_stepper-theme.scss +6 -1
  72. package/stepper/index.metadata.json +1 -1
  73. package/tabs/_tabs-theme.scss +1 -1
  74. package/tabs/tab-group.d.ts +1 -1
@@ -1105,9 +1105,13 @@
1105
1105
  break;
1106
1106
  case keycodes.ENTER:
1107
1107
  case keycodes.SPACE:
1108
- if (!this.dateFilter || this.dateFilter(this._activeDate)) {
1109
- this._dateSelected({ value: this._dateAdapter.getDate(this._activeDate), event: event });
1108
+ this._selectionKeyPressed = true;
1109
+ if (this._canSelect(this._activeDate)) {
1110
1110
  // Prevent unexpected default actions such as form submission.
1111
+ // Note that we only prevent the default action here while the selection happens in
1112
+ // `keyup` below. We can't do the selection here, because it can cause the calendar to
1113
+ // reopen if focus is restored immediately. We also can't call `preventDefault` on `keyup`
1114
+ // because it's too late (see #23305).
1111
1115
  event.preventDefault();
1112
1116
  }
1113
1117
  return;
@@ -1132,6 +1136,15 @@
1132
1136
  // Prevent unexpected default actions such as form submission.
1133
1137
  event.preventDefault();
1134
1138
  };
1139
+ /** Handles keyup events on the calendar body when calendar is in month view. */
1140
+ MatMonthView.prototype._handleCalendarBodyKeyup = function (event) {
1141
+ if (event.keyCode === keycodes.SPACE || event.keyCode === keycodes.ENTER) {
1142
+ if (this._selectionKeyPressed && this._canSelect(this._activeDate)) {
1143
+ this._dateSelected({ value: this._dateAdapter.getDate(this._activeDate), event: event });
1144
+ }
1145
+ this._selectionKeyPressed = false;
1146
+ }
1147
+ };
1135
1148
  /** Initializes this month view. */
1136
1149
  MatMonthView.prototype._init = function () {
1137
1150
  this._setRanges(this.selected);
@@ -1247,12 +1260,16 @@
1247
1260
  this._comparisonRangeStart = this._getCellCompareValue(this.comparisonStart);
1248
1261
  this._comparisonRangeEnd = this._getCellCompareValue(this.comparisonEnd);
1249
1262
  };
1263
+ /** Gets whether a date can be selected in the month view. */
1264
+ MatMonthView.prototype._canSelect = function (date) {
1265
+ return !this.dateFilter || this.dateFilter(date);
1266
+ };
1250
1267
  return MatMonthView;
1251
1268
  }());
1252
1269
  MatMonthView.decorators = [
1253
1270
  { type: i0.Component, args: [{
1254
1271
  selector: 'mat-month-view',
1255
- template: "<table class=\"mat-calendar-table\" role=\"grid\">\n <thead class=\"mat-calendar-table-header\">\n <tr>\n <!-- For the day-of-the-week column header, we use an `<abbr>` element because VoiceOver\n ignores the `aria-label`. ChromeVox, however, does not read the full name\n for the `<abbr>`, so we still set `aria-label` on the header element. -->\n <th scope=\"col\" *ngFor=\"let day of _weekdays\" [attr.aria-label]=\"day.long\">\n <abbr class=\"mat-calendar-abbr\" [attr.title]=\"day.long\">{{day.narrow}}</abbr>\n </th>\n </tr>\n <tr><th aria-hidden=\"true\" 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 (selectedValueChange)=\"_dateSelected($event)\"\n (previewChange)=\"_previewChanged($event)\"\n (keydown)=\"_handleCalendarBodyKeydown($event)\">\n </tbody>\n</table>\n",
1272
+ template: "<table class=\"mat-calendar-table\" role=\"grid\">\n <thead class=\"mat-calendar-table-header\">\n <tr>\n <!-- For the day-of-the-week column header, we use an `<abbr>` element because VoiceOver\n ignores the `aria-label`. ChromeVox, however, does not read the full name\n for the `<abbr>`, so we still set `aria-label` on the header element. -->\n <th scope=\"col\" *ngFor=\"let day of _weekdays\" [attr.aria-label]=\"day.long\">\n <abbr class=\"mat-calendar-abbr\" [attr.title]=\"day.long\">{{day.narrow}}</abbr>\n </th>\n </tr>\n <tr><th aria-hidden=\"true\" 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 (selectedValueChange)=\"_dateSelected($event)\"\n (previewChange)=\"_previewChanged($event)\"\n (keyup)=\"_handleCalendarBodyKeyup($event)\"\n (keydown)=\"_handleCalendarBodyKeydown($event)\">\n </tbody>\n</table>\n",
1256
1273
  exportAs: 'matMonthView',
1257
1274
  encapsulation: i0.ViewEncapsulation.None,
1258
1275
  changeDetection: i0.ChangeDetectionStrategy.OnPush
@@ -1428,7 +1445,11 @@
1428
1445
  break;
1429
1446
  case keycodes.ENTER:
1430
1447
  case keycodes.SPACE:
1431
- this._yearSelected({ value: this._dateAdapter.getYear(this._activeDate), event: event });
1448
+ // Note that we only prevent the default action here while the selection happens in
1449
+ // `keyup` below. We can't do the selection here, because it can cause the calendar to
1450
+ // reopen if focus is restored immediately. We also can't call `preventDefault` on `keyup`
1451
+ // because it's too late (see #23305).
1452
+ this._selectionKeyPressed = true;
1432
1453
  break;
1433
1454
  default:
1434
1455
  // Don't prevent default or focus active cell on keys that we don't explicitly handle.
@@ -1441,6 +1462,15 @@
1441
1462
  // Prevent unexpected default actions such as form submission.
1442
1463
  event.preventDefault();
1443
1464
  };
1465
+ /** Handles keyup events on the calendar body when calendar is in multi-year view. */
1466
+ MatMultiYearView.prototype._handleCalendarBodyKeyup = function (event) {
1467
+ if (event.keyCode === keycodes.SPACE || event.keyCode === keycodes.ENTER) {
1468
+ if (this._selectionKeyPressed) {
1469
+ this._yearSelected({ value: this._dateAdapter.getYear(this._activeDate), event: event });
1470
+ }
1471
+ this._selectionKeyPressed = false;
1472
+ }
1473
+ };
1444
1474
  MatMultiYearView.prototype._getActiveCell = function () {
1445
1475
  return getActiveOffset(this._dateAdapter, this.activeDate, this.minDate, this.maxDate);
1446
1476
  };
@@ -1498,7 +1528,7 @@
1498
1528
  MatMultiYearView.decorators = [
1499
1529
  { type: i0.Component, args: [{
1500
1530
  selector: 'mat-multi-year-view',
1501
- 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 (keydown)=\"_handleCalendarBodyKeydown($event)\">\n </tbody>\n</table>\n",
1531
+ 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 (keyup)=\"_handleCalendarBodyKeyup($event)\"\n (keydown)=\"_handleCalendarBodyKeydown($event)\">\n </tbody>\n</table>\n",
1502
1532
  exportAs: 'matMultiYearView',
1503
1533
  encapsulation: i0.ViewEncapsulation.None,
1504
1534
  changeDetection: i0.ChangeDetectionStrategy.OnPush
@@ -1691,7 +1721,11 @@
1691
1721
  break;
1692
1722
  case keycodes.ENTER:
1693
1723
  case keycodes.SPACE:
1694
- this._monthSelected({ value: this._dateAdapter.getMonth(this._activeDate), event: event });
1724
+ // Note that we only prevent the default action here while the selection happens in
1725
+ // `keyup` below. We can't do the selection here, because it can cause the calendar to
1726
+ // reopen if focus is restored immediately. We also can't call `preventDefault` on `keyup`
1727
+ // because it's too late (see #23305).
1728
+ this._selectionKeyPressed = true;
1695
1729
  break;
1696
1730
  default:
1697
1731
  // Don't prevent default or focus active cell on keys that we don't explicitly handle.
@@ -1704,6 +1738,15 @@
1704
1738
  // Prevent unexpected default actions such as form submission.
1705
1739
  event.preventDefault();
1706
1740
  };
1741
+ /** Handles keyup events on the calendar body when calendar is in year view. */
1742
+ MatYearView.prototype._handleCalendarBodyKeyup = function (event) {
1743
+ if (event.keyCode === keycodes.SPACE || event.keyCode === keycodes.ENTER) {
1744
+ if (this._selectionKeyPressed) {
1745
+ this._monthSelected({ value: this._dateAdapter.getMonth(this._activeDate), event: event });
1746
+ }
1747
+ this._selectionKeyPressed = false;
1748
+ }
1749
+ };
1707
1750
  /** Initializes this year view. */
1708
1751
  MatYearView.prototype._init = function () {
1709
1752
  var _this = this;
@@ -1797,7 +1840,7 @@
1797
1840
  MatYearView.decorators = [
1798
1841
  { type: i0.Component, args: [{
1799
1842
  selector: 'mat-year-view',
1800
- 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 (keydown)=\"_handleCalendarBodyKeydown($event)\">\n </tbody>\n</table>\n",
1843
+ 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 (keyup)=\"_handleCalendarBodyKeyup($event)\"\n (keydown)=\"_handleCalendarBodyKeydown($event)\">\n </tbody>\n</table>\n",
1801
1844
  exportAs: 'matYearView',
1802
1845
  encapsulation: i0.ViewEncapsulation.None,
1803
1846
  changeDetection: i0.ChangeDetectionStrategy.OnPush
@@ -3732,7 +3775,7 @@
3732
3775
  if (_formField === null || _formField === void 0 ? void 0 : _formField._elementRef.nativeElement.classList.contains('mat-mdc-form-field')) {
3733
3776
  var classList = _elementRef.nativeElement.classList;
3734
3777
  classList.add('mat-mdc-input-element');
3735
- classList.add('mat-mdc-form-field-control');
3778
+ classList.add('mat-mdc-form-field-input-control');
3736
3779
  }
3737
3780
  // TODO(crisbeto): remove `as any` after #18206 lands.
3738
3781
  this.ngControl = control;