@ng-matero/extensions 13.2.1 → 14.2.0

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 (249) hide show
  1. package/README.md +1 -0
  2. package/alert/alert.component.d.ts +2 -2
  3. package/alert/{mtxAlert.d.ts → index.d.ts} +0 -0
  4. package/button/button-loading.directive.d.ts +1 -1
  5. package/button/{mtxButton.d.ts → index.d.ts} +0 -0
  6. package/checkbox-group/checkbox-group.component.d.ts +1 -1
  7. package/checkbox-group/{mtxCheckboxGroup.d.ts → index.d.ts} +0 -0
  8. package/colorpicker/colorpicker-input.d.ts +1 -1
  9. package/colorpicker/colorpicker-toggle.d.ts +2 -2
  10. package/colorpicker/colorpicker.d.ts +5 -3
  11. package/colorpicker/{mtxColorpicker.d.ts → index.d.ts} +0 -0
  12. package/column-resize/column-resize-directives/column-resize-flex.d.ts +1 -1
  13. package/column-resize/column-resize-directives/column-resize.d.ts +1 -1
  14. package/column-resize/column-resize.d.ts +1 -1
  15. package/column-resize/{mtxColumnResize.d.ts → index.d.ts} +0 -0
  16. package/column-resize/overlay-handle.d.ts +1 -1
  17. package/column-resize/resizable.d.ts +1 -1
  18. package/core/{mtxCore.d.ts → index.d.ts} +0 -0
  19. package/core/pipes/to-observable.pipe.d.ts +1 -1
  20. package/core/style/_vendor-prefixes.scss +1 -1
  21. package/datetimepicker/_datetimepicker-theme.scss +1 -1
  22. package/datetimepicker/calendar-body.d.ts +1 -1
  23. package/datetimepicker/calendar.d.ts +6 -2
  24. package/datetimepicker/clock.d.ts +4 -1
  25. package/datetimepicker/datetimepicker-input.d.ts +1 -1
  26. package/datetimepicker/datetimepicker-toggle.d.ts +2 -2
  27. package/datetimepicker/datetimepicker-types.d.ts +1 -0
  28. package/datetimepicker/datetimepicker.d.ts +10 -6
  29. package/datetimepicker/{mtxDatetimepicker.d.ts → index.d.ts} +0 -0
  30. package/datetimepicker/month-view.d.ts +1 -1
  31. package/datetimepicker/multi-year-view.d.ts +1 -1
  32. package/datetimepicker/year-view.d.ts +1 -1
  33. package/dialog/dialog.component.d.ts +1 -1
  34. package/dialog/{mtxDialog.d.ts → index.d.ts} +0 -0
  35. package/drawer/drawer-config.d.ts +12 -4
  36. package/drawer/drawer-container.d.ts +12 -4
  37. package/drawer/{mtxDrawer.d.ts → index.d.ts} +0 -0
  38. package/esm2020/alert/alert.component.mjs +6 -6
  39. package/esm2020/alert/alert.module.mjs +5 -5
  40. package/esm2020/button/button-loading.directive.mjs +4 -4
  41. package/esm2020/button/button.module.mjs +5 -5
  42. package/esm2020/checkbox-group/checkbox-group.component.mjs +7 -7
  43. package/esm2020/checkbox-group/checkbox-group.module.mjs +5 -5
  44. package/esm2020/colorpicker/colorpicker-input.mjs +3 -3
  45. package/esm2020/colorpicker/colorpicker-module.mjs +10 -12
  46. package/esm2020/colorpicker/colorpicker-toggle.mjs +8 -8
  47. package/esm2020/colorpicker/colorpicker.mjs +12 -10
  48. package/esm2020/column-resize/column-resize-directives/column-resize-flex.mjs +3 -3
  49. package/esm2020/column-resize/column-resize-directives/column-resize.mjs +3 -3
  50. package/esm2020/column-resize/column-resize-module.mjs +4 -4
  51. package/esm2020/column-resize/column-resize-notifier.mjs +6 -6
  52. package/esm2020/column-resize/column-resize.mjs +3 -3
  53. package/esm2020/column-resize/column-size-store.mjs +3 -3
  54. package/esm2020/column-resize/event-dispatcher.mjs +3 -3
  55. package/esm2020/column-resize/overlay-handle.mjs +3 -3
  56. package/esm2020/column-resize/resizable.mjs +3 -3
  57. package/esm2020/column-resize/resize-strategy.mjs +9 -9
  58. package/esm2020/core/datetime/datetime.module.mjs +10 -10
  59. package/esm2020/core/datetime/native-datetime-adapter.mjs +3 -3
  60. package/esm2020/core/pipes/pipes.module.mjs +5 -5
  61. package/esm2020/core/pipes/to-observable.pipe.mjs +3 -3
  62. package/esm2020/datetimepicker/calendar-body.mjs +3 -3
  63. package/esm2020/datetimepicker/calendar.mjs +14 -11
  64. package/esm2020/datetimepicker/clock.mjs +6 -4
  65. package/esm2020/datetimepicker/datetimepicker-input.mjs +3 -3
  66. package/esm2020/datetimepicker/datetimepicker-module.mjs +5 -5
  67. package/esm2020/datetimepicker/datetimepicker-toggle.mjs +8 -8
  68. package/esm2020/datetimepicker/datetimepicker-types.mjs +1 -1
  69. package/esm2020/datetimepicker/datetimepicker.mjs +14 -11
  70. package/esm2020/datetimepicker/month-view.mjs +6 -6
  71. package/esm2020/datetimepicker/multi-year-view.mjs +4 -4
  72. package/esm2020/datetimepicker/year-view.mjs +4 -4
  73. package/esm2020/dialog/dialog.component.mjs +6 -6
  74. package/esm2020/dialog/dialog.mjs +3 -3
  75. package/esm2020/dialog/dialog.module.mjs +5 -5
  76. package/esm2020/drawer/drawer-config.mjs +1 -5
  77. package/esm2020/drawer/drawer-container.mjs +22 -12
  78. package/esm2020/drawer/drawer-module.mjs +5 -5
  79. package/esm2020/drawer/drawer.mjs +3 -3
  80. package/esm2020/form-group/form-group.component.mjs +5 -5
  81. package/esm2020/form-group/form-group.module.mjs +5 -5
  82. package/esm2020/grid/cell.component.mjs +61 -39
  83. package/esm2020/grid/column-menu.component.mjs +10 -10
  84. package/esm2020/grid/column-resize/column-resize-directives/column-resize-flex.mjs +3 -3
  85. package/esm2020/grid/column-resize/column-resize-directives/column-resize.mjs +3 -3
  86. package/esm2020/grid/column-resize/column-resize-module.mjs +8 -8
  87. package/esm2020/grid/column-resize/overlay-handle.mjs +3 -3
  88. package/esm2020/grid/column-resize/resizable-directives/resizable.mjs +3 -3
  89. package/esm2020/grid/column-resize/resize-strategy.mjs +3 -3
  90. package/esm2020/grid/expansion-toggle.directive.mjs +3 -3
  91. package/esm2020/grid/grid.component.mjs +28 -23
  92. package/esm2020/grid/grid.interface.mjs +1 -1
  93. package/esm2020/grid/grid.module.mjs +22 -24
  94. package/esm2020/grid/grid.service.mjs +3 -3
  95. package/esm2020/loader/loader.component.mjs +6 -6
  96. package/esm2020/loader/loader.module.mjs +5 -5
  97. package/esm2020/popover/popover-module.mjs +5 -5
  98. package/esm2020/popover/popover-target.mjs +3 -3
  99. package/esm2020/popover/popover-trigger.mjs +3 -3
  100. package/esm2020/popover/popover.mjs +4 -4
  101. package/esm2020/progress/progress.component.mjs +3 -3
  102. package/esm2020/progress/progress.module.mjs +5 -5
  103. package/esm2020/select/option.component.mjs +3 -3
  104. package/esm2020/select/select.component.mjs +5 -5
  105. package/esm2020/select/select.module.mjs +5 -5
  106. package/esm2020/select/templates.directive.mjs +33 -33
  107. package/esm2020/slider/slider-module.mjs +5 -5
  108. package/esm2020/slider/slider.mjs +4 -4
  109. package/esm2020/split/split-pane.directive.mjs +3 -3
  110. package/esm2020/split/split.component.mjs +3 -3
  111. package/esm2020/split/split.module.mjs +5 -5
  112. package/esm2020/text3d/text3d.component.mjs +3 -3
  113. package/esm2020/text3d/text3d.module.mjs +5 -5
  114. package/esm2020/tooltip/tooltip-module.mjs +5 -5
  115. package/esm2020/tooltip/tooltip.mjs +7 -7
  116. package/fesm2015/mtxAlert.mjs +9 -9
  117. package/fesm2015/mtxAlert.mjs.map +1 -1
  118. package/fesm2015/mtxButton.mjs +7 -7
  119. package/fesm2015/mtxButton.mjs.map +1 -1
  120. package/fesm2015/mtxCheckboxGroup.mjs +11 -11
  121. package/fesm2015/mtxCheckboxGroup.mjs.map +1 -1
  122. package/fesm2015/mtxColorpicker.mjs +30 -30
  123. package/fesm2015/mtxColorpicker.mjs.map +1 -1
  124. package/fesm2015/mtxColumnResize.mjs +40 -40
  125. package/fesm2015/mtxColumnResize.mjs.map +1 -1
  126. package/fesm2015/mtxCore.mjs +19 -19
  127. package/fesm2015/mtxCore.mjs.map +1 -1
  128. package/fesm2015/mtxDatetimepicker.mjs +405 -397
  129. package/fesm2015/mtxDatetimepicker.mjs.map +1 -1
  130. package/fesm2015/mtxDialog.mjs +13 -13
  131. package/fesm2015/mtxDialog.mjs.map +1 -1
  132. package/fesm2015/mtxDrawer.mjs +28 -22
  133. package/fesm2015/mtxDrawer.mjs.map +1 -1
  134. package/fesm2015/mtxFormGroup.mjs +8 -8
  135. package/fesm2015/mtxFormGroup.mjs.map +1 -1
  136. package/fesm2015/mtxGrid.mjs +377 -351
  137. package/fesm2015/mtxGrid.mjs.map +1 -1
  138. package/fesm2015/mtxLoader.mjs +10 -10
  139. package/fesm2015/mtxLoader.mjs.map +1 -1
  140. package/fesm2015/mtxPopover.mjs +13 -13
  141. package/fesm2015/mtxPopover.mjs.map +1 -1
  142. package/fesm2015/mtxProgress.mjs +7 -7
  143. package/fesm2015/mtxProgress.mjs.map +1 -1
  144. package/fesm2015/mtxSelect.mjs +45 -45
  145. package/fesm2015/mtxSelect.mjs.map +1 -1
  146. package/fesm2015/mtxSlider.mjs +8 -8
  147. package/fesm2015/mtxSlider.mjs.map +1 -1
  148. package/fesm2015/mtxSplit.mjs +10 -10
  149. package/fesm2015/mtxSplit.mjs.map +1 -1
  150. package/fesm2015/mtxText3d.mjs +7 -7
  151. package/fesm2015/mtxText3d.mjs.map +1 -1
  152. package/fesm2015/mtxTooltip.mjs +10 -10
  153. package/fesm2015/mtxTooltip.mjs.map +1 -1
  154. package/fesm2015/ng-matero-extensions.mjs.map +1 -1
  155. package/fesm2020/mtxAlert.mjs +9 -9
  156. package/fesm2020/mtxAlert.mjs.map +1 -1
  157. package/fesm2020/mtxButton.mjs +7 -7
  158. package/fesm2020/mtxButton.mjs.map +1 -1
  159. package/fesm2020/mtxCheckboxGroup.mjs +11 -11
  160. package/fesm2020/mtxCheckboxGroup.mjs.map +1 -1
  161. package/fesm2020/mtxColorpicker.mjs +30 -30
  162. package/fesm2020/mtxColorpicker.mjs.map +1 -1
  163. package/fesm2020/mtxColumnResize.mjs +40 -40
  164. package/fesm2020/mtxColumnResize.mjs.map +1 -1
  165. package/fesm2020/mtxCore.mjs +19 -19
  166. package/fesm2020/mtxCore.mjs.map +1 -1
  167. package/fesm2020/mtxDatetimepicker.mjs +414 -406
  168. package/fesm2020/mtxDatetimepicker.mjs.map +1 -1
  169. package/fesm2020/mtxDialog.mjs +13 -13
  170. package/fesm2020/mtxDialog.mjs.map +1 -1
  171. package/fesm2020/mtxDrawer.mjs +28 -22
  172. package/fesm2020/mtxDrawer.mjs.map +1 -1
  173. package/fesm2020/mtxFormGroup.mjs +8 -8
  174. package/fesm2020/mtxFormGroup.mjs.map +1 -1
  175. package/fesm2020/mtxGrid.mjs +376 -351
  176. package/fesm2020/mtxGrid.mjs.map +1 -1
  177. package/fesm2020/mtxLoader.mjs +10 -10
  178. package/fesm2020/mtxLoader.mjs.map +1 -1
  179. package/fesm2020/mtxPopover.mjs +13 -13
  180. package/fesm2020/mtxPopover.mjs.map +1 -1
  181. package/fesm2020/mtxProgress.mjs +7 -7
  182. package/fesm2020/mtxProgress.mjs.map +1 -1
  183. package/fesm2020/mtxSelect.mjs +45 -45
  184. package/fesm2020/mtxSelect.mjs.map +1 -1
  185. package/fesm2020/mtxSlider.mjs +8 -8
  186. package/fesm2020/mtxSlider.mjs.map +1 -1
  187. package/fesm2020/mtxSplit.mjs +10 -10
  188. package/fesm2020/mtxSplit.mjs.map +1 -1
  189. package/fesm2020/mtxText3d.mjs +7 -7
  190. package/fesm2020/mtxText3d.mjs.map +1 -1
  191. package/fesm2020/mtxTooltip.mjs +10 -10
  192. package/fesm2020/mtxTooltip.mjs.map +1 -1
  193. package/fesm2020/ng-matero-extensions.mjs.map +1 -1
  194. package/form-group/form-group.component.d.ts +1 -1
  195. package/form-group/{mtxFormGroup.d.ts → index.d.ts} +0 -0
  196. package/grid/cell.component.d.ts +10 -11
  197. package/grid/column-menu.component.d.ts +1 -1
  198. package/grid/column-resize/column-resize-directives/column-resize-flex.d.ts +1 -1
  199. package/grid/column-resize/column-resize-directives/column-resize.d.ts +1 -1
  200. package/grid/column-resize/overlay-handle.d.ts +1 -1
  201. package/grid/column-resize/resizable-directives/resizable.d.ts +1 -1
  202. package/grid/expansion-toggle.directive.d.ts +1 -1
  203. package/grid/grid.component.d.ts +8 -6
  204. package/grid/grid.interface.d.ts +24 -12
  205. package/grid/{mtxGrid.d.ts → index.d.ts} +0 -0
  206. package/{ng-matero-extensions.d.ts → index.d.ts} +0 -0
  207. package/loader/{mtxLoader.d.ts → index.d.ts} +0 -0
  208. package/loader/loader.component.d.ts +1 -1
  209. package/package.json +29 -29
  210. package/popover/{mtxPopover.d.ts → index.d.ts} +0 -0
  211. package/popover/popover-target.d.ts +1 -1
  212. package/popover/popover-trigger.d.ts +1 -1
  213. package/popover/popover.d.ts +1 -1
  214. package/progress/{mtxProgress.d.ts → index.d.ts} +0 -0
  215. package/progress/progress.component.d.ts +1 -1
  216. package/select/{mtxSelect.d.ts → index.d.ts} +0 -0
  217. package/select/option.component.d.ts +1 -1
  218. package/select/select.component.d.ts +1 -1
  219. package/select/templates.directive.d.ts +11 -11
  220. package/slider/_slider-theme.scss +1 -1
  221. package/slider/{mtxSlider.d.ts → index.d.ts} +0 -0
  222. package/slider/slider.d.ts +1 -1
  223. package/slider/slider.scss +1 -1
  224. package/split/{mtxSplit.d.ts → index.d.ts} +0 -0
  225. package/split/split-pane.directive.d.ts +1 -1
  226. package/split/split.component.d.ts +1 -1
  227. package/text3d/{mtxText3d.d.ts → index.d.ts} +0 -0
  228. package/text3d/text3d.component.d.ts +1 -1
  229. package/tooltip/{mtxTooltip.d.ts → index.d.ts} +0 -0
  230. package/tooltip/tooltip.d.ts +2 -2
  231. package/alert/package.json +0 -10
  232. package/button/package.json +0 -10
  233. package/checkbox-group/package.json +0 -10
  234. package/colorpicker/package.json +0 -10
  235. package/column-resize/package.json +0 -10
  236. package/core/package.json +0 -10
  237. package/datetimepicker/package.json +0 -10
  238. package/dialog/package.json +0 -10
  239. package/drawer/package.json +0 -10
  240. package/form-group/package.json +0 -10
  241. package/grid/package.json +0 -10
  242. package/loader/package.json +0 -10
  243. package/popover/package.json +0 -10
  244. package/progress/package.json +0 -10
  245. package/select/package.json +0 -10
  246. package/slider/package.json +0 -10
  247. package/split/package.json +0 -10
  248. package/text3d/package.json +0 -10
  249. package/tooltip/package.json +0 -10
