@angular/material 19.0.0-next.9 → 19.0.0-rc.1

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 (232) hide show
  1. package/autocomplete/_autocomplete-theme.scss +8 -4
  2. package/autocomplete/index.d.ts +5 -6
  3. package/badge/_badge-theme.scss +10 -6
  4. package/badge/index.d.ts +1 -2
  5. package/bottom-sheet/_bottom-sheet-theme.scss +8 -4
  6. package/button/_button-theme.scss +10 -6
  7. package/button/_fab-theme.scss +10 -6
  8. package/button/_icon-button-theme.scss +8 -4
  9. package/button/index.d.ts +1 -1
  10. package/button-toggle/_button-toggle-theme.scss +11 -6
  11. package/button-toggle/index.d.ts +2 -1
  12. package/card/_card-theme.scss +8 -4
  13. package/card/index.d.ts +2 -3
  14. package/checkbox/_checkbox-theme.scss +10 -6
  15. package/chips/_chips-theme.scss +10 -6
  16. package/core/_core-theme.scss +4 -7
  17. package/core/_core.scss +2 -5
  18. package/core/m2/_theming.scss +2 -1
  19. package/core/option/_optgroup-theme.scss +8 -4
  20. package/core/option/_option-theme.scss +10 -6
  21. package/core/ripple/_ripple-theme.scss +8 -4
  22. package/core/selection/pseudo-checkbox/_pseudo-checkbox-theme.scss +10 -6
  23. package/core/theming/_config-validation.scss +4 -4
  24. package/core/theming/_definition.scss +12 -2
  25. package/core/theming/_theming.scss +2 -1
  26. package/core/tokens/_m3-system.scss +55 -39
  27. package/core/tokens/_m3-tokens.scss +3 -3
  28. package/core/tokens/_token-definition.scss +4 -3
  29. package/core/tokens/m2/mat/_badge.scss +1 -1
  30. package/core/tokens/m2/mat/_datepicker.scss +1 -1
  31. package/core/tokens/m2/mat/_menu.scss +5 -3
  32. package/core/tokens/m2/mat/_sort.scss +1 -1
  33. package/core/tokens/m3/mat/_menu.scss +6 -3
  34. package/core/tokens/m3/mdc/_filled-text-field.scss +9 -11
  35. package/datepicker/_datepicker-theme.scss +10 -6
  36. package/datepicker/index.d.ts +36 -37
  37. package/dialog/_dialog-theme.scss +8 -4
  38. package/dialog/index.d.ts +1 -0
  39. package/divider/_divider-theme.scss +8 -4
  40. package/expansion/_expansion-theme.scss +8 -4
  41. package/fesm2022/autocomplete/testing.mjs +2 -5
  42. package/fesm2022/autocomplete/testing.mjs.map +1 -1
  43. package/fesm2022/autocomplete.mjs +225 -151
  44. package/fesm2022/autocomplete.mjs.map +1 -1
  45. package/fesm2022/badge/testing.mjs +2 -5
  46. package/fesm2022/badge/testing.mjs.map +1 -1
  47. package/fesm2022/badge.mjs +45 -36
  48. package/fesm2022/badge.mjs.map +1 -1
  49. package/fesm2022/bottom-sheet/testing.mjs +1 -1
  50. package/fesm2022/bottom-sheet/testing.mjs.map +1 -1
  51. package/fesm2022/bottom-sheet.mjs +79 -57
  52. package/fesm2022/bottom-sheet.mjs.map +1 -1
  53. package/fesm2022/button/testing.mjs +2 -2
  54. package/fesm2022/button/testing.mjs.map +1 -1
  55. package/fesm2022/button-toggle/testing.mjs +4 -7
  56. package/fesm2022/button-toggle/testing.mjs.map +1 -1
  57. package/fesm2022/button-toggle.mjs +84 -47
  58. package/fesm2022/button-toggle.mjs.map +1 -1
  59. package/fesm2022/button.mjs +98 -71
  60. package/fesm2022/button.mjs.map +1 -1
  61. package/fesm2022/card/testing.mjs +3 -6
  62. package/fesm2022/card/testing.mjs.map +1 -1
  63. package/fesm2022/card.mjs +53 -55
  64. package/fesm2022/card.mjs.map +1 -1
  65. package/fesm2022/checkbox/testing.mjs +4 -7
  66. package/fesm2022/checkbox/testing.mjs.map +1 -1
  67. package/fesm2022/checkbox.mjs +105 -63
  68. package/fesm2022/checkbox.mjs.map +1 -1
  69. package/fesm2022/chips/testing.mjs +11 -14
  70. package/fesm2022/chips/testing.mjs.map +1 -1
  71. package/fesm2022/chips.mjs +317 -268
  72. package/fesm2022/chips.mjs.map +1 -1
  73. package/fesm2022/core/testing.mjs +5 -11
  74. package/fesm2022/core/testing.mjs.map +1 -1
  75. package/fesm2022/core.mjs +237 -187
  76. package/fesm2022/core.mjs.map +1 -1
  77. package/fesm2022/datepicker/testing.mjs +13 -22
  78. package/fesm2022/datepicker/testing.mjs.map +1 -1
  79. package/fesm2022/datepicker.mjs +821 -568
  80. package/fesm2022/datepicker.mjs.map +1 -1
  81. package/fesm2022/dialog/testing.mjs +15 -9
  82. package/fesm2022/dialog/testing.mjs.map +1 -1
  83. package/fesm2022/dialog.mjs +221 -153
  84. package/fesm2022/dialog.mjs.map +1 -1
  85. package/fesm2022/divider/testing.mjs +1 -1
  86. package/fesm2022/divider/testing.mjs.map +1 -1
  87. package/fesm2022/divider.mjs +9 -11
  88. package/fesm2022/divider.mjs.map +1 -1
  89. package/fesm2022/expansion/testing.mjs +7 -10
  90. package/fesm2022/expansion/testing.mjs.map +1 -1
  91. package/fesm2022/expansion.mjs +85 -76
  92. package/fesm2022/expansion.mjs.map +1 -1
  93. package/fesm2022/form-field/testing.mjs +12 -15
  94. package/fesm2022/form-field/testing.mjs.map +1 -1
  95. package/fesm2022/form-field.mjs +179 -126
  96. package/fesm2022/form-field.mjs.map +1 -1
  97. package/fesm2022/grid-list/testing.mjs +11 -17
  98. package/fesm2022/grid-list/testing.mjs.map +1 -1
  99. package/fesm2022/grid-list.mjs +72 -50
  100. package/fesm2022/grid-list.mjs.map +1 -1
  101. package/fesm2022/icon/testing.mjs +8 -8
  102. package/fesm2022/icon/testing.mjs.map +1 -1
  103. package/fesm2022/icon.mjs +65 -45
  104. package/fesm2022/icon.mjs.map +1 -1
  105. package/fesm2022/input/testing.mjs +3 -3
  106. package/fesm2022/input/testing.mjs.map +1 -1
  107. package/fesm2022/input.mjs +104 -72
  108. package/fesm2022/input.mjs.map +1 -1
  109. package/fesm2022/list/testing.mjs +21 -38
  110. package/fesm2022/list/testing.mjs.map +1 -1
  111. package/fesm2022/list.mjs +191 -180
  112. package/fesm2022/list.mjs.map +1 -1
  113. package/fesm2022/menu/testing.mjs +3 -6
  114. package/fesm2022/menu/testing.mjs.map +1 -1
  115. package/fesm2022/menu.mjs +178 -168
  116. package/fesm2022/menu.mjs.map +1 -1
  117. package/fesm2022/paginator/testing.mjs +10 -13
  118. package/fesm2022/paginator/testing.mjs.map +1 -1
  119. package/fesm2022/paginator.mjs +84 -59
  120. package/fesm2022/paginator.mjs.map +1 -1
  121. package/fesm2022/progress-bar/testing.mjs +1 -1
  122. package/fesm2022/progress-bar/testing.mjs.map +1 -1
  123. package/fesm2022/progress-bar.mjs +35 -34
  124. package/fesm2022/progress-bar.mjs.map +1 -1
  125. package/fesm2022/progress-spinner/testing.mjs +1 -1
  126. package/fesm2022/progress-spinner/testing.mjs.map +1 -1
  127. package/fesm2022/progress-spinner.mjs +27 -13
  128. package/fesm2022/progress-spinner.mjs.map +1 -1
  129. package/fesm2022/radio/testing.mjs +6 -12
  130. package/fesm2022/radio/testing.mjs.map +1 -1
  131. package/fesm2022/radio.mjs +123 -88
  132. package/fesm2022/radio.mjs.map +1 -1
  133. package/fesm2022/select/testing.mjs +6 -9
  134. package/fesm2022/select/testing.mjs.map +1 -1
  135. package/fesm2022/select.mjs +220 -182
  136. package/fesm2022/select.mjs.map +1 -1
  137. package/fesm2022/sidenav/testing.mjs +6 -6
  138. package/fesm2022/sidenav/testing.mjs.map +1 -1
  139. package/fesm2022/sidenav.mjs +132 -119
  140. package/fesm2022/sidenav.mjs.map +1 -1
  141. package/fesm2022/slide-toggle/testing.mjs +3 -6
  142. package/fesm2022/slide-toggle/testing.mjs.map +1 -1
  143. package/fesm2022/slide-toggle.mjs +78 -49
  144. package/fesm2022/slide-toggle.mjs.map +1 -1
  145. package/fesm2022/slider/testing.mjs +2 -2
  146. package/fesm2022/slider/testing.mjs.map +1 -1
  147. package/fesm2022/slider.mjs +260 -190
  148. package/fesm2022/slider.mjs.map +1 -1
  149. package/fesm2022/snack-bar/testing.mjs +4 -7
  150. package/fesm2022/snack-bar/testing.mjs.map +1 -1
  151. package/fesm2022/snack-bar.mjs +141 -107
  152. package/fesm2022/snack-bar.mjs.map +1 -1
  153. package/fesm2022/sort/testing.mjs +3 -6
  154. package/fesm2022/sort/testing.mjs.map +1 -1
  155. package/fesm2022/sort.mjs +93 -72
  156. package/fesm2022/sort.mjs.map +1 -1
  157. package/fesm2022/stepper/testing.mjs +4 -4
  158. package/fesm2022/stepper/testing.mjs.map +1 -1
  159. package/fesm2022/stepper.mjs +143 -105
  160. package/fesm2022/stepper.mjs.map +1 -1
  161. package/fesm2022/table/testing.mjs +13 -25
  162. package/fesm2022/table/testing.mjs.map +1 -1
  163. package/fesm2022/table.mjs +182 -177
  164. package/fesm2022/table.mjs.map +1 -1
  165. package/fesm2022/tabs/testing.mjs +5 -5
  166. package/fesm2022/tabs/testing.mjs.map +1 -1
  167. package/fesm2022/tabs.mjs +326 -247
  168. package/fesm2022/tabs.mjs.map +1 -1
  169. package/fesm2022/timepicker/testing.mjs +7 -16
  170. package/fesm2022/timepicker/testing.mjs.map +1 -1
  171. package/fesm2022/timepicker.mjs +157 -153
  172. package/fesm2022/timepicker.mjs.map +1 -1
  173. package/fesm2022/toolbar/testing.mjs +2 -5
  174. package/fesm2022/toolbar/testing.mjs.map +1 -1
  175. package/fesm2022/toolbar.mjs +25 -15
  176. package/fesm2022/toolbar.mjs.map +1 -1
  177. package/fesm2022/tooltip/testing.mjs +6 -9
  178. package/fesm2022/tooltip/testing.mjs.map +1 -1
  179. package/fesm2022/tooltip.mjs +96 -72
  180. package/fesm2022/tooltip.mjs.map +1 -1
  181. package/fesm2022/tree/testing.mjs +3 -6
  182. package/fesm2022/tree/testing.mjs.map +1 -1
  183. package/fesm2022/tree.mjs +56 -54
  184. package/fesm2022/tree.mjs.map +1 -1
  185. package/form-field/_form-field-theme.scss +9 -5
  186. package/form-field/index.d.ts +9 -9
  187. package/grid-list/_grid-list-theme.scss +8 -4
  188. package/icon/_icon-theme.scss +10 -6
  189. package/input/_input-theme.scss +8 -4
  190. package/list/_list-theme.scss +8 -4
  191. package/list/index.d.ts +20 -21
  192. package/menu/_menu-theme.scss +8 -4
  193. package/menu/index.d.ts +15 -17
  194. package/package.json +2 -2
  195. package/paginator/_paginator-theme.scss +8 -4
  196. package/prebuilt-themes/azure-blue.css +1 -1
  197. package/prebuilt-themes/cyan-orange.css +1 -1
  198. package/prebuilt-themes/deeppurple-amber.css +1 -1
  199. package/prebuilt-themes/indigo-pink.css +1 -1
  200. package/prebuilt-themes/magenta-violet.css +1 -1
  201. package/prebuilt-themes/pink-bluegrey.css +1 -1
  202. package/prebuilt-themes/purple-green.css +1 -1
  203. package/prebuilt-themes/rose-red.css +1 -1
  204. package/progress-bar/_progress-bar-theme.scss +11 -9
  205. package/progress-spinner/_progress-spinner-theme.scss +11 -9
  206. package/progress-spinner/index.d.ts +3 -4
  207. package/radio/_radio-theme.scss +10 -6
  208. package/radio/index.d.ts +2 -3
  209. package/schematics/ng-add/index.js +1 -1
  210. package/schematics/ng-add/index.mjs +1 -1
  211. package/schematics/ng-add/theming/create-custom-theme.js +1 -6
  212. package/schematics/ng-add/theming/create-custom-theme.mjs +1 -6
  213. package/schematics/ng-generate/theme-color/index_bundled.js +35 -9
  214. package/schematics/ng-generate/theme-color/index_bundled.js.map +2 -2
  215. package/schematics/ng-update/index_bundled.js +6 -1
  216. package/schematics/ng-update/index_bundled.js.map +1 -1
  217. package/select/_select-theme.scss +10 -6
  218. package/select/index.d.ts +7 -7
  219. package/sidenav/_sidenav-theme.scss +8 -4
  220. package/slide-toggle/_slide-toggle-theme.scss +10 -6
  221. package/slider/_slider-theme.scss +10 -6
  222. package/snack-bar/_snack-bar-theme.scss +10 -6
  223. package/sort/_sort-theme.scss +8 -4
  224. package/stepper/_stepper-theme.scss +10 -6
  225. package/stepper/index.d.ts +14 -15
  226. package/table/_table-theme.scss +8 -4
  227. package/tabs/_tabs-theme.scss +10 -6
  228. package/timepicker/_timepicker-theme.scss +10 -6
  229. package/toolbar/_toolbar-theme.scss +10 -6
  230. package/tooltip/_tooltip-theme.scss +8 -4
  231. package/tooltip/index.d.ts +5 -6
  232. package/tree/_tree-theme.scss +8 -4
@@ -1,7 +1,6 @@
1
- import { CdkMonitorFocus, CdkTrapFocus, A11yModule } from '@angular/cdk/a11y';
1
+ import { _IdGenerator, CdkMonitorFocus, CdkTrapFocus, A11yModule } from '@angular/cdk/a11y';
2
2
  import { Overlay, FlexibleConnectedPositionStrategy, OverlayConfig, OverlayModule } from '@angular/cdk/overlay';
3
3
  import { ComponentPortal, CdkPortalOutlet, TemplatePortal, PortalModule } from '@angular/cdk/portal';
4
- import { NgClass, DOCUMENT, CommonModule } from '@angular/common';
5
4
  import * as i0 from '@angular/core';
6
5
  import { Injectable, inject, ElementRef, NgZone, EventEmitter, Injector, afterNextRender, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, Output, Optional, SkipSelf, InjectionToken, ChangeDetectorRef, ViewChild, ViewContainerRef, booleanAttribute, Directive, forwardRef, signal, HostAttributeToken, ContentChild, TemplateRef, NgModule } from '@angular/core';
7
6
  import { MatButton, MatIconButton, MatButtonModule } from '@angular/material/button';
@@ -12,7 +11,8 @@ import { Subject, Subscription, merge, of } from 'rxjs';
12
11
  import { ESCAPE, hasModifierKey, SPACE, ENTER, PAGE_DOWN, PAGE_UP, END, HOME, DOWN_ARROW, UP_ARROW, RIGHT_ARROW, LEFT_ARROW, BACKSPACE } from '@angular/cdk/keycodes';
13
12
  import { Directionality } from '@angular/cdk/bidi';
14
13
  import { normalizePassiveListenerOptions, Platform, _getFocusedElementPierceShadowDom } from '@angular/cdk/platform';
15
- import { _CdkPrivateStyleLoader } from '@angular/cdk/private';
14
+ import { NgClass, DOCUMENT } from '@angular/common';
15
+ import { _CdkPrivateStyleLoader, _VisuallyHiddenLoader } from '@angular/cdk/private';
16
16
  import { startWith, take, filter } from 'rxjs/operators';
17
17
  import { coerceStringArray } from '@angular/cdk/coercion';
18
18
  import { trigger, transition, animate, keyframes, style, state } from '@angular/animations';
@@ -29,47 +29,45 @@ function createMissingDateImplError(provider) {
29
29
 
30
30
  /** Datepicker data that requires internationalization. */
31
31
  class MatDatepickerIntl {
32
- constructor() {
33
- /**
34
- * Stream that emits whenever the labels here are changed. Use this to notify
35
- * components if the labels have changed after initialization.
36
- */
37
- this.changes = new Subject();
38
- /** A label for the calendar popup (used by screen readers). */
39
- this.calendarLabel = 'Calendar';
40
- /** A label for the button used to open the calendar popup (used by screen readers). */
41
- this.openCalendarLabel = 'Open calendar';
42
- /** Label for the button used to close the calendar popup. */
43
- this.closeCalendarLabel = 'Close calendar';
44
- /** A label for the previous month button (used by screen readers). */
45
- this.prevMonthLabel = 'Previous month';
46
- /** A label for the next month button (used by screen readers). */
47
- this.nextMonthLabel = 'Next month';
48
- /** A label for the previous year button (used by screen readers). */
49
- this.prevYearLabel = 'Previous year';
50
- /** A label for the next year button (used by screen readers). */
51
- this.nextYearLabel = 'Next year';
52
- /** A label for the previous multi-year button (used by screen readers). */
53
- this.prevMultiYearLabel = 'Previous 24 years';
54
- /** A label for the next multi-year button (used by screen readers). */
55
- this.nextMultiYearLabel = 'Next 24 years';
56
- /** A label for the 'switch to month view' button (used by screen readers). */
57
- this.switchToMonthViewLabel = 'Choose date';
58
- /** A label for the 'switch to year view' button (used by screen readers). */
59
- this.switchToMultiYearViewLabel = 'Choose month and year';
60
- /**
61
- * A label for the first date of a range of dates (used by screen readers).
62
- * @deprecated Provide your own internationalization string.
63
- * @breaking-change 17.0.0
64
- */
65
- this.startDateLabel = 'Start date';
66
- /**
67
- * A label for the last date of a range of dates (used by screen readers).
68
- * @deprecated Provide your own internationalization string.
69
- * @breaking-change 17.0.0
70
- */
71
- this.endDateLabel = 'End date';
72
- }
32
+ /**
33
+ * Stream that emits whenever the labels here are changed. Use this to notify
34
+ * components if the labels have changed after initialization.
35
+ */
36
+ changes = new Subject();
37
+ /** A label for the calendar popup (used by screen readers). */
38
+ calendarLabel = 'Calendar';
39
+ /** A label for the button used to open the calendar popup (used by screen readers). */
40
+ openCalendarLabel = 'Open calendar';
41
+ /** Label for the button used to close the calendar popup. */
42
+ closeCalendarLabel = 'Close calendar';
43
+ /** A label for the previous month button (used by screen readers). */
44
+ prevMonthLabel = 'Previous month';
45
+ /** A label for the next month button (used by screen readers). */
46
+ nextMonthLabel = 'Next month';
47
+ /** A label for the previous year button (used by screen readers). */
48
+ prevYearLabel = 'Previous year';
49
+ /** A label for the next year button (used by screen readers). */
50
+ nextYearLabel = 'Next year';
51
+ /** A label for the previous multi-year button (used by screen readers). */
52
+ prevMultiYearLabel = 'Previous 24 years';
53
+ /** A label for the next multi-year button (used by screen readers). */
54
+ nextMultiYearLabel = 'Next 24 years';
55
+ /** A label for the 'switch to month view' button (used by screen readers). */
56
+ switchToMonthViewLabel = 'Choose date';
57
+ /** A label for the 'switch to year view' button (used by screen readers). */
58
+ switchToMultiYearViewLabel = 'Choose month and year';
59
+ /**
60
+ * A label for the first date of a range of dates (used by screen readers).
61
+ * @deprecated Provide your own internationalization string.
62
+ * @breaking-change 17.0.0
63
+ */
64
+ startDateLabel = 'Start date';
65
+ /**
66
+ * A label for the last date of a range of dates (used by screen readers).
67
+ * @deprecated Provide your own internationalization string.
68
+ * @breaking-change 17.0.0
69
+ */
70
+ endDateLabel = 'End date';
73
71
  /** Formats a range of years (used for visuals). */
74
72
  formatYearRange(start, end) {
75
73
  return `${start} \u2013 ${end}`;
@@ -78,10 +76,10 @@ class MatDatepickerIntl {
78
76
  formatYearRangeLabel(start, end) {
79
77
  return `${start} to ${end}`;
80
78
  }
81
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDatepickerIntl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
82
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDatepickerIntl, providedIn: 'root' }); }
79
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatDatepickerIntl, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
80
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatDatepickerIntl, providedIn: 'root' });
83
81
  }
84
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDatepickerIntl, decorators: [{
82
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatDatepickerIntl, decorators: [{
85
83
  type: Injectable,
86
84
  args: [{ providedIn: 'root' }]
87
85
  }] });
@@ -92,6 +90,14 @@ let uniqueIdCounter$1 = 0;
92
90
  * @docs-private
93
91
  */