@@ -1,13 +1,13 @@
1
- import * as i2 from '@angular/cdk/a11y';
1
+ import * as i2$1 from '@angular/cdk/a11y';
2
2
  import { A11yModule } from '@angular/cdk/a11y';
3
- import * as i4 from '@angular/cdk/overlay';
3
+ import * as i4$1 from '@angular/cdk/overlay';
4
4
  import { Overlay, OverlayConfig, OverlayModule } from '@angular/cdk/overlay';
5
5
  import { ComponentPortal, PortalModule } from '@angular/cdk/portal';
6
- import * as i3 from '@angular/common';
6
+ import * as i2 from '@angular/common';
7
7
  import { CommonModule } from '@angular/common';
8
8
  import * as i0 from '@angular/core';
9
9
  import { EventEmitter, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, Output, Optional, Inject, InjectionToken, ViewChild, forwardRef, Directive, ContentChild, NgModule } from '@angular/core';
10
- import * as i3$1 from '@angular/material/button';
10
+ import * as i4 from '@angular/material/button';
11
11
  import { MatButtonModule } from '@angular/material/button';
12
12
  import { ENTER, PAGE_DOWN, PAGE_UP, END, HOME, DOWN_ARROW, UP_ARROW, RIGHT_ARROW, LEFT_ARROW, ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';
13
13
  import { coerceBooleanProperty, coerceStringArray } from '@angular/cdk/coercion';
@@ -22,7 +22,7 @@ import { Subject, Subscription, merge, of } from 'rxjs';
22
22
  import * as i6 from '@angular/cdk/bidi';
23
23
  import { NG_VALUE_ACCESSOR, NG_VALIDATORS, Validators } from '@angular/forms';
24
24
  import { MAT_INPUT_VALUE_ACCESSOR } from '@angular/material/input';
25
- import * as i2$1 from '@angular/material/form-field';
25
+ import * as i2$2 from '@angular/material/form-field';
26
26
 
27
27
  /**
28
28
  * Animations used by the Material datepicker.
@@ -129,9 +129,9 @@ class MtxCalendarBody {
129
129
  return cellNumber === this.activeCell;
130
130
  }
131
131
  }
132
- /** @nocollapse */ MtxCalendarBody.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: MtxCalendarBody, deps: [], target: i0.ɵɵFactoryTarget.Component });
133
- /** @nocollapse */ MtxCalendarBody.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.6", type: MtxCalendarBody, selector: "[mtx-calendar-body]", inputs: { label: "label", rows: "rows", todayValue: "todayValue", selectedValue: "selectedValue", labelMinRequiredCells: "labelMinRequiredCells", numCols: "numCols", allowDisabledSelection: "allowDisabledSelection", activeCell: "activeCell" }, outputs: { selectedValueChange: "selectedValueChange" }, host: { classAttribute: "mtx-calendar-body" }, exportAs: ["mtxCalendarBody"], 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<tr *ngIf=\"_firstRowOffset < labelMinRequiredCells\" aria-hidden=\"true\">\n <td [attr.colspan]=\"numCols\" class=\"mtx-calendar-body-label\">{{ label }}</td>\n</tr>\n\n<!-- Create the first row separately so we can include a special spacer cell. -->\n<tr *ngFor=\"let row of rows; let rowIndex = index\" role=\"row\">\n <!--\n We mark this cell as aria-hidden so it doesn't get read out as one of the days in the week.\n -->\n <td *ngIf=\"rowIndex === 0 && _firstRowOffset\"\n [attr.colspan]=\"_firstRowOffset\"\n aria-hidden=\"true\"\n class=\"mtx-calendar-body-label\">\n {{ _firstRowOffset >= labelMinRequiredCells ? label : '' }}\n </td>\n <td *ngFor=\"let item of row; let colIndex = index\"\n role=\"gridcell\"\n class=\"mtx-calendar-body-cell\"\n [tabindex]=\"_isActiveCell(rowIndex, colIndex) ? 0 : -1\"\n [attr.data-mat-row]=\"rowIndex\"\n [attr.data-mat-col]=\"colIndex\"\n [attr.aria-label]=\"item.ariaLabel\"\n [attr.aria-disabled]=\"!item.enabled || null\"\n [class.mtx-calendar-body-active]=\"_isActiveCell(rowIndex, colIndex)\"\n [class.mtx-calendar-body-disabled]=\"!item.enabled\"\n (click)=\"_cellClicked(item)\">\n <div [attr.aria-selected]=\"selectedValue === item.value\"\n [class.mtx-calendar-body-selected]=\"selectedValue === item.value\"\n [class.mtx-calendar-body-today]=\"todayValue === item.value\"\n class=\"mtx-calendar-body-cell-content\">\n {{ item.displayValue }}\n </div>\n </td>\n</tr>\n", styles: [".mtx-calendar-body{min-width:224px}.mtx-calendar-body-label{height:0;line-height:0;text-align:left;padding:7.1428571429% 4.7142857143%}[dir=rtl] .mtx-calendar-body-label{text-align:right}.mtx-calendar-body-cell{position:relative;width:14.2857142857%;height:0;line-height:0;padding:7.1428571429% 0;text-align:center;outline:none;cursor:pointer}.mtx-calendar-body-disabled{cursor:default;pointer-events:none}.mtx-calendar-body-cell-content{position:absolute;top:5%;left:5%;display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:90%;height:90%;border:1px solid transparent;border-radius:999px}\n"], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
134
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: MtxCalendarBody, decorators: [{
132
+ /** @nocollapse */ MtxCalendarBody.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: MtxCalendarBody, deps: [], target: i0.ɵɵFactoryTarget.Component });
133
+ /** @nocollapse */ MtxCalendarBody.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.2", type: MtxCalendarBody, selector: "[mtx-calendar-body]", inputs: { label: "label", rows: "rows", todayValue: "todayValue", selectedValue: "selectedValue", labelMinRequiredCells: "labelMinRequiredCells", numCols: "numCols", allowDisabledSelection: "allowDisabledSelection", activeCell: "activeCell" }, outputs: { selectedValueChange: "selectedValueChange" }, host: { classAttribute: "mtx-calendar-body" }, exportAs: ["mtxCalendarBody"], 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<tr *ngIf=\"_firstRowOffset < labelMinRequiredCells\" aria-hidden=\"true\">\n <td [attr.colspan]=\"numCols\" class=\"mtx-calendar-body-label\">{{ label }}</td>\n</tr>\n\n<!-- Create the first row separately so we can include a special spacer cell. -->\n<tr *ngFor=\"let row of rows; let rowIndex = index\" role=\"row\">\n <!--\n We mark this cell as aria-hidden so it doesn't get read out as one of the days in the week.\n -->\n <td *ngIf=\"rowIndex === 0 && _firstRowOffset\"\n [attr.colspan]=\"_firstRowOffset\"\n aria-hidden=\"true\"\n class=\"mtx-calendar-body-label\">\n {{ _firstRowOffset >= labelMinRequiredCells ? label : '' }}\n </td>\n <td *ngFor=\"let item of row; let colIndex = index\"\n role=\"gridcell\"\n class=\"mtx-calendar-body-cell\"\n [tabindex]=\"_isActiveCell(rowIndex, colIndex) ? 0 : -1\"\n [attr.data-mat-row]=\"rowIndex\"\n [attr.data-mat-col]=\"colIndex\"\n [attr.aria-label]=\"item.ariaLabel\"\n [attr.aria-disabled]=\"!item.enabled || null\"\n [class.mtx-calendar-body-active]=\"_isActiveCell(rowIndex, colIndex)\"\n [class.mtx-calendar-body-disabled]=\"!item.enabled\"\n (click)=\"_cellClicked(item)\">\n <div [attr.aria-selected]=\"selectedValue === item.value\"\n [class.mtx-calendar-body-selected]=\"selectedValue === item.value\"\n [class.mtx-calendar-body-today]=\"todayValue === item.value\"\n class=\"mtx-calendar-body-cell-content\">\n {{ item.displayValue }}\n </div>\n </td>\n</tr>\n", styles: [".mtx-calendar-body{min-width:224px}.mtx-calendar-body-label{height:0;line-height:0;text-align:left;padding:7.1428571429% 4.7142857143%}[dir=rtl] .mtx-calendar-body-label{text-align:right}.mtx-calendar-body-cell{position:relative;width:14.2857142857%;height:0;line-height:0;padding:7.1428571429% 0;text-align:center;outline:none;cursor:pointer}.mtx-calendar-body-disabled{cursor:default;pointer-events:none}.mtx-calendar-body-cell-content{position:absolute;top:5%;left:5%;display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:90%;height:90%;border:1px solid transparent;border-radius:999px}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
134
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: MtxCalendarBody, decorators: [{
135
135
  type: Component,
136
136
  args: [{ selector: '[mtx-calendar-body]', host: {
137
137
  class: 'mtx-calendar-body',
@@ -297,9 +297,9 @@ class MtxMultiYearView {
297
297
  return this._adapter.isDateInstance(obj) && this._adapter.isValid(obj) ? obj : null;
298
298
  }
299
299
  }
300
- /** @nocollapse */ MtxMultiYearView.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: MtxMultiYearView, deps: [{ token: i1.DatetimeAdapter, optional: true }, { token: MTX_DATETIME_FORMATS, optional: true }], target: i0.ɵɵFactoryTarget.Component });
301
- /** @nocollapse */ MtxMultiYearView.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.6", type: MtxMultiYearView, selector: "mtx-multi-year-view", inputs: { type: "type", dateFilter: "dateFilter", activeDate: "activeDate", selected: "selected", minDate: "minDate", maxDate: "maxDate" }, outputs: { selectedChange: "selectedChange", _userSelection: "_userSelection" }, exportAs: ["mtxMultiYearView"], ngImport: i0, template: "<table class=\"mtx-calendar-table\" role=\"grid\">\n <thead class=\"mtx-calendar-table-header\"></thead>\n <tbody mtx-calendar-body\n (@slideCalendar.done)=\"_calendarStateDone()\"\n [@slideCalendar]=\"_calendarState\"\n [todayValue]=\"_todayYear\"\n [rows]=\"_years\"\n [numCols]=\"4\"\n [activeCell]=\"_getActiveCell()\"\n [allowDisabledSelection]=\"true\"\n [selectedValue]=\"_selectedYear!\"\n (selectedValueChange)=\"_yearSelected($event)\"></tbody>\n</table>\n", components: [{ type: MtxCalendarBody, selector: "[mtx-calendar-body]", inputs: ["label", "rows", "todayValue", "selectedValue", "labelMinRequiredCells", "numCols", "allowDisabledSelection", "activeCell"], outputs: ["selectedValueChange"], exportAs: ["mtxCalendarBody"] }], animations: [mtxDatetimepickerAnimations.slideCalendar], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
302
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: MtxMultiYearView, decorators: [{
300
+ /** @nocollapse */ MtxMultiYearView.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: MtxMultiYearView, deps: [{ token: i1.DatetimeAdapter, optional: true }, { token: MTX_DATETIME_FORMATS, optional: true }], target: i0.ɵɵFactoryTarget.Component });
301
+ /** @nocollapse */ MtxMultiYearView.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.2", type: MtxMultiYearView, selector: "mtx-multi-year-view", inputs: { type: "type", dateFilter: "dateFilter", activeDate: "activeDate", selected: "selected", minDate: "minDate", maxDate: "maxDate" }, outputs: { selectedChange: "selectedChange", _userSelection: "_userSelection" }, exportAs: ["mtxMultiYearView"], ngImport: i0, template: "<table class=\"mtx-calendar-table\" role=\"grid\">\n <thead class=\"mtx-calendar-table-header\"></thead>\n <tbody mtx-calendar-body\n (@slideCalendar.done)=\"_calendarStateDone()\"\n [@slideCalendar]=\"_calendarState\"\n [todayValue]=\"_todayYear\"\n [rows]=\"_years\"\n [numCols]=\"4\"\n [activeCell]=\"_getActiveCell()\"\n [allowDisabledSelection]=\"true\"\n [selectedValue]=\"_selectedYear!\"\n (selectedValueChange)=\"_yearSelected($event)\"></tbody>\n</table>\n", dependencies: [{ kind: "component", type: MtxCalendarBody, selector: "[mtx-calendar-body]", inputs: ["label", "rows", "todayValue", "selectedValue", "labelMinRequiredCells", "numCols", "allowDisabledSelection", "activeCell"], outputs: ["selectedValueChange"], exportAs: ["mtxCalendarBody"] }], animations: [mtxDatetimepickerAnimations.slideCalendar], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
302
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: MtxMultiYearView, decorators: [{
303
303
  type: Component,
304
304
  args: [{ selector: 'mtx-multi-year-view', exportAs: 'mtxMultiYearView', animations: [mtxDatetimepickerAnimations.slideCalendar], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<table class=\"mtx-calendar-table\" role=\"grid\">\n <thead class=\"mtx-calendar-table-header\"></thead>\n <tbody mtx-calendar-body\n (@slideCalendar.done)=\"_calendarStateDone()\"\n [@slideCalendar]=\"_calendarState\"\n [todayValue]=\"_todayYear\"\n [rows]=\"_years\"\n [numCols]=\"4\"\n [activeCell]=\"_getActiveCell()\"\n [allowDisabledSelection]=\"true\"\n [selectedValue]=\"_selectedYear!\"\n (selectedValueChange)=\"_yearSelected($event)\"></tbody>\n</table>\n" }]
305
305
  }], ctorParameters: function () {
@@ -364,55 +364,52 @@ function euclideanModulo(a, b) {
364
364
  return ((a % b) + b) % b;
365
365
  }
366
366
 
367
- const DAYS_PER_WEEK = 7;
367
+ const CLOCK_RADIUS = 50;
368
+ const CLOCK_INNER_RADIUS = 27.5;
369
+ const CLOCK_OUTER_RADIUS = 41.25;
370
+ const CLOCK_TICK_RADIUS = 7.0833;
368
371
  /**
369
- * An internal component used to display a single month in the datetimepicker.
372
+ * A clock that is used as part of the datetimepicker.
370
373
  * @docs-private
371
374
  */
372
- class MtxMonthView {
373
- constructor(_adapter, _dateFormats) {
375
+ class MtxClock {
376
+ constructor(_element, _adapter) {
377
+ this._element = _element;
374
378
  this._adapter = _adapter;
375
- this._dateFormats = _dateFormats;
376
- this.type = 'date';
377
- /** Emits when a new date is selected. */
379
+ /** Step over minutes. */
380
+ this.interval = 1;
381
+ /** Whether the clock uses 12 hour format. */
382
+ this.twelvehour = false;
383
+ /** Emits when the currently selected date changes. */
378
384
  this.selectedChange = new EventEmitter();
385
+ /** Emits when any date is activated. */
386
+ this.activeDateChange = new EventEmitter();
379
387
  /** Emits when any date is selected. */
380
388
  this._userSelection = new EventEmitter();
381
- if (!this._adapter) {
382
- throw createMissingDateImplError('DatetimeAdapter');
383
- }
384
- if (!this._dateFormats) {
385
- throw createMissingDateImplError('MTX_DATETIME_FORMATS');
386
- }
387
- const firstDayOfWeek = this._adapter.getFirstDayOfWeek();
388
- const narrowWeekdays = this._adapter.getDayOfWeekNames('narrow');
389
- const longWeekdays = this._adapter.getDayOfWeekNames('long');
390
- // Rotate the labels for days of the week based on the configured first day of the week.
391
- const weekdays = longWeekdays.map((long, i) => {
392
- return { long, narrow: narrowWeekdays[i] };
393
- });
394
- this._weekdays = weekdays.slice(firstDayOfWeek).concat(weekdays.slice(0, firstDayOfWeek));
395
- this._activeDate = this._adapter.today();
389
+ /** Hours and Minutes representing the clock view. */
390
+ this._hours = [];
391
+ this._minutes = [];
392
+ /** Whether the clock is in hour view. */
393
+ this._hourView = true;
394
+ this._timeChanged = false;
395
+ this.mouseMoveListener = (event) => {
396
+ this._handleMousemove(event);
397
+ };
398
+ this.mouseUpListener = () => {
399
+ this._handleMouseup();
400
+ };
396
401
  }
397
402
  /**
398
- * The date to display in this month view (everything other than the month and year is ignored).
403
+ * The date to display in this clock view.
399
404
  */
400
405
  get activeDate() {
401
406
  return this._activeDate;
402
407
  }
403
408
  set activeDate(value) {
404
409
  const oldActiveDate = this._activeDate;
405
- this._activeDate = value || this._adapter.today();
406
- if (oldActiveDate &&
407
- this._activeDate &&
408
- !this._adapter.sameMonthAndYear(oldActiveDate, this._activeDate)) {
410
+ this._activeDate = this._adapter.clampDate(value, this.minDate, this.maxDate);
411
+ if (!this._adapter.sameMinute(oldActiveDate, this._activeDate)) {
409
412
  this._init();
410
- if (this._adapter.isInNextMonth(oldActiveDate, this._activeDate)) {
411
- this.calendarState('right');
412
- }
413
- else {
414
- this.calendarState('left');
415
- }
416
413
  }
417
414
  }
418
415
  /** The currently selected date. */
@@ -420,344 +417,76 @@ class MtxMonthView {
420
417
  return this._selected;
421
418
  }
422
419
  set selected(value) {
423
- this._selected = value;
424
- this._selectedDate = this._getDateInCurrentMonth(this.selected);
425
- }
426
- ngAfterContentInit() {
427
- this._init();
428
- }
429
- /** Handles when a new date is selected. */
430
- _dateSelected(date) {
431
- this.selectedChange.emit(this._adapter.createDatetime(this._adapter.getYear(this.activeDate), this._adapter.getMonth(this.activeDate), date, this._adapter.getHour(this.activeDate), this._adapter.getMinute(this.activeDate)));
432
- if (this.type === 'date') {
433
- this._userSelection.emit();
420
+ this._selected = this._adapter.getValidDateOrNull(this._adapter.deserialize(value));
421
+ if (this._selected) {
422
+ this.activeDate = this._selected;
434
423
  }
435
424
  }
436
- _calendarStateDone() {
437
- this._calendarState = '';
425
+ /** The minimum selectable date. */
426
+ get minDate() {
427
+ return this._minDate;
438
428
  }
439
- /** Initializes this month view. */
440
- _init() {
441
- this._selectedDate = this._getDateInCurrentMonth(this.selected);
442
- this._todayDate = this._getDateInCurrentMonth(this._adapter.today());
443
- const firstOfMonth = this._adapter.createDatetime(this._adapter.getYear(this.activeDate), this._adapter.getMonth(this.activeDate), 1, this._adapter.getHour(this.activeDate), this._adapter.getMinute(this.activeDate));
444
- this._firstWeekOffset =
445
- (DAYS_PER_WEEK +
446
- this._adapter.getDayOfWeek(firstOfMonth) -
447
- this._adapter.getFirstDayOfWeek()) %
448
- DAYS_PER_WEEK;
449
- this._createWeekCells();
429
+ set minDate(value) {
430
+ this._minDate = this._adapter.getValidDateOrNull(this._adapter.deserialize(value));
450
431
  }
451
- /** Creates MdCalendarCells for the dates in this month. */
452
- _createWeekCells() {
453
- const daysInMonth = this._adapter.getNumDaysInMonth(this.activeDate);
454
- const dateNames = this._adapter.getDateNames();
455
- this._weeks = [[]];
456
- for (let i = 0, cell = this._firstWeekOffset; i < daysInMonth; i++, cell++) {
457
- if (cell === DAYS_PER_WEEK) {
458
- this._weeks.push([]);
459
- cell = 0;
460
- }
461
- const date = this._adapter.createDatetime(this._adapter.getYear(this.activeDate), this._adapter.getMonth(this.activeDate), i + 1, this._adapter.getHour(this.activeDate), this._adapter.getMinute(this.activeDate));
462
- const enabled = !this.dateFilter || this.dateFilter(date);
463
- const ariaLabel = this._adapter.format(date, this._dateFormats.display.dateA11yLabel);
464
- this._weeks[this._weeks.length - 1].push(new MtxCalendarCell(i + 1, dateNames[i], ariaLabel, enabled));
465
- }
432
+ /** The maximum selectable date. */
433
+ get maxDate() {
434
+ return this._maxDate;
466
435
  }
467
- /**
468
- * Gets the date in this month that the given Date falls on.
469
- * Returns null if the given Date is in another month.
470
- */
471
- _getDateInCurrentMonth(date) {
472
- return this._adapter.sameMonthAndYear(date, this.activeDate)
473
- ? this._adapter.getDate(date)
474
- : null;
436
+ set maxDate(value) {
437
+ this._maxDate = this._adapter.getValidDateOrNull(this._adapter.deserialize(value));
475
438
  }
476
- calendarState(direction) {
477
- this._calendarState = direction;
439
+ /** Whether the clock should be started in hour or minute view. */
440
+ set startView(value) {
441
+ this._hourView = value !== 'minute';
478
442
  }
479
- }
480
- /** @nocollapse */ MtxMonthView.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: MtxMonthView, deps: [{ token: i1.DatetimeAdapter, optional: true }, { token: MTX_DATETIME_FORMATS, optional: true }], target: i0.ɵɵFactoryTarget.Component });
481
- /** @nocollapse */ MtxMonthView.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.6", type: MtxMonthView, selector: "mtx-month-view", inputs: { type: "type", dateFilter: "dateFilter", activeDate: "activeDate", selected: "selected" }, outputs: { selectedChange: "selectedChange", _userSelection: "_userSelection" }, exportAs: ["mtxMonthView"], ngImport: i0, template: "<table class=\"mtx-calendar-table\" role=\"grid\">\n <thead class=\"mtx-calendar-table-header\">\n <tr>\n <th *ngFor=\"let day of _weekdays\" [attr.aria-label]=\"day.long\">{{day.narrow}}</th>\n </tr>\n </thead>\n <tbody mtx-calendar-body\n (@slideCalendar.done)=\"_calendarStateDone()\"\n [@slideCalendar]=\"_calendarState\"\n [rows]=\"_weeks\"\n [todayValue]=\"_todayDate!\"\n [activeCell]=\"_adapter.getDate(activeDate) - 1\"\n [selectedValue]=\"_selectedDate!\"\n (selectedValueChange)=\"_dateSelected($event)\"></tbody>\n</table>\n", components: [{ type: MtxCalendarBody, selector: "[mtx-calendar-body]", inputs: ["label", "rows", "todayValue", "selectedValue", "labelMinRequiredCells", "numCols", "allowDisabledSelection", "activeCell"], outputs: ["selectedValueChange"], exportAs: ["mtxCalendarBody"] }], directives: [{ type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], animations: [mtxDatetimepickerAnimations.slideCalendar], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
482
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: MtxMonthView, decorators: [{
483
- type: Component,
484
- args: [{ selector: 'mtx-month-view', exportAs: 'mtxMonthView', animations: [mtxDatetimepickerAnimations.slideCalendar], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<table class=\"mtx-calendar-table\" role=\"grid\">\n <thead class=\"mtx-calendar-table-header\">\n <tr>\n <th *ngFor=\"let day of _weekdays\" [attr.aria-label]=\"day.long\">{{day.narrow}}</th>\n </tr>\n </thead>\n <tbody mtx-calendar-body\n (@slideCalendar.done)=\"_calendarStateDone()\"\n [@slideCalendar]=\"_calendarState\"\n [rows]=\"_weeks\"\n [todayValue]=\"_todayDate!\"\n [activeCell]=\"_adapter.getDate(activeDate) - 1\"\n [selectedValue]=\"_selectedDate!\"\n (selectedValueChange)=\"_dateSelected($event)\"></tbody>\n</table>\n" }]
485
- }], ctorParameters: function () {
486
- return [{ type: i1.DatetimeAdapter, decorators: [{
487
- type: Optional
488
- }] }, { type: undefined, decorators: [{
489
- type: Optional
490
- }, {
491
- type: Inject,
492
- args: [MTX_DATETIME_FORMATS]
493
- }] }];
494
- }, propDecorators: { type: [{
495
- type: Input
496
- }], dateFilter: [{
497
- type: Input
498
- }], selectedChange: [{
499
- type: Output
500
- }], _userSelection: [{
501
- type: Output
502
- }], activeDate: [{
503
- type: Input
504
- }], selected: [{
505
- type: Input
506
- }] } });
507
-
508
- /**
509
- * An internal component used to display a single year in the datetimepicker.
510
- * @docs-private
511
- */
512
- class MtxYearView {
513
- constructor(_adapter, _dateFormats) {
514
- this._adapter = _adapter;
515
- this._dateFormats = _dateFormats;
516
- this.type = 'date';
517
- /** Emits when a new month is selected. */
518
- this.selectedChange = new EventEmitter();
519
- /** Emits when any date is selected. */
520
- this._userSelection = new EventEmitter();
521
- if (!this._adapter) {
522
- throw createMissingDateImplError('DatetimeAdapter');
443
+ get _hand() {
444
+ let hour = this._adapter.getHour(this.activeDate);
445
+ if (this.twelvehour) {
446
+ if (hour === 0) {
447
+ hour = 24;
448
+ }
449
+ this._selectedHour = hour > 12 ? hour - 12 : hour;
523
450
  }
524
- if (!this._dateFormats) {
525
- throw createMissingDateImplError('MTX_DATETIME_FORMATS');
451
+ else {
452
+ this._selectedHour = hour;
526
453
  }
527
- this._activeDate = this._adapter.today();
528
- }
529
- /** The date to display in this year view (everything other than the year is ignored). */
530
- get activeDate() {
531
- return this._activeDate;
532
- }
533
- set activeDate(value) {
534
- const oldActiveDate = this._activeDate;
535
- this._activeDate = value || this._adapter.today();
536
- if (oldActiveDate &&
537
- this._activeDate &&
538
- !this._adapter.sameYear(oldActiveDate, this._activeDate)) {
539
- this._init();
540
- // if (oldActiveDate < this._activeDate) {
541
- // this.calendarState('right');
542
- // } else {
543
- // this.calendarState('left');
544
- // }
454
+ this._selectedMinute = this._adapter.getMinute(this.activeDate);
455
+ let deg = 0;
456
+ let radius = CLOCK_OUTER_RADIUS;
457
+ if (this._hourView) {
458
+ const outer = this._selectedHour > 0 && this._selectedHour < 13;
459
+ radius = outer ? CLOCK_OUTER_RADIUS : CLOCK_INNER_RADIUS;
460
+ if (this.twelvehour) {
461
+ radius = CLOCK_OUTER_RADIUS;
462
+ }
463
+ deg = Math.round(this._selectedHour * (360 / (24 / 2)));
545
464
  }
546
- }
547
- /** The currently selected date. */
548
- get selected() {
549
- return this._selected;
550
- }
551
- set selected(value) {
552
- this._selected = value;
553
- this._selectedMonth = this._getMonthInCurrentYear(this.selected);
465
+ else {
466
+ deg = Math.round(this._selectedMinute * (360 / 60));
467
+ }
468
+ return {
469
+ 'transform': `rotate(${deg}deg)`,
470
+ 'height': `${radius}%`,
471
+ 'margin-top': `${50 - radius}%`,
472
+ };
554
473
  }
555
474
  ngAfterContentInit() {
475
+ this.activeDate = this._activeDate || this._adapter.today();
556
476
  this._init();
557
477
  }
558
- /** Handles when a new month is selected. */
559
- _monthSelected(month) {
560
- const normalizedDate = this._adapter.createDatetime(this._adapter.getYear(this.activeDate), month, 1, 0, 0);
561
- this.selectedChange.emit(this._adapter.createDatetime(this._adapter.getYear(this.activeDate), month, Math.min(this._adapter.getDate(this.activeDate), this._adapter.getNumDaysInMonth(normalizedDate)), this._adapter.getHour(this.activeDate), this._adapter.getMinute(this.activeDate)));
562
- if (this.type === 'month') {
563
- this._userSelection.emit();
564
- }
565
- }
566
- _calendarStateDone() {
567
- this._calendarState = '';
478
+ /** Handles mousedown events on the clock body. */
479
+ _handleMousedown(event) {
480
+ this._timeChanged = false;
481
+ this.setTime(event);
482
+ document.addEventListener('mousemove', this.mouseMoveListener);
483
+ document.addEventListener('touchmove', this.mouseMoveListener);
484
+ document.addEventListener('mouseup', this.mouseUpListener);
485
+ document.addEventListener('touchend', this.mouseUpListener);
568
486
  }
569
- /** Initializes this month view. */
570
- _init() {
571
- this._selectedMonth = this._getMonthInCurrentYear(this.selected);
572
- this._todayMonth = this._getMonthInCurrentYear(this._adapter.today());
573
- this._yearLabel = this._adapter.getYearName(this.activeDate);
574
- const monthNames = this._adapter.getMonthNames('short');
575
- // First row of months only contains 5 elements so we can fit the year label on the same row.
576
- this._months = [
577
- [0, 1, 2, 3],
578
- [4, 5, 6, 7],
579
- [8, 9, 10, 11],
580
- ].map(row => row.map(month => this._createCellForMonth(month, monthNames[month])));
581
- }
582
- /**
583
- * Gets the month in this year that the given Date falls on.
584
- * Returns null if the given Date is in another year.
585
- */
586
- _getMonthInCurrentYear(date) {
587
- return this._adapter.sameYear(date, this.activeDate) ? this._adapter.getMonth(date) : null;
588
- }
589
- /** Creates an MdCalendarCell for the given month. */
590
- _createCellForMonth(month, monthName) {
591
- const ariaLabel = this._adapter.format(this._adapter.createDatetime(this._adapter.getYear(this.activeDate), month, 1, this._adapter.getHour(this.activeDate), this._adapter.getMinute(this.activeDate)), this._dateFormats.display.monthYearA11yLabel);
592
- return new MtxCalendarCell(month, monthName.toLocaleUpperCase(), ariaLabel, this._isMonthEnabled(month));
593
- }
594
- // private calendarState(direction: string): void {
595
- // this._calendarState = direction;
596
- // }
597
- /** Whether the given month is enabled. */
598
- _isMonthEnabled(month) {
599
- if (!this.dateFilter) {
600
- return true;
601
- }
602
- const firstOfMonth = this._adapter.createDatetime(this._adapter.getYear(this.activeDate), month, 1, this._adapter.getHour(this.activeDate), this._adapter.getMinute(this.activeDate));
603
- // If any date in the month is enabled count the month as enabled.
604
- for (let date = firstOfMonth; this._adapter.getMonth(date) === month; date = this._adapter.addCalendarDays(date, 1)) {
605
- if (this.dateFilter(date)) {
606
- return true;
607
- }
608
- }
609
- return false;
610
- }
611
- }
612
- /** @nocollapse */ MtxYearView.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: MtxYearView, deps: [{ token: i1.DatetimeAdapter, optional: true }, { token: MTX_DATETIME_FORMATS, optional: true }], target: i0.ɵɵFactoryTarget.Component });
613
- /** @nocollapse */ MtxYearView.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.6", type: MtxYearView, selector: "mtx-year-view", inputs: { type: "type", dateFilter: "dateFilter", activeDate: "activeDate", selected: "selected" }, outputs: { selectedChange: "selectedChange", _userSelection: "_userSelection" }, exportAs: ["mtxYearView"], ngImport: i0, template: "<table class=\"mtx-calendar-table\" role=\"grid\">\n <thead class=\"mtx-calendar-table-header\"></thead>\n <tbody mtx-calendar-body\n (@slideCalendar.done)=\"_calendarStateDone()\"\n [@slideCalendar]=\"_calendarState\"\n [label]=\"_yearLabel\"\n [rows]=\"_months\"\n [todayValue]=\"_todayMonth!\"\n [labelMinRequiredCells]=\"2\"\n [numCols]=\"4\"\n [activeCell]=\"_adapter.getMonth(activeDate)\"\n [selectedValue]=\"_selectedMonth!\"\n (selectedValueChange)=\"_monthSelected($event)\"\n [allowDisabledSelection]=\"true\"></tbody>\n</table>\n", components: [{ type: MtxCalendarBody, selector: "[mtx-calendar-body]", inputs: ["label", "rows", "todayValue", "selectedValue", "labelMinRequiredCells", "numCols", "allowDisabledSelection", "activeCell"], outputs: ["selectedValueChange"], exportAs: ["mtxCalendarBody"] }], animations: [mtxDatetimepickerAnimations.slideCalendar], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
614
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: MtxYearView, decorators: [{
615
- type: Component,
616
- args: [{ selector: 'mtx-year-view', exportAs: 'mtxYearView', animations: [mtxDatetimepickerAnimations.slideCalendar], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<table class=\"mtx-calendar-table\" role=\"grid\">\n <thead class=\"mtx-calendar-table-header\"></thead>\n <tbody mtx-calendar-body\n (@slideCalendar.done)=\"_calendarStateDone()\"\n [@slideCalendar]=\"_calendarState\"\n [label]=\"_yearLabel\"\n [rows]=\"_months\"\n [todayValue]=\"_todayMonth!\"\n [labelMinRequiredCells]=\"2\"\n [numCols]=\"4\"\n [activeCell]=\"_adapter.getMonth(activeDate)\"\n [selectedValue]=\"_selectedMonth!\"\n (selectedValueChange)=\"_monthSelected($event)\"\n [allowDisabledSelection]=\"true\"></tbody>\n</table>\n" }]
617
- }], ctorParameters: function () {
618
- return [{ type: i1.DatetimeAdapter, decorators: [{
619
- type: Optional
620
- }] }, { type: undefined, decorators: [{
621
- type: Optional
622
- }, {
623
- type: Inject,
624
- args: [MTX_DATETIME_FORMATS]
625
- }] }];
626
- }, propDecorators: { type: [{
627
- type: Input
628
- }], dateFilter: [{
629
- type: Input
630
- }], selectedChange: [{
631
- type: Output
632
- }], _userSelection: [{
633
- type: Output
634
- }], activeDate: [{
635
- type: Input
636
- }], selected: [{
637
- type: Input
638
- }] } });
639
-
640
- const CLOCK_RADIUS = 50;
641
- const CLOCK_INNER_RADIUS = 27.5;
642
- const CLOCK_OUTER_RADIUS = 41.25;
643
- const CLOCK_TICK_RADIUS = 7.0833;
644
- /**
645
- * A clock that is used as part of the datetimepicker.
646
- * @docs-private
647
- */
648
- class MtxClock {
649
- constructor(_element, _adapter) {
650
- this._element = _element;
651
- this._adapter = _adapter;
652
- this.interval = 1;
653
- this.twelvehour = false;
654
- /** Emits when the currently selected date changes. */
655
- this.selectedChange = new EventEmitter();
656
- /** Emits when any date is activated. */
657
- this.activeDateChange = new EventEmitter();
658
- /** Emits when any date is selected. */
659
- this._userSelection = new EventEmitter();
660
- /** Hours and Minutes representing the clock view. */
661
- this._hours = [];
662
- this._minutes = [];
663
- /** Whether the clock is in hour view. */
664
- this._hourView = true;
665
- this._timeChanged = false;
666
- this.mouseMoveListener = (event) => {
667
- this._handleMousemove(event);
668
- };
669
- this.mouseUpListener = () => {
670
- this._handleMouseup();
671
- };
672
- }
673
- /**
674
- * The date to display in this clock view.
675
- */
676
- get activeDate() {
677
- return this._activeDate;
678
- }
679
- set activeDate(value) {
680
- const oldActiveDate = this._activeDate;
681
- this._activeDate = this._adapter.clampDate(value, this.minDate, this.maxDate);
682
- if (!this._adapter.sameMinute(oldActiveDate, this._activeDate)) {
683
- this._init();
684
- }
685
- }
686
- /** The currently selected date. */
687
- get selected() {
688
- return this._selected;
689
- }
690
- set selected(value) {
691
- this._selected = this._adapter.getValidDateOrNull(this._adapter.deserialize(value));
692
- if (this._selected) {
693
- this.activeDate = this._selected;
694
- }
695
- }
696
- /** The minimum selectable date. */
697
- get minDate() {
698
- return this._minDate;
699
- }
700
- set minDate(value) {
701
- this._minDate = this._adapter.getValidDateOrNull(this._adapter.deserialize(value));
702
- }
703
- /** The maximum selectable date. */
704
- get maxDate() {
705
- return this._maxDate;
706
- }
707
- set maxDate(value) {
708
- this._maxDate = this._adapter.getValidDateOrNull(this._adapter.deserialize(value));
709
- }
710
- /** Whether the clock should be started in hour or minute view. */
711
- set startView(value) {
712
- this._hourView = value !== 'minute';
713
- }
714
- get _hand() {
715
- let hour = this._adapter.getHour(this.activeDate);
716
- if (this.twelvehour) {
717
- if (hour === 0) {
718
- hour = 24;
719
- }
720
- this._selectedHour = hour > 12 ? hour - 12 : hour;
721
- }
722
- else {
723
- this._selectedHour = hour;
724
- }
725
- this._selectedMinute = this._adapter.getMinute(this.activeDate);
726
- let deg = 0;
727
- let radius = CLOCK_OUTER_RADIUS;
728
- if (this._hourView) {
729
- const outer = this._selectedHour > 0 && this._selectedHour < 13;
730
- radius = outer ? CLOCK_OUTER_RADIUS : CLOCK_INNER_RADIUS;
731
- if (this.twelvehour) {
732
- radius = CLOCK_OUTER_RADIUS;
733
- }
734
- deg = Math.round(this._selectedHour * (360 / (24 / 2)));
735
- }
736
- else {
737
- deg = Math.round(this._selectedMinute * (360 / 60));
738
- }
739
- return {
740
- 'transform': `rotate(${deg}deg)`,
741
- 'height': `${radius}%`,
742
- 'margin-top': `${50 - radius}%`,
743
- };
744
- }
745
- ngAfterContentInit() {
746
- this.activeDate = this._activeDate || this._adapter.today();
747
- this._init();
748
- }
749
- /** Handles mousedown events on the clock body. */
750
- _handleMousedown(event) {
751
- this._timeChanged = false;
752
- this.setTime(event);
753
- document.addEventListener('mousemove', this.mouseMoveListener);
754
- document.addEventListener('touchmove', this.mouseMoveListener);
755
- document.addEventListener('mouseup', this.mouseUpListener);
756
- document.addEventListener('touchend', this.mouseUpListener);
757
- }
758
- _handleMousemove(event) {
759
- event.preventDefault();
760
- this.setTime(event);
487
+ _handleMousemove(event) {
488
+ event.preventDefault();
489
+ this.setTime(event);
761
490
  }
762
491
  _handleMouseup() {
763
492
  document.removeEventListener('mousemove', this.mouseMoveListener);
@@ -876,9 +605,9 @@ class MtxClock {
876
605
  this.activeDateChange.emit(this.activeDate);
877
606
  }
878
607
  }
879
- /** @nocollapse */ MtxClock.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: MtxClock, deps: [{ token: i0.ElementRef }, { token: i1.DatetimeAdapter }], target: i0.ɵɵFactoryTarget.Component });
880
- /** @nocollapse */ MtxClock.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.6", type: MtxClock, selector: "mtx-clock", inputs: { dateFilter: "dateFilter", interval: "interval", twelvehour: "twelvehour", activeDate: "activeDate", selected: "selected", minDate: "minDate", maxDate: "maxDate", startView: "startView" }, outputs: { selectedChange: "selectedChange", activeDateChange: "activeDateChange", _userSelection: "_userSelection" }, host: { attributes: { "role": "clock" }, listeners: { "mousedown": "_handleMousedown($event)" }, properties: { "class.mtx-clock": "true" } }, exportAs: ["mtxClock"], ngImport: i0, template: "<div class=\"mtx-clock-wrapper\">\n <div class=\"mtx-clock-center\"></div>\n <div [ngStyle]=\"_hand\" class=\"mtx-clock-hand\"></div>\n <div [class.active]=\"_hourView\" class=\"mtx-clock-hours\">\n <div *ngFor=\"let item of _hours\"\n [class.mtx-clock-cell-disabled]=\"!item.enabled\"\n [class.mtx-clock-cell-selected]=\"_selectedHour === item.value\"\n [style.fontSize]=\"item.fontSize\"\n [style.left]=\"item.left+'%'\"\n [style.top]=\"item.top+'%'\"\n class=\"mtx-clock-cell\">{{ item.displayValue }}</div>\n </div>\n <div [class.active]=\"!_hourView\" class=\"mtx-clock-minutes\">\n <div *ngFor=\"let item of _minutes\"\n [class.mtx-clock-cell-disabled]=\"!item.enabled\"\n [class.mtx-clock-cell-selected]=\"_selectedMinute === item.value\"\n [style.left]=\"item.left+'%'\"\n [style.top]=\"item.top+'%'\"\n class=\"mtx-clock-cell\">{{ item.displayValue }}</div>\n </div>\n</div>\n", styles: [".mtx-clock{position:relative;display:block;min-width:224px;margin:8px;box-sizing:border-box;-webkit-user-select:none;user-select:none}.mtx-clock-wrapper{position:relative;width:100%;height:0;padding-top:100%;border-radius:50%}.mtx-clock-center{position:absolute;top:50%;left:50%;width:2%;height:2%;margin:-1%;border-radius:50%}.mtx-clock-hand{position:absolute;top:0;right:0;bottom:0;left:0;width:1px;margin:0 auto;transform-origin:bottom}.mtx-clock-hand:before{content:\"\";position:absolute;top:-4px;left:-4px;width:8px;height:8px;border-radius:50%}.mtx-clock-hours,.mtx-clock-minutes{position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;visibility:hidden;transition:.35s;transform:scale(1.2)}.mtx-clock-hours.active,.mtx-clock-minutes.active{opacity:1;visibility:visible;transform:scale(1)}.mtx-clock-minutes{transform:scale(.8)}.mtx-clock-cell{position:absolute;display:flex;width:14.1666%;height:14.1666%;justify-content:center;box-sizing:border-box;border-radius:50%;align-items:center;cursor:pointer}.mtx-clock-cell.mtx-clock-cell-disabled{pointer-events:none}\n"], directives: [{ type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], encapsulation: i0.ViewEncapsulation.None });
881
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: MtxClock, decorators: [{
608
+ /** @nocollapse */ MtxClock.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: MtxClock, deps: [{ token: i0.ElementRef }, { token: i1.DatetimeAdapter }], target: i0.ɵɵFactoryTarget.Component });
609
+ /** @nocollapse */ MtxClock.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.2", type: MtxClock, selector: "mtx-clock", inputs: { dateFilter: "dateFilter", interval: "interval", twelvehour: "twelvehour", activeDate: "activeDate", selected: "selected", minDate: "minDate", maxDate: "maxDate", startView: "startView" }, outputs: { selectedChange: "selectedChange", activeDateChange: "activeDateChange", _userSelection: "_userSelection" }, host: { attributes: { "role": "clock" }, listeners: { "mousedown": "_handleMousedown($event)" }, properties: { "class.mtx-clock": "true" } }, exportAs: ["mtxClock"], ngImport: i0, template: "<div class=\"mtx-clock-wrapper\">\n <div class=\"mtx-clock-center\"></div>\n <div [ngStyle]=\"_hand\" class=\"mtx-clock-hand\"></div>\n <div [class.active]=\"_hourView\" class=\"mtx-clock-hours\">\n <div *ngFor=\"let item of _hours\"\n [class.mtx-clock-cell-disabled]=\"!item.enabled\"\n [class.mtx-clock-cell-selected]=\"_selectedHour === item.value\"\n [style.fontSize]=\"item.fontSize\"\n [style.left]=\"item.left+'%'\"\n [style.top]=\"item.top+'%'\"\n class=\"mtx-clock-cell\">{{ item.displayValue }}</div>\n </div>\n <div [class.active]=\"!_hourView\" class=\"mtx-clock-minutes\">\n <div *ngFor=\"let item of _minutes\"\n [class.mtx-clock-cell-disabled]=\"!item.enabled\"\n [class.mtx-clock-cell-selected]=\"_selectedMinute === item.value\"\n [style.left]=\"item.left+'%'\"\n [style.top]=\"item.top+'%'\"\n class=\"mtx-clock-cell\">{{ item.displayValue }}</div>\n </div>\n</div>\n", styles: [".mtx-clock{position:relative;display:block;min-width:224px;margin:8px;box-sizing:border-box;-webkit-user-select:none;user-select:none}.mtx-clock-wrapper{position:relative;width:100%;height:0;padding-top:100%;border-radius:50%}.mtx-clock-center{position:absolute;top:50%;left:50%;width:2%;height:2%;margin:-1%;border-radius:50%}.mtx-clock-hand{position:absolute;top:0;right:0;bottom:0;left:0;width:1px;margin:0 auto;transform-origin:bottom}.mtx-clock-hand:before{content:\"\";position:absolute;top:-4px;left:-4px;width:8px;height:8px;border-radius:50%}.mtx-clock-hours,.mtx-clock-minutes{position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;visibility:hidden;transition:.35s;transform:scale(1.2)}.mtx-clock-hours.active,.mtx-clock-minutes.active{opacity:1;visibility:visible;transform:scale(1)}.mtx-clock-minutes{transform:scale(.8)}.mtx-clock-cell{position:absolute;display:flex;width:14.1666%;height:14.1666%;justify-content:center;box-sizing:border-box;border-radius:50%;align-items:center;cursor:pointer}.mtx-clock-cell.mtx-clock-cell-disabled{pointer-events:none}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], encapsulation: i0.ViewEncapsulation.None });
610
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: MtxClock, decorators: [{
882
611
  type: Component,
883
612
  args: [{ selector: 'mtx-clock', host: {
884
613
  '[class.mtx-clock]': 'true',
@@ -909,6 +638,279 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImpor
909
638
  type: Input
910
639
  }] } });
911
640
 
641
+ const DAYS_PER_WEEK = 7;
642
+ /**
643
+ * An internal component used to display a single month in the datetimepicker.
644
+ * @docs-private
645
+ */
646
+ class MtxMonthView {
647
+ constructor(_adapter, _dateFormats) {
648
+ this._adapter = _adapter;
649
+ this._dateFormats = _dateFormats;
650
+ this.type = 'date';
651
+ /** Emits when a new date is selected. */
652
+ this.selectedChange = new EventEmitter();
653
+ /** Emits when any date is selected. */
654
+ this._userSelection = new EventEmitter();
655
+ if (!this._adapter) {
656
+ throw createMissingDateImplError('DatetimeAdapter');
657
+ }
658
+ if (!this._dateFormats) {
659
+ throw createMissingDateImplError('MTX_DATETIME_FORMATS');
660
+ }
661
+ const firstDayOfWeek = this._adapter.getFirstDayOfWeek();
662
+ const narrowWeekdays = this._adapter.getDayOfWeekNames('narrow');
663
+ const longWeekdays = this._adapter.getDayOfWeekNames('long');
664
+ // Rotate the labels for days of the week based on the configured first day of the week.
665
+ const weekdays = longWeekdays.map((long, i) => {
666
+ return { long, narrow: narrowWeekdays[i] };
667
+ });
668
+ this._weekdays = weekdays.slice(firstDayOfWeek).concat(weekdays.slice(0, firstDayOfWeek));
669
+ this._activeDate = this._adapter.today();
670
+ }
671
+ /**
672
+ * The date to display in this month view (everything other than the month and year is ignored).
673
+ */
674
+ get activeDate() {
675
+ return this._activeDate;
676
+ }
677
+ set activeDate(value) {
678
+ const oldActiveDate = this._activeDate;
679
+ this._activeDate = value || this._adapter.today();
680
+ if (oldActiveDate &&
681
+ this._activeDate &&
682
+ !this._adapter.sameMonthAndYear(oldActiveDate, this._activeDate)) {
683
+ this._init();
684
+ if (this._adapter.isInNextMonth(oldActiveDate, this._activeDate)) {
685
+ this.calendarState('right');
686
+ }
687
+ else {
688
+ this.calendarState('left');
689
+ }
690
+ }
691
+ }
692
+ /** The currently selected date. */
693
+ get selected() {
694
+ return this._selected;
695
+ }
696
+ set selected(value) {
697
+ this._selected = value;
698
+ this._selectedDate = this._getDateInCurrentMonth(this.selected);
699
+ }
700
+ ngAfterContentInit() {
701
+ this._init();
702
+ }
703
+ /** Handles when a new date is selected. */
704
+ _dateSelected(date) {
705
+ this.selectedChange.emit(this._adapter.createDatetime(this._adapter.getYear(this.activeDate), this._adapter.getMonth(this.activeDate), date, this._adapter.getHour(this.activeDate), this._adapter.getMinute(this.activeDate)));
706
+ if (this.type === 'date') {
707
+ this._userSelection.emit();
708
+ }
709
+ }
710
+ _calendarStateDone() {
711
+ this._calendarState = '';
712
+ }
713
+ /** Initializes this month view. */
714
+ _init() {
715
+ this._selectedDate = this._getDateInCurrentMonth(this.selected);
716
+ this._todayDate = this._getDateInCurrentMonth(this._adapter.today());
717
+ const firstOfMonth = this._adapter.createDatetime(this._adapter.getYear(this.activeDate), this._adapter.getMonth(this.activeDate), 1, this._adapter.getHour(this.activeDate), this._adapter.getMinute(this.activeDate));
718
+ this._firstWeekOffset =
719
+ (DAYS_PER_WEEK +
720
+ this._adapter.getDayOfWeek(firstOfMonth) -
721
+ this._adapter.getFirstDayOfWeek()) %
722
+ DAYS_PER_WEEK;
723
+ this._createWeekCells();
724
+ }
725
+ /** Creates MdCalendarCells for the dates in this month. */
726
+ _createWeekCells() {
727
+ const daysInMonth = this._adapter.getNumDaysInMonth(this.activeDate);
728
+ const dateNames = this._adapter.getDateNames();
729
+ this._weeks = [[]];
730
+ for (let i = 0, cell = this._firstWeekOffset; i < daysInMonth; i++, cell++) {
731
+ if (cell === DAYS_PER_WEEK) {
732
+ this._weeks.push([]);
733
+ cell = 0;
734
+ }
735
+ const date = this._adapter.createDatetime(this._adapter.getYear(this.activeDate), this._adapter.getMonth(this.activeDate), i + 1, this._adapter.getHour(this.activeDate), this._adapter.getMinute(this.activeDate));
736
+ const enabled = !this.dateFilter || this.dateFilter(date);
737
+ const ariaLabel = this._adapter.format(date, this._dateFormats.display.dateA11yLabel);
738
+ this._weeks[this._weeks.length - 1].push(new MtxCalendarCell(i + 1, dateNames[i], ariaLabel, enabled));
739
+ }
740
+ }
741
+ /**
742
+ * Gets the date in this month that the given Date falls on.
743
+ * Returns null if the given Date is in another month.
744
+ */
745
+ _getDateInCurrentMonth(date) {
746
+ return this._adapter.sameMonthAndYear(date, this.activeDate)
747
+ ? this._adapter.getDate(date)
748
+ : null;
749
+ }
750
+ calendarState(direction) {
751
+ this._calendarState = direction;
752
+ }
753
+ }
754
+ /** @nocollapse */ MtxMonthView.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: MtxMonthView, deps: [{ token: i1.DatetimeAdapter, optional: true }, { token: MTX_DATETIME_FORMATS, optional: true }], target: i0.ɵɵFactoryTarget.Component });
755
+ /** @nocollapse */ MtxMonthView.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.2", type: MtxMonthView, selector: "mtx-month-view", inputs: { type: "type", dateFilter: "dateFilter", activeDate: "activeDate", selected: "selected" }, outputs: { selectedChange: "selectedChange", _userSelection: "_userSelection" }, exportAs: ["mtxMonthView"], ngImport: i0, template: "<table class=\"mtx-calendar-table\" role=\"grid\">\n <thead class=\"mtx-calendar-table-header\">\n <tr>\n <th *ngFor=\"let day of _weekdays\" [attr.aria-label]=\"day.long\">{{day.narrow}}</th>\n </tr>\n </thead>\n <tbody mtx-calendar-body\n (@slideCalendar.done)=\"_calendarStateDone()\"\n [@slideCalendar]=\"_calendarState\"\n [rows]=\"_weeks\"\n [todayValue]=\"_todayDate!\"\n [activeCell]=\"_adapter.getDate(activeDate) - 1\"\n [selectedValue]=\"_selectedDate!\"\n (selectedValueChange)=\"_dateSelected($event)\"></tbody>\n</table>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: MtxCalendarBody, selector: "[mtx-calendar-body]", inputs: ["label", "rows", "todayValue", "selectedValue", "labelMinRequiredCells", "numCols", "allowDisabledSelection", "activeCell"], outputs: ["selectedValueChange"], exportAs: ["mtxCalendarBody"] }], animations: [mtxDatetimepickerAnimations.slideCalendar], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
756
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: MtxMonthView, decorators: [{
757
+ type: Component,
758
+ args: [{ selector: 'mtx-month-view', exportAs: 'mtxMonthView', animations: [mtxDatetimepickerAnimations.slideCalendar], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<table class=\"mtx-calendar-table\" role=\"grid\">\n <thead class=\"mtx-calendar-table-header\">\n <tr>\n <th *ngFor=\"let day of _weekdays\" [attr.aria-label]=\"day.long\">{{day.narrow}}</th>\n </tr>\n </thead>\n <tbody mtx-calendar-body\n (@slideCalendar.done)=\"_calendarStateDone()\"\n [@slideCalendar]=\"_calendarState\"\n [rows]=\"_weeks\"\n [todayValue]=\"_todayDate!\"\n [activeCell]=\"_adapter.getDate(activeDate) - 1\"\n [selectedValue]=\"_selectedDate!\"\n (selectedValueChange)=\"_dateSelected($event)\"></tbody>\n</table>\n" }]
759
+ }], ctorParameters: function () {
760
+ return [{ type: i1.DatetimeAdapter, decorators: [{
761
+ type: Optional
762
+ }] }, { type: undefined, decorators: [{
763
+ type: Optional
764
+ }, {
765
+ type: Inject,
766
+ args: [MTX_DATETIME_FORMATS]
767
+ }] }];
768
+ }, propDecorators: { type: [{
769
+ type: Input
770
+ }], dateFilter: [{
771
+ type: Input
772
+ }], selectedChange: [{
773
+ type: Output
774
+ }], _userSelection: [{
775
+ type: Output
776
+ }], activeDate: [{
777
+ type: Input
778
+ }], selected: [{
779
+ type: Input
780
+ }] } });
781
+
782
+ /**
783
+ * An internal component used to display a single year in the datetimepicker.
784
+ * @docs-private
785
+ */
786
+ class MtxYearView {
787
+ constructor(_adapter, _dateFormats) {
788
+ this._adapter = _adapter;
789
+ this._dateFormats = _dateFormats;
790
+ this.type = 'date';
791
+ /** Emits when a new month is selected. */
792
+ this.selectedChange = new EventEmitter();
793
+ /** Emits when any date is selected. */
794
+ this._userSelection = new EventEmitter();
795
+ if (!this._adapter) {
796
+ throw createMissingDateImplError('DatetimeAdapter');
797
+ }
798
+ if (!this._dateFormats) {
799
+ throw createMissingDateImplError('MTX_DATETIME_FORMATS');
800
+ }
801
+ this._activeDate = this._adapter.today();
802
+ }
803
+ /** The date to display in this year view (everything other than the year is ignored). */
804
+ get activeDate() {
805
+ return this._activeDate;
806
+ }
807
+ set activeDate(value) {
808
+ const oldActiveDate = this._activeDate;
809
+ this._activeDate = value || this._adapter.today();
810
+ if (oldActiveDate &&
811
+ this._activeDate &&
812
+ !this._adapter.sameYear(oldActiveDate, this._activeDate)) {
813
+ this._init();
814
+ // if (oldActiveDate < this._activeDate) {
815
+ // this.calendarState('right');
816
+ // } else {
817
+ // this.calendarState('left');
818
+ // }
819
+ }
820
+ }
821
+ /** The currently selected date. */
822
+ get selected() {
823
+ return this._selected;
824
+ }
825
+ set selected(value) {
826
+ this._selected = value;
827
+ this._selectedMonth = this._getMonthInCurrentYear(this.selected);
828
+ }
829
+ ngAfterContentInit() {
830
+ this._init();
831
+ }
832
+ /** Handles when a new month is selected. */
833
+ _monthSelected(month) {
834
+ const normalizedDate = this._adapter.createDatetime(this._adapter.getYear(this.activeDate), month, 1, 0, 0);
835
+ this.selectedChange.emit(this._adapter.createDatetime(this._adapter.getYear(this.activeDate), month, Math.min(this._adapter.getDate(this.activeDate), this._adapter.getNumDaysInMonth(normalizedDate)), this._adapter.getHour(this.activeDate), this._adapter.getMinute(this.activeDate)));
836
+ if (this.type === 'month') {
837
+ this._userSelection.emit();
838
+ }
839
+ }
840
+ _calendarStateDone() {
841
+ this._calendarState = '';
842
+ }
843
+ /** Initializes this month view. */
844
+ _init() {
845
+ this._selectedMonth = this._getMonthInCurrentYear(this.selected);
846
+ this._todayMonth = this._getMonthInCurrentYear(this._adapter.today());
847
+ this._yearLabel = this._adapter.getYearName(this.activeDate);
848
+ const monthNames = this._adapter.getMonthNames('short');
849
+ // First row of months only contains 5 elements so we can fit the year label on the same row.
850
+ this._months = [
851
+ [0, 1, 2, 3],
852
+ [4, 5, 6, 7],
853
+ [8, 9, 10, 11],
854
+ ].map(row => row.map(month => this._createCellForMonth(month, monthNames[month])));
855
+ }
856
+ /**
857
+ * Gets the month in this year that the given Date falls on.
858
+ * Returns null if the given Date is in another year.
859
+ */
860
+ _getMonthInCurrentYear(date) {
861
+ return this._adapter.sameYear(date, this.activeDate) ? this._adapter.getMonth(date) : null;
862
+ }
863
+ /** Creates an MdCalendarCell for the given month. */
864
+ _createCellForMonth(month, monthName) {
865
+ const ariaLabel = this._adapter.format(this._adapter.createDatetime(this._adapter.getYear(this.activeDate), month, 1, this._adapter.getHour(this.activeDate), this._adapter.getMinute(this.activeDate)), this._dateFormats.display.monthYearA11yLabel);
866
+ return new MtxCalendarCell(month, monthName.toLocaleUpperCase(), ariaLabel, this._isMonthEnabled(month));
867
+ }
868
+ // private calendarState(direction: string): void {
869
+ // this._calendarState = direction;
870
+ // }
871
+ /** Whether the given month is enabled. */
872
+ _isMonthEnabled(month) {
873
+ if (!this.dateFilter) {
874
+ return true;
875
+ }
876
+ const firstOfMonth = this._adapter.createDatetime(this._adapter.getYear(this.activeDate), month, 1, this._adapter.getHour(this.activeDate), this._adapter.getMinute(this.activeDate));
877
+ // If any date in the month is enabled count the month as enabled.
878
+ for (let date = firstOfMonth; this._adapter.getMonth(date) === month; date = this._adapter.addCalendarDays(date, 1)) {
879
+ if (this.dateFilter(date)) {
880
+ return true;
881
+ }
882
+ }
883
+ return false;
884
+ }
885
+ }
886
+ /** @nocollapse */ MtxYearView.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: MtxYearView, deps: [{ token: i1.DatetimeAdapter, optional: true }, { token: MTX_DATETIME_FORMATS, optional: true }], target: i0.ɵɵFactoryTarget.Component });
887
+ /** @nocollapse */ MtxYearView.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.2", type: MtxYearView, selector: "mtx-year-view", inputs: { type: "type", dateFilter: "dateFilter", activeDate: "activeDate", selected: "selected" }, outputs: { selectedChange: "selectedChange", _userSelection: "_userSelection" }, exportAs: ["mtxYearView"], ngImport: i0, template: "<table class=\"mtx-calendar-table\" role=\"grid\">\n <thead class=\"mtx-calendar-table-header\"></thead>\n <tbody mtx-calendar-body\n (@slideCalendar.done)=\"_calendarStateDone()\"\n [@slideCalendar]=\"_calendarState\"\n [label]=\"_yearLabel\"\n [rows]=\"_months\"\n [todayValue]=\"_todayMonth!\"\n [labelMinRequiredCells]=\"2\"\n [numCols]=\"4\"\n [activeCell]=\"_adapter.getMonth(activeDate)\"\n [selectedValue]=\"_selectedMonth!\"\n (selectedValueChange)=\"_monthSelected($event)\"\n [allowDisabledSelection]=\"true\"></tbody>\n</table>\n", dependencies: [{ kind: "component", type: MtxCalendarBody, selector: "[mtx-calendar-body]", inputs: ["label", "rows", "todayValue", "selectedValue", "labelMinRequiredCells", "numCols", "allowDisabledSelection", "activeCell"], outputs: ["selectedValueChange"], exportAs: ["mtxCalendarBody"] }], animations: [mtxDatetimepickerAnimations.slideCalendar], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
888
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: MtxYearView, decorators: [{
889
+ type: Component,
890
+ args: [{ selector: 'mtx-year-view', exportAs: 'mtxYearView', animations: [mtxDatetimepickerAnimations.slideCalendar], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<table class=\"mtx-calendar-table\" role=\"grid\">\n <thead class=\"mtx-calendar-table-header\"></thead>\n <tbody mtx-calendar-body\n (@slideCalendar.done)=\"_calendarStateDone()\"\n [@slideCalendar]=\"_calendarState\"\n [label]=\"_yearLabel\"\n [rows]=\"_months\"\n [todayValue]=\"_todayMonth!\"\n [labelMinRequiredCells]=\"2\"\n [numCols]=\"4\"\n [activeCell]=\"_adapter.getMonth(activeDate)\"\n [selectedValue]=\"_selectedMonth!\"\n (selectedValueChange)=\"_monthSelected($event)\"\n [allowDisabledSelection]=\"true\"></tbody>\n</table>\n" }]
891
+ }], ctorParameters: function () {
892
+ return [{ type: i1.DatetimeAdapter, decorators: [{
893
+ type: Optional
894
+ }] }, { type: undefined, decorators: [{
895
+ type: Optional
896
+ }, {
897
+ type: Inject,
898
+ args: [MTX_DATETIME_FORMATS]
899
+ }] }];
900
+ }, propDecorators: { type: [{
901
+ type: Input
902
+ }], dateFilter: [{
903
+ type: Input
904
+ }], selectedChange: [{
905
+ type: Output
906
+ }], _userSelection: [{
907
+ type: Output
908
+ }], activeDate: [{
909
+ type: Input
910
+ }], selected: [{
911
+ type: Input
912
+ }] } });
913
+
912
914
  /**
913
915
  * A calendar that is used as part of the datetimepicker.
914
916
  * @docs-private
@@ -924,6 +926,7 @@ class MtxCalendar {
924
926
  this._twelvehour = false;
925
927
  /** Whether the calendar should be started in month or year view. */
926
928
  this.startView = 'month';
929
+ /** Step over minutes. */
927
930
  this.timeInterval = 1;
928
931
  /** Prevent user to select same date time */
929
932
  this.preventSameDateTimeSelection = false;
@@ -949,19 +952,21 @@ class MtxCalendar {
949
952
  }
950
953
  this._intlChanges = _intl.changes.subscribe(() => changeDetectorRef.markForCheck());
951
954
  }
955
+ /** Whether to show multi-year view. */
952
956
  get multiYearSelector() {
953
957
  return this._multiYearSelector;
954
958
  }
955
959
  set multiYearSelector(value) {
956
960
  this._multiYearSelector = coerceBooleanProperty(value);
957
961
  }
958
- /** if true change the clock to 12 hour format. */
962
+ /** Whether the clock uses 12 hour format. */
959
963
  get twelvehour() {
960
964
  return this._twelvehour;
961
965
  }
962
966
  set twelvehour(value) {
963
967
  this._twelvehour = coerceBooleanProperty(value);
964
968
  }
969
+ /** The display type of datetimepicker. */
965
970
  get type() {
966
971
  return this._type;
967
972
  }
@@ -1463,9 +1468,9 @@ class MtxCalendar {
1463
1468
  return ('00' + n).slice(-2);
1464
1469
  }
1465
1470
  }
1466
- /** @nocollapse */ MtxCalendar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: MtxCalendar, deps: [{ token: i0.ElementRef }, { token: i1$1.MatDatepickerIntl }, { token: i0.NgZone }, { token: i1.DatetimeAdapter, optional: true }, { token: MTX_DATETIME_FORMATS, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
1467
- /** @nocollapse */ MtxCalendar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.6", type: MtxCalendar, selector: "mtx-calendar", inputs: { multiYearSelector: "multiYearSelector", twelvehour: "twelvehour", startView: "startView", timeInterval: "timeInterval", dateFilter: "dateFilter", preventSameDateTimeSelection: "preventSameDateTimeSelection", type: "type", startAt: "startAt", selected: "selected", minDate: "minDate", maxDate: "maxDate" }, outputs: { selectedChange: "selectedChange", viewChanged: "viewChanged", _userSelection: "_userSelection" }, host: { attributes: { "tabindex": "0" }, listeners: { "keydown": "_handleCalendarBodyKeydown($event)" }, classAttribute: "mtx-calendar" }, exportAs: ["mtxCalendar"], ngImport: i0, template: "<div class=\"mtx-calendar-header\">\n <div (click)=\"_yearClicked()\" *ngIf=\"type !== 'time'\"\n [class.active]=\"currentView === 'year' || currentView === 'multi-year'\"\n class=\"mtx-calendar-header-year\" role=\"button\">\n <span>{{ _yearLabel }}</span>\n <svg *ngIf=\"multiYearSelector || type === 'year'\"\n class=\"mtx-calendar-header-year-dropdown\"\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M7,10L12,15L17,10H7Z\"></path>\n </svg>\n </div>\n <div class=\"mtx-calendar-header-date-time\">\n <span (click)=\"_dateClicked()\" *ngIf=\"type !== 'time' && type !== 'year'\"\n [class.active]=\"currentView === 'month'\"\n [class.not-clickable]=\"type === 'month'\"\n class=\"mtx-calendar-header-date\"\n role=\"button\">{{ _dateLabel }}</span>\n <span *ngIf=\"type.endsWith('time')\"\n [class.active]=\"currentView === 'clock'\"\n class=\"mtx-calendar-header-time\">\n <span class=\"mtx-calendar-header-hour-minute-container\">\n <span (click)=\"_hoursClicked()\"\n [class.active]=\"_clockView === 'hour'\"\n class=\"mtx-calendar-header-hours\"\n role=\"button\">{{ _hoursLabel }}</span>\n <span class=\"mtx-calendar-header-hour-minute-separator\">:</span>\n <span (click)=\"_minutesClicked()\"\n [class.active]=\"_clockView === 'minute'\"\n class=\"mtx-calendar-header-minutes\"\n role=\"button\">{{ _minutesLabel }}</span>\n </span>\n <span *ngIf=\"twelvehour\" class=\"mtx-calendar-header-ampm-container\">\n <span (click)=\"_ampmClicked('AM')\"\n [class.active]=\"_AMPM === 'AM'\"\n class=\"mtx-calendar-header-ampm\" role=\"button\">AM</span>\n <span (click)=\"_ampmClicked('PM')\"\n [class.active]=\"_AMPM === 'PM'\"\n class=\"mtx-calendar-header-ampm\" role=\"button\">PM</span>\n </span>\n </span>\n </div>\n</div>\n<div class=\"mtx-calendar-content\" [ngSwitch]=\"currentView\">\n <div *ngIf=\"currentView === 'month' || currentView === 'year' || currentView === 'multi-year'\"\n class=\"mtx-month-content\">\n <div class=\"mtx-calendar-controls\">\n <button mat-icon-button type=\"button\" (click)=\"_previousClicked()\"\n [attr.aria-disabled]=\"!_previousEnabled()\"\n [attr.aria-label]=\"_ariaLabelPrev\"\n [class.disabled]=\"!_previousEnabled()\"\n class=\"mtx-calendar-previous-button\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\n <path d=\"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z\"></path>\n </svg>\n </button>\n <div [@slideCalendar]=\"_calendarState\"\n (@slideCalendar.done)=\"_calendarStateDone()\"\n class=\"mtx-calendar-period-button\">\n <strong>{{ _monthYearLabel }}</strong>\n </div>\n <button mat-icon-button type=\"button\" (click)=\"_nextClicked()\"\n [attr.aria-disabled]=\"!_nextEnabled()\"\n [attr.aria-label]=\"_ariaLabelNext\"\n [class.disabled]=\"!_nextEnabled()\"\n class=\"mtx-calendar-next-button\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\n <path d=\"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"></path>\n </svg>\n </button>\n </div>\n </div>\n <mtx-month-view (_userSelection)=\"_userSelected()\"\n (selectedChange)=\"_dateSelected($event)\"\n *ngSwitchCase=\"'month'\"\n [activeDate]=\"_activeDate\"\n [dateFilter]=\"_dateFilterForViews\"\n [selected]=\"selected!\"\n [type]=\"type\">\n </mtx-month-view>\n <mtx-year-view (_userSelection)=\"_userSelected()\"\n (selectedChange)=\"_monthSelected($event)\"\n *ngSwitchCase=\"'year'\"\n [activeDate]=\"_activeDate\"\n [dateFilter]=\"_dateFilterForViews\"\n [selected]=\"selected!\"\n [type]=\"type\">\n </mtx-year-view>\n <mtx-multi-year-view (_userSelection)=\"_userSelected()\"\n (selectedChange)=\"_yearSelected($event)\"\n *ngSwitchCase=\"'multi-year'\"\n [activeDate]=\"_activeDate\"\n [dateFilter]=\"_dateFilterForViews\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [selected]=\"selected!\"\n [type]=\"type\">\n </mtx-multi-year-view>\n <mtx-clock (_userSelection)=\"_userSelected()\"\n (activeDateChange)=\"_onActiveDateChange($event)\"\n (selectedChange)=\"_timeSelected($event)\"\n *ngSwitchDefault\n [dateFilter]=\"dateFilter\"\n [interval]=\"timeInterval\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [selected]=\"_activeDate\"\n [startView]=\"_clockView\"\n [twelvehour]=\"twelvehour\">\n </mtx-clock>\n</div>\n", styles: [".mtx-calendar{display:block;outline:none}.mtx-calendar[mode=landscape]{display:flex}.mtx-calendar-header{padding:16px;box-sizing:border-box;border-radius:4px 4px 0 0}[mode=landscape] .mtx-calendar-header{width:150px;min-width:150px;border-radius:4px 0 0 4px}[dir=rtl] [mode=landscape] .mtx-calendar-header{border-radius:0 4px 4px 0}.mtx-calendar-header-year,.mtx-calendar-header-date-time{width:100%;white-space:nowrap}.mtx-calendar-header-year{line-height:24px}.mtx-calendar-header-year>*{vertical-align:middle}.mtx-calendar-header-year+.mtx-calendar-header-date-time{margin-top:4px}.mtx-calendar-header-date-time{line-height:36px}[mode=landscape] .mtx-calendar-header-date-time{white-space:normal;word-wrap:break-word}.mtx-calendar-header-year:not(.active),.mtx-calendar-header-date:not(.active),.mtx-calendar-header-hours:not(.active),.mtx-calendar-header-minutes:not(.active),.mtx-calendar-header-ampm:not(.active){cursor:pointer;opacity:.6}.mtx-calendar-header-year.not-clickable,.mtx-calendar-header-date.not-clickable,.mtx-calendar-header-hours.not-clickable,.mtx-calendar-header-minutes.not-clickable,.mtx-calendar-header-ampm.not-clickable{cursor:initial}.mtx-calendar-header-time{display:inline-flex}.mtx-calendar-header-time:not(.active){opacity:.6}.mtx-calendar-header-time:not(.active) .mtx-calendar-header-hours,.mtx-calendar-header-time:not(.active) .mtx-calendar-header-minutes,.mtx-calendar-header-time:not(.active) .mtx-calendar-header-ampm{cursor:pointer;opacity:1}[mode=landscape] .mtx-calendar-header-time{display:flex;flex-direction:column}.mtx-calendar-header-hour-minute-container{padding:0 8px}[mode=landscape] .mtx-calendar-header-hour-minute-container{padding:0}.mtx-calendar-header-hour-minute-separator{display:inline-block;width:8px;text-align:center}.mtx-calendar-header-ampm-container{display:inline-flex;flex-direction:column;line-height:18px}[mode=landscape] .mtx-calendar-header-ampm-container{flex-direction:row}[mode=landscape] .mtx-calendar-header-ampm{padding:4px}.mtx-calendar-content{width:100%;padding:8px;outline:none;box-sizing:border-box;overflow:hidden}.mtx-calendar-controls{display:flex;justify-content:space-between;margin:0 calc(4.7142857143% - 16px)}.mtx-calendar-controls .mat-icon-button:hover .mat-button-focus-overlay{opacity:.04}.mtx-calendar-period-button{display:inline-block;height:40px;line-height:40px;outline:none;border:0;background:transparent;box-sizing:border-box}.mtx-calendar-previous-button.disabled,.mtx-calendar-next-button.disabled{pointer-events:none}.mtx-calendar-previous-button svg,.mtx-calendar-next-button svg{fill:currentColor;vertical-align:top}[dir=rtl] .mtx-calendar-previous-button svg,[dir=rtl] .mtx-calendar-next-button svg{transform:rotate(180deg)}.mtx-calendar-table{border-spacing:0;border-collapse:collapse;width:100%}.mtx-calendar-table-header th{text-align:center;padding:8px 0}@media all and (orientation: landscape){.mtx-calendar[mode=auto]{display:flex}.mtx-calendar[mode=auto] .mtx-calendar-header{width:150px;min-width:150px;border-radius:4px 0 0 4px}[dir=rtl] .mtx-calendar[mode=auto] .mtx-calendar-header{border-radius:0 4px 4px 0}.mtx-calendar[mode=auto] .mtx-calendar-header-date-time{white-space:normal;word-wrap:break-word}.mtx-calendar[mode=auto] .mtx-calendar-header-time{display:flex;flex-direction:column}.mtx-calendar[mode=auto] .mtx-calendar-header-hour-minute-container{padding:0}.mtx-calendar[mode=auto] .mtx-calendar-header-ampm-container{flex-direction:row}.mtx-calendar[mode=auto] .mtx-calendar-header-ampm{padding:4px}}\n"], components: [{ type: i3$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: MtxMonthView, selector: "mtx-month-view", inputs: ["type", "dateFilter", "activeDate", "selected"], outputs: ["selectedChange", "_userSelection"], exportAs: ["mtxMonthView"] }, { type: MtxYearView, selector: "mtx-year-view", inputs: ["type", "dateFilter", "activeDate", "selected"], outputs: ["selectedChange", "_userSelection"], exportAs: ["mtxYearView"] }, { type: MtxMultiYearView, selector: "mtx-multi-year-view", inputs: ["type", "dateFilter", "activeDate", "selected", "minDate", "maxDate"], outputs: ["selectedChange", "_userSelection"], exportAs: ["mtxMultiYearView"] }, { type: MtxClock, selector: "mtx-clock", inputs: ["dateFilter", "interval", "twelvehour", "activeDate", "selected", "minDate", "maxDate", "startView"], outputs: ["selectedChange", "activeDateChange", "_userSelection"], exportAs: ["mtxClock"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i3.NgSwitchDefault, selector: "[ngSwitchDefault]" }], animations: [mtxDatetimepickerAnimations.slideCalendar], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1468
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: MtxCalendar, decorators: [{
1471
+ /** @nocollapse */ MtxCalendar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: MtxCalendar, deps: [{ token: i0.ElementRef }, { token: i1$1.MatDatepickerIntl }, { token: i0.NgZone }, { token: i1.DatetimeAdapter, optional: true }, { token: MTX_DATETIME_FORMATS, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
1472
+ /** @nocollapse */ MtxCalendar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.2", type: MtxCalendar, selector: "mtx-calendar", inputs: { multiYearSelector: "multiYearSelector", twelvehour: "twelvehour", startView: "startView", timeInterval: "timeInterval", dateFilter: "dateFilter", preventSameDateTimeSelection: "preventSameDateTimeSelection", type: "type", startAt: "startAt", selected: "selected", minDate: "minDate", maxDate: "maxDate" }, outputs: { selectedChange: "selectedChange", viewChanged: "viewChanged", _userSelection: "_userSelection" }, host: { attributes: { "tabindex": "0" }, listeners: { "keydown": "_handleCalendarBodyKeydown($event)" }, classAttribute: "mtx-calendar" }, exportAs: ["mtxCalendar"], ngImport: i0, template: "<div class=\"mtx-calendar-header\">\n <div (click)=\"_yearClicked()\" *ngIf=\"type !== 'time'\"\n [class.active]=\"currentView === 'year' || currentView === 'multi-year'\"\n class=\"mtx-calendar-header-year\" role=\"button\">\n <span>{{ _yearLabel }}</span>\n <svg *ngIf=\"multiYearSelector || type === 'year'\"\n class=\"mtx-calendar-header-year-dropdown\"\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M7,10L12,15L17,10H7Z\"></path>\n </svg>\n </div>\n <div class=\"mtx-calendar-header-date-time\">\n <span (click)=\"_dateClicked()\" *ngIf=\"type !== 'time' && type !== 'year'\"\n [class.active]=\"currentView === 'month'\"\n [class.not-clickable]=\"type === 'month'\"\n class=\"mtx-calendar-header-date\"\n role=\"button\">{{ _dateLabel }}</span>\n <span *ngIf=\"type.endsWith('time')\"\n [class.active]=\"currentView === 'clock'\"\n class=\"mtx-calendar-header-time\">\n <span class=\"mtx-calendar-header-hour-minute-container\">\n <span (click)=\"_hoursClicked()\"\n [class.active]=\"_clockView === 'hour'\"\n class=\"mtx-calendar-header-hours\"\n role=\"button\">{{ _hoursLabel }}</span>\n <span class=\"mtx-calendar-header-hour-minute-separator\">:</span>\n <span (click)=\"_minutesClicked()\"\n [class.active]=\"_clockView === 'minute'\"\n class=\"mtx-calendar-header-minutes\"\n role=\"button\">{{ _minutesLabel }}</span>\n </span>\n <span *ngIf=\"twelvehour\" class=\"mtx-calendar-header-ampm-container\">\n <span (click)=\"_ampmClicked('AM')\"\n [class.active]=\"_AMPM === 'AM'\"\n class=\"mtx-calendar-header-ampm\" role=\"button\">AM</span>\n <span (click)=\"_ampmClicked('PM')\"\n [class.active]=\"_AMPM === 'PM'\"\n class=\"mtx-calendar-header-ampm\" role=\"button\">PM</span>\n </span>\n </span>\n </div>\n</div>\n<div class=\"mtx-calendar-content\" [ngSwitch]=\"currentView\">\n <div *ngIf=\"currentView === 'month' || currentView === 'year' || currentView === 'multi-year'\"\n class=\"mtx-month-content\">\n <div class=\"mtx-calendar-controls\">\n <button mat-icon-button type=\"button\" (click)=\"_previousClicked()\"\n [attr.aria-disabled]=\"!_previousEnabled()\"\n [attr.aria-label]=\"_ariaLabelPrev\"\n [class.disabled]=\"!_previousEnabled()\"\n class=\"mtx-calendar-previous-button\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\n <path d=\"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z\"></path>\n </svg>\n </button>\n <div [@slideCalendar]=\"_calendarState\"\n (@slideCalendar.done)=\"_calendarStateDone()\"\n class=\"mtx-calendar-period-button\">\n <strong>{{ _monthYearLabel }}</strong>\n </div>\n <button mat-icon-button type=\"button\" (click)=\"_nextClicked()\"\n [attr.aria-disabled]=\"!_nextEnabled()\"\n [attr.aria-label]=\"_ariaLabelNext\"\n [class.disabled]=\"!_nextEnabled()\"\n class=\"mtx-calendar-next-button\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\n <path d=\"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"></path>\n </svg>\n </button>\n </div>\n </div>\n <mtx-month-view (_userSelection)=\"_userSelected()\"\n (selectedChange)=\"_dateSelected($event)\"\n *ngSwitchCase=\"'month'\"\n [activeDate]=\"_activeDate\"\n [dateFilter]=\"_dateFilterForViews\"\n [selected]=\"selected!\"\n [type]=\"type\">\n </mtx-month-view>\n <mtx-year-view (_userSelection)=\"_userSelected()\"\n (selectedChange)=\"_monthSelected($event)\"\n *ngSwitchCase=\"'year'\"\n [activeDate]=\"_activeDate\"\n [dateFilter]=\"_dateFilterForViews\"\n [selected]=\"selected!\"\n [type]=\"type\">\n </mtx-year-view>\n <mtx-multi-year-view (_userSelection)=\"_userSelected()\"\n (selectedChange)=\"_yearSelected($event)\"\n *ngSwitchCase=\"'multi-year'\"\n [activeDate]=\"_activeDate\"\n [dateFilter]=\"_dateFilterForViews\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [selected]=\"selected!\"\n [type]=\"type\">\n </mtx-multi-year-view>\n <mtx-clock (_userSelection)=\"_userSelected()\"\n (activeDateChange)=\"_onActiveDateChange($event)\"\n (selectedChange)=\"_timeSelected($event)\"\n *ngSwitchDefault\n [dateFilter]=\"dateFilter\"\n [interval]=\"timeInterval\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [selected]=\"_activeDate\"\n [startView]=\"_clockView\"\n [twelvehour]=\"twelvehour\">\n </mtx-clock>\n</div>\n", styles: [".mtx-calendar{display:block;outline:none}.mtx-calendar[mode=landscape]{display:flex}.mtx-calendar-header{padding:16px;box-sizing:border-box;border-radius:4px 4px 0 0}[mode=landscape] .mtx-calendar-header{width:150px;min-width:150px;border-radius:4px 0 0 4px}[dir=rtl] [mode=landscape] .mtx-calendar-header{border-radius:0 4px 4px 0}.mtx-calendar-header-year,.mtx-calendar-header-date-time{width:100%;white-space:nowrap}.mtx-calendar-header-year{line-height:24px}.mtx-calendar-header-year>*{vertical-align:middle}.mtx-calendar-header-year+.mtx-calendar-header-date-time{margin-top:4px}.mtx-calendar-header-date-time{line-height:36px}[mode=landscape] .mtx-calendar-header-date-time{white-space:normal;word-wrap:break-word}.mtx-calendar-header-year:not(.active),.mtx-calendar-header-date:not(.active),.mtx-calendar-header-hours:not(.active),.mtx-calendar-header-minutes:not(.active),.mtx-calendar-header-ampm:not(.active){cursor:pointer;opacity:.6}.mtx-calendar-header-year.not-clickable,.mtx-calendar-header-date.not-clickable,.mtx-calendar-header-hours.not-clickable,.mtx-calendar-header-minutes.not-clickable,.mtx-calendar-header-ampm.not-clickable{cursor:initial}.mtx-calendar-header-time{display:inline-flex}.mtx-calendar-header-time:not(.active){opacity:.6}.mtx-calendar-header-time:not(.active) .mtx-calendar-header-hours,.mtx-calendar-header-time:not(.active) .mtx-calendar-header-minutes,.mtx-calendar-header-time:not(.active) .mtx-calendar-header-ampm{cursor:pointer;opacity:1}[mode=landscape] .mtx-calendar-header-time{display:flex;flex-direction:column}.mtx-calendar-header-hour-minute-container{padding:0 8px}[mode=landscape] .mtx-calendar-header-hour-minute-container{padding:0}.mtx-calendar-header-hour-minute-separator{display:inline-block;width:8px;text-align:center}.mtx-calendar-header-ampm-container{display:inline-flex;flex-direction:column;line-height:18px}[mode=landscape] .mtx-calendar-header-ampm-container{flex-direction:row}[mode=landscape] .mtx-calendar-header-ampm{padding:4px}.mtx-calendar-content{width:100%;padding:8px;outline:none;box-sizing:border-box;overflow:hidden}.mtx-calendar-controls{display:flex;justify-content:space-between;margin:0 calc(4.7142857143% - 16px)}.mtx-calendar-controls .mat-icon-button:hover .mat-button-focus-overlay{opacity:.04}.mtx-calendar-period-button{display:inline-block;height:40px;line-height:40px;outline:none;border:0;background:transparent;box-sizing:border-box}.mtx-calendar-previous-button.disabled,.mtx-calendar-next-button.disabled{pointer-events:none}.mtx-calendar-previous-button svg,.mtx-calendar-next-button svg{fill:currentColor;vertical-align:top}[dir=rtl] .mtx-calendar-previous-button svg,[dir=rtl] .mtx-calendar-next-button svg{transform:rotate(180deg)}.mtx-calendar-table{border-spacing:0;border-collapse:collapse;width:100%}.mtx-calendar-table-header th{text-align:center;padding:8px 0}@media all and (orientation: landscape){.mtx-calendar[mode=auto]{display:flex}.mtx-calendar[mode=auto] .mtx-calendar-header{width:150px;min-width:150px;border-radius:4px 0 0 4px}[dir=rtl] .mtx-calendar[mode=auto] .mtx-calendar-header{border-radius:0 4px 4px 0}.mtx-calendar[mode=auto] .mtx-calendar-header-date-time{white-space:normal;word-wrap:break-word}.mtx-calendar[mode=auto] .mtx-calendar-header-time{display:flex;flex-direction:column}.mtx-calendar[mode=auto] .mtx-calendar-header-hour-minute-container{padding:0}.mtx-calendar[mode=auto] .mtx-calendar-header-ampm-container{flex-direction:row}.mtx-calendar[mode=auto] .mtx-calendar-header-ampm{padding:4px}}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: MtxClock, selector: "mtx-clock", inputs: ["dateFilter", "interval", "twelvehour", "activeDate", "selected", "minDate", "maxDate", "startView"], outputs: ["selectedChange", "activeDateChange", "_userSelection"], exportAs: ["mtxClock"] }, { kind: "component", type: MtxMonthView, selector: "mtx-month-view", inputs: ["type", "dateFilter", "activeDate", "selected"], outputs: ["selectedChange", "_userSelection"], exportAs: ["mtxMonthView"] }, { kind: "component", type: MtxYearView, selector: "mtx-year-view", inputs: ["type", "dateFilter", "activeDate", "selected"], outputs: ["selectedChange", "_userSelection"], exportAs: ["mtxYearView"] }, { kind: "component", type: MtxMultiYearView, selector: "mtx-multi-year-view", inputs: ["type", "dateFilter", "activeDate", "selected", "minDate", "maxDate"], outputs: ["selectedChange", "_userSelection"], exportAs: ["mtxMultiYearView"] }], animations: [mtxDatetimepickerAnimations.slideCalendar], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1473
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: MtxCalendar, decorators: [{
1469
1474
  type: Component,
1470
1475
  args: [{ selector: 'mtx-calendar', host: {
1471
1476
  'class': 'mtx-calendar',
@@ -1558,12 +1563,12 @@ class MtxDatetimepickerContent extends _MtxDatetimepickerContentBase {
1558
1563
  this._animationDone.complete();
1559
1564
  }
1560
1565
  }
1561
- /** @nocollapse */ MtxDatetimepickerContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: MtxDatetimepickerContent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
1562
- /** @nocollapse */ MtxDatetimepickerContent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.6", type: MtxDatetimepickerContent, selector: "mtx-datetimepicker-content", inputs: { color: "color" }, host: { listeners: { "@transformPanel.done": "_animationDone.next()" }, properties: { "class.mtx-datetimepicker-content-touch": "datetimepicker?.touchUi", "attr.mode": "datetimepicker.mode", "@transformPanel": "_animationState" }, classAttribute: "mtx-datetimepicker-content" }, viewQueries: [{ propertyName: "_calendar", first: true, predicate: MtxCalendar, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div cdkTrapFocus\n class=\"mtx-datetimepicker-content-container\"\n [attr.mode]=\"datetimepicker.mode\">\n <mtx-calendar [id]=\"datetimepicker.id\"\n [ngClass]=\"datetimepicker.panelClass\"\n [attr.mode]=\"datetimepicker.mode\"\n [type]=\"datetimepicker.type\"\n [startAt]=\"datetimepicker.startAt\"\n [startView]=\"datetimepicker.startView\"\n [maxDate]=\"datetimepicker._maxDate\"\n [minDate]=\"datetimepicker._minDate\"\n [dateFilter]=\"datetimepicker._dateFilter\"\n [multiYearSelector]=\"datetimepicker.multiYearSelector\"\n [preventSameDateTimeSelection]=\"datetimepicker.preventSameDateTimeSelection\"\n [timeInterval]=\"datetimepicker.timeInterval\"\n [twelvehour]=\"datetimepicker.twelvehour\"\n [selected]=\"datetimepicker._selected\"\n [@fadeInCalendar]=\"'enter'\"\n (selectedChange)=\"datetimepicker._select($event)\"\n (viewChanged)=\"datetimepicker._viewChanged($event)\"\n (_userSelection)=\"datetimepicker.close()\">\n </mtx-calendar>\n</div>\n", styles: [".mtx-datetimepicker-content{display:block;border-radius:4px}.mtx-datetimepicker-content-container{display:flex;flex-direction:column;justify-content:space-between}.mtx-datetimepicker-content .mtx-calendar{width:296px;height:424px}.mtx-datetimepicker-content .mtx-calendar[mode=landscape]{width:446px;height:328px}@media all and (orientation: landscape){.mtx-datetimepicker-content .mtx-calendar[mode=auto]{width:446px;height:328px}}.mtx-datetimepicker-content-touch{display:block;max-height:80vh;position:relative;overflow:visible}.mtx-datetimepicker-content-touch .mtx-datetimepicker-content-container{min-height:300px;max-height:850px;min-width:250px;max-width:750px}.mtx-datetimepicker-content-touch .mtx-calendar{width:100%;height:auto}@media all and (orientation: landscape){.mtx-datetimepicker-content-touch .mtx-datetimepicker-content-container[mode=auto],.mtx-datetimepicker-content-touch .mtx-datetimepicker-content-container[mode=landscape]{width:120vh;height:80vh}.mtx-datetimepicker-content-touch .mtx-datetimepicker-content-container[mode=auto] .mtx-calendar,.mtx-datetimepicker-content-touch .mtx-datetimepicker-content-container[mode=landscape] .mtx-calendar{width:auto;height:100%}.mtx-datetimepicker-content-touch .mtx-datetimepicker-content-container[mode=portrait]{width:64vh;height:90vh}.mtx-datetimepicker-content-touch .mtx-datetimepicker-content-container[mode=portrait] .mtx-calendar{width:100%;height:auto}}@media all and (orientation: portrait){.mtx-datetimepicker-content-touch .mtx-datetimepicker-content-container[mode=auto],.mtx-datetimepicker-content-touch .mtx-datetimepicker-content-container[mode=portrait]{width:80vw;height:120vw}.mtx-datetimepicker-content-touch .mtx-datetimepicker-content-container[mode=auto] .mtx-calendar,.mtx-datetimepicker-content-touch .mtx-datetimepicker-content-container[mode=portrait] .mtx-calendar{width:100%;height:auto}.mtx-datetimepicker-content-touch .mtx-datetimepicker-content-container[mode=landscape]{width:90vw;height:64vw}.mtx-datetimepicker-content-touch .mtx-datetimepicker-content-container[mode=landscape] .mtx-calendar{width:auto;height:100%}.mtx-datetimepicker-content-touch .mtx-datetimepicker-content-container-with-actions{height:135vw}}\n"], components: [{ type: MtxCalendar, selector: "mtx-calendar", inputs: ["multiYearSelector", "twelvehour", "startView", "timeInterval", "dateFilter", "preventSameDateTimeSelection", "type", "startAt", "selected", "minDate", "maxDate"], outputs: ["selectedChange", "viewChanged", "_userSelection"], exportAs: ["mtxCalendar"] }], directives: [{ type: i2.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], animations: [
1566
+ /** @nocollapse */ MtxDatetimepickerContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: MtxDatetimepickerContent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
1567
+ /** @nocollapse */ MtxDatetimepickerContent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.2", type: MtxDatetimepickerContent, selector: "mtx-datetimepicker-content", inputs: { color: "color" }, host: { listeners: { "@transformPanel.done": "_animationDone.next()" }, properties: { "class.mtx-datetimepicker-content-touch": "datetimepicker?.touchUi", "attr.mode": "datetimepicker.mode", "@transformPanel": "_animationState" }, classAttribute: "mtx-datetimepicker-content" }, viewQueries: [{ propertyName: "_calendar", first: true, predicate: MtxCalendar, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div cdkTrapFocus\n class=\"mtx-datetimepicker-content-container\"\n [attr.mode]=\"datetimepicker.mode\">\n <mtx-calendar [id]=\"datetimepicker.id\"\n [ngClass]=\"datetimepicker.panelClass\"\n [attr.mode]=\"datetimepicker.mode\"\n [type]=\"datetimepicker.type\"\n [startAt]=\"datetimepicker.startAt\"\n [startView]=\"datetimepicker.startView\"\n [maxDate]=\"datetimepicker._maxDate\"\n [minDate]=\"datetimepicker._minDate\"\n [dateFilter]=\"datetimepicker._dateFilter\"\n [multiYearSelector]=\"datetimepicker.multiYearSelector\"\n [preventSameDateTimeSelection]=\"datetimepicker.preventSameDateTimeSelection\"\n [timeInterval]=\"datetimepicker.timeInterval\"\n [twelvehour]=\"datetimepicker.twelvehour\"\n [selected]=\"datetimepicker._selected\"\n [@fadeInCalendar]=\"'enter'\"\n (selectedChange)=\"datetimepicker._select($event)\"\n (viewChanged)=\"datetimepicker._viewChanged($event)\"\n (_userSelection)=\"datetimepicker.close()\">\n </mtx-calendar>\n</div>\n", styles: [".mtx-datetimepicker-content{display:block;border-radius:4px}.mtx-datetimepicker-content-container{display:flex;flex-direction:column;justify-content:space-between}.mtx-datetimepicker-content .mtx-calendar{width:296px;height:424px}.mtx-datetimepicker-content .mtx-calendar[mode=landscape]{width:446px;height:328px}@media all and (orientation: landscape){.mtx-datetimepicker-content .mtx-calendar[mode=auto]{width:446px;height:328px}}.mtx-datetimepicker-content-touch{display:block;max-height:80vh;position:relative;overflow:visible}.mtx-datetimepicker-content-touch .mtx-datetimepicker-content-container{min-height:300px;max-height:850px;min-width:250px;max-width:750px}.mtx-datetimepicker-content-touch .mtx-calendar{width:100%;height:auto}@media all and (orientation: landscape){.mtx-datetimepicker-content-touch .mtx-datetimepicker-content-container[mode=auto],.mtx-datetimepicker-content-touch .mtx-datetimepicker-content-container[mode=landscape]{width:120vh;height:80vh}.mtx-datetimepicker-content-touch .mtx-datetimepicker-content-container[mode=auto] .mtx-calendar,.mtx-datetimepicker-content-touch .mtx-datetimepicker-content-container[mode=landscape] .mtx-calendar{width:auto;height:100%}.mtx-datetimepicker-content-touch .mtx-datetimepicker-content-container[mode=portrait]{width:64vh;height:90vh}.mtx-datetimepicker-content-touch .mtx-datetimepicker-content-container[mode=portrait] .mtx-calendar{width:100%;height:auto}}@media all and (orientation: portrait){.mtx-datetimepicker-content-touch .mtx-datetimepicker-content-container[mode=auto],.mtx-datetimepicker-content-touch .mtx-datetimepicker-content-container[mode=portrait]{width:80vw;height:120vw}.mtx-datetimepicker-content-touch .mtx-datetimepicker-content-container[mode=auto] .mtx-calendar,.mtx-datetimepicker-content-touch .mtx-datetimepicker-content-container[mode=portrait] .mtx-calendar{width:100%;height:auto}.mtx-datetimepicker-content-touch .mtx-datetimepicker-content-container[mode=landscape]{width:90vw;height:64vw}.mtx-datetimepicker-content-touch .mtx-datetimepicker-content-container[mode=landscape] .mtx-calendar{width:auto;height:100%}.mtx-datetimepicker-content-touch .mtx-datetimepicker-content-container-with-actions{height:135vw}}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: MtxCalendar, selector: "mtx-calendar", inputs: ["multiYearSelector", "twelvehour", "startView", "timeInterval", "dateFilter", "preventSameDateTimeSelection", "type", "startAt", "selected", "minDate", "maxDate"], outputs: ["selectedChange", "viewChanged", "_userSelection"], exportAs: ["mtxCalendar"] }], animations: [
1563
1568
  mtxDatetimepickerAnimations.transformPanel,
1564
1569
  mtxDatetimepickerAnimations.fadeInCalendar,
1565
1570
  ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1566
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: MtxDatetimepickerContent, decorators: [{
1571
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: MtxDatetimepickerContent, decorators: [{
1567
1572
  type: Component,
1568
1573
  args: [{ selector: 'mtx-datetimepicker-content', host: {
1569
1574
  'class': 'mtx-datetimepicker-content',
@@ -1591,7 +1596,9 @@ class MtxDatetimepicker {
1591
1596
  this._twelvehour = false;
1592
1597
  /** The view that the calendar should start in. */
1593
1598
  this.startView = 'month';
1599
+ /** The display mode of datetimepicker. */
1594
1600
  this.mode = 'auto';
1601
+ /** Step over minutes. */
1595
1602
  this.timeInterval = 1;
1596
1603
  /** Prevent user to select same date time */
1597
1604
  this.preventSameDateTimeSelection = false;
@@ -1628,14 +1635,14 @@ class MtxDatetimepicker {
1628
1635
  throw createMissingDateImplError('DateAdapter');
1629
1636
  }
1630
1637
  }
1631
- /** Active multi year view when click on year. */
1638
+ /** Whether to show multi-year view. */
1632
1639
  get multiYearSelector() {
1633
1640
  return this._multiYearSelector;
1634
1641
  }
1635
1642
  set multiYearSelector(value) {
1636
1643
  this._multiYearSelector = coerceBooleanProperty(value);
1637
1644
  }
1638
- /** if true change the clock to 12 hour format. */
1645
+ /** Whether the clock uses 12 hour format. */
1639
1646
  get twelvehour() {
1640
1647
  return this._twelvehour;
1641
1648
  }
@@ -1676,6 +1683,7 @@ class MtxDatetimepicker {
1676
1683
  set startAt(date) {
1677
1684
  this._startAt = this._dateAdapter.getValidDateOrNull(date);
1678
1685
  }
1686
+ /** The display type of datetimepicker. */
1679
1687
  get type() {
1680
1688
  return this._type;
1681
1689
  }
@@ -1921,9 +1929,9 @@ class MtxDatetimepicker {
1921
1929
  })));
1922
1930
  }
1923
1931
  }
1924
- /** @nocollapse */ MtxDatetimepicker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: MtxDatetimepicker, deps: [{ token: i4.Overlay }, { token: i0.NgZone }, { token: i0.ViewContainerRef }, { token: MTX_DATETIMEPICKER_SCROLL_STRATEGY }, { token: i1.DatetimeAdapter, optional: true }, { token: i6.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Component });
1925
- /** @nocollapse */ MtxDatetimepicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.6", type: MtxDatetimepicker, selector: "mtx-datetimepicker", inputs: { multiYearSelector: "multiYearSelector", twelvehour: "twelvehour", startView: "startView", mode: "mode", timeInterval: "timeInterval", preventSameDateTimeSelection: "preventSameDateTimeSelection", panelClass: "panelClass", opened: "opened", color: "color", startAt: "startAt", type: "type", touchUi: "touchUi", disabled: "disabled", xPosition: "xPosition", yPosition: "yPosition", restoreFocus: "restoreFocus" }, outputs: { selectedChanged: "selectedChanged", openedStream: "opened", closedStream: "closed", viewChanged: "viewChanged" }, exportAs: ["mtxDatetimepicker"], ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1926
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: MtxDatetimepicker, decorators: [{
1932
+ /** @nocollapse */ MtxDatetimepicker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: MtxDatetimepicker, deps: [{ token: i4$1.Overlay }, { token: i0.NgZone }, { token: i0.ViewContainerRef }, { token: MTX_DATETIMEPICKER_SCROLL_STRATEGY }, { token: i1.DatetimeAdapter, optional: true }, { token: i6.Directionality, optional: true }], target: i0.ɵɵFactoryTarget.Component });
1933
+ /** @nocollapse */ MtxDatetimepicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.2", type: MtxDatetimepicker, selector: "mtx-datetimepicker", inputs: { multiYearSelector: "multiYearSelector", twelvehour: "twelvehour", startView: "startView", mode: "mode", timeInterval: "timeInterval", preventSameDateTimeSelection: "preventSameDateTimeSelection", panelClass: "panelClass", opened: "opened", color: "color", startAt: "startAt", type: "type", touchUi: "touchUi", disabled: "disabled", xPosition: "xPosition", yPosition: "yPosition", restoreFocus: "restoreFocus" }, outputs: { selectedChanged: "selectedChanged", openedStream: "opened", closedStream: "closed", viewChanged: "viewChanged" }, exportAs: ["mtxDatetimepicker"], ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1934
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: MtxDatetimepicker, decorators: [{
1927
1935
  type: Component,
1928
1936
  args: [{
1929
1937
  selector: 'mtx-datetimepicker',
@@ -1934,7 +1942,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImpor
1934
1942
  preserveWhitespaces: false,
1935
1943
  }]
1936
1944
  }], ctorParameters: function () {
1937
- return [{ type: i4.Overlay }, { type: i0.NgZone }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{
1945
+ return [{ type: i4$1.Overlay }, { type: i0.NgZone }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{
1938
1946
  type: Inject,
1939
1947
  args: [MTX_DATETIMEPICKER_SCROLL_STRATEGY]
1940
1948
  }] }, { type: i1.DatetimeAdapter, decorators: [{
@@ -2263,13 +2271,13 @@ class MtxDatetimepickerInput {
2263
2271
  return this._formField ? this._formField.color : undefined;
2264
2272
  }
2265
2273
  }
2266
- /** @nocollapse */ MtxDatetimepickerInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: MtxDatetimepickerInput, deps: [{ token: i0.ElementRef }, { token: i1.DatetimeAdapter, optional: true }, { token: MTX_DATETIME_FORMATS, optional: true }, { token: i2$1.MatFormField, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
2267
- /** @nocollapse */ MtxDatetimepickerInput.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.6", type: MtxDatetimepickerInput, selector: "input[mtxDatetimepicker]", inputs: { mtxDatetimepicker: "mtxDatetimepicker", mtxDatetimepickerFilter: "mtxDatetimepickerFilter", value: "value", min: "min", max: "max", disabled: "disabled" }, outputs: { dateChange: "dateChange", dateInput: "dateInput" }, host: { listeners: { "input": "_onInput($event.target.value)", "change": "_onChange()", "blur": "_onBlur()", "keydown": "_onKeydown($event)" }, properties: { "attr.aria-haspopup": "true", "attr.aria-owns": "(_datetimepicker?.opened && _datetimepicker.id) || null", "attr.min": "min ? _dateAdapter.toIso8601(min) : null", "attr.max": "max ? _dateAdapter.toIso8601(max) : null", "disabled": "disabled" } }, providers: [
2274
+ /** @nocollapse */ MtxDatetimepickerInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: MtxDatetimepickerInput, deps: [{ token: i0.ElementRef }, { token: i1.DatetimeAdapter, optional: true }, { token: MTX_DATETIME_FORMATS, optional: true }, { token: i2$2.MatFormField, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
2275
+ /** @nocollapse */ MtxDatetimepickerInput.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.2", type: MtxDatetimepickerInput, selector: "input[mtxDatetimepicker]", inputs: { mtxDatetimepicker: "mtxDatetimepicker", mtxDatetimepickerFilter: "mtxDatetimepickerFilter", value: "value", min: "min", max: "max", disabled: "disabled" }, outputs: { dateChange: "dateChange", dateInput: "dateInput" }, host: { listeners: { "input": "_onInput($event.target.value)", "change": "_onChange()", "blur": "_onBlur()", "keydown": "_onKeydown($event)" }, properties: { "attr.aria-haspopup": "true", "attr.aria-owns": "(_datetimepicker?.opened && _datetimepicker.id) || null", "attr.min": "min ? _dateAdapter.toIso8601(min) : null", "attr.max": "max ? _dateAdapter.toIso8601(max) : null", "disabled": "disabled" } }, providers: [
2268
2276
  MAT_DATETIMEPICKER_VALUE_ACCESSOR,
2269
2277
  MAT_DATETIMEPICKER_VALIDATORS,
2270
2278
  { provide: MAT_INPUT_VALUE_ACCESSOR, useExisting: MtxDatetimepickerInput },
2271
2279
  ], exportAs: ["mtxDatetimepickerInput"], ngImport: i0 });
2272
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: MtxDatetimepickerInput, decorators: [{
2280
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: MtxDatetimepickerInput, decorators: [{
2273
2281
  type: Directive,
2274
2282
  args: [{
2275
2283
  selector: 'input[mtxDatetimepicker]',
@@ -2299,7 +2307,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImpor
2299
2307
  }, {
2300
2308
  type: Inject,
2301
2309
  args: [MTX_DATETIME_FORMATS]
2302
- }] }, { type: i2$1.MatFormField, decorators: [{
2310
+ }] }, { type: i2$2.MatFormField, decorators: [{
2303
2311
  type: Optional
2304
2312
  }] }];
2305
2313
  }, propDecorators: { dateChange: [{
@@ -2323,9 +2331,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImpor
2323
2331
  /** Can be used to override the icon of a `mtxDatetimepickerToggle`. */
2324
2332
  class MtxDatetimepickerToggleIcon {
2325
2333
  }
2326
- /** @nocollapse */ MtxDatetimepickerToggleIcon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: MtxDatetimepickerToggleIcon, deps: [], target: i0.ɵɵFactoryTarget.Directive });
2327
- /** @nocollapse */ MtxDatetimepickerToggleIcon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.6", type: MtxDatetimepickerToggleIcon, selector: "[mtxDatetimepickerToggleIcon]", ngImport: i0 });
2328
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: MtxDatetimepickerToggleIcon, decorators: [{
2334
+ /** @nocollapse */ MtxDatetimepickerToggleIcon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: MtxDatetimepickerToggleIcon, deps: [], target: i0.ɵɵFactoryTarget.Directive });
2335
+ /** @nocollapse */ MtxDatetimepickerToggleIcon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.1.2", type: MtxDatetimepickerToggleIcon, selector: "[mtxDatetimepickerToggleIcon]", ngImport: i0 });
2336
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: MtxDatetimepickerToggleIcon, decorators: [{
2329
2337
  type: Directive,
2330
2338
  args: [{
2331
2339
  selector: '[mtxDatetimepickerToggleIcon]',
@@ -2376,9 +2384,9 @@ class MtxDatetimepickerToggle {
2376
2384
  ]).subscribe(() => this._changeDetectorRef.markForCheck());
2377
2385
  }
2378
2386
  }
2379
- /** @nocollapse */ MtxDatetimepickerToggle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: MtxDatetimepickerToggle, deps: [{ token: i1$1.MatDatepickerIntl }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
2380
- /** @nocollapse */ MtxDatetimepickerToggle.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.6", type: MtxDatetimepickerToggle, selector: "mtx-datetimepicker-toggle", inputs: { datetimepicker: ["for", "datetimepicker"], tabIndex: "tabIndex", disabled: "disabled", disableRipple: "disableRipple" }, host: { listeners: { "focus": "_button.focus()" }, properties: { "attr.tabindex": "disabled ? null : -1", "class.mtx-datetimepicker-toggle-active": "datetimepicker && datetimepicker.opened", "class.mat-accent": "datetimepicker && datetimepicker.color === \"accent\"", "class.mat-warn": "datetimepicker && datetimepicker.color === \"warn\"" }, classAttribute: "mtx-datetimepicker-toggle" }, queries: [{ propertyName: "_customIcon", first: true, predicate: MtxDatetimepickerToggleIcon, descendants: true }], viewQueries: [{ propertyName: "_button", first: true, predicate: ["button"], descendants: true }], exportAs: ["mtxDatetimepickerToggle"], usesOnChanges: true, ngImport: i0, template: "<button #button\n mat-icon-button\n type=\"button\"\n [attr.aria-haspopup]=\"datetimepicker ? 'dialog' : null\"\n [attr.aria-label]=\"_intl.openCalendarLabel\"\n [attr.tabindex]=\"disabled ? -1 : tabIndex\"\n [disabled]=\"disabled\"\n [disableRipple]=\"disableRipple\"\n (click)=\"_open($event)\">\n\n <ng-container *ngIf=\"!_customIcon\" [ngSwitch]=\"datetimepicker.type\">\n <svg *ngSwitchCase=\"'time'\"\n class=\"mtx-datetimepicker-toggle-default-icon\"\n viewBox=\"0 0 24 24\"\n width=\"24px\"\n height=\"24px\"\n fill=\"currentColor\"\n focusable=\"false\">\n <path\n d=\"M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22C6.47,22 2,17.5 2,12A10,10 0 0,1 12,2M12.5,7V12.25L17,14.92L16.25,16.15L11,13V7H12.5Z\">\n </path>\n </svg>\n <svg *ngSwitchCase=\"'datetime'\"\n class=\"mtx-datetimepicker-toggle-default-icon\"\n viewBox=\"0 0 24 24\"\n width=\"24px\"\n height=\"24px\"\n fill=\"currentColor\"\n focusable=\"false\">\n <path\n d=\"M15,13H16.5V15.82L18.94,17.23L18.19,18.53L15,16.69V13M19,8H5V19H9.67C9.24,18.09 9,17.07 9,16A7,7 0 0,1 16,9C17.07,9 18.09,9.24 19,9.67V8M5,21C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H6V1H8V3H16V1H18V3H19A2,2 0 0,1 21,5V11.1C22.24,12.36 23,14.09 23,16A7,7 0 0,1 16,23C14.09,23 12.36,22.24 11.1,21H5M16,11.15A4.85,4.85 0 0,0 11.15,16C11.15,18.68 13.32,20.85 16,20.85A4.85,4.85 0 0,0 20.85,16C20.85,13.32 18.68,11.15 16,11.15Z\">\n </path>\n </svg>\n <svg *ngSwitchDefault\n class=\"mtx-datetimepicker-toggle-default-icon\"\n viewBox=\"0 0 24 24\"\n width=\"24px\"\n height=\"24px\"\n fill=\"currentColor\"\n focusable=\"false\">\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path\n 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 </ng-container>\n\n <ng-content select=\"[mtxDatetimepickerToggleIcon]\"></ng-content>\n</button>\n", styles: [".mat-form-field-appearance-legacy .mat-form-field-prefix .mtx-datetimepicker-toggle-default-icon,.mat-form-field-appearance-legacy .mat-form-field-suffix .mtx-datetimepicker-toggle-default-icon{width:1em}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mtx-datetimepicker-toggle-default-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mtx-datetimepicker-toggle-default-icon{display:block;width:1.5em;height:1.5em}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button .mtx-datetimepicker-toggle-default-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button .mtx-datetimepicker-toggle-default-icon{margin:auto}\n"], components: [{ type: i3$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i3.NgSwitchDefault, selector: "[ngSwitchDefault]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
2381
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: MtxDatetimepickerToggle, decorators: [{
2387
+ /** @nocollapse */ MtxDatetimepickerToggle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: MtxDatetimepickerToggle, deps: [{ token: i1$1.MatDatepickerIntl }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
2388
+ /** @nocollapse */ MtxDatetimepickerToggle.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.2", type: MtxDatetimepickerToggle, selector: "mtx-datetimepicker-toggle", inputs: { datetimepicker: ["for", "datetimepicker"], tabIndex: "tabIndex", disabled: "disabled", disableRipple: "disableRipple" }, host: { listeners: { "focus": "_button.focus()" }, properties: { "attr.tabindex": "disabled ? null : -1", "class.mtx-datetimepicker-toggle-active": "datetimepicker && datetimepicker.opened", "class.mat-accent": "datetimepicker && datetimepicker.color === \"accent\"", "class.mat-warn": "datetimepicker && datetimepicker.color === \"warn\"" }, classAttribute: "mtx-datetimepicker-toggle" }, queries: [{ propertyName: "_customIcon", first: true, predicate: MtxDatetimepickerToggleIcon, descendants: true }], viewQueries: [{ propertyName: "_button", first: true, predicate: ["button"], descendants: true }], exportAs: ["mtxDatetimepickerToggle"], usesOnChanges: true, ngImport: i0, template: "<button #button\n mat-icon-button\n type=\"button\"\n [attr.aria-haspopup]=\"datetimepicker ? 'dialog' : null\"\n [attr.aria-label]=\"_intl.openCalendarLabel\"\n [attr.tabindex]=\"disabled ? -1 : tabIndex\"\n [disabled]=\"disabled\"\n [disableRipple]=\"disableRipple\"\n (click)=\"_open($event)\">\n\n <ng-container *ngIf=\"!_customIcon\" [ngSwitch]=\"datetimepicker.type\">\n <svg *ngSwitchCase=\"'time'\"\n class=\"mtx-datetimepicker-toggle-default-icon\"\n viewBox=\"0 0 24 24\"\n width=\"24px\"\n height=\"24px\"\n fill=\"currentColor\"\n focusable=\"false\">\n <path\n d=\"M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22C6.47,22 2,17.5 2,12A10,10 0 0,1 12,2M12.5,7V12.25L17,14.92L16.25,16.15L11,13V7H12.5Z\">\n </path>\n </svg>\n <svg *ngSwitchCase=\"'datetime'\"\n class=\"mtx-datetimepicker-toggle-default-icon\"\n viewBox=\"0 0 24 24\"\n width=\"24px\"\n height=\"24px\"\n fill=\"currentColor\"\n focusable=\"false\">\n <path\n d=\"M15,13H16.5V15.82L18.94,17.23L18.19,18.53L15,16.69V13M19,8H5V19H9.67C9.24,18.09 9,17.07 9,16A7,7 0 0,1 16,9C17.07,9 18.09,9.24 19,9.67V8M5,21C3.89,21 3,20.1 3,19V5C3,3.89 3.89,3 5,3H6V1H8V3H16V1H18V3H19A2,2 0 0,1 21,5V11.1C22.24,12.36 23,14.09 23,16A7,7 0 0,1 16,23C14.09,23 12.36,22.24 11.1,21H5M16,11.15A4.85,4.85 0 0,0 11.15,16C11.15,18.68 13.32,20.85 16,20.85A4.85,4.85 0 0,0 20.85,16C20.85,13.32 18.68,11.15 16,11.15Z\">\n </path>\n </svg>\n <svg *ngSwitchDefault\n class=\"mtx-datetimepicker-toggle-default-icon\"\n viewBox=\"0 0 24 24\"\n width=\"24px\"\n height=\"24px\"\n fill=\"currentColor\"\n focusable=\"false\">\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path\n 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 </ng-container>\n\n <ng-content select=\"[mtxDatetimepickerToggleIcon]\"></ng-content>\n</button>\n", styles: [".mat-form-field-appearance-legacy .mat-form-field-prefix .mtx-datetimepicker-toggle-default-icon,.mat-form-field-appearance-legacy .mat-form-field-suffix .mtx-datetimepicker-toggle-default-icon{width:1em}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mtx-datetimepicker-toggle-default-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mtx-datetimepicker-toggle-default-icon{display:block;width:1.5em;height:1.5em}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button .mtx-datetimepicker-toggle-default-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button .mtx-datetimepicker-toggle-default-icon{margin:auto}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
2389
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: MtxDatetimepickerToggle, decorators: [{
2382
2390
  type: Component,
2383
2391
  args: [{ selector: 'mtx-datetimepicker-toggle', host: {
2384
2392
  'class': 'mtx-datetimepicker-toggle',
@@ -2409,8 +2417,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImpor
2409
2417
 
2410
2418
  class MtxDatetimepickerModule {
2411
2419
  }
2412
- /** @nocollapse */ MtxDatetimepickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: MtxDatetimepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2413
- /** @nocollapse */ MtxDatetimepickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: MtxDatetimepickerModule, declarations: [MtxCalendar,
2420
+ /** @nocollapse */ MtxDatetimepickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: MtxDatetimepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2421
+ /** @nocollapse */ MtxDatetimepickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.1.2", ngImport: i0, type: MtxDatetimepickerModule, declarations: [MtxCalendar,
2414
2422
  MtxCalendarBody,
2415
2423
  MtxClock,
2416
2424
  MtxDatetimepicker,
@@ -2431,8 +2439,8 @@ class MtxDatetimepickerModule {
2431
2439
  MtxMonthView,
2432
2440
  MtxYearView,
2433
2441
  MtxMultiYearView] });
2434
- /** @nocollapse */ MtxDatetimepickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: MtxDatetimepickerModule, providers: [MTX_DATETIMEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER], imports: [[CommonModule, MatButtonModule, OverlayModule, A11yModule, PortalModule]] });
2435
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: MtxDatetimepickerModule, decorators: [{
2442
+ /** @nocollapse */ MtxDatetimepickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: MtxDatetimepickerModule, providers: [MTX_DATETIMEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER], imports: [CommonModule, MatButtonModule, OverlayModule, A11yModule, PortalModule] });
2443
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: MtxDatetimepickerModule, decorators: [{
2436
2444
  type: NgModule,
2437
2445
  args: [{
2438
2446
  imports: [CommonModule, MatButtonModule, OverlayModule, A11yModule, PortalModule],