94
92
  class MatCalendarCell {
93
+ value;
94
+ displayValue;
95
+ ariaLabel;
96
+ enabled;
97
+ cssClasses;
98
+ compareValue;
99
+ rawValue;
100
+ id = uniqueIdCounter$1++;
95
101
  constructor(value, displayValue, ariaLabel, enabled, cssClasses = {}, compareValue = value, rawValue) {
96
102
  this.value = value;
97
103
  this.displayValue = displayValue;
@@ -100,10 +106,8 @@ class MatCalendarCell {
100
106
  this.cssClasses = cssClasses;
101
107
  this.compareValue = compareValue;
102
108
  this.rawValue = rawValue;
103
- this.id = uniqueIdCounter$1++;
104
109
  }
105
110
  }
106
- let calendarBodyId = 1;
107
111
  /** Event options that can be used to bind an active, capturing event. */
108
112
  const activeCapturingEventOptions = normalizePassiveListenerOptions({
109
113
  passive: false,
@@ -121,157 +125,90 @@ const passiveEventOptions = normalizePassiveListenerOptions({ passive: true });
121
125
  * @docs-private
122
126
  */
123
127
  class MatCalendarBody {
128
+ _elementRef = inject(ElementRef);
129
+ _ngZone = inject(NgZone);
130
+ _platform = inject(Platform);
131
+ /**
132
+ * Used to skip the next focus event when rendering the preview range.
133
+ * We need a flag like this, because some browsers fire focus events asynchronously.
134
+ */
135
+ _skipNextFocus;
136
+ /**
137
+ * Used to focus the active cell after change detection has run.
138
+ */
139
+ _focusActiveCellAfterViewChecked = false;
140
+ /** The label for the table. (e.g. "Jan 2017"). */
141
+ label;
142
+ /** The cells to display in the table. */
143
+ rows;
144
+ /** The value in the table that corresponds to today. */
145
+ todayValue;
146
+ /** Start value of the selected date range. */
147
+ startValue;
148
+ /** End value of the selected date range. */
149
+ endValue;
150
+ /** The minimum number of free cells needed to fit the label in the first row. */
151
+ labelMinRequiredCells;
152
+ /** The number of columns in the table. */
153
+ numCols = 7;
154
+ /** The cell number of the active cell in the table. */
155
+ activeCell = 0;
124
156
  ngAfterViewChecked() {
125
157
  if (this._focusActiveCellAfterViewChecked) {
126
158
  this._focusActiveCell();
127
159
  this._focusActiveCellAfterViewChecked = false;
128
160
  }
129
161
  }
162
+ /** Whether a range is being selected. */
163
+ isRange = false;
164
+ /**
165
+ * The aspect ratio (width / height) to use for the cells in the table. This aspect ratio will be
166
+ * maintained even as the table resizes.
167
+ */
168
+ cellAspectRatio = 1;
169
+ /** Start of the comparison range. */
170
+ comparisonStart;
171
+ /** End of the comparison range. */
172
+ comparisonEnd;
173
+ /** Start of the preview range. */
174
+ previewStart = null;
175
+ /** End of the preview range. */
176
+ previewEnd = null;
177
+ /** ARIA Accessible name of the `<input matStartDate/>` */
178
+ startDateAccessibleName;
179
+ /** ARIA Accessible name of the `<input matEndDate/>` */
180
+ endDateAccessibleName;
181
+ /** Emits when a new value is selected. */
182
+ selectedValueChange = new EventEmitter();
183
+ /** Emits when the preview has changed as a result of a user action. */
184
+ previewChange = new EventEmitter();
185
+ activeDateChange = new EventEmitter();
186
+ /** Emits the date at the possible start of a drag event. */
187
+ dragStarted = new EventEmitter();
188
+ /** Emits the date at the conclusion of a drag, or null if mouse was not released on a date. */
189
+ dragEnded = new EventEmitter();
190
+ /** The number of blank cells to put at the beginning for the first row. */
191
+ _firstRowOffset;
192
+ /** Padding for the individual date cells. */
193
+ _cellPadding;
194
+ /** Width of an individual cell. */
195
+ _cellWidth;
196
+ /** ID for the start date label. */
197
+ _startDateLabelId;
198
+ /** ID for the end date label. */
199
+ _endDateLabelId;
200
+ _didDragSinceMouseDown = false;
201
+ _injector = inject(Injector);
202
+ /**
203
+ * Tracking function for rows based on their identity. Ideally we would use some sort of
204
+ * key on the row, but that would require a breaking change for the `rows` input. We don't
205
+ * use the built-in identity tracking, because it logs warnings.
206
+ */
207
+ _trackRow = (row) => row;
130
208
  constructor() {
131
- this._elementRef = inject(ElementRef);
132
- this._ngZone = inject(NgZone);
133
- this._platform = inject(Platform);
134
- /**
135
- * Used to focus the active cell after change detection has run.
136
- */
137
- this._focusActiveCellAfterViewChecked = false;
138
- /** The number of columns in the table. */
139
- this.numCols = 7;
140
- /** The cell number of the active cell in the table. */
141
- this.activeCell = 0;
142
- /** Whether a range is being selected. */
143
- this.isRange = false;
144
- /**
145
- * The aspect ratio (width / height) to use for the cells in the table. This aspect ratio will be
146
- * maintained even as the table resizes.
147
- */
148
- this.cellAspectRatio = 1;
149
- /** Start of the preview range. */
150
- this.previewStart = null;
151
- /** End of the preview range. */
152
- this.previewEnd = null;
153
- /** Emits when a new value is selected. */
154
- this.selectedValueChange = new EventEmitter();
155
- /** Emits when the preview has changed as a result of a user action. */
156
- this.previewChange = new EventEmitter();
157
- this.activeDateChange = new EventEmitter();
158
- /** Emits the date at the possible start of a drag event. */
159
- this.dragStarted = new EventEmitter();
160
- /** Emits the date at the conclusion of a drag, or null if mouse was not released on a date. */
161
- this.dragEnded = new EventEmitter();
162
- this._didDragSinceMouseDown = false;
163
- this._injector = inject(Injector);
164
- /**
165
- * Tracking function for rows based on their identity. Ideally we would use some sort of
166
- * key on the row, but that would require a breaking change for the `rows` input. We don't
167
- * use the built-in identity tracking, because it logs warnings.
168
- */
169
- this._trackRow = (row) => row;
170
- /**
171
- * Event handler for when the user enters an element
172
- * inside the calendar body (e.g. by hovering in or focus).
173
- */
174
- this._enterHandler = (event) => {
175
- if (this._skipNextFocus && event.type === 'focus') {
176
- this._skipNextFocus = false;
177
- return;
178
- }
179
- // We only need to hit the zone when we're selecting a range.
180
- if (event.target && this.isRange) {
181
- const cell = this._getCellFromElement(event.target);
182
- if (cell) {
183
- this._ngZone.run(() => this.previewChange.emit({ value: cell.enabled ? cell : null, event }));
184
- }
185
- }
186
- };
187
- this._touchmoveHandler = (event) => {
188
- if (!this.isRange)
189
- return;
190
- const target = getActualTouchTarget(event);
191
- const cell = target ? this._getCellFromElement(target) : null;
192
- if (target !== event.target) {
193
- this._didDragSinceMouseDown = true;
194
- }
195
- // If the initial target of the touch is a date cell, prevent default so
196
- // that the move is not handled as a scroll.
197
- if (getCellElement(event.target)) {
198
- event.preventDefault();
199
- }
200
- this._ngZone.run(() => this.previewChange.emit({ value: cell?.enabled ? cell : null, event }));
201
- };
202
- /**
203
- * Event handler for when the user's pointer leaves an element
204
- * inside the calendar body (e.g. by hovering out or blurring).
205
- */
206
- this._leaveHandler = (event) => {
207
- // We only need to hit the zone when we're selecting a range.
208
- if (this.previewEnd !== null && this.isRange) {
209
- if (event.type !== 'blur') {
210
- this._didDragSinceMouseDown = true;
211
- }
212
- // Only reset the preview end value when leaving cells. This looks better, because
213
- // we have a gap between the cells and the rows and we don't want to remove the
214
- // range just for it to show up again when the user moves a few pixels to the side.
215
- if (event.target &&
216
- this._getCellFromElement(event.target) &&
217
- !(event.relatedTarget &&
218
- this._getCellFromElement(event.relatedTarget))) {
219
- this._ngZone.run(() => this.previewChange.emit({ value: null, event }));
220
- }
221
- }
222
- };
223
- /**
224
- * Triggered on mousedown or touchstart on a date cell.
225
- * Respsonsible for starting a drag sequence.
226
- */
227
- this._mousedownHandler = (event) => {
228
- if (!this.isRange)
229
- return;
230
- this._didDragSinceMouseDown = false;
231
- // Begin a drag if a cell within the current range was targeted.
232
- const cell = event.target && this._getCellFromElement(event.target);
233
- if (!cell || !this._isInRange(cell.compareValue)) {
234
- return;
235
- }
236
- this._ngZone.run(() => {
237
- this.dragStarted.emit({
238
- value: cell.rawValue,
239
- event,
240
- });
241
- });
242
- };
243
- /** Triggered on mouseup anywhere. Respsonsible for ending a drag sequence. */
244
- this._mouseupHandler = (event) => {
245
- if (!this.isRange)
246
- return;
247
- const cellElement = getCellElement(event.target);
248
- if (!cellElement) {
249
- // Mouseup happened outside of datepicker. Cancel drag.
250
- this._ngZone.run(() => {
251
- this.dragEnded.emit({ value: null, event });
252
- });
253
- return;
254
- }
255
- if (cellElement.closest('.mat-calendar-body') !== this._elementRef.nativeElement) {
256
- // Mouseup happened inside a different month instance.
257
- // Allow it to handle the event.
258
- return;
259
- }
260
- this._ngZone.run(() => {
261
- const cell = this._getCellFromElement(cellElement);
262
- this.dragEnded.emit({ value: cell?.rawValue ?? null, event });
263
- });
264
- };
265
- /** Triggered on touchend anywhere. Respsonsible for ending a drag sequence. */
266
- this._touchendHandler = (event) => {
267
- const target = getActualTouchTarget(event);
268
- if (target) {
269
- this._mouseupHandler({ target });
270
- }
271
- };
272
- this._id = `mat-calendar-body-${calendarBodyId++}`;
273
- this._startDateLabelId = `${this._id}-start-date`;
274
- this._endDateLabelId = `${this._id}-end-date`;
209
+ const idGenerator = inject(_IdGenerator);
210
+ this._startDateLabelId = idGenerator.getId('mat-calendar-body-start-');
211
+ this._endDateLabelId = idGenerator.getId('mat-calendar-body-start-');
275
212
  inject(_CdkPrivateStyleLoader).load(_StructuralStylesLoader);
276
213
  this._ngZone.runOutsideAngular(() => {
277
214
  const element = this._elementRef.nativeElement;
@@ -475,6 +412,108 @@ class MatCalendarBody {
475
412
  }
476
413
  return null;
477
414
  }
415
+ /**
416
+ * Event handler for when the user enters an element
417
+ * inside the calendar body (e.g. by hovering in or focus).
418
+ */
419
+ _enterHandler = (event) => {
420
+ if (this._skipNextFocus && event.type === 'focus') {
421
+ this._skipNextFocus = false;
422
+ return;
423
+ }
424
+ // We only need to hit the zone when we're selecting a range.
425
+ if (event.target && this.isRange) {
426
+ const cell = this._getCellFromElement(event.target);
427
+ if (cell) {
428
+ this._ngZone.run(() => this.previewChange.emit({ value: cell.enabled ? cell : null, event }));
429
+ }
430
+ }
431
+ };
432
+ _touchmoveHandler = (event) => {
433
+ if (!this.isRange)
434
+ return;
435
+ const target = getActualTouchTarget(event);
436
+ const cell = target ? this._getCellFromElement(target) : null;
437
+ if (target !== event.target) {
438
+ this._didDragSinceMouseDown = true;
439
+ }
440
+ // If the initial target of the touch is a date cell, prevent default so
441
+ // that the move is not handled as a scroll.
442
+ if (getCellElement(event.target)) {
443
+ event.preventDefault();
444
+ }
445
+ this._ngZone.run(() => this.previewChange.emit({ value: cell?.enabled ? cell : null, event }));
446
+ };
447
+ /**
448
+ * Event handler for when the user's pointer leaves an element
449
+ * inside the calendar body (e.g. by hovering out or blurring).
450
+ */
451
+ _leaveHandler = (event) => {
452
+ // We only need to hit the zone when we're selecting a range.
453
+ if (this.previewEnd !== null && this.isRange) {
454
+ if (event.type !== 'blur') {
455
+ this._didDragSinceMouseDown = true;
456
+ }
457
+ // Only reset the preview end value when leaving cells. This looks better, because
458
+ // we have a gap between the cells and the rows and we don't want to remove the
459
+ // range just for it to show up again when the user moves a few pixels to the side.
460
+ if (event.target &&
461
+ this._getCellFromElement(event.target) &&
462
+ !(event.relatedTarget &&
463
+ this._getCellFromElement(event.relatedTarget))) {
464
+ this._ngZone.run(() => this.previewChange.emit({ value: null, event }));
465
+ }
466
+ }
467
+ };
468
+ /**
469
+ * Triggered on mousedown or touchstart on a date cell.
470
+ * Respsonsible for starting a drag sequence.
471
+ */
472
+ _mousedownHandler = (event) => {
473
+ if (!this.isRange)
474
+ return;
475
+ this._didDragSinceMouseDown = false;
476
+ // Begin a drag if a cell within the current range was targeted.
477
+ const cell = event.target && this._getCellFromElement(event.target);
478
+ if (!cell || !this._isInRange(cell.compareValue)) {
479
+ return;
480
+ }
481
+ this._ngZone.run(() => {
482
+ this.dragStarted.emit({
483
+ value: cell.rawValue,
484
+ event,
485
+ });
486
+ });
487
+ };
488
+ /** Triggered on mouseup anywhere. Respsonsible for ending a drag sequence. */
489
+ _mouseupHandler = (event) => {
490
+ if (!this.isRange)
491
+ return;
492
+ const cellElement = getCellElement(event.target);
493
+ if (!cellElement) {
494
+ // Mouseup happened outside of datepicker. Cancel drag.
495
+ this._ngZone.run(() => {
496
+ this.dragEnded.emit({ value: null, event });
497
+ });
498
+ return;
499
+ }
500
+ if (cellElement.closest('.mat-calendar-body') !== this._elementRef.nativeElement) {
501
+ // Mouseup happened inside a different month instance.
502
+ // Allow it to handle the event.
503
+ return;
504
+ }
505
+ this._ngZone.run(() => {
506
+ const cell = this._getCellFromElement(cellElement);
507
+ this.dragEnded.emit({ value: cell?.rawValue ?? null, event });
508
+ });
509
+ };
510
+ /** Triggered on touchend anywhere. Respsonsible for ending a drag sequence. */
511
+ _touchendHandler = (event) => {
512
+ const target = getActualTouchTarget(event);
513
+ if (target) {
514
+ this._mouseupHandler({ target });
515
+ }
516
+ };
478
517
  /** Finds the MatCalendarCell that corresponds to a DOM node. */
479
518
  _getCellFromElement(element) {
480
519
  const cell = getCellElement(element);
@@ -487,10 +526,10 @@ class MatCalendarBody {
487
526
  }
488
527
  return null;
489
528
  }
490
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatCalendarBody, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
491
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.0-next.10", type: MatCalendarBody, isStandalone: true, selector: "[mat-calendar-body]", inputs: { label: "label", rows: "rows", todayValue: "todayValue", startValue: "startValue", endValue: "endValue", labelMinRequiredCells: "labelMinRequiredCells", numCols: "numCols", activeCell: "activeCell", isRange: "isRange", cellAspectRatio: "cellAspectRatio", comparisonStart: "comparisonStart", comparisonEnd: "comparisonEnd", previewStart: "previewStart", previewEnd: "previewEnd", startDateAccessibleName: "startDateAccessibleName", endDateAccessibleName: "endDateAccessibleName" }, outputs: { selectedValueChange: "selectedValueChange", previewChange: "previewChange", activeDateChange: "activeDateChange", dragStarted: "dragStarted", dragEnded: "dragEnded" }, host: { classAttribute: "mat-calendar-body" }, exportAs: ["matCalendarBody"], usesOnChanges: true, ngImport: i0, template: "<!--\n If there's not enough space in the first row, create a separate label row. We mark this row as\n aria-hidden because we don't want it to be read out as one of the weeks in the month.\n-->\n@if (_firstRowOffset < labelMinRequiredCells) {\n <tr aria-hidden=\"true\">\n <td class=\"mat-calendar-body-label\"\n [attr.colspan]=\"numCols\"\n [style.paddingTop]=\"_cellPadding\"\n [style.paddingBottom]=\"_cellPadding\">\n {{label}}\n </td>\n </tr>\n}\n\n<!-- Create the first row separately so we can include a special spacer cell. -->\n@for (row of rows; track _trackRow(row); let rowIndex = $index) {\n <tr role=\"row\">\n <!--\n This cell is purely decorative, but we can't put `aria-hidden` or `role=\"presentation\"` on it,\n because it throws off the week days for the rest of the row on NVDA. The aspect ratio of the\n table cells is maintained by setting the top and bottom padding as a percentage of the width\n (a variant of the trick described here: https://www.w3schools.com/howto/howto_css_aspect_ratio.asp).\n -->\n @if (rowIndex === 0 && _firstRowOffset) {\n <td\n class=\"mat-calendar-body-label\"\n [attr.colspan]=\"_firstRowOffset\"\n [style.paddingTop]=\"_cellPadding\"\n [style.paddingBottom]=\"_cellPadding\">\n {{_firstRowOffset >= labelMinRequiredCells ? label : ''}}\n </td>\n }\n <!--\n Each gridcell in the calendar contains a button, which signals to assistive technology that the\n cell is interactable, as well as the selection state via `aria-pressed`. See #23476 for\n background.\n -->\n @for (item of row; track item.id; let colIndex = $index) {\n <td\n role=\"gridcell\"\n class=\"mat-calendar-body-cell-container\"\n [style.width]=\"_cellWidth\"\n [style.paddingTop]=\"_cellPadding\"\n [style.paddingBottom]=\"_cellPadding\"\n [attr.data-mat-row]=\"rowIndex\"\n [attr.data-mat-col]=\"colIndex\"\n >\n <button\n type=\"button\"\n class=\"mat-calendar-body-cell\"\n [ngClass]=\"item.cssClasses\"\n [tabindex]=\"_isActiveCell(rowIndex, colIndex) ? 0 : -1\"\n [class.mat-calendar-body-disabled]=\"!item.enabled\"\n [class.mat-calendar-body-active]=\"_isActiveCell(rowIndex, colIndex)\"\n [class.mat-calendar-body-range-start]=\"_isRangeStart(item.compareValue)\"\n [class.mat-calendar-body-range-end]=\"_isRangeEnd(item.compareValue)\"\n [class.mat-calendar-body-in-range]=\"_isInRange(item.compareValue)\"\n [class.mat-calendar-body-comparison-bridge-start]=\"_isComparisonBridgeStart(item.compareValue, rowIndex, colIndex)\"\n [class.mat-calendar-body-comparison-bridge-end]=\"_isComparisonBridgeEnd(item.compareValue, rowIndex, colIndex)\"\n [class.mat-calendar-body-comparison-start]=\"_isComparisonStart(item.compareValue)\"\n [class.mat-calendar-body-comparison-end]=\"_isComparisonEnd(item.compareValue)\"\n [class.mat-calendar-body-in-comparison-range]=\"_isInComparisonRange(item.compareValue)\"\n [class.mat-calendar-body-preview-start]=\"_isPreviewStart(item.compareValue)\"\n [class.mat-calendar-body-preview-end]=\"_isPreviewEnd(item.compareValue)\"\n [class.mat-calendar-body-in-preview]=\"_isInPreview(item.compareValue)\"\n [attr.aria-label]=\"item.ariaLabel\"\n [attr.aria-disabled]=\"!item.enabled || null\"\n [attr.aria-pressed]=\"_isSelected(item.compareValue)\"\n [attr.aria-current]=\"todayValue === item.compareValue ? 'date' : null\"\n [attr.aria-describedby]=\"_getDescribedby(item.compareValue)\"\n (click)=\"_cellClicked(item, $event)\"\n (focus)=\"_emitActiveDateChange(item, $event)\">\n <span class=\"mat-calendar-body-cell-content mat-focus-indicator\"\n [class.mat-calendar-body-selected]=\"_isSelected(item.compareValue)\"\n [class.mat-calendar-body-comparison-identical]=\"_isComparisonIdentical(item.compareValue)\"\n [class.mat-calendar-body-today]=\"todayValue === item.compareValue\">\n {{item.displayValue}}\n </span>\n <span class=\"mat-calendar-body-cell-preview\" aria-hidden=\"true\"></span>\n </button>\n </td>\n }\n </tr>\n}\n\n<span [id]=\"_startDateLabelId\" class=\"mat-calendar-body-hidden-label\">\n {{startDateAccessibleName}}\n</span>\n<span [id]=\"_endDateLabelId\" class=\"mat-calendar-body-hidden-label\">\n {{endDateAccessibleName}}\n</span>\n", styles: [".mat-calendar-body{min-width:224px}.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:var(--mat-datepicker-calendar-date-today-outline-color, var(--mat-sys-primary))}.mat-calendar-body-label{height:0;line-height:0;text-align:start;padding-left:4.7142857143%;padding-right:4.7142857143%;font-size:var(--mat-datepicker-calendar-body-label-text-size, var(--mat-sys-title-small-size));font-weight:var(--mat-datepicker-calendar-body-label-text-weight, var(--mat-sys-title-small-weight));color:var(--mat-datepicker-calendar-body-label-text-color, var(--mat-sys-on-surface))}.mat-calendar-body-hidden-label{display:none}.mat-calendar-body-cell-container{position:relative;height:0;line-height:0}.mat-calendar-body-cell{position:absolute;top:0;left:0;width:100%;height:100%;background:none;text-align:center;outline:none;font-family:inherit;margin:0;font-family:var(--mat-datepicker-calendar-text-font, var(--mat-sys-body-medium-font));font-size:var(--mat-datepicker-calendar-text-size, var(--mat-sys-body-medium-size));-webkit-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-calendar-body-cell::-moz-focus-inner{border:0}.mat-calendar-body-cell::before,.mat-calendar-body-cell::after,.mat-calendar-body-cell-preview{content:\"\";position:absolute;top:5%;left:0;z-index:0;box-sizing:border-box;display:block;height:90%;width:100%}.mat-calendar-body-range-start:not(.mat-calendar-body-in-comparison-range)::before,.mat-calendar-body-range-start::after,.mat-calendar-body-comparison-start:not(.mat-calendar-body-comparison-bridge-start)::before,.mat-calendar-body-comparison-start::after,.mat-calendar-body-preview-start .mat-calendar-body-cell-preview{left:5%;width:95%;border-top-left-radius:999px;border-bottom-left-radius:999px}[dir=rtl] .mat-calendar-body-range-start:not(.mat-calendar-body-in-comparison-range)::before,[dir=rtl] .mat-calendar-body-range-start::after,[dir=rtl] .mat-calendar-body-comparison-start:not(.mat-calendar-body-comparison-bridge-start)::before,[dir=rtl] .mat-calendar-body-comparison-start::after,[dir=rtl] .mat-calendar-body-preview-start .mat-calendar-body-cell-preview{left:0;border-radius:0;border-top-right-radius:999px;border-bottom-right-radius:999px}.mat-calendar-body-range-end:not(.mat-calendar-body-in-comparison-range)::before,.mat-calendar-body-range-end::after,.mat-calendar-body-comparison-end:not(.mat-calendar-body-comparison-bridge-end)::before,.mat-calendar-body-comparison-end::after,.mat-calendar-body-preview-end .mat-calendar-body-cell-preview{width:95%;border-top-right-radius:999px;border-bottom-right-radius:999px}[dir=rtl] .mat-calendar-body-range-end:not(.mat-calendar-body-in-comparison-range)::before,[dir=rtl] .mat-calendar-body-range-end::after,[dir=rtl] .mat-calendar-body-comparison-end:not(.mat-calendar-body-comparison-bridge-end)::before,[dir=rtl] .mat-calendar-body-comparison-end::after,[dir=rtl] .mat-calendar-body-preview-end .mat-calendar-body-cell-preview{left:5%;border-radius:0;border-top-left-radius:999px;border-bottom-left-radius:999px}[dir=rtl] .mat-calendar-body-comparison-bridge-start.mat-calendar-body-range-end::after,[dir=rtl] .mat-calendar-body-comparison-bridge-end.mat-calendar-body-range-start::after{width:95%;border-top-right-radius:999px;border-bottom-right-radius:999px}.mat-calendar-body-comparison-start.mat-calendar-body-range-end::after,[dir=rtl] .mat-calendar-body-comparison-start.mat-calendar-body-range-end::after,.mat-calendar-body-comparison-end.mat-calendar-body-range-start::after,[dir=rtl] .mat-calendar-body-comparison-end.mat-calendar-body-range-start::after{width:90%}.mat-calendar-body-in-preview{color:var(--mat-datepicker-calendar-date-preview-state-outline-color, var(--mat-sys-primary))}.mat-calendar-body-in-preview .mat-calendar-body-cell-preview{border-top:dashed 1px;border-bottom:dashed 1px}.mat-calendar-body-preview-start .mat-calendar-body-cell-preview{border-left:dashed 1px}[dir=rtl] .mat-calendar-body-preview-start .mat-calendar-body-cell-preview{border-left:0;border-right:dashed 1px}.mat-calendar-body-preview-end .mat-calendar-body-cell-preview{border-right:dashed 1px}[dir=rtl] .mat-calendar-body-preview-end .mat-calendar-body-cell-preview{border-right:0;border-left:dashed 1px}.mat-calendar-body-disabled{cursor:default}.mat-calendar-body-disabled>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){color:var(--mat-datepicker-calendar-date-disabled-state-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-calendar-body-disabled>.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:var(--mat-datepicker-calendar-date-today-disabled-state-outline-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}@media(forced-colors: active){.mat-calendar-body-disabled{opacity:.5}}.mat-calendar-body-cell-content{top:5%;left:5%;z-index:1;display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:90%;height:90%;line-height:1;border-width:1px;border-style:solid;border-radius:999px;color:var(--mat-datepicker-calendar-date-text-color, var(--mat-sys-on-surface));border-color:var(--mat-datepicker-calendar-date-outline-color, transparent)}.mat-calendar-body-cell-content.mat-focus-indicator{position:absolute}@media(forced-colors: active){.mat-calendar-body-cell-content{border:none}}.cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:var(--mat-datepicker-calendar-date-focus-state-background-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-focus-state-layer-opacity) * 100%), transparent))}@media(hover: hover){.mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:var(--mat-datepicker-calendar-date-hover-state-background-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-hover-state-layer-opacity) * 100%), transparent))}}.mat-calendar-body-selected{background-color:var(--mat-datepicker-calendar-date-selected-state-background-color, var(--mat-sys-primary));color:var(--mat-datepicker-calendar-date-selected-state-text-color, var(--mat-sys-on-primary))}.mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:var(--mat-datepicker-calendar-date-selected-disabled-state-background-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-calendar-body-selected.mat-calendar-body-today{box-shadow:inset 0 0 0 1px var(--mat-datepicker-calendar-date-today-selected-state-outline-color, var(--mat-sys-primary))}.mat-calendar-body-in-range::before{background:var(--mat-datepicker-calendar-date-in-range-state-background-color, var(--mat-sys-primary-container))}.mat-calendar-body-comparison-identical,.mat-calendar-body-in-comparison-range::before{background:var(--mat-datepicker-calendar-date-in-comparison-range-state-background-color, var(--mat-sys-tertiary-container))}.mat-calendar-body-comparison-identical,.mat-calendar-body-in-comparison-range::before{background:var(--mat-datepicker-calendar-date-in-comparison-range-state-background-color, var(--mat-sys-tertiary-container))}.mat-calendar-body-comparison-bridge-start::before,[dir=rtl] .mat-calendar-body-comparison-bridge-end::before{background:linear-gradient(to right, var(--mat-datepicker-calendar-date-in-range-state-background-color, var(--mat-sys-primary-container)) 50%, var(--mat-datepicker-calendar-date-in-comparison-range-state-background-color, var(--mat-sys-tertiary-container)) 50%)}.mat-calendar-body-comparison-bridge-end::before,[dir=rtl] .mat-calendar-body-comparison-bridge-start::before{background:linear-gradient(to left, var(--mat-datepicker-calendar-date-in-range-state-background-color, var(--mat-sys-primary-container)) 50%, var(--mat-datepicker-calendar-date-in-comparison-range-state-background-color, var(--mat-sys-tertiary-container)) 50%)}.mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-calendar-body-in-comparison-range.mat-calendar-body-in-range::after{background:var(--mat-datepicker-calendar-date-in-overlap-range-state-background-color, var(--mat-sys-secondary-container))}.mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:var(--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color, var(--mat-sys-secondary))}@media(forced-colors: active){.mat-datepicker-popup:not(:empty),.mat-calendar-body-cell:not(.mat-calendar-body-in-range) .mat-calendar-body-selected{outline:solid 1px}.mat-calendar-body-today{outline:dotted 1px}.mat-calendar-body-cell::before,.mat-calendar-body-cell::after,.mat-calendar-body-selected{background:none}.mat-calendar-body-in-range::before,.mat-calendar-body-comparison-bridge-start::before,.mat-calendar-body-comparison-bridge-end::before{border-top:solid 1px;border-bottom:solid 1px}.mat-calendar-body-range-start::before{border-left:solid 1px}[dir=rtl] .mat-calendar-body-range-start::before{border-left:0;border-right:solid 1px}.mat-calendar-body-range-end::before{border-right:solid 1px}[dir=rtl] .mat-calendar-body-range-end::before{border-right:0;border-left:solid 1px}.mat-calendar-body-in-comparison-range::before{border-top:dashed 1px;border-bottom:dashed 1px}.mat-calendar-body-comparison-start::before{border-left:dashed 1px}[dir=rtl] .mat-calendar-body-comparison-start::before{border-left:0;border-right:dashed 1px}.mat-calendar-body-comparison-end::before{border-right:dashed 1px}[dir=rtl] .mat-calendar-body-comparison-end::before{border-right:0;border-left:dashed 1px}}"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
529
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatCalendarBody, deps: [], target: i0.ɵɵFactoryTarget.Component });
530
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.0-rc.0", type: MatCalendarBody, isStandalone: true, selector: "[mat-calendar-body]", inputs: { label: "label", rows: "rows", todayValue: "todayValue", startValue: "startValue", endValue: "endValue", labelMinRequiredCells: "labelMinRequiredCells", numCols: "numCols", activeCell: "activeCell", isRange: "isRange", cellAspectRatio: "cellAspectRatio", comparisonStart: "comparisonStart", comparisonEnd: "comparisonEnd", previewStart: "previewStart", previewEnd: "previewEnd", startDateAccessibleName: "startDateAccessibleName", endDateAccessibleName: "endDateAccessibleName" }, outputs: { selectedValueChange: "selectedValueChange", previewChange: "previewChange", activeDateChange: "activeDateChange", dragStarted: "dragStarted", dragEnded: "dragEnded" }, host: { classAttribute: "mat-calendar-body" }, exportAs: ["matCalendarBody"], usesOnChanges: true, ngImport: i0, template: "<!--\n If there's not enough space in the first row, create a separate label row. We mark this row as\n aria-hidden because we don't want it to be read out as one of the weeks in the month.\n-->\n@if (_firstRowOffset < labelMinRequiredCells) {\n <tr aria-hidden=\"true\">\n <td class=\"mat-calendar-body-label\"\n [attr.colspan]=\"numCols\"\n [style.paddingTop]=\"_cellPadding\"\n [style.paddingBottom]=\"_cellPadding\">\n {{label}}\n </td>\n </tr>\n}\n\n<!-- Create the first row separately so we can include a special spacer cell. -->\n@for (row of rows; track _trackRow(row); let rowIndex = $index) {\n <tr role=\"row\">\n <!--\n This cell is purely decorative, but we can't put `aria-hidden` or `role=\"presentation\"` on it,\n because it throws off the week days for the rest of the row on NVDA. The aspect ratio of the\n table cells is maintained by setting the top and bottom padding as a percentage of the width\n (a variant of the trick described here: https://www.w3schools.com/howto/howto_css_aspect_ratio.asp).\n -->\n @if (rowIndex === 0 && _firstRowOffset) {\n <td\n class=\"mat-calendar-body-label\"\n [attr.colspan]=\"_firstRowOffset\"\n [style.paddingTop]=\"_cellPadding\"\n [style.paddingBottom]=\"_cellPadding\">\n {{_firstRowOffset >= labelMinRequiredCells ? label : ''}}\n </td>\n }\n <!--\n Each gridcell in the calendar contains a button, which signals to assistive technology that the\n cell is interactable, as well as the selection state via `aria-pressed`. See #23476 for\n background.\n -->\n @for (item of row; track item.id; let colIndex = $index) {\n <td\n role=\"gridcell\"\n class=\"mat-calendar-body-cell-container\"\n [style.width]=\"_cellWidth\"\n [style.paddingTop]=\"_cellPadding\"\n [style.paddingBottom]=\"_cellPadding\"\n [attr.data-mat-row]=\"rowIndex\"\n [attr.data-mat-col]=\"colIndex\"\n >\n <button\n type=\"button\"\n class=\"mat-calendar-body-cell\"\n [ngClass]=\"item.cssClasses\"\n [tabindex]=\"_isActiveCell(rowIndex, colIndex) ? 0 : -1\"\n [class.mat-calendar-body-disabled]=\"!item.enabled\"\n [class.mat-calendar-body-active]=\"_isActiveCell(rowIndex, colIndex)\"\n [class.mat-calendar-body-range-start]=\"_isRangeStart(item.compareValue)\"\n [class.mat-calendar-body-range-end]=\"_isRangeEnd(item.compareValue)\"\n [class.mat-calendar-body-in-range]=\"_isInRange(item.compareValue)\"\n [class.mat-calendar-body-comparison-bridge-start]=\"_isComparisonBridgeStart(item.compareValue, rowIndex, colIndex)\"\n [class.mat-calendar-body-comparison-bridge-end]=\"_isComparisonBridgeEnd(item.compareValue, rowIndex, colIndex)\"\n [class.mat-calendar-body-comparison-start]=\"_isComparisonStart(item.compareValue)\"\n [class.mat-calendar-body-comparison-end]=\"_isComparisonEnd(item.compareValue)\"\n [class.mat-calendar-body-in-comparison-range]=\"_isInComparisonRange(item.compareValue)\"\n [class.mat-calendar-body-preview-start]=\"_isPreviewStart(item.compareValue)\"\n [class.mat-calendar-body-preview-end]=\"_isPreviewEnd(item.compareValue)\"\n [class.mat-calendar-body-in-preview]=\"_isInPreview(item.compareValue)\"\n [attr.aria-label]=\"item.ariaLabel\"\n [attr.aria-disabled]=\"!item.enabled || null\"\n [attr.aria-pressed]=\"_isSelected(item.compareValue)\"\n [attr.aria-current]=\"todayValue === item.compareValue ? 'date' : null\"\n [attr.aria-describedby]=\"_getDescribedby(item.compareValue)\"\n (click)=\"_cellClicked(item, $event)\"\n (focus)=\"_emitActiveDateChange(item, $event)\">\n <span class=\"mat-calendar-body-cell-content mat-focus-indicator\"\n [class.mat-calendar-body-selected]=\"_isSelected(item.compareValue)\"\n [class.mat-calendar-body-comparison-identical]=\"_isComparisonIdentical(item.compareValue)\"\n [class.mat-calendar-body-today]=\"todayValue === item.compareValue\">\n {{item.displayValue}}\n </span>\n <span class=\"mat-calendar-body-cell-preview\" aria-hidden=\"true\"></span>\n </button>\n </td>\n }\n </tr>\n}\n\n<span [id]=\"_startDateLabelId\" class=\"mat-calendar-body-hidden-label\">\n {{startDateAccessibleName}}\n</span>\n<span [id]=\"_endDateLabelId\" class=\"mat-calendar-body-hidden-label\">\n {{endDateAccessibleName}}\n</span>\n", styles: [".mat-calendar-body{min-width:224px}.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:var(--mat-datepicker-calendar-date-today-outline-color, var(--mat-sys-primary))}.mat-calendar-body-label{height:0;line-height:0;text-align:start;padding-left:4.7142857143%;padding-right:4.7142857143%;font-size:var(--mat-datepicker-calendar-body-label-text-size, var(--mat-sys-title-small-size));font-weight:var(--mat-datepicker-calendar-body-label-text-weight, var(--mat-sys-title-small-weight));color:var(--mat-datepicker-calendar-body-label-text-color, var(--mat-sys-on-surface))}.mat-calendar-body-hidden-label{display:none}.mat-calendar-body-cell-container{position:relative;height:0;line-height:0}.mat-calendar-body-cell{position:absolute;top:0;left:0;width:100%;height:100%;background:none;text-align:center;outline:none;font-family:inherit;margin:0;font-family:var(--mat-datepicker-calendar-text-font, var(--mat-sys-body-medium-font));font-size:var(--mat-datepicker-calendar-text-size, var(--mat-sys-body-medium-size));-webkit-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-calendar-body-cell::-moz-focus-inner{border:0}.mat-calendar-body-cell::before,.mat-calendar-body-cell::after,.mat-calendar-body-cell-preview{content:\"\";position:absolute;top:5%;left:0;z-index:0;box-sizing:border-box;display:block;height:90%;width:100%}.mat-calendar-body-range-start:not(.mat-calendar-body-in-comparison-range)::before,.mat-calendar-body-range-start::after,.mat-calendar-body-comparison-start:not(.mat-calendar-body-comparison-bridge-start)::before,.mat-calendar-body-comparison-start::after,.mat-calendar-body-preview-start .mat-calendar-body-cell-preview{left:5%;width:95%;border-top-left-radius:999px;border-bottom-left-radius:999px}[dir=rtl] .mat-calendar-body-range-start:not(.mat-calendar-body-in-comparison-range)::before,[dir=rtl] .mat-calendar-body-range-start::after,[dir=rtl] .mat-calendar-body-comparison-start:not(.mat-calendar-body-comparison-bridge-start)::before,[dir=rtl] .mat-calendar-body-comparison-start::after,[dir=rtl] .mat-calendar-body-preview-start .mat-calendar-body-cell-preview{left:0;border-radius:0;border-top-right-radius:999px;border-bottom-right-radius:999px}.mat-calendar-body-range-end:not(.mat-calendar-body-in-comparison-range)::before,.mat-calendar-body-range-end::after,.mat-calendar-body-comparison-end:not(.mat-calendar-body-comparison-bridge-end)::before,.mat-calendar-body-comparison-end::after,.mat-calendar-body-preview-end .mat-calendar-body-cell-preview{width:95%;border-top-right-radius:999px;border-bottom-right-radius:999px}[dir=rtl] .mat-calendar-body-range-end:not(.mat-calendar-body-in-comparison-range)::before,[dir=rtl] .mat-calendar-body-range-end::after,[dir=rtl] .mat-calendar-body-comparison-end:not(.mat-calendar-body-comparison-bridge-end)::before,[dir=rtl] .mat-calendar-body-comparison-end::after,[dir=rtl] .mat-calendar-body-preview-end .mat-calendar-body-cell-preview{left:5%;border-radius:0;border-top-left-radius:999px;border-bottom-left-radius:999px}[dir=rtl] .mat-calendar-body-comparison-bridge-start.mat-calendar-body-range-end::after,[dir=rtl] .mat-calendar-body-comparison-bridge-end.mat-calendar-body-range-start::after{width:95%;border-top-right-radius:999px;border-bottom-right-radius:999px}.mat-calendar-body-comparison-start.mat-calendar-body-range-end::after,[dir=rtl] .mat-calendar-body-comparison-start.mat-calendar-body-range-end::after,.mat-calendar-body-comparison-end.mat-calendar-body-range-start::after,[dir=rtl] .mat-calendar-body-comparison-end.mat-calendar-body-range-start::after{width:90%}.mat-calendar-body-in-preview{color:var(--mat-datepicker-calendar-date-preview-state-outline-color, var(--mat-sys-primary))}.mat-calendar-body-in-preview .mat-calendar-body-cell-preview{border-top:dashed 1px;border-bottom:dashed 1px}.mat-calendar-body-preview-start .mat-calendar-body-cell-preview{border-left:dashed 1px}[dir=rtl] .mat-calendar-body-preview-start .mat-calendar-body-cell-preview{border-left:0;border-right:dashed 1px}.mat-calendar-body-preview-end .mat-calendar-body-cell-preview{border-right:dashed 1px}[dir=rtl] .mat-calendar-body-preview-end .mat-calendar-body-cell-preview{border-right:0;border-left:dashed 1px}.mat-calendar-body-disabled{cursor:default}.mat-calendar-body-disabled>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){color:var(--mat-datepicker-calendar-date-disabled-state-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-calendar-body-disabled>.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:var(--mat-datepicker-calendar-date-today-disabled-state-outline-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}@media(forced-colors: active){.mat-calendar-body-disabled{opacity:.5}}.mat-calendar-body-cell-content{top:5%;left:5%;z-index:1;display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:90%;height:90%;line-height:1;border-width:1px;border-style:solid;border-radius:999px;color:var(--mat-datepicker-calendar-date-text-color, var(--mat-sys-on-surface));border-color:var(--mat-datepicker-calendar-date-outline-color, transparent)}.mat-calendar-body-cell-content.mat-focus-indicator{position:absolute}@media(forced-colors: active){.mat-calendar-body-cell-content{border:none}}.cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:var(--mat-datepicker-calendar-date-focus-state-background-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-focus-state-layer-opacity) * 100%), transparent))}@media(hover: hover){.mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:var(--mat-datepicker-calendar-date-hover-state-background-color, color-mix(in srgb, var(--mat-sys-on-surface) calc(var(--mat-sys-hover-state-layer-opacity) * 100%), transparent))}}.mat-calendar-body-selected{background-color:var(--mat-datepicker-calendar-date-selected-state-background-color, var(--mat-sys-primary));color:var(--mat-datepicker-calendar-date-selected-state-text-color, var(--mat-sys-on-primary))}.mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:var(--mat-datepicker-calendar-date-selected-disabled-state-background-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-calendar-body-selected.mat-calendar-body-today{box-shadow:inset 0 0 0 1px var(--mat-datepicker-calendar-date-today-selected-state-outline-color, var(--mat-sys-primary))}.mat-calendar-body-in-range::before{background:var(--mat-datepicker-calendar-date-in-range-state-background-color, var(--mat-sys-primary-container))}.mat-calendar-body-comparison-identical,.mat-calendar-body-in-comparison-range::before{background:var(--mat-datepicker-calendar-date-in-comparison-range-state-background-color, var(--mat-sys-tertiary-container))}.mat-calendar-body-comparison-identical,.mat-calendar-body-in-comparison-range::before{background:var(--mat-datepicker-calendar-date-in-comparison-range-state-background-color, var(--mat-sys-tertiary-container))}.mat-calendar-body-comparison-bridge-start::before,[dir=rtl] .mat-calendar-body-comparison-bridge-end::before{background:linear-gradient(to right, var(--mat-datepicker-calendar-date-in-range-state-background-color, var(--mat-sys-primary-container)) 50%, var(--mat-datepicker-calendar-date-in-comparison-range-state-background-color, var(--mat-sys-tertiary-container)) 50%)}.mat-calendar-body-comparison-bridge-end::before,[dir=rtl] .mat-calendar-body-comparison-bridge-start::before{background:linear-gradient(to left, var(--mat-datepicker-calendar-date-in-range-state-background-color, var(--mat-sys-primary-container)) 50%, var(--mat-datepicker-calendar-date-in-comparison-range-state-background-color, var(--mat-sys-tertiary-container)) 50%)}.mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-calendar-body-in-comparison-range.mat-calendar-body-in-range::after{background:var(--mat-datepicker-calendar-date-in-overlap-range-state-background-color, var(--mat-sys-secondary-container))}.mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:var(--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color, var(--mat-sys-secondary))}@media(forced-colors: active){.mat-datepicker-popup:not(:empty),.mat-calendar-body-cell:not(.mat-calendar-body-in-range) .mat-calendar-body-selected{outline:solid 1px}.mat-calendar-body-today{outline:dotted 1px}.mat-calendar-body-cell::before,.mat-calendar-body-cell::after,.mat-calendar-body-selected{background:none}.mat-calendar-body-in-range::before,.mat-calendar-body-comparison-bridge-start::before,.mat-calendar-body-comparison-bridge-end::before{border-top:solid 1px;border-bottom:solid 1px}.mat-calendar-body-range-start::before{border-left:solid 1px}[dir=rtl] .mat-calendar-body-range-start::before{border-left:0;border-right:solid 1px}.mat-calendar-body-range-end::before{border-right:solid 1px}[dir=rtl] .mat-calendar-body-range-end::before{border-right:0;border-left:solid 1px}.mat-calendar-body-in-comparison-range::before{border-top:dashed 1px;border-bottom:dashed 1px}.mat-calendar-body-comparison-start::before{border-left:dashed 1px}[dir=rtl] .mat-calendar-body-comparison-start::before{border-left:0;border-right:dashed 1px}.mat-calendar-body-comparison-end::before{border-right:dashed 1px}[dir=rtl] .mat-calendar-body-comparison-end::before{border-right:0;border-left:dashed 1px}}"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
492
531
  }
493
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatCalendarBody, decorators: [{
532
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatCalendarBody, decorators: [{
494
533
  type: Component,
495
534
  args: [{ selector: '[mat-calendar-body]', host: {
496
535
  'class': 'mat-calendar-body',
@@ -587,6 +626,14 @@ function getActualTouchTarget(event) {
587
626
 
588
627
  /** A class representing a range of dates. */
589
628
  class DateRange {
629
+ start;
630
+ end;
631
+ /**
632
+ * Ensures that objects with a `start` and `end` property can't be assigned to a variable that
633
+ * expects a `DateRange`
634
+ */
635
+ // tslint:disable-next-line:no-unused-variable
636
+ _disableStructuralEquivalency;
590
637
  constructor(
591
638
  /** The start date of the range. */
592
639
  start,
@@ -601,14 +648,16 @@ class DateRange {
601
648
  * @docs-private
602
649
  */
603
650
  class MatDateSelectionModel {
651
+ selection;
652
+ _adapter;
653
+ _selectionChanged = new Subject();
654
+ /** Emits when the selection has changed. */
655
+ selectionChanged = this._selectionChanged;
604
656
  constructor(
605
657
  /** The current selection. */
606
658
  selection, _adapter) {
607
659
  this.selection = selection;
608
660
  this._adapter = _adapter;
609
- this._selectionChanged = new Subject();
610
- /** Emits when the selection has changed. */
611
- this.selectionChanged = this._selectionChanged;
612
661
  this.selection = selection;
613
662
  }
614
663
  /**
@@ -627,10 +676,10 @@ class MatDateSelectionModel {
627
676
  _isValidDateInstance(date) {
628
677
  return this._adapter.isDateInstance(date) && this._adapter.isValid(date);
629
678
  }
630
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDateSelectionModel, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable }); }
631
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDateSelectionModel }); }
679
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatDateSelectionModel, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable });
680
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatDateSelectionModel });
632
681
  }
633
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDateSelectionModel, decorators: [{
682
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatDateSelectionModel, decorators: [{
634
683
  type: Injectable
635
684
  }], ctorParameters: () => [{ type: undefined }, { type: i1.DateAdapter }] });
636
685
  /**
@@ -665,10 +714,10 @@ class MatSingleDateSelectionModel extends MatDateSelectionModel {
665
714
  clone.updateSelection(this.selection, this);
666
715
  return clone;
667
716
  }
668
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatSingleDateSelectionModel, deps: [{ token: i1.DateAdapter }], target: i0.ɵɵFactoryTarget.Injectable }); }
669
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatSingleDateSelectionModel }); }
717
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatSingleDateSelectionModel, deps: [{ token: i1.DateAdapter }], target: i0.ɵɵFactoryTarget.Injectable });
718
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatSingleDateSelectionModel });
670
719
  }
671
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatSingleDateSelectionModel, decorators: [{
720
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatSingleDateSelectionModel, decorators: [{
672
721
  type: Injectable
673
722
  }], ctorParameters: () => [{ type: i1.DateAdapter }] });
674
723
  /**
@@ -728,10 +777,10 @@ class MatRangeDateSelectionModel extends MatDateSelectionModel {
728
777
  clone.updateSelection(this.selection, this);
729
778
  return clone;
730
779
  }
731
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatRangeDateSelectionModel, deps: [{ token: i1.DateAdapter }], target: i0.ɵɵFactoryTarget.Injectable }); }
732
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatRangeDateSelectionModel }); }
780
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatRangeDateSelectionModel, deps: [{ token: i1.DateAdapter }], target: i0.ɵɵFactoryTarget.Injectable });
781
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatRangeDateSelectionModel });
733
782
  }
734
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatRangeDateSelectionModel, decorators: [{
783
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatRangeDateSelectionModel, decorators: [{
735
784
  type: Injectable
736
785
  }], ctorParameters: () => [{ type: i1.DateAdapter }] });
737
786
  /** @docs-private */
@@ -765,6 +814,7 @@ const MAT_RANGE_DATE_SELECTION_MODEL_PROVIDER = {
765
814
  const MAT_DATE_RANGE_SELECTION_STRATEGY = new InjectionToken('MAT_DATE_RANGE_SELECTION_STRATEGY');
766
815
  /** Provides the default date range selection behavior. */
767
816
  class DefaultMatCalendarRangeStrategy {
817
+ _dateAdapter;
768
818
  constructor(_dateAdapter) {
769
819
  this._dateAdapter = _dateAdapter;
770
820
  }
@@ -829,10 +879,10 @@ class DefaultMatCalendarRangeStrategy {
829
879
  }
830
880
  return new DateRange(start, end);
831
881
  }
832
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: DefaultMatCalendarRangeStrategy, deps: [{ token: i1.DateAdapter }], target: i0.ɵɵFactoryTarget.Injectable }); }
833
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: DefaultMatCalendarRangeStrategy }); }
882
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: DefaultMatCalendarRangeStrategy, deps: [{ token: i1.DateAdapter }], target: i0.ɵɵFactoryTarget.Injectable });
883
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: DefaultMatCalendarRangeStrategy });
834
884
  }
835
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: DefaultMatCalendarRangeStrategy, decorators: [{
885
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: DefaultMatCalendarRangeStrategy, decorators: [{
836
886
  type: Injectable
837
887
  }], ctorParameters: () => [{ type: i1.DateAdapter }] });
838
888
  /** @docs-private */
@@ -853,6 +903,14 @@ let uniqueIdCounter = 0;
853
903
  * @docs-private
854
904
  */
855
905
  class MatMonthView {
906
+ _changeDetectorRef = inject(ChangeDetectorRef);
907
+ _dateFormats = inject(MAT_DATE_FORMATS, { optional: true });
908
+ _dateAdapter = inject(DateAdapter, { optional: true });
909
+ _dir = inject(Directionality, { optional: true });
910
+ _rangeStrategy = inject(MAT_DATE_RANGE_SELECTION_STRATEGY, { optional: true });
911
+ _rerenderSubscription = Subscription.EMPTY;
912
+ /** Flag used to filter out space/enter keyup events that originated outside of the view. */
913
+ _selectionKeyPressed;
856
914
  /**
857
915
  * The date to display in this month view (everything other than the month and year is ignored).
858
916
  */
@@ -868,6 +926,7 @@ class MatMonthView {
868
926
  this._init();
869
927
  }
870
928
  }
929
+ _activeDate;
871
930
  /** The currently selected date. */
872
931
  get selected() {
873
932
  return this._selected;
@@ -881,6 +940,7 @@ class MatMonthView {
881
940
  }
882
941
  this._setRanges(this._selected);
883
942
  }
943
+ _selected;
884
944
  /** The minimum selectable date. */
885
945
  get minDate() {
886
946
  return this._minDate;
@@ -888,6 +948,7 @@ class MatMonthView {
888
948
  set minDate(value) {
889
949
  this._minDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));
890
950
  }
951
+ _minDate;
891
952
  /** The maximum selectable date. */
892
953
  get maxDate() {
893
954
  return this._maxDate;
@@ -895,28 +956,62 @@ class MatMonthView {
895
956
  set maxDate(value) {
896
957
  this._maxDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));
897
958
  }
959
+ _maxDate;
960
+ /** Function used to filter which dates are selectable. */
961
+ dateFilter;
962
+ /** Function that can be used to add custom CSS classes to dates. */
963
+ dateClass;
964
+ /** Start of the comparison range. */
965
+ comparisonStart;
966
+ /** End of the comparison range. */
967
+ comparisonEnd;
968
+ /** ARIA Accessible name of the `<input matStartDate/>` */
969
+ startDateAccessibleName;
970
+ /** ARIA Accessible name of the `<input matEndDate/>` */
971
+ endDateAccessibleName;
972
+ /** Origin of active drag, or null when dragging is not active. */
973
+ activeDrag = null;
974
+ /** Emits when a new date is selected. */
975
+ selectedChange = new EventEmitter();
976
+ /** Emits when any date is selected. */
977
+ _userSelection = new EventEmitter();
978
+ /** Emits when the user initiates a date range drag via mouse or touch. */
979
+ dragStarted = new EventEmitter();
980
+ /**
981
+ * Emits when the user completes or cancels a date range drag.
982
+ * Emits null when the drag was canceled or the newly selected date range if completed.
983
+ */
984
+ dragEnded = new EventEmitter();
985
+ /** Emits when any date is activated. */
986
+ activeDateChange = new EventEmitter();
987
+ /** The body of calendar table */
988
+ _matCalendarBody;
989
+ /** The label for this month (e.g. "January 2017"). */
990
+ _monthLabel;
991
+ /** Grid of calendar cells representing the dates of the month. */
992
+ _weeks;
993
+ /** The number of blank cells in the first row before the 1st of the month. */
994
+ _firstWeekOffset;
995
+ /** Start value of the currently-shown date range. */
996
+ _rangeStart;
997
+ /** End value of the currently-shown date range. */
998
+ _rangeEnd;
999
+ /** Start value of the currently-shown comparison date range. */
1000
+ _comparisonRangeStart;
1001
+ /** End value of the currently-shown comparison date range. */
1002
+ _comparisonRangeEnd;
1003
+ /** Start of the preview range. */
1004
+ _previewStart;
1005
+ /** End of the preview range. */
1006
+ _previewEnd;
1007
+ /** Whether the user is currently selecting a range of dates. */
1008
+ _isRange;
1009
+ /** The date of the month that today falls on. Null if today is in another month. */
1010
+ _todayDate;
1011
+ /** The names of the weekdays. */
1012
+ _weekdays;
898
1013
  constructor() {
899
- this._changeDetectorRef = inject(ChangeDetectorRef);
900
- this._dateFormats = inject(MAT_DATE_FORMATS, { optional: true });
901
- this._dateAdapter = inject(DateAdapter, { optional: true });
902
- this._dir = inject(Directionality, { optional: true });
903
- this._rangeStrategy = inject(MAT_DATE_RANGE_SELECTION_STRATEGY, { optional: true });
904
- this._rerenderSubscription = Subscription.EMPTY;
905
- /** Origin of active drag, or null when dragging is not active. */
906
- this.activeDrag = null;
907
- /** Emits when a new date is selected. */
908
- this.selectedChange = new EventEmitter();
909
- /** Emits when any date is selected. */
910
- this._userSelection = new EventEmitter();
911
- /** Emits when the user initiates a date range drag via mouse or touch. */
912
- this.dragStarted = new EventEmitter();
913
- /**
914
- * Emits when the user completes or cancels a date range drag.
915
- * Emits null when the drag was canceled or the newly selected date range if completed.
916
- */
917
- this.dragEnded = new EventEmitter();
918
- /** Emits when any date is activated. */
919
- this.activeDateChange = new EventEmitter();
1014
+ inject(_CdkPrivateStyleLoader).load(_VisuallyHiddenLoader);
920
1015
  if (typeof ngDevMode === 'undefined' || ngDevMode) {
921
1016
  if (!this._dateAdapter) {
922
1017
  throw createMissingDateImplError('DateAdapter');
@@ -1229,10 +1324,10 @@ class MatMonthView {
1229
1324
  _clearPreview() {
1230
1325
  this._previewStart = this._previewEnd = null;
1231
1326
  }
1232
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatMonthView, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1233
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.0-next.10", 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 }); }
1327
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatMonthView, deps: [], target: i0.ɵɵFactoryTarget.Component });
1328
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.0-rc.0", 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 });
1234
1329
  }
1235
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatMonthView, decorators: [{
1330
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatMonthView, decorators: [{
1236
1331
  type: Component,
1237
1332
  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" }]
1238
1333
  }], ctorParameters: () => [], propDecorators: { activeDate: [{
@@ -1279,6 +1374,12 @@ const yearsPerRow = 4;
1279
1374
  * @docs-private
1280
1375
  */
1281
1376
  class MatMultiYearView {
1377
+ _changeDetectorRef = inject(ChangeDetectorRef);
1378
+ _dateAdapter = inject(DateAdapter, { optional: true });
1379
+ _dir = inject(Directionality, { optional: true });
1380
+ _rerenderSubscription = Subscription.EMPTY;
1381
+ /** Flag used to filter out space/enter keyup events that originated outside of the view. */
1382
+ _selectionKeyPressed;
1282
1383
  /** The date to display in this multi-year view (everything other than the year is ignored). */
1283
1384
  get activeDate() {
1284
1385
  return this._activeDate;
@@ -1292,6 +1393,7 @@ class MatMultiYearView {
1292
1393
  this._init();
1293
1394
  }
1294
1395
  }
1396
+ _activeDate;
1295
1397
  /** The currently selected date. */
1296
1398
  get selected() {
1297
1399
  return this._selected;
@@ -1305,6 +1407,7 @@ class MatMultiYearView {
1305
1407
  }
1306
1408
  this._setSelectedYear(value);
1307
1409
  }
1410
+ _selected;
1308
1411
  /** The minimum selectable date. */
1309
1412
  get minDate() {
1310
1413
  return this._minDate;
@@ -1312,6 +1415,7 @@ class MatMultiYearView {
1312
1415
  set minDate(value) {
1313
1416
  this._minDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));
1314
1417
  }
1418
+ _minDate;
1315
1419
  /** The maximum selectable date. */
1316
1420
  get maxDate() {
1317
1421
  return this._maxDate;
@@ -1319,17 +1423,26 @@ class MatMultiYearView {
1319
1423
  set maxDate(value) {
1320
1424
  this._maxDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));
1321
1425
  }
1426
+ _maxDate;
1427
+ /** A function used to filter which dates are selectable. */
1428
+ dateFilter;
1429
+ /** Function that can be used to add custom CSS classes to date cells. */
1430
+ dateClass;
1431
+ /** Emits when a new year is selected. */
1432
+ selectedChange = new EventEmitter();
1433
+ /** Emits the selected year. This doesn't imply a change on the selected date */
1434
+ yearSelected = new EventEmitter();
1435
+ /** Emits when any date is activated. */
1436
+ activeDateChange = new EventEmitter();
1437
+ /** The body of calendar table */
1438
+ _matCalendarBody;
1439
+ /** Grid of calendar cells representing the currently displayed years. */
1440
+ _years;
1441
+ /** The year that today falls on. */
1442
+ _todayYear;
1443
+ /** The year of the selected date. Null if the selected date is null. */
1444
+ _selectedYear;
1322
1445
  constructor() {
1323
- this._changeDetectorRef = inject(ChangeDetectorRef);
1324
- this._dateAdapter = inject(DateAdapter, { optional: true });
1325
- this._dir = inject(Directionality, { optional: true });
1326
- this._rerenderSubscription = Subscription.EMPTY;
1327
- /** Emits when a new year is selected. */
1328
- this.selectedChange = new EventEmitter();
1329
- /** Emits the selected year. This doesn't imply a change on the selected date */
1330
- this.yearSelected = new EventEmitter();
1331
- /** Emits when any date is activated. */
1332
- this.activeDateChange = new EventEmitter();
1333
1446
  if (!this._dateAdapter && (typeof ngDevMode === 'undefined' || ngDevMode)) {
1334
1447
  throw createMissingDateImplError('DateAdapter');
1335
1448
  }
@@ -1515,10 +1628,10 @@ class MatMultiYearView {
1515
1628
  this._selectedYear = this._dateAdapter.getYear(value);
1516
1629
  }
1517
1630
  }
1518
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatMultiYearView, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1519
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.0-next.10", 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 }); }
1631
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatMultiYearView, deps: [], target: i0.ɵɵFactoryTarget.Component });
1632
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.0-rc.0", 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 });
1520
1633
  }
1521
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatMultiYearView, decorators: [{
1634
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatMultiYearView, decorators: [{
1522
1635
  type: Component,
1523
1636
  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" }]
1524
1637
  }], ctorParameters: () => [], propDecorators: { activeDate: [{
@@ -1584,6 +1697,13 @@ function euclideanModulo(a, b) {
1584
1697
  * @docs-private
1585
1698
  */
1586
1699
  class MatYearView {
1700
+ _changeDetectorRef = inject(ChangeDetectorRef);
1701
+ _dateFormats = inject(MAT_DATE_FORMATS, { optional: true });
1702
+ _dateAdapter = inject(DateAdapter, { optional: true });
1703
+ _dir = inject(Directionality, { optional: true });
1704
+ _rerenderSubscription = Subscription.EMPTY;
1705
+ /** Flag used to filter out space/enter keyup events that originated outside of the view. */
1706
+ _selectionKeyPressed;
1587
1707
  /** The date to display in this year view (everything other than the year is ignored). */
1588
1708
  get activeDate() {
1589
1709
  return this._activeDate;
@@ -1597,6 +1717,7 @@ class MatYearView {
1597
1717
  this._init();
1598
1718
  }
1599
1719
  }
1720
+ _activeDate;
1600
1721
  /** The currently selected date. */
1601
1722
  get selected() {
1602
1723
  return this._selected;
@@ -1610,6 +1731,7 @@ class MatYearView {
1610
1731
  }
1611
1732
  this._setSelectedMonth(value);
1612
1733
  }
1734
+ _selected;
1613
1735
  /** The minimum selectable date. */
1614
1736
  get minDate() {
1615
1737
  return this._minDate;
@@ -1617,6 +1739,7 @@ class MatYearView {
1617
1739
  set minDate(value) {
1618
1740
  this._minDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));
1619
1741
  }
1742
+ _minDate;
1620
1743
  /** The maximum selectable date. */
1621
1744
  get maxDate() {
1622
1745
  return this._maxDate;
@@ -1624,18 +1747,31 @@ class MatYearView {
1624
1747
  set maxDate(value) {
1625
1748
  this._maxDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));
1626
1749
  }
1750
+ _maxDate;
1751
+ /** A function used to filter which dates are selectable. */
1752
+ dateFilter;
1753
+ /** Function that can be used to add custom CSS classes to date cells. */
1754
+ dateClass;
1755
+ /** Emits when a new month is selected. */
1756
+ selectedChange = new EventEmitter();
1757
+ /** Emits the selected month. This doesn't imply a change on the selected date */
1758
+ monthSelected = new EventEmitter();
1759
+ /** Emits when any date is activated. */
1760
+ activeDateChange = new EventEmitter();
1761
+ /** The body of calendar table */
1762
+ _matCalendarBody;
1763
+ /** Grid of calendar cells representing the months of the year. */
1764
+ _months;
1765
+ /** The label for this year (e.g. "2017"). */
1766
+ _yearLabel;
1767
+ /** The month in this year that today falls on. Null if today is in a different year. */
1768
+ _todayMonth;
1769
+ /**
1770
+ * The month in this year that the selected Date falls on.
1771
+ * Null if the selected Date is in a different year.
1772
+ */
1773
+ _selectedMonth;
1627
1774
  constructor() {
1628
- this._changeDetectorRef = inject(ChangeDetectorRef);
1629
- this._dateFormats = inject(MAT_DATE_FORMATS, { optional: true });
1630
- this._dateAdapter = inject(DateAdapter, { optional: true });
1631
- this._dir = inject(Directionality, { optional: true });
1632
- this._rerenderSubscription = Subscription.EMPTY;
1633
- /** Emits when a new month is selected. */
1634
- this.selectedChange = new EventEmitter();
1635
- /** Emits the selected month. This doesn't imply a change on the selected date */
1636
- this.monthSelected = new EventEmitter();
1637
- /** Emits when any date is activated. */
1638
- this.activeDateChange = new EventEmitter();
1639
1775
  if (typeof ngDevMode === 'undefined' || ngDevMode) {
1640
1776
  if (!this._dateAdapter) {
1641
1777
  throw createMissingDateImplError('DateAdapter');
@@ -1846,10 +1982,10 @@ class MatYearView {
1846
1982
  this._selectedMonth = this._getMonthInCurrentYear(value);
1847
1983
  }
1848
1984
  }
1849
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatYearView, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1850
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.0-next.10", 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 }); }
1985
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatYearView, deps: [], target: i0.ɵɵFactoryTarget.Component });
1986
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.0-rc.0", 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 });
1851
1987
  }
1852
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatYearView, decorators: [{
1988
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatYearView, decorators: [{
1853
1989
  type: Component,
1854
1990
  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" }]
1855
1991
  }], ctorParameters: () => [], propDecorators: { activeDate: [{
@@ -1875,16 +2011,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10",
1875
2011
  args: [MatCalendarBody]
1876
2012
  }] } });
1877
2013
 
1878
- let calendarHeaderId = 1;
1879
2014
  /** Default header for MatCalendar */
1880
2015
  class MatCalendarHeader {
2016
+ _intl = inject(MatDatepickerIntl);
2017
+ calendar = inject(MatCalendar);
2018
+ _dateAdapter = inject(DateAdapter, { optional: true });
2019
+ _dateFormats = inject(MAT_DATE_FORMATS, { optional: true });
1881
2020
  constructor() {
1882
- this._intl = inject(MatDatepickerIntl);
1883
- this.calendar = inject(MatCalendar);
1884
- this._dateAdapter = inject(DateAdapter, { optional: true });
1885
- this._dateFormats = inject(MAT_DATE_FORMATS, { optional: true });
1886
- this._id = `mat-calendar-header-${calendarHeaderId++}`;
1887
- this._periodButtonLabelId = `${this._id}-period-label`;
2021
+ inject(_CdkPrivateStyleLoader).load(_VisuallyHiddenLoader);
1888
2022
  const changeDetectorRef = inject(ChangeDetectorRef);
1889
2023
  this.calendar.stateChanges.subscribe(() => changeDetectorRef.markForCheck());
1890
2024
  }
@@ -1994,15 +2128,30 @@ class MatCalendarHeader {
1994
2128
  const maxYearLabel = this._dateAdapter.getYearName(this._dateAdapter.createDate(maxYearOfPage, 0, 1));
1995
2129
  return [minYearLabel, maxYearLabel];
1996
2130
  }
1997
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatCalendarHeader, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1998
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.0-next.10", type: MatCalendarHeader, isStandalone: true, selector: "mat-calendar-header", exportAs: ["matCalendarHeader"], ngImport: i0, template: "<div class=\"mat-calendar-header\">\n <div class=\"mat-calendar-controls\">\n <!-- [Firefox Issue: https://bugzilla.mozilla.org/show_bug.cgi?id=1880533]\n Relocated label next to related button and made visually hidden via cdk-visually-hidden\n to enable label to appear in a11y tree for SR when using Firefox -->\n <span [id]=\"_periodButtonLabelId\" class=\"cdk-visually-hidden\" aria-live=\"polite\">{{periodButtonDescription}}</span>\n <button mat-button type=\"button\" class=\"mat-calendar-period-button\"\n (click)=\"currentPeriodClicked()\" [attr.aria-label]=\"periodButtonLabel\"\n [attr.aria-describedby]=\"_periodButtonLabelId\">\n <span aria-hidden=\"true\">{{periodButtonText}}</span>\n <svg class=\"mat-calendar-arrow\" [class.mat-calendar-invert]=\"calendar.currentView !== 'month'\"\n viewBox=\"0 0 10 5\" focusable=\"false\" aria-hidden=\"true\">\n <polygon points=\"0,0 5,5 10,0\"/>\n </svg>\n </button>\n\n <div class=\"mat-calendar-spacer\"></div>\n\n <ng-content></ng-content>\n\n <button mat-icon-button type=\"button\" class=\"mat-calendar-previous-button\"\n [disabled]=\"!previousEnabled()\" (click)=\"previousClicked()\"\n [attr.aria-label]=\"prevButtonLabel\">\n </button>\n\n <button mat-icon-button type=\"button\" class=\"mat-calendar-next-button\"\n [disabled]=\"!nextEnabled()\" (click)=\"nextClicked()\"\n [attr.aria-label]=\"nextButtonLabel\">\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
2131
+ _periodButtonLabelId = inject(_IdGenerator).getId('mat-calendar-period-label-');
2132
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatCalendarHeader, deps: [], target: i0.ɵɵFactoryTarget.Component });
2133
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.0-rc.0", type: MatCalendarHeader, isStandalone: true, selector: "mat-calendar-header", exportAs: ["matCalendarHeader"], ngImport: i0, template: "<div class=\"mat-calendar-header\">\n <div class=\"mat-calendar-controls\">\n <!-- [Firefox Issue: https://bugzilla.mozilla.org/show_bug.cgi?id=1880533]\n Relocated label next to related button and made visually hidden via cdk-visually-hidden\n to enable label to appear in a11y tree for SR when using Firefox -->\n <span [id]=\"_periodButtonLabelId\" class=\"cdk-visually-hidden\" aria-live=\"polite\">{{periodButtonDescription}}</span>\n <button mat-button type=\"button\" class=\"mat-calendar-period-button\"\n (click)=\"currentPeriodClicked()\" [attr.aria-label]=\"periodButtonLabel\"\n [attr.aria-describedby]=\"_periodButtonLabelId\">\n <span aria-hidden=\"true\">{{periodButtonText}}</span>\n <svg class=\"mat-calendar-arrow\" [class.mat-calendar-invert]=\"calendar.currentView !== 'month'\"\n viewBox=\"0 0 10 5\" focusable=\"false\" aria-hidden=\"true\">\n <polygon points=\"0,0 5,5 10,0\"/>\n </svg>\n </button>\n\n <div class=\"mat-calendar-spacer\"></div>\n\n <ng-content></ng-content>\n\n <button mat-icon-button type=\"button\" class=\"mat-calendar-previous-button\"\n [disabled]=\"!previousEnabled()\" (click)=\"previousClicked()\"\n [attr.aria-label]=\"prevButtonLabel\">\n <svg viewBox=\"0 0 24 24\" focusable=\"false\" aria-hidden=\"true\">\n <path d=\"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z\"/>\n </svg>\n </button>\n\n <button mat-icon-button type=\"button\" class=\"mat-calendar-next-button\"\n [disabled]=\"!nextEnabled()\" (click)=\"nextClicked()\"\n [attr.aria-label]=\"nextButtonLabel\">\n <svg viewBox=\"0 0 24 24\" focusable=\"false\" aria-hidden=\"true\">\n <path d=\"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"/>\n </svg>\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1999
2134
  }
2000
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatCalendarHeader, decorators: [{
2135
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatCalendarHeader, decorators: [{
2001
2136
  type: Component,
2002
- args: [{ selector: 'mat-calendar-header', exportAs: 'matCalendarHeader', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [MatButton, MatIconButton], template: "<div class=\"mat-calendar-header\">\n <div class=\"mat-calendar-controls\">\n <!-- [Firefox Issue: https://bugzilla.mozilla.org/show_bug.cgi?id=1880533]\n Relocated label next to related button and made visually hidden via cdk-visually-hidden\n to enable label to appear in a11y tree for SR when using Firefox -->\n <span [id]=\"_periodButtonLabelId\" class=\"cdk-visually-hidden\" aria-live=\"polite\">{{periodButtonDescription}}</span>\n <button mat-button type=\"button\" class=\"mat-calendar-period-button\"\n (click)=\"currentPeriodClicked()\" [attr.aria-label]=\"periodButtonLabel\"\n [attr.aria-describedby]=\"_periodButtonLabelId\">\n <span aria-hidden=\"true\">{{periodButtonText}}</span>\n <svg class=\"mat-calendar-arrow\" [class.mat-calendar-invert]=\"calendar.currentView !== 'month'\"\n viewBox=\"0 0 10 5\" focusable=\"false\" aria-hidden=\"true\">\n <polygon points=\"0,0 5,5 10,0\"/>\n </svg>\n </button>\n\n <div class=\"mat-calendar-spacer\"></div>\n\n <ng-content></ng-content>\n\n <button mat-icon-button type=\"button\" class=\"mat-calendar-previous-button\"\n [disabled]=\"!previousEnabled()\" (click)=\"previousClicked()\"\n [attr.aria-label]=\"prevButtonLabel\">\n </button>\n\n <button mat-icon-button type=\"button\" class=\"mat-calendar-next-button\"\n [disabled]=\"!nextEnabled()\" (click)=\"nextClicked()\"\n [attr.aria-label]=\"nextButtonLabel\">\n </button>\n </div>\n</div>\n" }]
2137
+ args: [{ selector: 'mat-calendar-header', exportAs: 'matCalendarHeader', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [MatButton, MatIconButton], template: "<div class=\"mat-calendar-header\">\n <div class=\"mat-calendar-controls\">\n <!-- [Firefox Issue: https://bugzilla.mozilla.org/show_bug.cgi?id=1880533]\n Relocated label next to related button and made visually hidden via cdk-visually-hidden\n to enable label to appear in a11y tree for SR when using Firefox -->\n <span [id]=\"_periodButtonLabelId\" class=\"cdk-visually-hidden\" aria-live=\"polite\">{{periodButtonDescription}}</span>\n <button mat-button type=\"button\" class=\"mat-calendar-period-button\"\n (click)=\"currentPeriodClicked()\" [attr.aria-label]=\"periodButtonLabel\"\n [attr.aria-describedby]=\"_periodButtonLabelId\">\n <span aria-hidden=\"true\">{{periodButtonText}}</span>\n <svg class=\"mat-calendar-arrow\" [class.mat-calendar-invert]=\"calendar.currentView !== 'month'\"\n viewBox=\"0 0 10 5\" focusable=\"false\" aria-hidden=\"true\">\n <polygon points=\"0,0 5,5 10,0\"/>\n </svg>\n </button>\n\n <div class=\"mat-calendar-spacer\"></div>\n\n <ng-content></ng-content>\n\n <button mat-icon-button type=\"button\" class=\"mat-calendar-previous-button\"\n [disabled]=\"!previousEnabled()\" (click)=\"previousClicked()\"\n [attr.aria-label]=\"prevButtonLabel\">\n <svg viewBox=\"0 0 24 24\" focusable=\"false\" aria-hidden=\"true\">\n <path d=\"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z\"/>\n </svg>\n </button>\n\n <button mat-icon-button type=\"button\" class=\"mat-calendar-next-button\"\n [disabled]=\"!nextEnabled()\" (click)=\"nextClicked()\"\n [attr.aria-label]=\"nextButtonLabel\">\n <svg viewBox=\"0 0 24 24\" focusable=\"false\" aria-hidden=\"true\">\n <path d=\"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"/>\n </svg>\n </button>\n </div>\n</div>\n" }]
2003
2138
  }], ctorParameters: () => [] });
2004
2139
  /** A calendar that is used as part of the datepicker. */
2005
2140
  class MatCalendar {
2141
+ _dateAdapter = inject(DateAdapter, { optional: true });
2142
+ _dateFormats = inject(MAT_DATE_FORMATS, { optional: true });
2143
+ _changeDetectorRef = inject(ChangeDetectorRef);
2144
+ /** An input indicating the type of the header component, if set. */
2145
+ headerComponent;
2146
+ /** A portal containing the header component type for this calendar. */
2147
+ _calendarHeaderPortal;
2148
+ _intlChanges;
2149
+ /**
2150
+ * Used for scheduling that focus should be moved to the active cell on the next tick.
2151
+ * We need to schedule it, rather than do it immediately, because we have to wait
2152
+ * for Angular to re-evaluate the view children.
2153
+ */
2154
+ _moveFocusOnNextTick = false;
2006
2155
  /** A date representing the period (month or year) to start the calendar in. */
2007
2156
  get startAt() {
2008
2157
  return this._startAt;
@@ -2010,6 +2159,9 @@ class MatCalendar {
2010
2159
  set startAt(value) {
2011
2160
  this._startAt = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));
2012
2161
  }
2162
+ _startAt;
2163
+ /** Whether the calendar should be started in month or year view. */
2164
+ startView = 'month';
2013
2165
  /** The currently selected date. */
2014
2166
  get selected() {
2015
2167
  return this._selected;
@@ -2022,6 +2174,7 @@ class MatCalendar {
2022
2174
  this._selected = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));
2023
2175
  }
2024
2176
  }
2177
+ _selected;
2025
2178
  /** The minimum selectable date. */
2026
2179
  get minDate() {
2027
2180
  return this._minDate;
@@ -2029,6 +2182,7 @@ class MatCalendar {
2029
2182
  set minDate(value) {
2030
2183
  this._minDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));
2031
2184
  }
2185
+ _minDate;
2032
2186
  /** The maximum selectable date. */
2033
2187
  get maxDate() {
2034
2188
  return this._maxDate;
@@ -2036,6 +2190,45 @@ class MatCalendar {
2036
2190
  set maxDate(value) {
2037
2191
  this._maxDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));
2038
2192
  }
2193
+ _maxDate;
2194
+ /** Function used to filter which dates are selectable. */
2195
+ dateFilter;
2196
+ /** Function that can be used to add custom CSS classes to dates. */
2197
+ dateClass;
2198
+ /** Start of the comparison range. */
2199
+ comparisonStart;
2200
+ /** End of the comparison range. */
2201
+ comparisonEnd;
2202
+ /** ARIA Accessible name of the `<input matStartDate/>` */
2203
+ startDateAccessibleName;
2204
+ /** ARIA Accessible name of the `<input matEndDate/>` */
2205
+ endDateAccessibleName;
2206
+ /** Emits when the currently selected date changes. */
2207
+ selectedChange = new EventEmitter();
2208
+ /**
2209
+ * Emits the year chosen in multiyear view.
2210
+ * This doesn't imply a change on the selected date.
2211
+ */
2212
+ yearSelected = new EventEmitter();
2213
+ /**
2214
+ * Emits the month chosen in year view.
2215
+ * This doesn't imply a change on the selected date.
2216
+ */
2217
+ monthSelected = new EventEmitter();
2218
+ /**
2219
+ * Emits when the current view changes.
2220
+ */
2221
+ viewChanged = new EventEmitter(true);
2222
+ /** Emits when any date is selected. */
2223
+ _userSelection = new EventEmitter();
2224
+ /** Emits a new date range value when the user completes a drag drop operation. */
2225
+ _userDragDrop = new EventEmitter();
2226
+ /** Reference to the current month view component. */
2227
+ monthView;
2228
+ /** Reference to the current year view component. */
2229
+ yearView;
2230
+ /** Reference to the current multi-year view component. */
2231
+ multiYearView;
2039
2232
  /**
2040
2233
  * The current active date. This determines which time period is shown and which date is
2041
2234
  * highlighted when using keyboard navigation.
@@ -2048,6 +2241,7 @@ class MatCalendar {
2048
2241
  this.stateChanges.next();
2049
2242
  this._changeDetectorRef.markForCheck();
2050
2243
  }
2244
+ _clampedActiveDate;
2051
2245
  /** Whether the calendar is in month view. */
2052
2246
  get currentView() {
2053
2247
  return this._currentView;
@@ -2061,44 +2255,14 @@ class MatCalendar {
2061
2255
  this.viewChanged.emit(viewChangedResult);
2062
2256
  }
2063
2257
  }
2258
+ _currentView;
2259
+ /** Origin of active drag, or null when dragging is not active. */
2260
+ _activeDrag = null;
2261
+ /**
2262
+ * Emits whenever there is a state change that the header may need to respond to.
2263
+ */
2264
+ stateChanges = new Subject();
2064
2265
  constructor() {
2065
- this._dateAdapter = inject(DateAdapter, { optional: true });
2066
- this._dateFormats = inject(MAT_DATE_FORMATS, { optional: true });
2067
- this._changeDetectorRef = inject(ChangeDetectorRef);
2068
- /**
2069
- * Used for scheduling that focus should be moved to the active cell on the next tick.
2070
- * We need to schedule it, rather than do it immediately, because we have to wait
2071
- * for Angular to re-evaluate the view children.
2072
- */
2073
- this._moveFocusOnNextTick = false;
2074
- /** Whether the calendar should be started in month or year view. */
2075
- this.startView = 'month';
2076
- /** Emits when the currently selected date changes. */
2077
- this.selectedChange = new EventEmitter();
2078
- /**
2079
- * Emits the year chosen in multiyear view.
2080
- * This doesn't imply a change on the selected date.
2081
- */
2082
- this.yearSelected = new EventEmitter();
2083
- /**
2084
- * Emits the month chosen in year view.
2085
- * This doesn't imply a change on the selected date.
2086
- */
2087
- this.monthSelected = new EventEmitter();
2088
- /**
2089
- * Emits when the current view changes.
2090
- */
2091
- this.viewChanged = new EventEmitter(true);
2092
- /** Emits when any date is selected. */
2093
- this._userSelection = new EventEmitter();
2094
- /** Emits a new date range value when the user completes a drag drop operation. */
2095
- this._userDragDrop = new EventEmitter();
2096
- /** Origin of active drag, or null when dragging is not active. */
2097
- this._activeDrag = null;
2098
- /**
2099
- * Emits whenever there is a state change that the header may need to respond to.
2100
- */
2101
- this.stateChanges = new Subject();
2102
2266
  if (typeof ngDevMode === 'undefined' || ngDevMode) {
2103
2267
  if (!this._dateAdapter) {
2104
2268
  throw createMissingDateImplError('DateAdapter');
@@ -2208,14 +2372,14 @@ class MatCalendar {
2208
2372
  // only the first component type. See https://github.com/angular/components/issues/22996.
2209
2373
  return this.monthView || this.yearView || this.multiYearView;
2210
2374
  }
2211
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatCalendar, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2212
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.0-next.10", type: MatCalendar, isStandalone: true, selector: "mat-calendar", inputs: { headerComponent: "headerComponent", startAt: "startAt", startView: "startView", selected: "selected", minDate: "minDate", maxDate: "maxDate", dateFilter: "dateFilter", dateClass: "dateClass", comparisonStart: "comparisonStart", comparisonEnd: "comparisonEnd", startDateAccessibleName: "startDateAccessibleName", endDateAccessibleName: "endDateAccessibleName" }, outputs: { selectedChange: "selectedChange", yearSelected: "yearSelected", monthSelected: "monthSelected", viewChanged: "viewChanged", _userSelection: "_userSelection", _userDragDrop: "_userDragDrop" }, host: { classAttribute: "mat-calendar" }, providers: [MAT_SINGLE_DATE_SELECTION_MODEL_PROVIDER], viewQueries: [{ propertyName: "monthView", first: true, predicate: MatMonthView, descendants: true }, { propertyName: "yearView", first: true, predicate: MatYearView, descendants: true }, { propertyName: "multiYearView", first: true, predicate: MatMultiYearView, descendants: true }], exportAs: ["matCalendar"], usesOnChanges: true, ngImport: i0, template: "<ng-template [cdkPortalOutlet]=\"_calendarHeaderPortal\"></ng-template>\n\n<div class=\"mat-calendar-content\" cdkMonitorSubtreeFocus tabindex=\"-1\">\n @switch (currentView) {\n @case ('month') {\n <mat-month-view\n [(activeDate)]=\"activeDate\"\n [selected]=\"selected\"\n [dateFilter]=\"dateFilter\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [dateClass]=\"dateClass\"\n [comparisonStart]=\"comparisonStart\"\n [comparisonEnd]=\"comparisonEnd\"\n [startDateAccessibleName]=\"startDateAccessibleName\"\n [endDateAccessibleName]=\"endDateAccessibleName\"\n (_userSelection)=\"_dateSelected($event)\"\n (dragStarted)=\"_dragStarted($event)\"\n (dragEnded)=\"_dragEnded($event)\"\n [activeDrag]=\"_activeDrag\"></mat-month-view>\n }\n\n @case ('year') {\n <mat-year-view\n [(activeDate)]=\"activeDate\"\n [selected]=\"selected\"\n [dateFilter]=\"dateFilter\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [dateClass]=\"dateClass\"\n (monthSelected)=\"_monthSelectedInYearView($event)\"\n (selectedChange)=\"_goToDateInView($event, 'month')\"></mat-year-view>\n }\n\n @case ('multi-year') {\n <mat-multi-year-view\n [(activeDate)]=\"activeDate\"\n [selected]=\"selected\"\n [dateFilter]=\"dateFilter\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [dateClass]=\"dateClass\"\n (yearSelected)=\"_yearSelectedInMultiYearView($event)\"\n (selectedChange)=\"_goToDateInView($event, 'year')\"></mat-multi-year-view>\n }\n }\n</div>\n", styles: [".mat-calendar{display:block;line-height:normal;font-family:var(--mat-datepicker-calendar-text-font, var(--mat-sys-body-medium-font));font-size:var(--mat-datepicker-calendar-text-size, var(--mat-sys-body-medium-size))}.mat-calendar-header{padding:8px 8px 0 8px}.mat-calendar-content{padding:0 8px 8px 8px;outline:none}.mat-calendar-controls{display:flex;align-items:center;margin:5% calc(4.7142857143% - 16px)}.mat-calendar-spacer{flex:1 1 auto}.mat-calendar-period-button{min-width:0;margin:0 8px;font-size:var(--mat-datepicker-calendar-period-button-text-size, var(--mat-sys-title-small-size));font-weight:var(--mat-datepicker-calendar-period-button-text-weight, var(--mat-sys-title-small-weight));--mdc-text-button-label-text-color:var(--mat-datepicker-calendar-period-button-text-color, var(--mat-sys-on-surface-variant))}.mat-calendar-arrow{display:inline-block;width:10px;height:5px;margin:0 0 0 5px;vertical-align:middle;fill:var(--mat-datepicker-calendar-period-button-icon-color, var(--mat-sys-on-surface-variant))}.mat-calendar-arrow.mat-calendar-invert{transform:rotate(180deg)}[dir=rtl] .mat-calendar-arrow{margin:0 5px 0 0}@media(forced-colors: active){.mat-calendar-arrow{fill:CanvasText}}.mat-calendar-previous-button,.mat-calendar-next-button{position:relative}.mat-datepicker-content .mat-calendar-previous-button:not(.mat-mdc-button-disabled),.mat-datepicker-content .mat-calendar-next-button:not(.mat-mdc-button-disabled){color:var(--mat-datepicker-calendar-navigation-button-icon-color, var(--mat-sys-on-surface-variant))}.mat-calendar-previous-button::after,.mat-calendar-next-button::after{top:0;left:0;right:0;bottom:0;position:absolute;content:\"\";margin:15.5px;border:0 solid currentColor;border-top-width:2px}[dir=rtl] .mat-calendar-previous-button,[dir=rtl] .mat-calendar-next-button{transform:rotate(180deg)}.mat-calendar-previous-button::after{border-left-width:2px;transform:translateX(2px) rotate(-45deg)}.mat-calendar-next-button::after{border-right-width:2px;transform:translateX(-2px) rotate(45deg)}.mat-calendar-table{border-spacing:0;border-collapse:collapse;width:100%}.mat-calendar-table-header th{text-align:center;padding:0 0 8px 0;color:var(--mat-datepicker-calendar-header-text-color, var(--mat-sys-on-surface-variant));font-size:var(--mat-datepicker-calendar-header-text-size, var(--mat-sys-title-small-size));font-weight:var(--mat-datepicker-calendar-header-text-weight, var(--mat-sys-title-small-weight))}.mat-calendar-table-header-divider{position:relative;height:1px}.mat-calendar-table-header-divider::after{content:\"\";position:absolute;top:0;left:-8px;right:-8px;height:1px;background:var(--mat-datepicker-calendar-header-divider-color, transparent)}.mat-calendar-body-cell-content::before{margin:calc(calc(var(--mat-focus-indicator-border-width, 3px) + 3px)*-1)}.mat-calendar-body-cell:focus .mat-focus-indicator::before{content:\"\"}"], dependencies: [{ kind: "directive", type: CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "directive", type: CdkMonitorFocus, selector: "[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]", outputs: ["cdkFocusChange"], exportAs: ["cdkMonitorFocus"] }, { kind: "component", type: MatMonthView, selector: "mat-month-view", inputs: ["activeDate", "selected", "minDate", "maxDate", "dateFilter", "dateClass", "comparisonStart", "comparisonEnd", "startDateAccessibleName", "endDateAccessibleName", "activeDrag"], outputs: ["selectedChange", "_userSelection", "dragStarted", "dragEnded", "activeDateChange"], exportAs: ["matMonthView"] }, { kind: "component", type: MatYearView, selector: "mat-year-view", inputs: ["activeDate", "selected", "minDate", "maxDate", "dateFilter", "dateClass"], outputs: ["selectedChange", "monthSelected", "activeDateChange"], exportAs: ["matYearView"] }, { kind: "component", type: MatMultiYearView, selector: "mat-multi-year-view", inputs: ["activeDate", "selected", "minDate", "maxDate", "dateFilter", "dateClass"], outputs: ["selectedChange", "yearSelected", "activeDateChange"], exportAs: ["matMultiYearView"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
2375
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatCalendar, deps: [], target: i0.ɵɵFactoryTarget.Component });
2376
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.0-rc.0", type: MatCalendar, isStandalone: true, selector: "mat-calendar", inputs: { headerComponent: "headerComponent", startAt: "startAt", startView: "startView", selected: "selected", minDate: "minDate", maxDate: "maxDate", dateFilter: "dateFilter", dateClass: "dateClass", comparisonStart: "comparisonStart", comparisonEnd: "comparisonEnd", startDateAccessibleName: "startDateAccessibleName", endDateAccessibleName: "endDateAccessibleName" }, outputs: { selectedChange: "selectedChange", yearSelected: "yearSelected", monthSelected: "monthSelected", viewChanged: "viewChanged", _userSelection: "_userSelection", _userDragDrop: "_userDragDrop" }, host: { classAttribute: "mat-calendar" }, providers: [MAT_SINGLE_DATE_SELECTION_MODEL_PROVIDER], viewQueries: [{ propertyName: "monthView", first: true, predicate: MatMonthView, descendants: true }, { propertyName: "yearView", first: true, predicate: MatYearView, descendants: true }, { propertyName: "multiYearView", first: true, predicate: MatMultiYearView, descendants: true }], exportAs: ["matCalendar"], usesOnChanges: true, ngImport: i0, template: "<ng-template [cdkPortalOutlet]=\"_calendarHeaderPortal\"></ng-template>\n\n<div class=\"mat-calendar-content\" cdkMonitorSubtreeFocus tabindex=\"-1\">\n @switch (currentView) {\n @case ('month') {\n <mat-month-view\n [(activeDate)]=\"activeDate\"\n [selected]=\"selected\"\n [dateFilter]=\"dateFilter\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [dateClass]=\"dateClass\"\n [comparisonStart]=\"comparisonStart\"\n [comparisonEnd]=\"comparisonEnd\"\n [startDateAccessibleName]=\"startDateAccessibleName\"\n [endDateAccessibleName]=\"endDateAccessibleName\"\n (_userSelection)=\"_dateSelected($event)\"\n (dragStarted)=\"_dragStarted($event)\"\n (dragEnded)=\"_dragEnded($event)\"\n [activeDrag]=\"_activeDrag\"></mat-month-view>\n }\n\n @case ('year') {\n <mat-year-view\n [(activeDate)]=\"activeDate\"\n [selected]=\"selected\"\n [dateFilter]=\"dateFilter\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [dateClass]=\"dateClass\"\n (monthSelected)=\"_monthSelectedInYearView($event)\"\n (selectedChange)=\"_goToDateInView($event, 'month')\"></mat-year-view>\n }\n\n @case ('multi-year') {\n <mat-multi-year-view\n [(activeDate)]=\"activeDate\"\n [selected]=\"selected\"\n [dateFilter]=\"dateFilter\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [dateClass]=\"dateClass\"\n (yearSelected)=\"_yearSelectedInMultiYearView($event)\"\n (selectedChange)=\"_goToDateInView($event, 'year')\"></mat-multi-year-view>\n }\n }\n</div>\n", styles: [".mat-calendar{display:block;line-height:normal;font-family:var(--mat-datepicker-calendar-text-font, var(--mat-sys-body-medium-font));font-size:var(--mat-datepicker-calendar-text-size, var(--mat-sys-body-medium-size))}.mat-calendar-header{padding:8px 8px 0 8px}.mat-calendar-content{padding:0 8px 8px 8px;outline:none}.mat-calendar-controls{display:flex;align-items:center;margin:5% calc(4.7142857143% - 16px)}.mat-calendar-spacer{flex:1 1 auto}.mat-calendar-period-button{min-width:0;margin:0 8px;font-size:var(--mat-datepicker-calendar-period-button-text-size, var(--mat-sys-title-small-size));font-weight:var(--mat-datepicker-calendar-period-button-text-weight, var(--mat-sys-title-small-weight));--mdc-text-button-label-text-color:var(--mat-datepicker-calendar-period-button-text-color, var(--mat-sys-on-surface-variant))}.mat-calendar-arrow{display:inline-block;width:10px;height:5px;margin:0 0 0 5px;vertical-align:middle;fill:var(--mat-datepicker-calendar-period-button-icon-color, var(--mat-sys-on-surface-variant))}.mat-calendar-arrow.mat-calendar-invert{transform:rotate(180deg)}[dir=rtl] .mat-calendar-arrow{margin:0 5px 0 0}@media(forced-colors: active){.mat-calendar-arrow{fill:CanvasText}}.mat-datepicker-content .mat-calendar-previous-button:not(.mat-mdc-button-disabled),.mat-datepicker-content .mat-calendar-next-button:not(.mat-mdc-button-disabled){color:var(--mat-datepicker-calendar-navigation-button-icon-color, var(--mat-sys-on-surface-variant))}[dir=rtl] .mat-calendar-previous-button,[dir=rtl] .mat-calendar-next-button{transform:rotate(180deg)}.mat-calendar-table{border-spacing:0;border-collapse:collapse;width:100%}.mat-calendar-table-header th{text-align:center;padding:0 0 8px 0;color:var(--mat-datepicker-calendar-header-text-color, var(--mat-sys-on-surface-variant));font-size:var(--mat-datepicker-calendar-header-text-size, var(--mat-sys-title-small-size));font-weight:var(--mat-datepicker-calendar-header-text-weight, var(--mat-sys-title-small-weight))}.mat-calendar-table-header-divider{position:relative;height:1px}.mat-calendar-table-header-divider::after{content:\"\";position:absolute;top:0;left:-8px;right:-8px;height:1px;background:var(--mat-datepicker-calendar-header-divider-color, transparent)}.mat-calendar-body-cell-content::before{margin:calc(calc(var(--mat-focus-indicator-border-width, 3px) + 3px)*-1)}.mat-calendar-body-cell:focus .mat-focus-indicator::before{content:\"\"}"], dependencies: [{ kind: "directive", type: CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "directive", type: CdkMonitorFocus, selector: "[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]", outputs: ["cdkFocusChange"], exportAs: ["cdkMonitorFocus"] }, { kind: "component", type: MatMonthView, selector: "mat-month-view", inputs: ["activeDate", "selected", "minDate", "maxDate", "dateFilter", "dateClass", "comparisonStart", "comparisonEnd", "startDateAccessibleName", "endDateAccessibleName", "activeDrag"], outputs: ["selectedChange", "_userSelection", "dragStarted", "dragEnded", "activeDateChange"], exportAs: ["matMonthView"] }, { kind: "component", type: MatYearView, selector: "mat-year-view", inputs: ["activeDate", "selected", "minDate", "maxDate", "dateFilter", "dateClass"], outputs: ["selectedChange", "monthSelected", "activeDateChange"], exportAs: ["matYearView"] }, { kind: "component", type: MatMultiYearView, selector: "mat-multi-year-view", inputs: ["activeDate", "selected", "minDate", "maxDate", "dateFilter", "dateClass"], outputs: ["selectedChange", "yearSelected", "activeDateChange"], exportAs: ["matMultiYearView"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
2213
2377
  }
2214
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatCalendar, decorators: [{
2378
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatCalendar, decorators: [{
2215
2379
  type: Component,
2216
2380
  args: [{ selector: 'mat-calendar', host: {
2217
2381
  'class': 'mat-calendar',
2218
- }, exportAs: 'matCalendar', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [MAT_SINGLE_DATE_SELECTION_MODEL_PROVIDER], imports: [CdkPortalOutlet, CdkMonitorFocus, MatMonthView, MatYearView, MatMultiYearView], template: "<ng-template [cdkPortalOutlet]=\"_calendarHeaderPortal\"></ng-template>\n\n<div class=\"mat-calendar-content\" cdkMonitorSubtreeFocus tabindex=\"-1\">\n @switch (currentView) {\n @case ('month') {\n <mat-month-view\n [(activeDate)]=\"activeDate\"\n [selected]=\"selected\"\n [dateFilter]=\"dateFilter\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [dateClass]=\"dateClass\"\n [comparisonStart]=\"comparisonStart\"\n [comparisonEnd]=\"comparisonEnd\"\n [startDateAccessibleName]=\"startDateAccessibleName\"\n [endDateAccessibleName]=\"endDateAccessibleName\"\n (_userSelection)=\"_dateSelected($event)\"\n (dragStarted)=\"_dragStarted($event)\"\n (dragEnded)=\"_dragEnded($event)\"\n [activeDrag]=\"_activeDrag\"></mat-month-view>\n }\n\n @case ('year') {\n <mat-year-view\n [(activeDate)]=\"activeDate\"\n [selected]=\"selected\"\n [dateFilter]=\"dateFilter\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [dateClass]=\"dateClass\"\n (monthSelected)=\"_monthSelectedInYearView($event)\"\n (selectedChange)=\"_goToDateInView($event, 'month')\"></mat-year-view>\n }\n\n @case ('multi-year') {\n <mat-multi-year-view\n [(activeDate)]=\"activeDate\"\n [selected]=\"selected\"\n [dateFilter]=\"dateFilter\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [dateClass]=\"dateClass\"\n (yearSelected)=\"_yearSelectedInMultiYearView($event)\"\n (selectedChange)=\"_goToDateInView($event, 'year')\"></mat-multi-year-view>\n }\n }\n</div>\n", styles: [".mat-calendar{display:block;line-height:normal;font-family:var(--mat-datepicker-calendar-text-font, var(--mat-sys-body-medium-font));font-size:var(--mat-datepicker-calendar-text-size, var(--mat-sys-body-medium-size))}.mat-calendar-header{padding:8px 8px 0 8px}.mat-calendar-content{padding:0 8px 8px 8px;outline:none}.mat-calendar-controls{display:flex;align-items:center;margin:5% calc(4.7142857143% - 16px)}.mat-calendar-spacer{flex:1 1 auto}.mat-calendar-period-button{min-width:0;margin:0 8px;font-size:var(--mat-datepicker-calendar-period-button-text-size, var(--mat-sys-title-small-size));font-weight:var(--mat-datepicker-calendar-period-button-text-weight, var(--mat-sys-title-small-weight));--mdc-text-button-label-text-color:var(--mat-datepicker-calendar-period-button-text-color, var(--mat-sys-on-surface-variant))}.mat-calendar-arrow{display:inline-block;width:10px;height:5px;margin:0 0 0 5px;vertical-align:middle;fill:var(--mat-datepicker-calendar-period-button-icon-color, var(--mat-sys-on-surface-variant))}.mat-calendar-arrow.mat-calendar-invert{transform:rotate(180deg)}[dir=rtl] .mat-calendar-arrow{margin:0 5px 0 0}@media(forced-colors: active){.mat-calendar-arrow{fill:CanvasText}}.mat-calendar-previous-button,.mat-calendar-next-button{position:relative}.mat-datepicker-content .mat-calendar-previous-button:not(.mat-mdc-button-disabled),.mat-datepicker-content .mat-calendar-next-button:not(.mat-mdc-button-disabled){color:var(--mat-datepicker-calendar-navigation-button-icon-color, var(--mat-sys-on-surface-variant))}.mat-calendar-previous-button::after,.mat-calendar-next-button::after{top:0;left:0;right:0;bottom:0;position:absolute;content:\"\";margin:15.5px;border:0 solid currentColor;border-top-width:2px}[dir=rtl] .mat-calendar-previous-button,[dir=rtl] .mat-calendar-next-button{transform:rotate(180deg)}.mat-calendar-previous-button::after{border-left-width:2px;transform:translateX(2px) rotate(-45deg)}.mat-calendar-next-button::after{border-right-width:2px;transform:translateX(-2px) rotate(45deg)}.mat-calendar-table{border-spacing:0;border-collapse:collapse;width:100%}.mat-calendar-table-header th{text-align:center;padding:0 0 8px 0;color:var(--mat-datepicker-calendar-header-text-color, var(--mat-sys-on-surface-variant));font-size:var(--mat-datepicker-calendar-header-text-size, var(--mat-sys-title-small-size));font-weight:var(--mat-datepicker-calendar-header-text-weight, var(--mat-sys-title-small-weight))}.mat-calendar-table-header-divider{position:relative;height:1px}.mat-calendar-table-header-divider::after{content:\"\";position:absolute;top:0;left:-8px;right:-8px;height:1px;background:var(--mat-datepicker-calendar-header-divider-color, transparent)}.mat-calendar-body-cell-content::before{margin:calc(calc(var(--mat-focus-indicator-border-width, 3px) + 3px)*-1)}.mat-calendar-body-cell:focus .mat-focus-indicator::before{content:\"\"}"] }]
2382
+ }, exportAs: 'matCalendar', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [MAT_SINGLE_DATE_SELECTION_MODEL_PROVIDER], imports: [CdkPortalOutlet, CdkMonitorFocus, MatMonthView, MatYearView, MatMultiYearView], template: "<ng-template [cdkPortalOutlet]=\"_calendarHeaderPortal\"></ng-template>\n\n<div class=\"mat-calendar-content\" cdkMonitorSubtreeFocus tabindex=\"-1\">\n @switch (currentView) {\n @case ('month') {\n <mat-month-view\n [(activeDate)]=\"activeDate\"\n [selected]=\"selected\"\n [dateFilter]=\"dateFilter\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [dateClass]=\"dateClass\"\n [comparisonStart]=\"comparisonStart\"\n [comparisonEnd]=\"comparisonEnd\"\n [startDateAccessibleName]=\"startDateAccessibleName\"\n [endDateAccessibleName]=\"endDateAccessibleName\"\n (_userSelection)=\"_dateSelected($event)\"\n (dragStarted)=\"_dragStarted($event)\"\n (dragEnded)=\"_dragEnded($event)\"\n [activeDrag]=\"_activeDrag\"></mat-month-view>\n }\n\n @case ('year') {\n <mat-year-view\n [(activeDate)]=\"activeDate\"\n [selected]=\"selected\"\n [dateFilter]=\"dateFilter\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [dateClass]=\"dateClass\"\n (monthSelected)=\"_monthSelectedInYearView($event)\"\n (selectedChange)=\"_goToDateInView($event, 'month')\"></mat-year-view>\n }\n\n @case ('multi-year') {\n <mat-multi-year-view\n [(activeDate)]=\"activeDate\"\n [selected]=\"selected\"\n [dateFilter]=\"dateFilter\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [dateClass]=\"dateClass\"\n (yearSelected)=\"_yearSelectedInMultiYearView($event)\"\n (selectedChange)=\"_goToDateInView($event, 'year')\"></mat-multi-year-view>\n }\n }\n</div>\n", styles: [".mat-calendar{display:block;line-height:normal;font-family:var(--mat-datepicker-calendar-text-font, var(--mat-sys-body-medium-font));font-size:var(--mat-datepicker-calendar-text-size, var(--mat-sys-body-medium-size))}.mat-calendar-header{padding:8px 8px 0 8px}.mat-calendar-content{padding:0 8px 8px 8px;outline:none}.mat-calendar-controls{display:flex;align-items:center;margin:5% calc(4.7142857143% - 16px)}.mat-calendar-spacer{flex:1 1 auto}.mat-calendar-period-button{min-width:0;margin:0 8px;font-size:var(--mat-datepicker-calendar-period-button-text-size, var(--mat-sys-title-small-size));font-weight:var(--mat-datepicker-calendar-period-button-text-weight, var(--mat-sys-title-small-weight));--mdc-text-button-label-text-color:var(--mat-datepicker-calendar-period-button-text-color, var(--mat-sys-on-surface-variant))}.mat-calendar-arrow{display:inline-block;width:10px;height:5px;margin:0 0 0 5px;vertical-align:middle;fill:var(--mat-datepicker-calendar-period-button-icon-color, var(--mat-sys-on-surface-variant))}.mat-calendar-arrow.mat-calendar-invert{transform:rotate(180deg)}[dir=rtl] .mat-calendar-arrow{margin:0 5px 0 0}@media(forced-colors: active){.mat-calendar-arrow{fill:CanvasText}}.mat-datepicker-content .mat-calendar-previous-button:not(.mat-mdc-button-disabled),.mat-datepicker-content .mat-calendar-next-button:not(.mat-mdc-button-disabled){color:var(--mat-datepicker-calendar-navigation-button-icon-color, var(--mat-sys-on-surface-variant))}[dir=rtl] .mat-calendar-previous-button,[dir=rtl] .mat-calendar-next-button{transform:rotate(180deg)}.mat-calendar-table{border-spacing:0;border-collapse:collapse;width:100%}.mat-calendar-table-header th{text-align:center;padding:0 0 8px 0;color:var(--mat-datepicker-calendar-header-text-color, var(--mat-sys-on-surface-variant));font-size:var(--mat-datepicker-calendar-header-text-size, var(--mat-sys-title-small-size));font-weight:var(--mat-datepicker-calendar-header-text-weight, var(--mat-sys-title-small-weight))}.mat-calendar-table-header-divider{position:relative;height:1px}.mat-calendar-table-header-divider::after{content:\"\";position:absolute;top:0;left:-8px;right:-8px;height:1px;background:var(--mat-datepicker-calendar-header-divider-color, transparent)}.mat-calendar-body-cell-content::before{margin:calc(calc(var(--mat-focus-indicator-border-width, 3px) + 3px)*-1)}.mat-calendar-body-cell:focus .mat-focus-indicator::before{content:\"\"}"] }]
2219
2383
  }], ctorParameters: () => [], propDecorators: { headerComponent: [{
2220
2384
  type: Input
2221
2385
  }], startAt: [{
@@ -2290,8 +2454,6 @@ const matDatepickerAnimations = {
2290
2454
  ]),
2291
2455
  };
2292
2456
 
2293
- /** Used to generate a unique ID for each datepicker instance. */
2294
- let datepickerUid = 0;
2295
2457
  /** Injection token that determines the scroll handling while the calendar is open. */
2296
2458
  const MAT_DATEPICKER_SCROLL_STRATEGY = new InjectionToken('mat-datepicker-scroll-strategy', {
2297
2459
  providedIn: 'root',
@@ -2318,19 +2480,51 @@ const MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER = {
2318
2480
  * @docs-private
2319
2481
  */
2320
2482
  class MatDatepickerContent {
2483
+ _elementRef = inject(ElementRef);
2484
+ _changeDetectorRef = inject(ChangeDetectorRef);
2485
+ _globalModel = inject(MatDateSelectionModel);
2486
+ _dateAdapter = inject(DateAdapter);
2487
+ _rangeSelectionStrategy = inject(MAT_DATE_RANGE_SELECTION_STRATEGY, { optional: true });
2488
+ _subscriptions = new Subscription();
2489
+ _model;
2490
+ /** Reference to the internal calendar component. */
2491
+ _calendar;
2492
+ /**
2493
+ * Theme color of the internal calendar. This API is supported in M2 themes
2494
+ * only, it has no effect in M3 themes.
2495
+ *
2496
+ * For information on applying color variants in M3, see
2497
+ * https://material.angular.io/guide/theming#using-component-color-variants.
2498
+ */
2499
+ color;
2500
+ /** Reference to the datepicker that created the overlay. */
2501
+ datepicker;
2502
+ /** Start of the comparison range. */
2503
+ comparisonStart;
2504
+ /** End of the comparison range. */
2505
+ comparisonEnd;
2506
+ /** ARIA Accessible name of the `<input matStartDate/>` */
2507
+ startDateAccessibleName;
2508
+ /** ARIA Accessible name of the `<input matEndDate/>` */
2509
+ endDateAccessibleName;
2510
+ /** Whether the datepicker is above or below the input. */
2511
+ _isAbove;
2512
+ /** Current state of the animation. */
2513
+ _animationState;
2514
+ /** Emits when an animation has finished. */
2515
+ _animationDone = new Subject();
2516
+ /** Whether there is an in-progress animation. */
2517
+ _isAnimating = false;
2518
+ /** Text for the close button. */
2519
+ _closeButtonText;
2520
+ /** Whether the close button currently has focus. */
2521
+ _closeButtonFocused;
2522
+ /** Portal with projected action buttons. */
2523
+ _actionsPortal = null;
2524
+ /** Id of the label for the `role="dialog"` element. */
2525
+ _dialogLabelId;
2321
2526
  constructor() {
2322
- this._elementRef = inject(ElementRef);
2323
- this._changeDetectorRef = inject(ChangeDetectorRef);
2324
- this._globalModel = inject(MatDateSelectionModel);
2325
- this._dateAdapter = inject(DateAdapter);
2326
- this._rangeSelectionStrategy = inject(MAT_DATE_RANGE_SELECTION_STRATEGY, { optional: true });
2327
- this._subscriptions = new Subscription();
2328
- /** Emits when an animation has finished. */
2329
- this._animationDone = new Subject();
2330
- /** Whether there is an in-progress animation. */
2331
- this._isAnimating = false;
2332
- /** Portal with projected action buttons. */
2333
- this._actionsPortal = null;
2527
+ inject(_CdkPrivateStyleLoader).load(_VisuallyHiddenLoader);
2334
2528
  const intl = inject(MatDatepickerIntl);
2335
2529
  this._closeButtonText = intl.closeCalendarLabel;
2336
2530
  }
@@ -2408,10 +2602,10 @@ class MatDatepickerContent {
2408
2602
  this._changeDetectorRef.detectChanges();
2409
2603
  }
2410
2604
  }
2411
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDatepickerContent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2412
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.0-next.10", type: MatDatepickerContent, isStandalone: true, selector: "mat-datepicker-content", inputs: { color: "color" }, host: { listeners: { "@transformPanel.start": "_handleAnimationEvent($event)", "@transformPanel.done": "_handleAnimationEvent($event)" }, properties: { "class": "color ? \"mat-\" + color : \"\"", "@transformPanel": "_animationState", "class.mat-datepicker-content-touch": "datepicker.touchUi" }, classAttribute: "mat-datepicker-content" }, viewQueries: [{ propertyName: "_calendar", first: true, predicate: MatCalendar, descendants: true }], exportAs: ["matDatepickerContent"], ngImport: i0, template: "<div\n cdkTrapFocus\n role=\"dialog\"\n [attr.aria-modal]=\"true\"\n [attr.aria-labelledby]=\"_dialogLabelId ?? undefined\"\n class=\"mat-datepicker-content-container\"\n [class.mat-datepicker-content-container-with-custom-header]=\"datepicker.calendarHeaderComponent\"\n [class.mat-datepicker-content-container-with-actions]=\"_actionsPortal\">\n <mat-calendar\n [id]=\"datepicker.id\"\n [class]=\"datepicker.panelClass\"\n [startAt]=\"datepicker.startAt\"\n [startView]=\"datepicker.startView\"\n [minDate]=\"datepicker._getMinDate()\"\n [maxDate]=\"datepicker._getMaxDate()\"\n [dateFilter]=\"datepicker._getDateFilter()\"\n [headerComponent]=\"datepicker.calendarHeaderComponent\"\n [selected]=\"_getSelected()\"\n [dateClass]=\"datepicker.dateClass\"\n [comparisonStart]=\"comparisonStart\"\n [comparisonEnd]=\"comparisonEnd\"\n [@fadeInCalendar]=\"'enter'\"\n [startDateAccessibleName]=\"startDateAccessibleName\"\n [endDateAccessibleName]=\"endDateAccessibleName\"\n (yearSelected)=\"datepicker._selectYear($event)\"\n (monthSelected)=\"datepicker._selectMonth($event)\"\n (viewChanged)=\"datepicker._viewChanged($event)\"\n (_userSelection)=\"_handleUserSelection($event)\"\n (_userDragDrop)=\"_handleUserDragDrop($event)\"></mat-calendar>\n\n <ng-template [cdkPortalOutlet]=\"_actionsPortal\"></ng-template>\n\n <!-- Invisible close button for screen reader users. -->\n <button\n type=\"button\"\n mat-raised-button\n [color]=\"color || 'primary'\"\n class=\"mat-datepicker-close-button\"\n [class.cdk-visually-hidden]=\"!_closeButtonFocused\"\n (focus)=\"_closeButtonFocused = true\"\n (blur)=\"_closeButtonFocused = false\"\n (click)=\"datepicker.close()\">{{ _closeButtonText }}</button>\n</div>\n", styles: [".mat-datepicker-content{display:block;border-radius:4px;background-color:var(--mat-datepicker-calendar-container-background-color, var(--mat-sys-surface-container-high));color:var(--mat-datepicker-calendar-container-text-color, var(--mat-sys-on-surface));box-shadow:var(--mat-datepicker-calendar-container-elevation-shadow, 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12));border-radius:var(--mat-datepicker-calendar-container-shape, var(--mat-sys-corner-large))}.mat-datepicker-content .mat-calendar{width:296px;height:354px}.mat-datepicker-content .mat-datepicker-content-container-with-custom-header .mat-calendar{height:auto}.mat-datepicker-content .mat-datepicker-close-button{position:absolute;top:100%;left:0;margin-top:8px}.ng-animating .mat-datepicker-content .mat-datepicker-close-button{display:none}.mat-datepicker-content-container{display:flex;flex-direction:column;justify-content:space-between}.mat-datepicker-content-touch{display:block;max-height:80vh;box-shadow:var(--mat-datepicker-calendar-container-touch-elevation-shadow, 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12));border-radius:var(--mat-datepicker-calendar-container-touch-shape, var(--mat-sys-corner-extra-large));position:relative;overflow:visible}.mat-datepicker-content-touch .mat-datepicker-content-container{min-height:312px;max-height:788px;min-width:250px;max-width:750px}.mat-datepicker-content-touch .mat-calendar{width:100%;height:auto}@media all and (orientation: landscape){.mat-datepicker-content-touch .mat-datepicker-content-container{width:64vh;height:80vh}}@media all and (orientation: portrait){.mat-datepicker-content-touch .mat-datepicker-content-container{width:80vw;height:100vw}.mat-datepicker-content-touch .mat-datepicker-content-container-with-actions{height:115vw}}"], dependencies: [{ kind: "directive", type: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: MatCalendar, selector: "mat-calendar", inputs: ["headerComponent", "startAt", "startView", "selected", "minDate", "maxDate", "dateFilter", "dateClass", "comparisonStart", "comparisonEnd", "startDateAccessibleName", "endDateAccessibleName"], outputs: ["selectedChange", "yearSelected", "monthSelected", "viewChanged", "_userSelection", "_userDragDrop"], exportAs: ["matCalendar"] }, { kind: "directive", type: CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }], animations: [matDatepickerAnimations.transformPanel, matDatepickerAnimations.fadeInCalendar], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
2605
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatDatepickerContent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2606
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.0-rc.0", type: MatDatepickerContent, isStandalone: true, selector: "mat-datepicker-content", inputs: { color: "color" }, host: { listeners: { "@transformPanel.start": "_handleAnimationEvent($event)", "@transformPanel.done": "_handleAnimationEvent($event)" }, properties: { "class": "color ? \"mat-\" + color : \"\"", "@transformPanel": "_animationState", "class.mat-datepicker-content-touch": "datepicker.touchUi" }, classAttribute: "mat-datepicker-content" }, viewQueries: [{ propertyName: "_calendar", first: true, predicate: MatCalendar, descendants: true }], exportAs: ["matDatepickerContent"], ngImport: i0, template: "<div\n cdkTrapFocus\n role=\"dialog\"\n [attr.aria-modal]=\"true\"\n [attr.aria-labelledby]=\"_dialogLabelId ?? undefined\"\n class=\"mat-datepicker-content-container\"\n [class.mat-datepicker-content-container-with-custom-header]=\"datepicker.calendarHeaderComponent\"\n [class.mat-datepicker-content-container-with-actions]=\"_actionsPortal\">\n <mat-calendar\n [id]=\"datepicker.id\"\n [class]=\"datepicker.panelClass\"\n [startAt]=\"datepicker.startAt\"\n [startView]=\"datepicker.startView\"\n [minDate]=\"datepicker._getMinDate()\"\n [maxDate]=\"datepicker._getMaxDate()\"\n [dateFilter]=\"datepicker._getDateFilter()\"\n [headerComponent]=\"datepicker.calendarHeaderComponent\"\n [selected]=\"_getSelected()\"\n [dateClass]=\"datepicker.dateClass\"\n [comparisonStart]=\"comparisonStart\"\n [comparisonEnd]=\"comparisonEnd\"\n [@fadeInCalendar]=\"'enter'\"\n [startDateAccessibleName]=\"startDateAccessibleName\"\n [endDateAccessibleName]=\"endDateAccessibleName\"\n (yearSelected)=\"datepicker._selectYear($event)\"\n (monthSelected)=\"datepicker._selectMonth($event)\"\n (viewChanged)=\"datepicker._viewChanged($event)\"\n (_userSelection)=\"_handleUserSelection($event)\"\n (_userDragDrop)=\"_handleUserDragDrop($event)\"></mat-calendar>\n\n <ng-template [cdkPortalOutlet]=\"_actionsPortal\"></ng-template>\n\n <!-- Invisible close button for screen reader users. -->\n <button\n type=\"button\"\n mat-raised-button\n [color]=\"color || 'primary'\"\n class=\"mat-datepicker-close-button\"\n [class.cdk-visually-hidden]=\"!_closeButtonFocused\"\n (focus)=\"_closeButtonFocused = true\"\n (blur)=\"_closeButtonFocused = false\"\n (click)=\"datepicker.close()\">{{ _closeButtonText }}</button>\n</div>\n", styles: [".mat-datepicker-content{display:block;border-radius:4px;background-color:var(--mat-datepicker-calendar-container-background-color, var(--mat-sys-surface-container-high));color:var(--mat-datepicker-calendar-container-text-color, var(--mat-sys-on-surface));box-shadow:var(--mat-datepicker-calendar-container-elevation-shadow, 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12));border-radius:var(--mat-datepicker-calendar-container-shape, var(--mat-sys-corner-large))}.mat-datepicker-content .mat-calendar{width:296px;height:354px}.mat-datepicker-content .mat-datepicker-content-container-with-custom-header .mat-calendar{height:auto}.mat-datepicker-content .mat-datepicker-close-button{position:absolute;top:100%;left:0;margin-top:8px}.ng-animating .mat-datepicker-content .mat-datepicker-close-button{display:none}.mat-datepicker-content-container{display:flex;flex-direction:column;justify-content:space-between}.mat-datepicker-content-touch{display:block;max-height:80vh;box-shadow:var(--mat-datepicker-calendar-container-touch-elevation-shadow, 0px 0px 0px 0px rgba(0, 0, 0, 0.2), 0px 0px 0px 0px rgba(0, 0, 0, 0.14), 0px 0px 0px 0px rgba(0, 0, 0, 0.12));border-radius:var(--mat-datepicker-calendar-container-touch-shape, var(--mat-sys-corner-extra-large));position:relative;overflow:visible}.mat-datepicker-content-touch .mat-datepicker-content-container{min-height:312px;max-height:788px;min-width:250px;max-width:750px}.mat-datepicker-content-touch .mat-calendar{width:100%;height:auto}@media all and (orientation: landscape){.mat-datepicker-content-touch .mat-datepicker-content-container{width:64vh;height:80vh}}@media all and (orientation: portrait){.mat-datepicker-content-touch .mat-datepicker-content-container{width:80vw;height:100vw}.mat-datepicker-content-touch .mat-datepicker-content-container-with-actions{height:115vw}}"], dependencies: [{ kind: "directive", type: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: MatCalendar, selector: "mat-calendar", inputs: ["headerComponent", "startAt", "startView", "selected", "minDate", "maxDate", "dateFilter", "dateClass", "comparisonStart", "comparisonEnd", "startDateAccessibleName", "endDateAccessibleName"], outputs: ["selectedChange", "yearSelected", "monthSelected", "viewChanged", "_userSelection", "_userDragDrop"], exportAs: ["matCalendar"] }, { kind: "directive", type: CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }], animations: [matDatepickerAnimations.transformPanel, matDatepickerAnimations.fadeInCalendar], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
2413
2607
  }
2414
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDatepickerContent, decorators: [{
2608
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatDatepickerContent, decorators: [{
2415
2609
  type: Component,
2416
2610
  args: [{ selector: 'mat-datepicker-content', host: {
2417
2611
  'class': 'mat-datepicker-content',
@@ -2429,6 +2623,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10",
2429
2623
  }] } });
2430
2624
  /** Base class for a datepicker. */
2431
2625
  class MatDatepickerBase {
2626
+ _overlay = inject(Overlay);
2627
+ _viewContainerRef = inject(ViewContainerRef);
2628
+ _dateAdapter = inject(DateAdapter, { optional: true });
2629
+ _dir = inject(Directionality, { optional: true });
2630
+ _model = inject(MatDateSelectionModel);
2631
+ _scrollStrategy = inject(MAT_DATEPICKER_SCROLL_STRATEGY);
2632
+ _inputStateChanges = Subscription.EMPTY;
2633
+ _document = inject(DOCUMENT);
2634
+ /** An input indicating the type of the custom header component for the calendar, if set. */
2635
+ calendarHeaderComponent;
2432
2636
  /** The date to open the calendar to initially. */
2433
2637
  get startAt() {
2434
2638
  // If an explicit startAt is set we start there, otherwise we start at whatever the currently
@@ -2438,6 +2642,9 @@ class MatDatepickerBase {
2438
2642
  set startAt(value) {
2439
2643
  this._startAt = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value));
2440
2644
  }
2645
+ _startAt;
2646
+ /** The view that the calendar should start in. */
2647
+ startView = 'month';
2441
2648
  /**
2442
2649
  * Theme color of the datepicker's calendar. This API is supported in M2 themes only, it
2443
2650
  * has no effect in M3 themes.
@@ -2451,6 +2658,12 @@ class MatDatepickerBase {
2451
2658
  set color(value) {
2452
2659
  this._color = value;
2453
2660
  }
2661
+ _color;
2662
+ /**
2663
+ * Whether the calendar UI is in touch mode. In touch mode the calendar opens in a dialog rather
2664
+ * than a dropdown and elements have more padding to allow for bigger touch targets.
2665
+ */
2666
+ touchUi = false;
2454
2667
  /** Whether the datepicker pop-up should be disabled. */
2455
2668
  get disabled() {
2456
2669
  return this._disabled === undefined && this.datepickerInput
@@ -2463,6 +2676,37 @@ class MatDatepickerBase {
2463
2676
  this.stateChanges.next(undefined);
2464
2677
  }
2465
2678
  }
2679
+ _disabled;
2680
+ /** Preferred position of the datepicker in the X axis. */
2681
+ xPosition = 'start';
2682
+ /** Preferred position of the datepicker in the Y axis. */
2683
+ yPosition = 'below';
2684
+ /**
2685
+ * Whether to restore focus to the previously-focused element when the calendar is closed.
2686
+ * Note that automatic focus restoration is an accessibility feature and it is recommended that
2687
+ * you provide your own equivalent, if you decide to turn it off.
2688
+ */
2689
+ restoreFocus = true;
2690
+ /**
2691
+ * Emits selected year in multiyear view.
2692
+ * This doesn't imply a change on the selected date.
2693
+ */
2694
+ yearSelected = new EventEmitter();
2695
+ /**
2696
+ * Emits selected month in year view.
2697
+ * This doesn't imply a change on the selected date.
2698
+ */
2699
+ monthSelected = new EventEmitter();
2700
+ /**
2701
+ * Emits when the current view changes.
2702
+ */
2703
+ viewChanged = new EventEmitter(true);
2704
+ /** Function that can be used to add custom CSS classes to dates. */
2705
+ dateClass;
2706
+ /** Emits when the datepicker has been opened. */
2707
+ openedStream = new EventEmitter();
2708
+ /** Emits when the datepicker has been closed. */
2709
+ closedStream = new EventEmitter();
2466
2710
  /** Classes to be passed to the date picker panel. */
2467
2711
  get panelClass() {
2468
2712
  return this._panelClass;
@@ -2470,6 +2714,7 @@ class MatDatepickerBase {
2470
2714
  set panelClass(value) {
2471
2715
  this._panelClass = coerceStringArray(value);
2472
2716
  }
2717
+ _panelClass;
2473
2718
  /** Whether the calendar is open. */
2474
2719
  get opened() {
2475
2720
  return this._opened;
@@ -2482,6 +2727,9 @@ class MatDatepickerBase {
2482
2727
  this.close();
2483
2728
  }
2484
2729
  }
2730
+ _opened = false;
2731
+ /** The id for the datepicker calendar. */
2732
+ id = inject(_IdGenerator).getId('mat-datepicker-');
2485
2733
  /** The minimum selectable date. */
2486
2734
  _getMinDate() {
2487
2735
  return this.datepickerInput && this.datepickerInput.min;
@@ -2493,61 +2741,23 @@ class MatDatepickerBase {
2493
2741
  _getDateFilter() {
2494
2742
  return this.datepickerInput && this.datepickerInput.dateFilter;
2495
2743
  }
2744
+ /** A reference to the overlay into which we've rendered the calendar. */
2745
+ _overlayRef;
2746
+ /** Reference to the component instance rendered in the overlay. */
2747
+ _componentRef;
2748
+ /** The element that was focused before the datepicker was opened. */
2749
+ _focusedElementBeforeOpen = null;
2750
+ /** Unique class that will be added to the backdrop so that the test harnesses can look it up. */
2751
+ _backdropHarnessClass = `${this.id}-backdrop`;
2752
+ /** Currently-registered actions portal. */
2753
+ _actionsPortal;
2754
+ /** The input element this datepicker is associated with. */
2755
+ datepickerInput;
2756
+ /** Emits when the datepicker's state changes. */
2757
+ stateChanges = new Subject();
2758
+ _injector = inject(Injector);
2759
+ _changeDetectorRef = inject(ChangeDetectorRef);
2496
2760
  constructor() {
2497
- this._overlay = inject(Overlay);
2498
- this._viewContainerRef = inject(ViewContainerRef);
2499
- this._dateAdapter = inject(DateAdapter, { optional: true });
2500
- this._dir = inject(Directionality, { optional: true });
2501
- this._model = inject(MatDateSelectionModel);
2502
- this._scrollStrategy = inject(MAT_DATEPICKER_SCROLL_STRATEGY);
2503
- this._inputStateChanges = Subscription.EMPTY;
2504
- this._document = inject(DOCUMENT);
2505
- /** The view that the calendar should start in. */
2506
- this.startView = 'month';
2507
- /**
2508
- * Whether the calendar UI is in touch mode. In touch mode the calendar opens in a dialog rather
2509
- * than a dropdown and elements have more padding to allow for bigger touch targets.
2510
- */
2511
- this.touchUi = false;
2512
- /** Preferred position of the datepicker in the X axis. */
2513
- this.xPosition = 'start';
2514
- /** Preferred position of the datepicker in the Y axis. */
2515
- this.yPosition = 'below';
2516
- /**
2517
- * Whether to restore focus to the previously-focused element when the calendar is closed.
2518
- * Note that automatic focus restoration is an accessibility feature and it is recommended that
2519
- * you provide your own equivalent, if you decide to turn it off.
2520
- */
2521
- this.restoreFocus = true;
2522
- /**
2523
- * Emits selected year in multiyear view.
2524
- * This doesn't imply a change on the selected date.
2525
- */
2526
- this.yearSelected = new EventEmitter();
2527
- /**
2528
- * Emits selected month in year view.
2529
- * This doesn't imply a change on the selected date.
2530
- */
2531
- this.monthSelected = new EventEmitter();
2532
- /**
2533
- * Emits when the current view changes.
2534
- */
2535
- this.viewChanged = new EventEmitter(true);
2536
- /** Emits when the datepicker has been opened. */
2537
- this.openedStream = new EventEmitter();
2538
- /** Emits when the datepicker has been closed. */
2539
- this.closedStream = new EventEmitter();
2540
- this._opened = false;
2541
- /** The id for the datepicker calendar. */
2542
- this.id = `mat-datepicker-${datepickerUid++}`;
2543
- /** The element that was focused before the datepicker was opened. */
2544
- this._focusedElementBeforeOpen = null;
2545
- /** Unique class that will be added to the backdrop so that the test harnesses can look it up. */
2546
- this._backdropHarnessClass = `${this.id}-backdrop`;
2547
- /** Emits when the datepicker's state changes. */
2548
- this.stateChanges = new Subject();
2549
- this._injector = inject(Injector);
2550
- this._changeDetectorRef = inject(ChangeDetectorRef);
2551
2761
  if (!this._dateAdapter && (typeof ngDevMode === 'undefined' || ngDevMode)) {
2552
2762
  throw createMissingDateImplError('DateAdapter');
2553
2763
  }
@@ -2811,10 +3021,10 @@ class MatDatepickerBase {
2811
3021
  ctrlShiftMetaModifiers.every((modifier) => !hasModifierKey(event, modifier))));
2812
3022
  })));
2813
3023
  }
2814
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDatepickerBase, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
2815
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "19.0.0-next.10", type: MatDatepickerBase, isStandalone: true, inputs: { calendarHeaderComponent: "calendarHeaderComponent", startAt: "startAt", startView: "startView", color: "color", touchUi: ["touchUi", "touchUi", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], xPosition: "xPosition", yPosition: "yPosition", restoreFocus: ["restoreFocus", "restoreFocus", booleanAttribute], dateClass: "dateClass", panelClass: "panelClass", opened: ["opened", "opened", booleanAttribute] }, outputs: { yearSelected: "yearSelected", monthSelected: "monthSelected", viewChanged: "viewChanged", openedStream: "opened", closedStream: "closed" }, usesOnChanges: true, ngImport: i0 }); }
3024
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatDatepickerBase, deps: [], target: i0.ɵɵFactoryTarget.Directive });
3025
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "19.0.0-rc.0", type: MatDatepickerBase, isStandalone: true, inputs: { calendarHeaderComponent: "calendarHeaderComponent", startAt: "startAt", startView: "startView", color: "color", touchUi: ["touchUi", "touchUi", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], xPosition: "xPosition", yPosition: "yPosition", restoreFocus: ["restoreFocus", "restoreFocus", booleanAttribute], dateClass: "dateClass", panelClass: "panelClass", opened: ["opened", "opened", booleanAttribute] }, outputs: { yearSelected: "yearSelected", monthSelected: "monthSelected", viewChanged: "viewChanged", openedStream: "opened", closedStream: "closed" }, usesOnChanges: true, ngImport: i0 });
2816
3026
  }
2817
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDatepickerBase, decorators: [{
3027
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatDatepickerBase, decorators: [{
2818
3028
  type: Directive
2819
3029
  }], ctorParameters: () => [], propDecorators: { calendarHeaderComponent: [{
2820
3030
  type: Input
@@ -2863,13 +3073,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10",
2863
3073
  // if angular adds support for `exportAs: '$implicit'` on directives.
2864
3074
  /** Component responsible for managing the datepicker popup/dialog. */
2865
3075
  class MatDatepicker extends MatDatepickerBase {
2866
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDatepicker, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
2867
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.0-next.10", type: MatDatepicker, isStandalone: true, selector: "mat-datepicker", providers: [
3076
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatDatepicker, deps: null, target: i0.ɵɵFactoryTarget.Component });
3077
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.0-rc.0", type: MatDatepicker, isStandalone: true, selector: "mat-datepicker", providers: [
2868
3078
  MAT_SINGLE_DATE_SELECTION_MODEL_PROVIDER,
2869
3079
  { provide: MatDatepickerBase, useExisting: MatDatepicker },
2870
- ], exportAs: ["matDatepicker"], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
3080
+ ], exportAs: ["matDatepicker"], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
2871
3081
  }
2872
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDatepicker, decorators: [{
3082
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatDatepicker, decorators: [{
2873
3083
  type: Component,
2874
3084
  args: [{
2875
3085
  selector: 'mat-datepicker',
@@ -2890,6 +3100,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10",
2890
3100
  * calendar popup. For consistency, we always use MatDatepickerInputEvent instead.
2891
3101
  */
2892
3102
  class MatDatepickerInputEvent {
3103
+ target;
3104
+ targetElement;
3105
+ /** The new value for the target datepicker input. */
3106
+ value;
2893
3107
  constructor(
2894
3108
  /** Reference to the datepicker input component that emitted the event. */
2895
3109
  target,
@@ -2902,6 +3116,11 @@ class MatDatepickerInputEvent {
2902
3116
  }
2903
3117
  /** Base class for datepicker inputs. */
2904
3118
  class MatDatepickerInputBase {
3119
+ _elementRef = inject(ElementRef);
3120
+ _dateAdapter = inject(DateAdapter, { optional: true });
3121
+ _dateFormats = inject(MAT_DATE_FORMATS, { optional: true });
3122
+ /** Whether the component has been initialized. */
3123
+ _isInitialized;
2905
3124
  /** The value of the input. */
2906
3125
  get value() {
2907
3126
  return this._model ? this._getValueFromModel(this._model.selection) : this._pendingValue;
@@ -2909,6 +3128,7 @@ class MatDatepickerInputBase {
2909
3128
  set value(value) {
2910
3129
  this._assignValueProgrammatically(value);
2911
3130
  }
3131
+ _model;
2912
3132
  /** Whether the datepicker-input is disabled. */
2913
3133
  get disabled() {
2914
3134
  return !!this._disabled || this._parentDisabled();
@@ -2931,6 +3151,53 @@ class MatDatepickerInputBase {
2931
3151
  element.blur();
2932
3152
  }
2933
3153
  }
3154
+ _disabled;
3155
+ /** Emits when a `change` event is fired on this `<input>`. */
3156
+ dateChange = new EventEmitter();
3157
+ /** Emits when an `input` event is fired on this `<input>`. */
3158
+ dateInput = new EventEmitter();
3159
+ /** Emits when the internal state has changed */
3160
+ stateChanges = new Subject();
3161
+ _onTouched = () => { };
3162
+ _validatorOnChange = () => { };
3163
+ _cvaOnChange = () => { };
3164
+ _valueChangesSubscription = Subscription.EMPTY;
3165
+ _localeSubscription = Subscription.EMPTY;
3166
+ /**
3167
+ * Since the value is kept on the model which is assigned in an Input,
3168
+ * we might get a value before we have a model. This property keeps track
3169
+ * of the value until we have somewhere to assign it.
3170
+ */
3171
+ _pendingValue;
3172
+ /** The form control validator for whether the input parses. */
3173
+ _parseValidator = () => {
3174
+ return this._lastValueValid
3175
+ ? null
3176
+ : { 'matDatepickerParse': { 'text': this._elementRef.nativeElement.value } };
3177
+ };
3178
+ /** The form control validator for the date filter. */
3179
+ _filterValidator = (control) => {
3180
+ const controlValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(control.value));
3181
+ return !controlValue || this._matchesFilter(controlValue)
3182
+ ? null
3183
+ : { 'matDatepickerFilter': true };
3184
+ };
3185
+ /** The form control validator for the min date. */
3186
+ _minValidator = (control) => {
3187
+ const controlValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(control.value));
3188
+ const min = this._getMinDate();
3189
+ return !min || !controlValue || this._dateAdapter.compareDate(min, controlValue) <= 0
3190
+ ? null
3191
+ : { 'matDatepickerMin': { 'min': min, 'actual': controlValue } };
3192
+ };
3193
+ /** The form control validator for the max date. */
3194
+ _maxValidator = (control) => {
3195
+ const controlValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(control.value));
3196
+ const max = this._getMaxDate();
3197
+ return !max || !controlValue || this._dateAdapter.compareDate(max, controlValue) >= 0
3198
+ ? null
3199
+ : { 'matDatepickerMax': { 'max': max, 'actual': controlValue } };
3200
+ };
2934
3201
  /** Gets the base validator functions. */
2935
3202
  _getValidators() {
2936
3203
  return [this._parseValidator, this._minValidator, this._maxValidator, this._filterValidator];
@@ -2954,52 +3221,9 @@ class MatDatepickerInputBase {
2954
3221
  }
2955
3222
  });
2956
3223
  }
3224
+ /** Whether the last value set on the input was valid. */
3225
+ _lastValueValid = false;
2957
3226
  constructor() {
2958
- this._elementRef = inject(ElementRef);
2959
- this._dateAdapter = inject(DateAdapter, { optional: true });
2960
- this._dateFormats = inject(MAT_DATE_FORMATS, { optional: true });
2961
- /** Emits when a `change` event is fired on this `<input>`. */
2962
- this.dateChange = new EventEmitter();
2963
- /** Emits when an `input` event is fired on this `<input>`. */
2964
- this.dateInput = new EventEmitter();
2965
- /** Emits when the internal state has changed */
2966
- this.stateChanges = new Subject();
2967
- this._onTouched = () => { };
2968
- this._validatorOnChange = () => { };
2969
- this._cvaOnChange = () => { };
2970
- this._valueChangesSubscription = Subscription.EMPTY;
2971
- this._localeSubscription = Subscription.EMPTY;
2972
- /** The form control validator for whether the input parses. */
2973
- this._parseValidator = () => {
2974
- return this._lastValueValid
2975
- ? null
2976
- : { 'matDatepickerParse': { 'text': this._elementRef.nativeElement.value } };
2977
- };
2978
- /** The form control validator for the date filter. */
2979
- this._filterValidator = (control) => {
2980
- const controlValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(control.value));
2981
- return !controlValue || this._matchesFilter(controlValue)
2982
- ? null
2983
- : { 'matDatepickerFilter': true };
2984
- };
2985
- /** The form control validator for the min date. */
2986
- this._minValidator = (control) => {
2987
- const controlValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(control.value));
2988
- const min = this._getMinDate();
2989
- return !min || !controlValue || this._dateAdapter.compareDate(min, controlValue) <= 0
2990
- ? null
2991
- : { 'matDatepickerMin': { 'min': min, 'actual': controlValue } };
2992
- };
2993
- /** The form control validator for the max date. */
2994
- this._maxValidator = (control) => {
2995
- const controlValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(control.value));
2996
- const max = this._getMaxDate();
2997
- return !max || !controlValue || this._dateAdapter.compareDate(max, controlValue) >= 0
2998
- ? null
2999
- : { 'matDatepickerMax': { 'max': max, 'actual': controlValue } };
3000
- };
3001
- /** Whether the last value set on the input was valid. */
3002
- this._lastValueValid = false;
3003
3227
  if (typeof ngDevMode === 'undefined' || ngDevMode) {
3004
3228
  if (!this._dateAdapter) {
3005
3229
  throw createMissingDateImplError('DateAdapter');
@@ -3138,10 +3362,10 @@ class MatDatepickerInputBase {
3138
3362
  const filter = this._getDateFilter();
3139
3363
  return !filter || filter(value);
3140
3364
  }
3141
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDatepickerInputBase, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
3142
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "19.0.0-next.10", type: MatDatepickerInputBase, isStandalone: true, inputs: { value: "value", disabled: ["disabled", "disabled", booleanAttribute] }, outputs: { dateChange: "dateChange", dateInput: "dateInput" }, usesOnChanges: true, ngImport: i0 }); }
3365
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatDatepickerInputBase, deps: [], target: i0.ɵɵFactoryTarget.Directive });
3366
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "19.0.0-rc.0", type: MatDatepickerInputBase, isStandalone: true, inputs: { value: "value", disabled: ["disabled", "disabled", booleanAttribute] }, outputs: { dateChange: "dateChange", dateInput: "dateInput" }, usesOnChanges: true, ngImport: i0 });
3143
3367
  }
3144
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDatepickerInputBase, decorators: [{
3368
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatDatepickerInputBase, decorators: [{
3145
3369
  type: Directive
3146
3370
  }], ctorParameters: () => [], propDecorators: { value: [{
3147
3371
  type: Input
@@ -3187,6 +3411,9 @@ const MAT_DATEPICKER_VALIDATORS = {
3187
3411
  };
3188
3412
  /** Directive used to connect an input to a MatDatepicker. */
3189
3413
  class MatDatepickerInput extends MatDatepickerInputBase {
3414
+ _formField = inject(MAT_FORM_FIELD, { optional: true });
3415
+ _closedSubscription = Subscription.EMPTY;
3416
+ _openedSubscription = Subscription.EMPTY;
3190
3417
  /** The datepicker that this input is associated with. */
3191
3418
  set matDatepicker(datepicker) {
3192
3419
  if (datepicker) {
@@ -3202,6 +3429,9 @@ class MatDatepickerInput extends MatDatepickerInputBase {
3202
3429
  this._registerModel(datepicker.registerInput(this));
3203
3430
  }
3204
3431
  }
3432
+ _datepicker;
3433
+ /** The id of the panel owned by this input. */
3434
+ _ariaOwns = signal(null);
3205
3435
  /** The minimum valid date. */
3206
3436
  get min() {
3207
3437
  return this._min;
@@ -3213,6 +3443,7 @@ class MatDatepickerInput extends MatDatepickerInputBase {
3213
3443
  this._validatorOnChange();
3214
3444
  }
3215
3445
  }
3446
+ _min;
3216
3447
  /** The maximum valid date. */
3217
3448
  get max() {
3218
3449
  return this._max;
@@ -3224,6 +3455,7 @@ class MatDatepickerInput extends MatDatepickerInputBase {
3224
3455
  this._validatorOnChange();
3225
3456
  }
3226
3457
  }
3458
+ _max;
3227
3459
  /** Function that can be used to filter out dates within the datepicker. */
3228
3460
  get dateFilter() {
3229
3461
  return this._dateFilter;
@@ -3235,13 +3467,11 @@ class MatDatepickerInput extends MatDatepickerInputBase {
3235
3467
  this._validatorOnChange();
3236
3468
  }
3237
3469
  }
3470
+ _dateFilter;
3471
+ /** The combined form control validator for this input. */
3472
+ _validator;
3238
3473
  constructor() {
3239
3474
  super();
3240
- this._formField = inject(MAT_FORM_FIELD, { optional: true });
3241
- this._closedSubscription = Subscription.EMPTY;
3242
- this._openedSubscription = Subscription.EMPTY;
3243
- /** The id of the panel owned by this input. */
3244
- this._ariaOwns = signal(null);
3245
3475
  this._validator = Validators.compose(super._getValidators());
3246
3476
  }
3247
3477
  /**
@@ -3300,14 +3530,14 @@ class MatDatepickerInput extends MatDatepickerInputBase {
3300
3530
  _shouldHandleChangeEvent(event) {
3301
3531
  return event.source !== this;
3302
3532
  }
3303
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDatepickerInput, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
3304
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0-next.10", type: MatDatepickerInput, isStandalone: true, selector: "input[matDatepicker]", inputs: { matDatepicker: "matDatepicker", min: "min", max: "max", dateFilter: ["matDatepickerFilter", "dateFilter"] }, host: { listeners: { "input": "_onInput($event.target.value)", "change": "_onChange()", "blur": "_onBlur()", "keydown": "_onKeydown($event)" }, properties: { "attr.aria-haspopup": "_datepicker ? \"dialog\" : null", "attr.aria-owns": "_ariaOwns()", "attr.min": "min ? _dateAdapter.toIso8601(min) : null", "attr.max": "max ? _dateAdapter.toIso8601(max) : null", "attr.data-mat-calendar": "_datepicker ? _datepicker.id : null", "disabled": "disabled" }, classAttribute: "mat-datepicker-input" }, providers: [
3533
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatDatepickerInput, deps: [], target: i0.ɵɵFactoryTarget.Directive });
3534
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0-rc.0", type: MatDatepickerInput, isStandalone: true, selector: "input[matDatepicker]", inputs: { matDatepicker: "matDatepicker", min: "min", max: "max", dateFilter: ["matDatepickerFilter", "dateFilter"] }, host: { listeners: { "input": "_onInput($event.target.value)", "change": "_onChange()", "blur": "_onBlur()", "keydown": "_onKeydown($event)" }, properties: { "attr.aria-haspopup": "_datepicker ? \"dialog\" : null", "attr.aria-owns": "_ariaOwns()", "attr.min": "min ? _dateAdapter.toIso8601(min) : null", "attr.max": "max ? _dateAdapter.toIso8601(max) : null", "attr.data-mat-calendar": "_datepicker ? _datepicker.id : null", "disabled": "disabled" }, classAttribute: "mat-datepicker-input" }, providers: [
3305
3535
  MAT_DATEPICKER_VALUE_ACCESSOR,
3306
3536
  MAT_DATEPICKER_VALIDATORS,
3307
3537
  { provide: MAT_INPUT_VALUE_ACCESSOR, useExisting: MatDatepickerInput },
3308
- ], exportAs: ["matDatepickerInput"], usesInheritance: true, ngImport: i0 }); }
3538
+ ], exportAs: ["matDatepickerInput"], usesInheritance: true, ngImport: i0 });
3309
3539
  }
3310
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDatepickerInput, decorators: [{
3540
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatDatepickerInput, decorators: [{
3311
3541
  type: Directive,
3312
3542
  args: [{
3313
3543
  selector: 'input[matDatepicker]',
@@ -3346,16 +3576,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10",
3346
3576
 
3347
3577
  /** Can be used to override the icon of a `matDatepickerToggle`. */
3348
3578
  class MatDatepickerToggleIcon {
3349
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDatepickerToggleIcon, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
3350
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0-next.10", type: MatDatepickerToggleIcon, isStandalone: true, selector: "[matDatepickerToggleIcon]", ngImport: i0 }); }
3579
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatDatepickerToggleIcon, deps: [], target: i0.ɵɵFactoryTarget.Directive });
3580
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0-rc.0", type: MatDatepickerToggleIcon, isStandalone: true, selector: "[matDatepickerToggleIcon]", ngImport: i0 });
3351
3581
  }
3352
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDatepickerToggleIcon, decorators: [{
3582
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatDatepickerToggleIcon, decorators: [{
3353
3583
  type: Directive,
3354
3584
  args: [{
3355
3585
  selector: '[matDatepickerToggleIcon]',
3356
3586
  }]
3357
3587
  }] });
3358
3588
  class MatDatepickerToggle {
3589
+ _intl = inject(MatDatepickerIntl);
3590
+ _changeDetectorRef = inject(ChangeDetectorRef);
3591
+ _stateChanges = Subscription.EMPTY;
3592
+ /** Datepicker instance that the button will toggle. */
3593
+ datepicker;
3594
+ /** Tabindex for the toggle. */
3595
+ tabIndex;
3596
+ /** Screen-reader label for the button. */
3597
+ ariaLabel;
3359
3598
  /** Whether the toggle button is disabled. */
3360
3599
  get disabled() {
3361
3600
  if (this._disabled === undefined && this.datepicker) {
@@ -3366,10 +3605,14 @@ class MatDatepickerToggle {
3366
3605
  set disabled(value) {
3367
3606
  this._disabled = value;
3368
3607
  }
3608
+ _disabled;
3609
+ /** Whether ripples on the toggle should be disabled. */
3610
+ disableRipple;
3611
+ /** Custom icon set by the consumer. */
3612
+ _customIcon;
3613
+ /** Underlying button element. */
3614
+ _button;
3369
3615
  constructor() {
3370
- this._intl = inject(MatDatepickerIntl);
3371
- this._changeDetectorRef = inject(ChangeDetectorRef);
3372
- this._stateChanges = Subscription.EMPTY;
3373
3616
  const defaultTabIndex = inject(new HostAttributeToken('tabindex'), { optional: true });
3374
3617
  const parsedTabIndex = Number(defaultTabIndex);
3375
3618
  this.tabIndex = parsedTabIndex || parsedTabIndex === 0 ? parsedTabIndex : null;
@@ -3402,10 +3645,10 @@ class MatDatepickerToggle {
3402
3645
  this._stateChanges.unsubscribe();
3403
3646
  this._stateChanges = merge(this._intl.changes, datepickerStateChanged, inputStateChanged, datepickerToggled).subscribe(() => this._changeDetectorRef.markForCheck());
3404
3647
  }
3405
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDatepickerToggle, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3406
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.0-next.10", type: MatDatepickerToggle, isStandalone: true, selector: "mat-datepicker-toggle", inputs: { datepicker: ["for", "datepicker"], tabIndex: "tabIndex", ariaLabel: ["aria-label", "ariaLabel"], disabled: ["disabled", "disabled", booleanAttribute], disableRipple: "disableRipple" }, host: { listeners: { "click": "_open($event)" }, properties: { "attr.tabindex": "null", "class.mat-datepicker-toggle-active": "datepicker && datepicker.opened", "class.mat-accent": "datepicker && datepicker.color === \"accent\"", "class.mat-warn": "datepicker && datepicker.color === \"warn\"", "attr.data-mat-calendar": "datepicker ? datepicker.id : null" }, classAttribute: "mat-datepicker-toggle" }, queries: [{ propertyName: "_customIcon", first: true, predicate: MatDatepickerToggleIcon, descendants: true }], viewQueries: [{ propertyName: "_button", first: true, predicate: ["button"], descendants: true }], exportAs: ["matDatepickerToggle"], usesOnChanges: true, ngImport: i0, template: "<button\n #button\n mat-icon-button\n type=\"button\"\n [attr.aria-haspopup]=\"datepicker ? 'dialog' : null\"\n [attr.aria-label]=\"ariaLabel || _intl.openCalendarLabel\"\n [attr.tabindex]=\"disabled ? -1 : tabIndex\"\n [disabled]=\"disabled\"\n [disableRipple]=\"disableRipple\">\n\n @if (!_customIcon) {\n <svg\n class=\"mat-datepicker-toggle-default-icon\"\n viewBox=\"0 0 24 24\"\n width=\"24px\"\n height=\"24px\"\n fill=\"currentColor\"\n focusable=\"false\"\n aria-hidden=\"true\">\n <path d=\"M19 3h-1V1h-2v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V8h14v11zM7 10h5v5H7z\"/>\n </svg>\n }\n\n <ng-content select=\"[matDatepickerToggleIcon]\"></ng-content>\n</button>\n", styles: [".mat-datepicker-toggle{pointer-events:auto;color:var(--mat-datepicker-toggle-icon-color, var(--mat-sys-on-surface-variant))}.mat-datepicker-toggle-active{color:var(--mat-datepicker-toggle-active-state-icon-color, var(--mat-sys-on-surface-variant))}@media(forced-colors: active){.mat-datepicker-toggle-default-icon{color:CanvasText}}"], dependencies: [{ kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
3648
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatDatepickerToggle, deps: [], target: i0.ɵɵFactoryTarget.Component });
3649
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.0-rc.0", type: MatDatepickerToggle, isStandalone: true, selector: "mat-datepicker-toggle", inputs: { datepicker: ["for", "datepicker"], tabIndex: "tabIndex", ariaLabel: ["aria-label", "ariaLabel"], disabled: ["disabled", "disabled", booleanAttribute], disableRipple: "disableRipple" }, host: { listeners: { "click": "_open($event)" }, properties: { "attr.tabindex": "null", "class.mat-datepicker-toggle-active": "datepicker && datepicker.opened", "class.mat-accent": "datepicker && datepicker.color === \"accent\"", "class.mat-warn": "datepicker && datepicker.color === \"warn\"", "attr.data-mat-calendar": "datepicker ? datepicker.id : null" }, classAttribute: "mat-datepicker-toggle" }, queries: [{ propertyName: "_customIcon", first: true, predicate: MatDatepickerToggleIcon, descendants: true }], viewQueries: [{ propertyName: "_button", first: true, predicate: ["button"], descendants: true }], exportAs: ["matDatepickerToggle"], usesOnChanges: true, ngImport: i0, template: "<button\n #button\n mat-icon-button\n type=\"button\"\n [attr.aria-haspopup]=\"datepicker ? 'dialog' : null\"\n [attr.aria-label]=\"ariaLabel || _intl.openCalendarLabel\"\n [attr.tabindex]=\"disabled ? -1 : tabIndex\"\n [disabled]=\"disabled\"\n [disableRipple]=\"disableRipple\">\n\n @if (!_customIcon) {\n <svg\n class=\"mat-datepicker-toggle-default-icon\"\n viewBox=\"0 0 24 24\"\n width=\"24px\"\n height=\"24px\"\n fill=\"currentColor\"\n focusable=\"false\"\n aria-hidden=\"true\">\n <path d=\"M19 3h-1V1h-2v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V8h14v11zM7 10h5v5H7z\"/>\n </svg>\n }\n\n <ng-content select=\"[matDatepickerToggleIcon]\"></ng-content>\n</button>\n", styles: [".mat-datepicker-toggle{pointer-events:auto;color:var(--mat-datepicker-toggle-icon-color, var(--mat-sys-on-surface-variant))}.mat-datepicker-toggle-active{color:var(--mat-datepicker-toggle-active-state-icon-color, var(--mat-sys-on-surface-variant))}@media(forced-colors: active){.mat-datepicker-toggle-default-icon{color:CanvasText}}"], dependencies: [{ kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
3407
3650
  }
3408
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDatepickerToggle, decorators: [{
3651
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatDatepickerToggle, decorators: [{
3409
3652
  type: Component,
3410
3653
  args: [{ selector: 'mat-datepicker-toggle', host: {
3411
3654
  'class': 'mat-datepicker-toggle',
@@ -3602,6 +3845,19 @@ const MAT_DATE_RANGE_INPUT_PARENT = new InjectionToken('MAT_DATE_RANGE_INPUT_PAR
3602
3845
  * Base class for the individual inputs that can be projected inside a `mat-date-range-input`.
3603
3846
  */
3604
3847
  class MatDateRangeInputPartBase extends MatDatepickerInputBase {
3848
+ _rangeInput = inject(MAT_DATE_RANGE_INPUT_PARENT);
3849
+ _elementRef = inject(ElementRef);
3850
+ _defaultErrorStateMatcher = inject(ErrorStateMatcher);
3851
+ _injector = inject(Injector);
3852
+ _parentForm = inject(NgForm, { optional: true });
3853
+ _parentFormGroup = inject(FormGroupDirective, { optional: true });
3854
+ /**
3855
+ * Form control bound to this input part.
3856
+ * @docs-private
3857
+ */
3858
+ ngControl;
3859
+ _dir = inject(Directionality, { optional: true });
3860
+ _errorStateTracker;
3605
3861
  /** Object used to control when error messages are shown. */
3606
3862
  get errorStateMatcher() {
3607
3863
  return this._errorStateTracker.matcher;
@@ -3618,13 +3874,6 @@ class MatDateRangeInputPartBase extends MatDatepickerInputBase {
3618
3874
  }
3619
3875
  constructor() {
3620
3876
  super();
3621
- this._rangeInput = inject(MAT_DATE_RANGE_INPUT_PARENT);
3622
- this._elementRef = inject(ElementRef);
3623
- this._defaultErrorStateMatcher = inject(ErrorStateMatcher);
3624
- this._injector = inject(Injector);
3625
- this._parentForm = inject(NgForm, { optional: true });
3626
- this._parentFormGroup = inject(FormGroupDirective, { optional: true });
3627
- this._dir = inject(Directionality, { optional: true });
3628
3877
  this._errorStateTracker = new _ErrorStateTracker(this._defaultErrorStateMatcher, null, this._parentFormGroup, this._parentForm, this.stateChanges);
3629
3878
  }
3630
3879
  ngOnInit() {
@@ -3708,28 +3957,25 @@ class MatDateRangeInputPartBase extends MatDatepickerInputBase {
3708
3957
  _getAccessibleName() {
3709
3958
  return _computeAriaAccessibleName(this._elementRef.nativeElement);
3710
3959
  }
3711
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDateRangeInputPartBase, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
3712
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0-next.10", type: MatDateRangeInputPartBase, isStandalone: true, inputs: { errorStateMatcher: "errorStateMatcher" }, usesInheritance: true, ngImport: i0 }); }
3960
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatDateRangeInputPartBase, deps: [], target: i0.ɵɵFactoryTarget.Directive });
3961
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0-rc.0", type: MatDateRangeInputPartBase, isStandalone: true, inputs: { errorStateMatcher: "errorStateMatcher" }, usesInheritance: true, ngImport: i0 });
3713
3962
  }
3714
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDateRangeInputPartBase, decorators: [{
3963
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatDateRangeInputPartBase, decorators: [{
3715
3964
  type: Directive
3716
3965
  }], ctorParameters: () => [], propDecorators: { errorStateMatcher: [{
3717
3966
  type: Input
3718
3967
  }] } });
3719
3968
  /** Input for entering the start date in a `mat-date-range-input`. */
3720
3969
  class MatStartDate extends MatDateRangeInputPartBase {
3721
- constructor() {
3722
- super(...arguments);
3723
- /** Validator that checks that the start date isn't after the end date. */
3724
- this._startValidator = (control) => {
3725
- const start = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(control.value));
3726
- const end = this._model ? this._model.selection.end : null;
3727
- return !start || !end || this._dateAdapter.compareDate(start, end) <= 0
3728
- ? null
3729
- : { 'matStartDateInvalid': { 'end': end, 'actual': start } };
3730
- };
3731
- this._validator = Validators.compose([...super._getValidators(), this._startValidator]);
3732
- }
3970
+ /** Validator that checks that the start date isn't after the end date. */
3971
+ _startValidator = (control) => {
3972
+ const start = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(control.value));
3973
+ const end = this._model ? this._model.selection.end : null;
3974
+ return !start || !end || this._dateAdapter.compareDate(start, end) <= 0
3975
+ ? null
3976
+ : { 'matStartDateInvalid': { 'end': end, 'actual': start } };
3977
+ };
3978
+ _validator = Validators.compose([...super._getValidators(), this._startValidator]);
3733
3979
  _getValueFromModel(modelValue) {
3734
3980
  return modelValue.start;
3735
3981
  }
@@ -3772,13 +4018,13 @@ class MatStartDate extends MatDateRangeInputPartBase {
3772
4018
  super._onKeydown(event);
3773
4019
  }
3774
4020
  }
3775
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatStartDate, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
3776
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0-next.10", type: MatStartDate, isStandalone: true, selector: "input[matStartDate]", outputs: { dateChange: "dateChange", dateInput: "dateInput" }, host: { attributes: { "type": "text" }, listeners: { "input": "_onInput($event.target.value)", "change": "_onChange()", "keydown": "_onKeydown($event)", "blur": "_onBlur()" }, properties: { "disabled": "disabled", "attr.aria-haspopup": "_rangeInput.rangePicker ? \"dialog\" : null", "attr.aria-owns": "_rangeInput._ariaOwns\n ? _rangeInput._ariaOwns()\n : (_rangeInput.rangePicker?.opened && _rangeInput.rangePicker.id) || null", "attr.min": "_getMinDate() ? _dateAdapter.toIso8601(_getMinDate()) : null", "attr.max": "_getMaxDate() ? _dateAdapter.toIso8601(_getMaxDate()) : null" }, classAttribute: "mat-start-date mat-date-range-input-inner" }, providers: [
4021
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatStartDate, deps: null, target: i0.ɵɵFactoryTarget.Directive });
4022
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0-rc.0", type: MatStartDate, isStandalone: true, selector: "input[matStartDate]", outputs: { dateChange: "dateChange", dateInput: "dateInput" }, host: { attributes: { "type": "text" }, listeners: { "input": "_onInput($event.target.value)", "change": "_onChange()", "keydown": "_onKeydown($event)", "blur": "_onBlur()" }, properties: { "disabled": "disabled", "attr.aria-haspopup": "_rangeInput.rangePicker ? \"dialog\" : null", "attr.aria-owns": "_rangeInput._ariaOwns\n ? _rangeInput._ariaOwns()\n : (_rangeInput.rangePicker?.opened && _rangeInput.rangePicker.id) || null", "attr.min": "_getMinDate() ? _dateAdapter.toIso8601(_getMinDate()) : null", "attr.max": "_getMaxDate() ? _dateAdapter.toIso8601(_getMaxDate()) : null" }, classAttribute: "mat-start-date mat-date-range-input-inner" }, providers: [
3777
4023
  { provide: NG_VALUE_ACCESSOR, useExisting: MatStartDate, multi: true },
3778
4024
  { provide: NG_VALIDATORS, useExisting: MatStartDate, multi: true },
3779
- ], usesInheritance: true, ngImport: i0 }); }
4025
+ ], usesInheritance: true, ngImport: i0 });
3780
4026
  }
3781
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatStartDate, decorators: [{
4027
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatStartDate, decorators: [{
3782
4028
  type: Directive,
3783
4029
  args: [{
3784
4030
  selector: 'input[matStartDate]',
@@ -3808,18 +4054,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10",
3808
4054
  }] });
3809
4055
  /** Input for entering the end date in a `mat-date-range-input`. */
3810
4056
  class MatEndDate extends MatDateRangeInputPartBase {
3811
- constructor() {
3812
- super(...arguments);
3813
- /** Validator that checks that the end date isn't before the start date. */
3814
- this._endValidator = (control) => {
3815
- const end = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(control.value));
3816
- const start = this._model ? this._model.selection.start : null;
3817
- return !end || !start || this._dateAdapter.compareDate(end, start) >= 0
3818
- ? null
3819
- : { 'matEndDateInvalid': { 'start': start, 'actual': end } };
3820
- };
3821
- this._validator = Validators.compose([...super._getValidators(), this._endValidator]);
3822
- }
4057
+ /** Validator that checks that the end date isn't before the start date. */
4058
+ _endValidator = (control) => {
4059
+ const end = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(control.value));
4060
+ const start = this._model ? this._model.selection.start : null;
4061
+ return !end || !start || this._dateAdapter.compareDate(end, start) >= 0
4062
+ ? null
4063
+ : { 'matEndDateInvalid': { 'start': start, 'actual': end } };
4064
+ };
4065
+ _validator = Validators.compose([...super._getValidators(), this._endValidator]);
3823
4066
  _getValueFromModel(modelValue) {
3824
4067
  return modelValue.end;
3825
4068
  }
@@ -3867,13 +4110,13 @@ class MatEndDate extends MatDateRangeInputPartBase {
3867
4110
  super._onKeydown(event);
3868
4111
  }
3869
4112
  }
3870
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatEndDate, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
3871
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0-next.10", type: MatEndDate, isStandalone: true, selector: "input[matEndDate]", outputs: { dateChange: "dateChange", dateInput: "dateInput" }, host: { attributes: { "type": "text" }, listeners: { "input": "_onInput($event.target.value)", "change": "_onChange()", "keydown": "_onKeydown($event)", "blur": "_onBlur()" }, properties: { "disabled": "disabled", "attr.aria-haspopup": "_rangeInput.rangePicker ? \"dialog\" : null", "attr.aria-owns": "_rangeInput._ariaOwns\n ? _rangeInput._ariaOwns()\n : (_rangeInput.rangePicker?.opened && _rangeInput.rangePicker.id) || null", "attr.min": "_getMinDate() ? _dateAdapter.toIso8601(_getMinDate()) : null", "attr.max": "_getMaxDate() ? _dateAdapter.toIso8601(_getMaxDate()) : null" }, classAttribute: "mat-end-date mat-date-range-input-inner" }, providers: [
4113
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatEndDate, deps: null, target: i0.ɵɵFactoryTarget.Directive });
4114
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0-rc.0", type: MatEndDate, isStandalone: true, selector: "input[matEndDate]", outputs: { dateChange: "dateChange", dateInput: "dateInput" }, host: { attributes: { "type": "text" }, listeners: { "input": "_onInput($event.target.value)", "change": "_onChange()", "keydown": "_onKeydown($event)", "blur": "_onBlur()" }, properties: { "disabled": "disabled", "attr.aria-haspopup": "_rangeInput.rangePicker ? \"dialog\" : null", "attr.aria-owns": "_rangeInput._ariaOwns\n ? _rangeInput._ariaOwns()\n : (_rangeInput.rangePicker?.opened && _rangeInput.rangePicker.id) || null", "attr.min": "_getMinDate() ? _dateAdapter.toIso8601(_getMinDate()) : null", "attr.max": "_getMaxDate() ? _dateAdapter.toIso8601(_getMaxDate()) : null" }, classAttribute: "mat-end-date mat-date-range-input-inner" }, providers: [
3872
4115
  { provide: NG_VALUE_ACCESSOR, useExisting: MatEndDate, multi: true },
3873
4116
  { provide: NG_VALIDATORS, useExisting: MatEndDate, multi: true },
3874
- ], usesInheritance: true, ngImport: i0 }); }
4117
+ ], usesInheritance: true, ngImport: i0 });
3875
4118
  }
3876
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatEndDate, decorators: [{
4119
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatEndDate, decorators: [{
3877
4120
  type: Directive,
3878
4121
  args: [{
3879
4122
  selector: 'input[matEndDate]',
@@ -3902,16 +4145,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10",
3902
4145
  }]
3903
4146
  }] });
3904
4147
 
3905
- let nextUniqueId = 0;
3906
4148
  class MatDateRangeInput {
4149
+ _changeDetectorRef = inject(ChangeDetectorRef);
4150
+ _elementRef = inject(ElementRef);
4151
+ _dateAdapter = inject(DateAdapter, { optional: true });
4152
+ _formField = inject(MAT_FORM_FIELD, { optional: true });
4153
+ _closedSubscription = Subscription.EMPTY;
4154
+ _openedSubscription = Subscription.EMPTY;
3907
4155
  /** Current value of the range input. */
3908
4156
  get value() {
3909
4157
  return this._model ? this._model.selection : null;
3910
4158
  }
4159
+ /** Unique ID for the group. */
4160
+ id = inject(_IdGenerator).getId('mat-date-range-input-');
4161
+ /** Whether the control is focused. */
4162
+ focused = false;
3911
4163
  /** Whether the control's label should float. */
3912
4164
  get shouldLabelFloat() {
3913
4165
  return this.focused || !this.empty;
3914
4166
  }
4167
+ /** Name of the form control. */
4168
+ controlType = 'mat-date-range-input';
3915
4169
  /**
3916
4170
  * Implemented as a part of `MatFormFieldControl`.
3917
4171
  * Set the placeholder attribute on `matStartDate` and `matEndDate`.
@@ -3944,6 +4198,9 @@ class MatDateRangeInput {
3944
4198
  this._registerModel(this._model);
3945
4199
  }
3946
4200
  }
4201
+ _rangePicker;
4202
+ /** The id of the panel owned by this input. */
4203
+ _ariaOwns = signal(null);
3947
4204
  /** Whether the input is required. */
3948
4205
  get required() {
3949
4206
  return (this._required ??
@@ -3955,6 +4212,7 @@ class MatDateRangeInput {
3955
4212
  set required(value) {
3956
4213
  this._required = value;
3957
4214
  }
4215
+ _required;
3958
4216
  /** Function that can be used to filter out dates within the date range picker. */
3959
4217
  get dateFilter() {
3960
4218
  return this._dateFilter;
@@ -3972,6 +4230,7 @@ class MatDateRangeInput {
3972
4230
  end._validatorOnChange();
3973
4231
  }
3974
4232
  }
4233
+ _dateFilter;
3975
4234
  /** The minimum valid date. */
3976
4235
  get min() {
3977
4236
  return this._min;
@@ -3983,6 +4242,7 @@ class MatDateRangeInput {
3983
4242
  this._revalidate();
3984
4243
  }
3985
4244
  }
4245
+ _min;
3986
4246
  /** The maximum valid date. */
3987
4247
  get max() {
3988
4248
  return this._max;
@@ -3994,6 +4254,7 @@ class MatDateRangeInput {
3994
4254
  this._revalidate();
3995
4255
  }
3996
4256
  }
4257
+ _max;
3997
4258
  /** Whether the input is disabled. */
3998
4259
  get disabled() {
3999
4260
  return this._startInput && this._endInput
@@ -4006,6 +4267,7 @@ class MatDateRangeInput {
4006
4267
  this.stateChanges.next(undefined);
4007
4268
  }
4008
4269
  }
4270
+ _groupDisabled = false;
4009
4271
  /** Whether the input is in an error state. */
4010
4272
  get errorState() {
4011
4273
  if (this._startInput && this._endInput) {
@@ -4019,37 +4281,32 @@ class MatDateRangeInput {
4019
4281
  const endEmpty = this._endInput ? this._endInput.isEmpty() : false;
4020
4282
  return startEmpty && endEmpty;
4021
4283
  }
4284
+ /** Value for the `aria-describedby` attribute of the inputs. */
4285
+ _ariaDescribedBy = null;
4286
+ /** Date selection model currently registered with the input. */
4287
+ _model;
4288
+ /** Separator text to be shown between the inputs. */
4289
+ separator = '–';
4290
+ /** Start of the comparison range that should be shown in the calendar. */
4291
+ comparisonStart = null;
4292
+ /** End of the comparison range that should be shown in the calendar. */
4293
+ comparisonEnd = null;
4294
+ _startInput;
4295
+ _endInput;
4296
+ /**
4297
+ * Implemented as a part of `MatFormFieldControl`.
4298
+ * TODO(crisbeto): change type to `AbstractControlDirective` after #18206 lands.
4299
+ * @docs-private
4300
+ */
4301
+ ngControl;
4302
+ /** Emits when the input's state has changed. */
4303
+ stateChanges = new Subject();
4304
+ /**
4305
+ * Disable the automatic labeling to avoid issues like #27241.
4306
+ * @docs-private
4307
+ */
4308
+ disableAutomaticLabeling = true;
4022
4309
  constructor() {
4023
- this._changeDetectorRef = inject(ChangeDetectorRef);
4024
- this._elementRef = inject(ElementRef);
4025
- this._dateAdapter = inject(DateAdapter, { optional: true });
4026
- this._formField = inject(MAT_FORM_FIELD, { optional: true });
4027
- this._closedSubscription = Subscription.EMPTY;
4028
- this._openedSubscription = Subscription.EMPTY;
4029
- /** Unique ID for the group. */
4030
- this.id = `mat-date-range-input-${nextUniqueId++}`;
4031
- /** Whether the control is focused. */
4032
- this.focused = false;
4033
- /** Name of the form control. */
4034
- this.controlType = 'mat-date-range-input';
4035
- /** The id of the panel owned by this input. */
4036
- this._ariaOwns = signal(null);
4037
- this._groupDisabled = false;
4038
- /** Value for the `aria-describedby` attribute of the inputs. */
4039
- this._ariaDescribedBy = null;
4040
- /** Separator text to be shown between the inputs. */
4041
- this.separator = '–';
4042
- /** Start of the comparison range that should be shown in the calendar. */
4043
- this.comparisonStart = null;
4044
- /** End of the comparison range that should be shown in the calendar. */
4045
- this.comparisonEnd = null;
4046
- /** Emits when the input's state has changed. */
4047
- this.stateChanges = new Subject();
4048
- /**
4049
- * Disable the automatic labeling to avoid issues like #27241.
4050
- * @docs-private
4051
- */
4052
- this.disableAutomaticLabeling = true;
4053
4310
  if (!this._dateAdapter && (typeof ngDevMode === 'undefined' || ngDevMode)) {
4054
4311
  throw createMissingDateImplError('DateAdapter');
4055
4312
  }
@@ -4190,13 +4447,13 @@ class MatDateRangeInput {
4190
4447
  _isTargetRequired(target) {
4191
4448
  return target?.ngControl?.control?.hasValidator(Validators.required);
4192
4449
  }
4193
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDateRangeInput, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4194
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "19.0.0-next.10", type: MatDateRangeInput, isStandalone: true, selector: "mat-date-range-input", inputs: { rangePicker: "rangePicker", required: ["required", "required", booleanAttribute], dateFilter: "dateFilter", min: "min", max: "max", disabled: ["disabled", "disabled", booleanAttribute], separator: "separator", comparisonStart: "comparisonStart", comparisonEnd: "comparisonEnd" }, host: { attributes: { "role": "group" }, properties: { "class.mat-date-range-input-hide-placeholders": "_shouldHidePlaceholders()", "class.mat-date-range-input-required": "required", "attr.id": "id", "attr.aria-labelledby": "_getAriaLabelledby()", "attr.aria-describedby": "_ariaDescribedBy", "attr.data-mat-calendar": "rangePicker ? rangePicker.id : null" }, classAttribute: "mat-date-range-input" }, providers: [
4450
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatDateRangeInput, deps: [], target: i0.ɵɵFactoryTarget.Component });
4451
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "19.0.0-rc.0", type: MatDateRangeInput, isStandalone: true, selector: "mat-date-range-input", inputs: { rangePicker: "rangePicker", required: ["required", "required", booleanAttribute], dateFilter: "dateFilter", min: "min", max: "max", disabled: ["disabled", "disabled", booleanAttribute], separator: "separator", comparisonStart: "comparisonStart", comparisonEnd: "comparisonEnd" }, host: { attributes: { "role": "group" }, properties: { "class.mat-date-range-input-hide-placeholders": "_shouldHidePlaceholders()", "class.mat-date-range-input-required": "required", "attr.id": "id", "attr.aria-labelledby": "_getAriaLabelledby()", "attr.aria-describedby": "_ariaDescribedBy", "attr.data-mat-calendar": "rangePicker ? rangePicker.id : null" }, classAttribute: "mat-date-range-input" }, providers: [
4195
4452
  { provide: MatFormFieldControl, useExisting: MatDateRangeInput },
4196
4453
  { provide: MAT_DATE_RANGE_INPUT_PARENT, useExisting: MatDateRangeInput },
4197
- ], queries: [{ propertyName: "_startInput", first: true, predicate: MatStartDate, descendants: true }, { propertyName: "_endInput", first: true, predicate: MatEndDate, descendants: true }], exportAs: ["matDateRangeInput"], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"mat-date-range-input-container\"\n cdkMonitorSubtreeFocus\n (cdkFocusChange)=\"_updateFocus($event)\">\n <div class=\"mat-date-range-input-wrapper\">\n <ng-content select=\"input[matStartDate]\"></ng-content>\n <span\n class=\"mat-date-range-input-mirror\"\n aria-hidden=\"true\">{{_getInputMirrorValue('start')}}</span>\n </div>\n\n <span\n class=\"mat-date-range-input-separator\"\n [class.mat-date-range-input-separator-hidden]=\"_shouldHideSeparator()\">{{separator}}</span>\n\n <div class=\"mat-date-range-input-wrapper mat-date-range-input-end-wrapper\">\n <ng-content select=\"input[matEndDate]\"></ng-content>\n <span\n class=\"mat-date-range-input-mirror\"\n aria-hidden=\"true\">{{_getInputMirrorValue('end')}}</span>\n </div>\n</div>\n\n", styles: [".mat-date-range-input{display:block;width:100%}.mat-date-range-input-container{display:flex;align-items:center}.mat-date-range-input-separator{transition:opacity 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1);margin:0 4px;color:var(--mat-datepicker-range-input-separator-color, var(--mat-sys-on-surface))}.mat-form-field-disabled .mat-date-range-input-separator{color:var(--mat-datepicker-range-input-disabled-state-separator-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}._mat-animation-noopable .mat-date-range-input-separator{transition:none}.mat-date-range-input-separator-hidden{-webkit-user-select:none;user-select:none;opacity:0;transition:none}.mat-date-range-input-wrapper{position:relative;overflow:hidden;max-width:calc(50% - 4px)}.mat-date-range-input-end-wrapper{flex-grow:1}.mat-date-range-input-inner{position:absolute;top:0;left:0;font:inherit;background:rgba(0,0,0,0);color:currentColor;border:none;outline:none;padding:0;margin:0;vertical-align:bottom;text-align:inherit;-webkit-appearance:none;width:100%;height:100%}.mat-date-range-input-inner:-moz-ui-invalid{box-shadow:none}.mat-date-range-input-inner::placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-date-range-input-inner::-moz-placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-date-range-input-inner::-webkit-input-placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-date-range-input-inner:-ms-input-placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-date-range-input-inner[disabled]{color:var(--mat-datepicker-range-input-disabled-state-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-form-field-hide-placeholder .mat-date-range-input-inner::placeholder,.mat-date-range-input-hide-placeholders .mat-date-range-input-inner::placeholder{-webkit-user-select:none;user-select:none;color:rgba(0,0,0,0) !important;-webkit-text-fill-color:rgba(0,0,0,0);transition:none}@media(forced-colors: active){.mat-form-field-hide-placeholder .mat-date-range-input-inner::placeholder,.mat-date-range-input-hide-placeholders .mat-date-range-input-inner::placeholder{opacity:0}}.mat-form-field-hide-placeholder .mat-date-range-input-inner::-moz-placeholder,.mat-date-range-input-hide-placeholders .mat-date-range-input-inner::-moz-placeholder{-webkit-user-select:none;user-select:none;color:rgba(0,0,0,0) !important;-webkit-text-fill-color:rgba(0,0,0,0);transition:none}@media(forced-colors: active){.mat-form-field-hide-placeholder .mat-date-range-input-inner::-moz-placeholder,.mat-date-range-input-hide-placeholders .mat-date-range-input-inner::-moz-placeholder{opacity:0}}.mat-form-field-hide-placeholder .mat-date-range-input-inner::-webkit-input-placeholder,.mat-date-range-input-hide-placeholders .mat-date-range-input-inner::-webkit-input-placeholder{-webkit-user-select:none;user-select:none;color:rgba(0,0,0,0) !important;-webkit-text-fill-color:rgba(0,0,0,0);transition:none}@media(forced-colors: active){.mat-form-field-hide-placeholder .mat-date-range-input-inner::-webkit-input-placeholder,.mat-date-range-input-hide-placeholders .mat-date-range-input-inner::-webkit-input-placeholder{opacity:0}}.mat-form-field-hide-placeholder .mat-date-range-input-inner:-ms-input-placeholder,.mat-date-range-input-hide-placeholders .mat-date-range-input-inner:-ms-input-placeholder{-webkit-user-select:none;user-select:none;color:rgba(0,0,0,0) !important;-webkit-text-fill-color:rgba(0,0,0,0);transition:none}@media(forced-colors: active){.mat-form-field-hide-placeholder .mat-date-range-input-inner:-ms-input-placeholder,.mat-date-range-input-hide-placeholders .mat-date-range-input-inner:-ms-input-placeholder{opacity:0}}._mat-animation-noopable .mat-date-range-input-inner::placeholder{transition:none}._mat-animation-noopable .mat-date-range-input-inner::-moz-placeholder{transition:none}._mat-animation-noopable .mat-date-range-input-inner::-webkit-input-placeholder{transition:none}._mat-animation-noopable .mat-date-range-input-inner:-ms-input-placeholder{transition:none}.mat-date-range-input-mirror{-webkit-user-select:none;user-select:none;visibility:hidden;white-space:nowrap;display:inline-block;min-width:2px}.mat-mdc-form-field-type-mat-date-range-input .mat-mdc-form-field-infix{width:200px}"], dependencies: [{ kind: "directive", type: CdkMonitorFocus, selector: "[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]", outputs: ["cdkFocusChange"], exportAs: ["cdkMonitorFocus"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
4454
+ ], queries: [{ propertyName: "_startInput", first: true, predicate: MatStartDate, descendants: true }, { propertyName: "_endInput", first: true, predicate: MatEndDate, descendants: true }], exportAs: ["matDateRangeInput"], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"mat-date-range-input-container\"\n cdkMonitorSubtreeFocus\n (cdkFocusChange)=\"_updateFocus($event)\">\n <div class=\"mat-date-range-input-wrapper\">\n <ng-content select=\"input[matStartDate]\"></ng-content>\n <span\n class=\"mat-date-range-input-mirror\"\n aria-hidden=\"true\">{{_getInputMirrorValue('start')}}</span>\n </div>\n\n <span\n class=\"mat-date-range-input-separator\"\n [class.mat-date-range-input-separator-hidden]=\"_shouldHideSeparator()\">{{separator}}</span>\n\n <div class=\"mat-date-range-input-wrapper mat-date-range-input-end-wrapper\">\n <ng-content select=\"input[matEndDate]\"></ng-content>\n <span\n class=\"mat-date-range-input-mirror\"\n aria-hidden=\"true\">{{_getInputMirrorValue('end')}}</span>\n </div>\n</div>\n\n", styles: [".mat-date-range-input{display:block;width:100%}.mat-date-range-input-container{display:flex;align-items:center}.mat-date-range-input-separator{transition:opacity 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1);margin:0 4px;color:var(--mat-datepicker-range-input-separator-color, var(--mat-sys-on-surface))}.mat-form-field-disabled .mat-date-range-input-separator{color:var(--mat-datepicker-range-input-disabled-state-separator-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}._mat-animation-noopable .mat-date-range-input-separator{transition:none}.mat-date-range-input-separator-hidden{-webkit-user-select:none;user-select:none;opacity:0;transition:none}.mat-date-range-input-wrapper{position:relative;overflow:hidden;max-width:calc(50% - 4px)}.mat-date-range-input-end-wrapper{flex-grow:1}.mat-date-range-input-inner{position:absolute;top:0;left:0;font:inherit;background:rgba(0,0,0,0);color:currentColor;border:none;outline:none;padding:0;margin:0;vertical-align:bottom;text-align:inherit;-webkit-appearance:none;width:100%;height:100%}.mat-date-range-input-inner:-moz-ui-invalid{box-shadow:none}.mat-date-range-input-inner::placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-date-range-input-inner::-moz-placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-date-range-input-inner::-webkit-input-placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-date-range-input-inner:-ms-input-placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}.mat-date-range-input-inner[disabled]{color:var(--mat-datepicker-range-input-disabled-state-text-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-form-field-hide-placeholder .mat-date-range-input-inner::placeholder,.mat-date-range-input-hide-placeholders .mat-date-range-input-inner::placeholder{-webkit-user-select:none;user-select:none;color:rgba(0,0,0,0) !important;-webkit-text-fill-color:rgba(0,0,0,0);transition:none}@media(forced-colors: active){.mat-form-field-hide-placeholder .mat-date-range-input-inner::placeholder,.mat-date-range-input-hide-placeholders .mat-date-range-input-inner::placeholder{opacity:0}}.mat-form-field-hide-placeholder .mat-date-range-input-inner::-moz-placeholder,.mat-date-range-input-hide-placeholders .mat-date-range-input-inner::-moz-placeholder{-webkit-user-select:none;user-select:none;color:rgba(0,0,0,0) !important;-webkit-text-fill-color:rgba(0,0,0,0);transition:none}@media(forced-colors: active){.mat-form-field-hide-placeholder .mat-date-range-input-inner::-moz-placeholder,.mat-date-range-input-hide-placeholders .mat-date-range-input-inner::-moz-placeholder{opacity:0}}.mat-form-field-hide-placeholder .mat-date-range-input-inner::-webkit-input-placeholder,.mat-date-range-input-hide-placeholders .mat-date-range-input-inner::-webkit-input-placeholder{-webkit-user-select:none;user-select:none;color:rgba(0,0,0,0) !important;-webkit-text-fill-color:rgba(0,0,0,0);transition:none}@media(forced-colors: active){.mat-form-field-hide-placeholder .mat-date-range-input-inner::-webkit-input-placeholder,.mat-date-range-input-hide-placeholders .mat-date-range-input-inner::-webkit-input-placeholder{opacity:0}}.mat-form-field-hide-placeholder .mat-date-range-input-inner:-ms-input-placeholder,.mat-date-range-input-hide-placeholders .mat-date-range-input-inner:-ms-input-placeholder{-webkit-user-select:none;user-select:none;color:rgba(0,0,0,0) !important;-webkit-text-fill-color:rgba(0,0,0,0);transition:none}@media(forced-colors: active){.mat-form-field-hide-placeholder .mat-date-range-input-inner:-ms-input-placeholder,.mat-date-range-input-hide-placeholders .mat-date-range-input-inner:-ms-input-placeholder{opacity:0}}._mat-animation-noopable .mat-date-range-input-inner::placeholder{transition:none}._mat-animation-noopable .mat-date-range-input-inner::-moz-placeholder{transition:none}._mat-animation-noopable .mat-date-range-input-inner::-webkit-input-placeholder{transition:none}._mat-animation-noopable .mat-date-range-input-inner:-ms-input-placeholder{transition:none}.mat-date-range-input-mirror{-webkit-user-select:none;user-select:none;visibility:hidden;white-space:nowrap;display:inline-block;min-width:2px}.mat-mdc-form-field-type-mat-date-range-input .mat-mdc-form-field-infix{width:200px}"], dependencies: [{ kind: "directive", type: CdkMonitorFocus, selector: "[cdkMonitorElementFocus], [cdkMonitorSubtreeFocus]", outputs: ["cdkFocusChange"], exportAs: ["cdkMonitorFocus"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
4198
4455
  }
4199
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDateRangeInput, decorators: [{
4456
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatDateRangeInput, decorators: [{
4200
4457
  type: Component,
4201
4458
  args: [{ selector: 'mat-date-range-input', exportAs: 'matDateRangeInput', host: {
4202
4459
  'class': 'mat-date-range-input',
@@ -4256,14 +4513,14 @@ class MatDateRangePicker extends MatDatepickerBase {
4256
4513
  instance.endDateAccessibleName = input._getEndDateAccessibleName();
4257
4514
  }
4258
4515
  }
4259
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDateRangePicker, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
4260
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.0-next.10", type: MatDateRangePicker, isStandalone: true, selector: "mat-date-range-picker", providers: [
4516
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatDateRangePicker, deps: null, target: i0.ɵɵFactoryTarget.Component });
4517
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.0-rc.0", type: MatDateRangePicker, isStandalone: true, selector: "mat-date-range-picker", providers: [
4261
4518
  MAT_RANGE_DATE_SELECTION_MODEL_PROVIDER,
4262
4519
  MAT_CALENDAR_RANGE_STRATEGY_PROVIDER,
4263
4520
  { provide: MatDatepickerBase, useExisting: MatDateRangePicker },
4264
- ], exportAs: ["matDateRangePicker"], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
4521
+ ], exportAs: ["matDateRangePicker"], usesInheritance: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
4265
4522
  }
4266
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDateRangePicker, decorators: [{
4523
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatDateRangePicker, decorators: [{
4267
4524
  type: Component,
4268
4525
  args: [{
4269
4526
  selector: 'mat-date-range-picker',
@@ -4281,17 +4538,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10",
4281
4538
 
4282
4539
  /** Button that will close the datepicker and assign the current selection to the data model. */
4283
4540
  class MatDatepickerApply {
4284
- constructor() {
4285
- this._datepicker = inject(MatDatepickerBase);
4286
- }
4541
+ _datepicker = inject(MatDatepickerBase);
4542
+ constructor() { }
4287
4543
  _applySelection() {
4288
4544
  this._datepicker._applyPendingSelection();
4289
4545
  this._datepicker.close();
4290
4546
  }
4291
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDatepickerApply, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
4292
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0-next.10", type: MatDatepickerApply, isStandalone: true, selector: "[matDatepickerApply], [matDateRangePickerApply]", host: { listeners: { "click": "_applySelection()" } }, ngImport: i0 }); }
4547
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatDatepickerApply, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4548
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0-rc.0", type: MatDatepickerApply, isStandalone: true, selector: "[matDatepickerApply], [matDateRangePickerApply]", host: { listeners: { "click": "_applySelection()" } }, ngImport: i0 });
4293
4549
  }
4294
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDatepickerApply, decorators: [{
4550
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatDatepickerApply, decorators: [{
4295
4551
  type: Directive,
4296
4552
  args: [{
4297
4553
  selector: '[matDatepickerApply], [matDateRangePickerApply]',
@@ -4300,13 +4556,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10",
4300
4556
  }], ctorParameters: () => [] });
4301
4557
  /** Button that will close the datepicker and discard the current selection. */
4302
4558
  class MatDatepickerCancel {
4303
- constructor() {
4304
- this._datepicker = inject(MatDatepickerBase);
4305
- }
4306
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDatepickerCancel, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
4307
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0-next.10", type: MatDatepickerCancel, isStandalone: true, selector: "[matDatepickerCancel], [matDateRangePickerCancel]", host: { listeners: { "click": "_datepicker.close()" } }, ngImport: i0 }); }
4559
+ _datepicker = inject(MatDatepickerBase);
4560
+ constructor() { }
4561
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatDatepickerCancel, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4562
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0-rc.0", type: MatDatepickerCancel, isStandalone: true, selector: "[matDatepickerCancel], [matDateRangePickerCancel]", host: { listeners: { "click": "_datepicker.close()" } }, ngImport: i0 });
4308
4563
  }
4309
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDatepickerCancel, decorators: [{
4564
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatDatepickerCancel, decorators: [{
4310
4565
  type: Directive,
4311
4566
  args: [{
4312
4567
  selector: '[matDatepickerCancel], [matDateRangePickerCancel]',
@@ -4318,10 +4573,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10",
4318
4573
  * to the bottom of a datepicker or date range picker.
4319
4574
  */
4320
4575
  class MatDatepickerActions {
4321
- constructor() {
4322
- this._datepicker = inject(MatDatepickerBase);
4323
- this._viewContainerRef = inject(ViewContainerRef);
4324
- }
4576
+ _datepicker = inject(MatDatepickerBase);
4577
+ _viewContainerRef = inject(ViewContainerRef);
4578
+ _template;
4579
+ _portal;
4580
+ constructor() { }
4325
4581
  ngAfterViewInit() {
4326
4582
  this._portal = new TemplatePortal(this._template, this._viewContainerRef);
4327
4583
  this._datepicker.registerActions(this._portal);
@@ -4333,16 +4589,16 @@ class MatDatepickerActions {
4333
4589
  this._portal?.detach();
4334
4590
  }
4335
4591
  }
4336
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDatepickerActions, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4337
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.0-next.10", type: MatDatepickerActions, isStandalone: true, selector: "mat-datepicker-actions, mat-date-range-picker-actions", viewQueries: [{ propertyName: "_template", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0, template: `
4592
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatDatepickerActions, deps: [], target: i0.ɵɵFactoryTarget.Component });
4593
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.0-rc.0", type: MatDatepickerActions, isStandalone: true, selector: "mat-datepicker-actions, mat-date-range-picker-actions", viewQueries: [{ propertyName: "_template", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0, template: `
4338
4594
  <ng-template>
4339
4595
  <div class="mat-datepicker-actions">
4340
4596
  <ng-content></ng-content>
4341
4597
  </div>
4342
4598
  </ng-template>
4343
- `, isInline: true, styles: [".mat-datepicker-actions{display:flex;justify-content:flex-end;align-items:center;padding:0 8px 8px 8px}.mat-datepicker-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:8px}[dir=rtl] .mat-datepicker-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:0;margin-right:8px}"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
4599
+ `, isInline: true, styles: [".mat-datepicker-actions{display:flex;justify-content:flex-end;align-items:center;padding:0 8px 8px 8px}.mat-datepicker-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:8px}[dir=rtl] .mat-datepicker-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:0;margin-right:8px}"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
4344
4600
  }
4345
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDatepickerActions, decorators: [{
4601
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatDatepickerActions, decorators: [{
4346
4602
  type: Component,
4347
4603
  args: [{ selector: 'mat-datepicker-actions, mat-date-range-picker-actions', template: `
4348
4604
  <ng-template>
@@ -4357,9 +4613,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10",
4357
4613
  }] } });
4358
4614
 
4359
4615
  class MatDatepickerModule {
4360
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDatepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
4361
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDatepickerModule, imports: [CommonModule,
4362
- MatButtonModule,
4616
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatDatepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
4617
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatDatepickerModule, imports: [MatButtonModule,
4363
4618
  OverlayModule,
4364
4619
  A11yModule,
4365
4620
  PortalModule,
@@ -4399,22 +4654,20 @@ class MatDatepickerModule {
4399
4654
  MatDateRangePicker,
4400
4655
  MatDatepickerActions,
4401
4656
  MatDatepickerCancel,
4402
- MatDatepickerApply] }); }
4403
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDatepickerModule, providers: [MatDatepickerIntl, MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER], imports: [CommonModule,
4404
- MatButtonModule,
4657
+ MatDatepickerApply] });
4658
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatDatepickerModule, providers: [MatDatepickerIntl, MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER], imports: [MatButtonModule,
4405
4659
  OverlayModule,
4406
4660
  A11yModule,
4407
4661
  PortalModule,
4408
4662
  MatCommonModule,
4409
4663
  MatDatepickerContent,
4410
4664
  MatDatepickerToggle,
4411
- MatCalendarHeader, CdkScrollableModule] }); }
4665
+ MatCalendarHeader, CdkScrollableModule] });
4412
4666
  }
4413
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDatepickerModule, decorators: [{
4667
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-rc.0", ngImport: i0, type: MatDatepickerModule, decorators: [{
4414
4668
  type: NgModule,
4415
4669
  args: [{
4416
4670
  imports: [
4417
- CommonModule,
4418
4671
  MatButtonModule,
4419
4672
  OverlayModule,
4420
4673
  A11yModule,