@angular/material 21.1.0-next.0 → 21.1.0-next.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. package/core/focus-indicators/_private.scss +1 -1
  2. package/fesm2022/_animation-chunk.mjs.map +1 -1
  3. package/fesm2022/_date-formats-chunk.mjs.map +1 -1
  4. package/fesm2022/_date-range-input-harness-chunk.mjs.map +1 -1
  5. package/fesm2022/_error-options-chunk.mjs +6 -6
  6. package/fesm2022/_error-options-chunk.mjs.map +1 -1
  7. package/fesm2022/_error-state-chunk.mjs.map +1 -1
  8. package/fesm2022/_form-field-chunk.mjs +30 -30
  9. package/fesm2022/_form-field-chunk.mjs.map +1 -1
  10. package/fesm2022/_icon-button-chunk.mjs +6 -6
  11. package/fesm2022/_icon-button-chunk.mjs.map +1 -1
  12. package/fesm2022/_icon-registry-chunk.mjs +3 -3
  13. package/fesm2022/_icon-registry-chunk.mjs.map +1 -1
  14. package/fesm2022/_input-harness-chunk.mjs.map +1 -1
  15. package/fesm2022/_input-value-accessor-chunk.mjs.map +1 -1
  16. package/fesm2022/_internal-form-field-chunk.mjs +3 -3
  17. package/fesm2022/_internal-form-field-chunk.mjs.map +1 -1
  18. package/fesm2022/_line-chunk.mjs +7 -7
  19. package/fesm2022/_line-chunk.mjs.map +1 -1
  20. package/fesm2022/_option-chunk.mjs +6 -6
  21. package/fesm2022/_option-chunk.mjs.map +1 -1
  22. package/fesm2022/_option-harness-chunk.mjs.map +1 -1
  23. package/fesm2022/_option-module-chunk.mjs +4 -4
  24. package/fesm2022/_option-module-chunk.mjs.map +1 -1
  25. package/fesm2022/_pseudo-checkbox-chunk.mjs +3 -3
  26. package/fesm2022/_pseudo-checkbox-chunk.mjs.map +1 -1
  27. package/fesm2022/_pseudo-checkbox-module-chunk.mjs +4 -4
  28. package/fesm2022/_pseudo-checkbox-module-chunk.mjs.map +1 -1
  29. package/fesm2022/_public-api-chunk.mjs.map +1 -1
  30. package/fesm2022/_ripple-chunk.mjs +6 -6
  31. package/fesm2022/_ripple-chunk.mjs.map +1 -1
  32. package/fesm2022/_ripple-loader-chunk.mjs +3 -3
  33. package/fesm2022/_ripple-loader-chunk.mjs.map +1 -1
  34. package/fesm2022/_ripple-module-chunk.mjs +4 -4
  35. package/fesm2022/_ripple-module-chunk.mjs.map +1 -1
  36. package/fesm2022/_structural-styles-chunk.mjs +3 -3
  37. package/fesm2022/_structural-styles-chunk.mjs.map +1 -1
  38. package/fesm2022/_tooltip-chunk.mjs +6 -6
  39. package/fesm2022/_tooltip-chunk.mjs.map +1 -1
  40. package/fesm2022/autocomplete-testing.mjs.map +1 -1
  41. package/fesm2022/autocomplete.mjs +19 -15
  42. package/fesm2022/autocomplete.mjs.map +1 -1
  43. package/fesm2022/badge-testing.mjs.map +1 -1
  44. package/fesm2022/badge.mjs +10 -10
  45. package/fesm2022/badge.mjs.map +1 -1
  46. package/fesm2022/bottom-sheet-testing.mjs.map +1 -1
  47. package/fesm2022/bottom-sheet.mjs +10 -10
  48. package/fesm2022/bottom-sheet.mjs.map +1 -1
  49. package/fesm2022/button-testing.mjs.map +1 -1
  50. package/fesm2022/button-toggle-testing.mjs.map +1 -1
  51. package/fesm2022/button-toggle.mjs +10 -10
  52. package/fesm2022/button-toggle.mjs.map +1 -1
  53. package/fesm2022/button.mjs +13 -13
  54. package/fesm2022/button.mjs.map +1 -1
  55. package/fesm2022/card-testing.mjs.map +1 -1
  56. package/fesm2022/card.mjs +46 -46
  57. package/fesm2022/card.mjs.map +1 -1
  58. package/fesm2022/checkbox-testing.mjs.map +1 -1
  59. package/fesm2022/checkbox.mjs +7 -7
  60. package/fesm2022/checkbox.mjs.map +1 -1
  61. package/fesm2022/chips-testing.mjs.map +1 -1
  62. package/fesm2022/chips.mjs +46 -46
  63. package/fesm2022/chips.mjs.map +1 -1
  64. package/fesm2022/core-testing.mjs.map +1 -1
  65. package/fesm2022/core.mjs +12 -12
  66. package/fesm2022/core.mjs.map +1 -1
  67. package/fesm2022/datepicker-testing.mjs.map +1 -1
  68. package/fesm2022/datepicker.mjs +91 -89
  69. package/fesm2022/datepicker.mjs.map +1 -1
  70. package/fesm2022/dialog-testing.mjs.map +1 -1
  71. package/fesm2022/dialog.mjs +25 -25
  72. package/fesm2022/dialog.mjs.map +1 -1
  73. package/fesm2022/divider-testing.mjs.map +1 -1
  74. package/fesm2022/divider.mjs +7 -7
  75. package/fesm2022/divider.mjs.map +1 -1
  76. package/fesm2022/expansion-testing.mjs.map +1 -1
  77. package/fesm2022/expansion.mjs +25 -25
  78. package/fesm2022/expansion.mjs.map +1 -1
  79. package/fesm2022/form-field-testing-control.mjs.map +1 -1
  80. package/fesm2022/form-field-testing.mjs.map +1 -1
  81. package/fesm2022/form-field.mjs +4 -4
  82. package/fesm2022/form-field.mjs.map +1 -1
  83. package/fesm2022/grid-list-testing.mjs.map +1 -1
  84. package/fesm2022/grid-list.mjs +22 -22
  85. package/fesm2022/grid-list.mjs.map +1 -1
  86. package/fesm2022/icon-testing.mjs +7 -7
  87. package/fesm2022/icon-testing.mjs.map +1 -1
  88. package/fesm2022/icon.mjs +7 -7
  89. package/fesm2022/icon.mjs.map +1 -1
  90. package/fesm2022/input-testing.mjs.map +1 -1
  91. package/fesm2022/input.mjs +7 -7
  92. package/fesm2022/input.mjs.map +1 -1
  93. package/fesm2022/list-testing.mjs.map +1 -1
  94. package/fesm2022/list.mjs +49 -49
  95. package/fesm2022/list.mjs.map +1 -1
  96. package/fesm2022/material.mjs.map +1 -1
  97. package/fesm2022/menu-testing.mjs.map +1 -1
  98. package/fesm2022/menu.mjs +22 -22
  99. package/fesm2022/menu.mjs.map +1 -1
  100. package/fesm2022/paginator-testing.mjs.map +1 -1
  101. package/fesm2022/paginator.mjs +10 -10
  102. package/fesm2022/paginator.mjs.map +1 -1
  103. package/fesm2022/progress-bar-testing.mjs.map +1 -1
  104. package/fesm2022/progress-bar.mjs +7 -7
  105. package/fesm2022/progress-bar.mjs.map +1 -1
  106. package/fesm2022/progress-spinner-testing.mjs.map +1 -1
  107. package/fesm2022/progress-spinner.mjs +7 -7
  108. package/fesm2022/progress-spinner.mjs.map +1 -1
  109. package/fesm2022/radio-testing.mjs.map +1 -1
  110. package/fesm2022/radio.mjs +10 -10
  111. package/fesm2022/radio.mjs.map +1 -1
  112. package/fesm2022/select-testing.mjs.map +1 -1
  113. package/fesm2022/select.mjs +10 -10
  114. package/fesm2022/select.mjs.map +1 -1
  115. package/fesm2022/sidenav-testing.mjs.map +1 -1
  116. package/fesm2022/sidenav.mjs +22 -22
  117. package/fesm2022/sidenav.mjs.map +1 -1
  118. package/fesm2022/slide-toggle-testing.mjs.map +1 -1
  119. package/fesm2022/slide-toggle.mjs +7 -7
  120. package/fesm2022/slide-toggle.mjs.map +1 -1
  121. package/fesm2022/slider-testing.mjs.map +1 -1
  122. package/fesm2022/slider.mjs +16 -16
  123. package/fesm2022/slider.mjs.map +1 -1
  124. package/fesm2022/snack-bar-testing.mjs.map +1 -1
  125. package/fesm2022/snack-bar.mjs +22 -22
  126. package/fesm2022/snack-bar.mjs.map +1 -1
  127. package/fesm2022/sort-testing.mjs.map +1 -1
  128. package/fesm2022/sort.mjs +13 -13
  129. package/fesm2022/sort.mjs.map +1 -1
  130. package/fesm2022/stepper-testing.mjs.map +1 -1
  131. package/fesm2022/stepper.mjs +31 -31
  132. package/fesm2022/stepper.mjs.map +1 -1
  133. package/fesm2022/table-testing.mjs.map +1 -1
  134. package/fesm2022/table.mjs +61 -75
  135. package/fesm2022/table.mjs.map +1 -1
  136. package/fesm2022/tabs-testing.mjs.map +1 -1
  137. package/fesm2022/tabs.mjs +43 -43
  138. package/fesm2022/tabs.mjs.map +1 -1
  139. package/fesm2022/timepicker-testing.mjs.map +1 -1
  140. package/fesm2022/timepicker.mjs +112 -121
  141. package/fesm2022/timepicker.mjs.map +1 -1
  142. package/fesm2022/toolbar-testing.mjs.map +1 -1
  143. package/fesm2022/toolbar.mjs +10 -10
  144. package/fesm2022/toolbar.mjs.map +1 -1
  145. package/fesm2022/tooltip-testing.mjs.map +1 -1
  146. package/fesm2022/tooltip.mjs +4 -4
  147. package/fesm2022/tooltip.mjs.map +1 -1
  148. package/fesm2022/tree-testing.mjs.map +1 -1
  149. package/fesm2022/tree.mjs +25 -25
  150. package/fesm2022/tree.mjs.map +1 -1
  151. package/package.json +2 -2
  152. package/schematics/ng-add/index.js +1 -1
  153. package/types/datepicker.d.ts +6 -2
  154. package/types/table.d.ts +3 -0
  155. package/types/timepicker.d.ts +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"timepicker-testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/material/timepicker/testing/timepicker-harness.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/material/timepicker/testing/timepicker-input-harness.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/material/timepicker/testing/timepicker-toggle-harness.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {MatOptionHarness, OptionHarnessFilters} from '../../core/testing';\nimport {TimepickerHarnessFilters} from './timepicker-harness-filters';\n\nexport class MatTimepickerHarness extends ComponentHarness {\n private _documentRootLocator = this.documentRootLocatorFactory();\n static hostSelector = 'mat-timepicker';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a timepicker with specific\n * attributes.\n * @param options Options for filtering which timepicker instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatTimepickerHarness>(\n this: ComponentHarnessConstructor<T>,\n options: TimepickerHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n /** Whether the timepicker is open. */\n async isOpen(): Promise<boolean> {\n const selector = await this._getPanelSelector();\n const panel = await this._documentRootLocator.locatorForOptional(selector)();\n return panel !== null;\n }\n\n /** Gets the options inside the timepicker panel. */\n async getOptions(filters?: Omit<OptionHarnessFilters, 'ancestor'>): Promise<MatOptionHarness[]> {\n if (!(await this.isOpen())) {\n throw new Error('Unable to retrieve options for timepicker. Timepicker panel is closed.');\n }\n\n return this._documentRootLocator.locatorForAll(\n MatOptionHarness.with({\n ...(filters || {}),\n ancestor: await this._getPanelSelector(),\n } as OptionHarnessFilters),\n )();\n }\n\n /** Selects the first option matching the given filters. */\n async selectOption(filters: OptionHarnessFilters): Promise<void> {\n const options = await this.getOptions(filters);\n if (!options.length) {\n throw Error(`Could not find a mat-option matching ${JSON.stringify(filters)}`);\n }\n await options[0].click();\n }\n\n /** Gets the selector that can be used to find the timepicker's panel. */\n protected async _getPanelSelector(): Promise<string> {\n return `#${await (await this.host()).getAttribute('mat-timepicker-panel-id')}`;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n TestKey,\n} from '@angular/cdk/testing';\nimport {MatTimepickerHarness} from './timepicker-harness';\nimport {\n TimepickerHarnessFilters,\n TimepickerInputHarnessFilters,\n} from './timepicker-harness-filters';\n\n/** Harness for interacting with a standard Material timepicker inputs in tests. */\nexport class MatTimepickerInputHarness extends ComponentHarness {\n private _documentRootLocator = this.documentRootLocatorFactory();\n static hostSelector = '.mat-timepicker-input';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatTimepickerInputHarness`\n * that meets certain criteria.\n * @param options Options for filtering which input instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatTimepickerInputHarness>(\n this: ComponentHarnessConstructor<T>,\n options: TimepickerInputHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options)\n .addOption('value', options.value, (harness, value) => {\n return HarnessPredicate.stringMatches(harness.getValue(), value);\n })\n .addOption('placeholder', options.placeholder, (harness, placeholder) => {\n return HarnessPredicate.stringMatches(harness.getPlaceholder(), placeholder);\n });\n }\n\n /** Gets whether the timepicker associated with the input is open. */\n async isTimepickerOpen(): Promise<boolean> {\n const host = await this.host();\n return (await host.getAttribute('aria-expanded')) === 'true';\n }\n\n /** Opens the timepicker associated with the input and returns the timepicker instance. */\n async openTimepicker(): Promise<MatTimepickerHarness> {\n if (!(await this.isDisabled())) {\n const host = await this.host();\n await host.sendKeys(TestKey.DOWN_ARROW);\n }\n\n return this.getTimepicker();\n }\n\n /** Closes the timepicker associated with the input. */\n async closeTimepicker(): Promise<void> {\n await this._documentRootLocator.rootElement.click();\n\n // This is necessary so that we wait for the closing animation.\n await this.forceStabilize();\n }\n\n /**\n * Gets the `MatTimepickerHarness` that is associated with the input.\n * @param filter Optionally filters which timepicker is included.\n */\n async getTimepicker(filter: TimepickerHarnessFilters = {}): Promise<MatTimepickerHarness> {\n const host = await this.host();\n const timepickerId = await host.getAttribute('mat-timepicker-id');\n\n if (!timepickerId) {\n throw Error('Element is not associated with a timepicker');\n }\n\n return this._documentRootLocator.locatorFor(\n MatTimepickerHarness.with({\n ...filter,\n selector: `[mat-timepicker-panel-id=\"${timepickerId}\"]`,\n }),\n )();\n }\n\n /** Whether the input is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await this.host()).getProperty<boolean>('disabled');\n }\n\n /** Whether the input is required. */\n async isRequired(): Promise<boolean> {\n return (await this.host()).getProperty<boolean>('required');\n }\n\n /** Gets the value of the input. */\n async getValue(): Promise<string> {\n // The \"value\" property of the native input is always defined.\n return await (await this.host()).getProperty<string>('value');\n }\n\n /**\n * Sets the value of the input. The value will be set by simulating\n * keypresses that correspond to the given value.\n */\n async setValue(newValue: string): Promise<void> {\n const inputEl = await this.host();\n await inputEl.clear();\n\n // We don't want to send keys for the value if the value is an empty\n // string in order to clear the value. Sending keys with an empty string\n // still results in unnecessary focus events.\n if (newValue) {\n await inputEl.sendKeys(newValue);\n }\n }\n\n /** Gets the placeholder of the input. */\n async getPlaceholder(): Promise<string> {\n return await (await this.host()).getProperty<string>('placeholder');\n }\n\n /**\n * Focuses the input and returns a promise that indicates when the\n * action is complete.\n */\n async focus(): Promise<void> {\n return (await this.host()).focus();\n }\n\n /**\n * Blurs the input and returns a promise that indicates when the\n * action is complete.\n */\n async blur(): Promise<void> {\n return (await this.host()).blur();\n }\n\n /** Whether the input is focused. */\n async isFocused(): Promise<boolean> {\n return (await this.host()).isFocused();\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {ComponentHarness, HarnessPredicate} from '@angular/cdk/testing';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {TimepickerToggleHarnessFilters} from './timepicker-harness-filters';\n\n/** Harness for interacting with a standard Material timepicker toggle in tests. */\nexport class MatTimepickerToggleHarness extends ComponentHarness {\n static hostSelector = '.mat-timepicker-toggle';\n\n /** The clickable button inside the toggle. */\n private _button = this.locatorFor('button');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatTimepickerToggleHarness` that\n * meets certain criteria.\n * @param options Options for filtering which timepicker toggle instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(\n options: TimepickerToggleHarnessFilters = {},\n ): HarnessPredicate<MatTimepickerToggleHarness> {\n return new HarnessPredicate(MatTimepickerToggleHarness, options);\n }\n\n /** Opens the timepicker associated with the toggle. */\n async openTimepicker(): Promise<void> {\n const isOpen = await this.isTimepickerOpen();\n\n if (!isOpen) {\n const button = await this._button();\n await button.click();\n }\n }\n\n /** Gets whether the timepicker associated with the toggle is open. */\n async isTimepickerOpen(): Promise<boolean> {\n const button = await this._button();\n const ariaExpanded = await button.getAttribute('aria-expanded');\n return ariaExpanded === 'true';\n }\n\n /** Whether the toggle is disabled. */\n async isDisabled(): Promise<boolean> {\n const button = await this._button();\n return coerceBooleanProperty(await button.getAttribute('disabled'));\n }\n}\n"],"names":["MatTimepickerHarness","ComponentHarness","_documentRootLocator","documentRootLocatorFactory","hostSelector","with","options","HarnessPredicate","isOpen","selector","_getPanelSelector","panel","locatorForOptional","getOptions","filters","Error","locatorForAll","MatOptionHarness","ancestor","selectOption","length","JSON","stringify","click","host","getAttribute","MatTimepickerInputHarness","addOption","value","harness","stringMatches","getValue","placeholder","getPlaceholder","isTimepickerOpen","openTimepicker","isDisabled","sendKeys","TestKey","DOWN_ARROW","getTimepicker","closeTimepicker","rootElement","forceStabilize","filter","timepickerId","locatorFor","getProperty","isRequired","setValue","newValue","inputEl","clear","focus","blur","isFocused","MatTimepickerToggleHarness","_button","button","ariaExpanded","coerceBooleanProperty"],"mappings":";;;;AAgBM,MAAOA,oBAAqB,SAAQC,gBAAgB,CAAA;AAChDC,EAAAA,oBAAoB,GAAG,IAAI,CAACC,0BAA0B,EAAE;EAChE,OAAOC,YAAY,GAAG,gBAAgB;AAQtC,EAAA,OAAOC,IAAIA,CAETC,OAAA,GAAoC,EAAE,EAAA;AAEtC,IAAA,OAAO,IAAIC,gBAAgB,CAAC,IAAI,EAAED,OAAO,CAAC;AAC5C;EAGA,MAAME,MAAMA,GAAA;AACV,IAAA,MAAMC,QAAQ,GAAG,MAAM,IAAI,CAACC,iBAAiB,EAAE;AAC/C,IAAA,MAAMC,KAAK,GAAG,MAAM,IAAI,CAACT,oBAAoB,CAACU,kBAAkB,CAACH,QAAQ,CAAC,EAAE;IAC5E,OAAOE,KAAK,KAAK,IAAI;AACvB;EAGA,MAAME,UAAUA,CAACC,OAAgD,EAAA;IAC/D,IAAI,EAAE,MAAM,IAAI,CAACN,MAAM,EAAE,CAAC,EAAE;AAC1B,MAAA,MAAM,IAAIO,KAAK,CAAC,wEAAwE,CAAC;AAC3F;IAEA,OAAO,IAAI,CAACb,oBAAoB,CAACc,aAAa,CAC5CC,gBAAgB,CAACZ,IAAI,CAAC;AACpB,MAAA,IAAIS,OAAO,IAAI,EAAE,CAAC;AAClBI,MAAAA,QAAQ,EAAE,MAAM,IAAI,CAACR,iBAAiB;KACf,CAAC,CAC3B,EAAE;AACL;EAGA,MAAMS,YAAYA,CAACL,OAA6B,EAAA;IAC9C,MAAMR,OAAO,GAAG,MAAM,IAAI,CAACO,UAAU,CAACC,OAAO,CAAC;AAC9C,IAAA,IAAI,CAACR,OAAO,CAACc,MAAM,EAAE;MACnB,MAAML,KAAK,CAAC,CAAA,qCAAA,EAAwCM,IAAI,CAACC,SAAS,CAACR,OAAO,CAAC,CAAA,CAAE,CAAC;AAChF;AACA,IAAA,MAAMR,OAAO,CAAC,CAAC,CAAC,CAACiB,KAAK,EAAE;AAC1B;EAGU,MAAMb,iBAAiBA,GAAA;AAC/B,IAAA,OAAO,CAAI,CAAA,EAAA,MAAM,CAAC,MAAM,IAAI,CAACc,IAAI,EAAE,EAAEC,YAAY,CAAC,yBAAyB,CAAC,CAAE,CAAA;AAChF;;;AC7CI,MAAOC,yBAA0B,SAAQzB,gBAAgB,CAAA;AACrDC,EAAAA,oBAAoB,GAAG,IAAI,CAACC,0BAA0B,EAAE;EAChE,OAAOC,YAAY,GAAG,uBAAuB;AAQ7C,EAAA,OAAOC,IAAIA,CAETC,OAAA,GAAyC,EAAE,EAAA;IAE3C,OAAO,IAAIC,gBAAgB,CAAC,IAAI,EAAED,OAAO,CAAA,CACtCqB,SAAS,CAAC,OAAO,EAAErB,OAAO,CAACsB,KAAK,EAAE,CAACC,OAAO,EAAED,KAAK,KAAI;MACpD,OAAOrB,gBAAgB,CAACuB,aAAa,CAACD,OAAO,CAACE,QAAQ,EAAE,EAAEH,KAAK,CAAC;AAClE,KAAC,CAAA,CACAD,SAAS,CAAC,aAAa,EAAErB,OAAO,CAAC0B,WAAW,EAAE,CAACH,OAAO,EAAEG,WAAW,KAAI;MACtE,OAAOzB,gBAAgB,CAACuB,aAAa,CAACD,OAAO,CAACI,cAAc,EAAE,EAAED,WAAW,CAAC;AAC9E,KAAC,CAAC;AACN;EAGA,MAAME,gBAAgBA,GAAA;AACpB,IAAA,MAAMV,IAAI,GAAG,MAAM,IAAI,CAACA,IAAI,EAAE;IAC9B,OAAO,CAAC,MAAMA,IAAI,CAACC,YAAY,CAAC,eAAe,CAAC,MAAM,MAAM;AAC9D;EAGA,MAAMU,cAAcA,GAAA;IAClB,IAAI,EAAE,MAAM,IAAI,CAACC,UAAU,EAAE,CAAC,EAAE;AAC9B,MAAA,MAAMZ,IAAI,GAAG,MAAM,IAAI,CAACA,IAAI,EAAE;AAC9B,MAAA,MAAMA,IAAI,CAACa,QAAQ,CAACC,OAAO,CAACC,UAAU,CAAC;AACzC;AAEA,IAAA,OAAO,IAAI,CAACC,aAAa,EAAE;AAC7B;EAGA,MAAMC,eAAeA,GAAA;IACnB,MAAM,IAAI,CAACvC,oBAAoB,CAACwC,WAAW,CAACnB,KAAK,EAAE;AAGnD,IAAA,MAAM,IAAI,CAACoB,cAAc,EAAE;AAC7B;AAMA,EAAA,MAAMH,aAAaA,CAACI,MAAA,GAAmC,EAAE,EAAA;AACvD,IAAA,MAAMpB,IAAI,GAAG,MAAM,IAAI,CAACA,IAAI,EAAE;IAC9B,MAAMqB,YAAY,GAAG,MAAMrB,IAAI,CAACC,YAAY,CAAC,mBAAmB,CAAC;IAEjE,IAAI,CAACoB,YAAY,EAAE;MACjB,MAAM9B,KAAK,CAAC,6CAA6C,CAAC;AAC5D;IAEA,OAAO,IAAI,CAACb,oBAAoB,CAAC4C,UAAU,CACzC9C,oBAAoB,CAACK,IAAI,CAAC;AACxB,MAAA,GAAGuC,MAAM;MACTnC,QAAQ,EAAE,6BAA6BoC,YAAY,CAAA,EAAA;KACpD,CAAC,CACH,EAAE;AACL;EAGA,MAAMT,UAAUA,GAAA;IACd,OAAO,CAAC,MAAM,IAAI,CAACZ,IAAI,EAAE,EAAEuB,WAAW,CAAU,UAAU,CAAC;AAC7D;EAGA,MAAMC,UAAUA,GAAA;IACd,OAAO,CAAC,MAAM,IAAI,CAACxB,IAAI,EAAE,EAAEuB,WAAW,CAAU,UAAU,CAAC;AAC7D;EAGA,MAAMhB,QAAQA,GAAA;AAEZ,IAAA,OAAO,MAAM,CAAC,MAAM,IAAI,CAACP,IAAI,EAAE,EAAEuB,WAAW,CAAS,OAAO,CAAC;AAC/D;EAMA,MAAME,QAAQA,CAACC,QAAgB,EAAA;AAC7B,IAAA,MAAMC,OAAO,GAAG,MAAM,IAAI,CAAC3B,IAAI,EAAE;AACjC,IAAA,MAAM2B,OAAO,CAACC,KAAK,EAAE;AAKrB,IAAA,IAAIF,QAAQ,EAAE;AACZ,MAAA,MAAMC,OAAO,CAACd,QAAQ,CAACa,QAAQ,CAAC;AAClC;AACF;EAGA,MAAMjB,cAAcA,GAAA;AAClB,IAAA,OAAO,MAAM,CAAC,MAAM,IAAI,CAACT,IAAI,EAAE,EAAEuB,WAAW,CAAS,aAAa,CAAC;AACrE;EAMA,MAAMM,KAAKA,GAAA;IACT,OAAO,CAAC,MAAM,IAAI,CAAC7B,IAAI,EAAE,EAAE6B,KAAK,EAAE;AACpC;EAMA,MAAMC,IAAIA,GAAA;IACR,OAAO,CAAC,MAAM,IAAI,CAAC9B,IAAI,EAAE,EAAE8B,IAAI,EAAE;AACnC;EAGA,MAAMC,SAASA,GAAA;IACb,OAAO,CAAC,MAAM,IAAI,CAAC/B,IAAI,EAAE,EAAE+B,SAAS,EAAE;AACxC;;;ACnII,MAAOC,0BAA2B,SAAQvD,gBAAgB,CAAA;EAC9D,OAAOG,YAAY,GAAG,wBAAwB;AAGtCqD,EAAAA,OAAO,GAAG,IAAI,CAACX,UAAU,CAAC,QAAQ,CAAC;AAQ3C,EAAA,OAAOzC,IAAIA,CACTC,OAAA,GAA0C,EAAE,EAAA;AAE5C,IAAA,OAAO,IAAIC,gBAAgB,CAACiD,0BAA0B,EAAElD,OAAO,CAAC;AAClE;EAGA,MAAM6B,cAAcA,GAAA;AAClB,IAAA,MAAM3B,MAAM,GAAG,MAAM,IAAI,CAAC0B,gBAAgB,EAAE;IAE5C,IAAI,CAAC1B,MAAM,EAAE;AACX,MAAA,MAAMkD,MAAM,GAAG,MAAM,IAAI,CAACD,OAAO,EAAE;AACnC,MAAA,MAAMC,MAAM,CAACnC,KAAK,EAAE;AACtB;AACF;EAGA,MAAMW,gBAAgBA,GAAA;AACpB,IAAA,MAAMwB,MAAM,GAAG,MAAM,IAAI,CAACD,OAAO,EAAE;IACnC,MAAME,YAAY,GAAG,MAAMD,MAAM,CAACjC,YAAY,CAAC,eAAe,CAAC;IAC/D,OAAOkC,YAAY,KAAK,MAAM;AAChC;EAGA,MAAMvB,UAAUA,GAAA;AACd,IAAA,MAAMsB,MAAM,GAAG,MAAM,IAAI,CAACD,OAAO,EAAE;IACnC,OAAOG,qBAAqB,CAAC,MAAMF,MAAM,CAACjC,YAAY,CAAC,UAAU,CAAC,CAAC;AACrE;;;;;"}
1
+ {"version":3,"file":"timepicker-testing.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/timepicker/testing/timepicker-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/timepicker/testing/timepicker-input-harness.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/src/material/timepicker/testing/timepicker-toggle-harness.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {MatOptionHarness, OptionHarnessFilters} from '../../core/testing';\nimport {TimepickerHarnessFilters} from './timepicker-harness-filters';\n\nexport class MatTimepickerHarness extends ComponentHarness {\n private _documentRootLocator = this.documentRootLocatorFactory();\n static hostSelector = 'mat-timepicker';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a timepicker with specific\n * attributes.\n * @param options Options for filtering which timepicker instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatTimepickerHarness>(\n this: ComponentHarnessConstructor<T>,\n options: TimepickerHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n /** Whether the timepicker is open. */\n async isOpen(): Promise<boolean> {\n const selector = await this._getPanelSelector();\n const panel = await this._documentRootLocator.locatorForOptional(selector)();\n return panel !== null;\n }\n\n /** Gets the options inside the timepicker panel. */\n async getOptions(filters?: Omit<OptionHarnessFilters, 'ancestor'>): Promise<MatOptionHarness[]> {\n if (!(await this.isOpen())) {\n throw new Error('Unable to retrieve options for timepicker. Timepicker panel is closed.');\n }\n\n return this._documentRootLocator.locatorForAll(\n MatOptionHarness.with({\n ...(filters || {}),\n ancestor: await this._getPanelSelector(),\n } as OptionHarnessFilters),\n )();\n }\n\n /** Selects the first option matching the given filters. */\n async selectOption(filters: OptionHarnessFilters): Promise<void> {\n const options = await this.getOptions(filters);\n if (!options.length) {\n throw Error(`Could not find a mat-option matching ${JSON.stringify(filters)}`);\n }\n await options[0].click();\n }\n\n /** Gets the selector that can be used to find the timepicker's panel. */\n protected async _getPanelSelector(): Promise<string> {\n return `#${await (await this.host()).getAttribute('mat-timepicker-panel-id')}`;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n TestKey,\n} from '@angular/cdk/testing';\nimport {MatTimepickerHarness} from './timepicker-harness';\nimport {\n TimepickerHarnessFilters,\n TimepickerInputHarnessFilters,\n} from './timepicker-harness-filters';\n\n/** Harness for interacting with a standard Material timepicker inputs in tests. */\nexport class MatTimepickerInputHarness extends ComponentHarness {\n private _documentRootLocator = this.documentRootLocatorFactory();\n static hostSelector = '.mat-timepicker-input';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatTimepickerInputHarness`\n * that meets certain criteria.\n * @param options Options for filtering which input instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatTimepickerInputHarness>(\n this: ComponentHarnessConstructor<T>,\n options: TimepickerInputHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options)\n .addOption('value', options.value, (harness, value) => {\n return HarnessPredicate.stringMatches(harness.getValue(), value);\n })\n .addOption('placeholder', options.placeholder, (harness, placeholder) => {\n return HarnessPredicate.stringMatches(harness.getPlaceholder(), placeholder);\n });\n }\n\n /** Gets whether the timepicker associated with the input is open. */\n async isTimepickerOpen(): Promise<boolean> {\n const host = await this.host();\n return (await host.getAttribute('aria-expanded')) === 'true';\n }\n\n /** Opens the timepicker associated with the input and returns the timepicker instance. */\n async openTimepicker(): Promise<MatTimepickerHarness> {\n if (!(await this.isDisabled())) {\n const host = await this.host();\n await host.sendKeys(TestKey.DOWN_ARROW);\n }\n\n return this.getTimepicker();\n }\n\n /** Closes the timepicker associated with the input. */\n async closeTimepicker(): Promise<void> {\n await this._documentRootLocator.rootElement.click();\n\n // This is necessary so that we wait for the closing animation.\n await this.forceStabilize();\n }\n\n /**\n * Gets the `MatTimepickerHarness` that is associated with the input.\n * @param filter Optionally filters which timepicker is included.\n */\n async getTimepicker(filter: TimepickerHarnessFilters = {}): Promise<MatTimepickerHarness> {\n const host = await this.host();\n const timepickerId = await host.getAttribute('mat-timepicker-id');\n\n if (!timepickerId) {\n throw Error('Element is not associated with a timepicker');\n }\n\n return this._documentRootLocator.locatorFor(\n MatTimepickerHarness.with({\n ...filter,\n selector: `[mat-timepicker-panel-id=\"${timepickerId}\"]`,\n }),\n )();\n }\n\n /** Whether the input is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await this.host()).getProperty<boolean>('disabled');\n }\n\n /** Whether the input is required. */\n async isRequired(): Promise<boolean> {\n return (await this.host()).getProperty<boolean>('required');\n }\n\n /** Gets the value of the input. */\n async getValue(): Promise<string> {\n // The \"value\" property of the native input is always defined.\n return await (await this.host()).getProperty<string>('value');\n }\n\n /**\n * Sets the value of the input. The value will be set by simulating\n * keypresses that correspond to the given value.\n */\n async setValue(newValue: string): Promise<void> {\n const inputEl = await this.host();\n await inputEl.clear();\n\n // We don't want to send keys for the value if the value is an empty\n // string in order to clear the value. Sending keys with an empty string\n // still results in unnecessary focus events.\n if (newValue) {\n await inputEl.sendKeys(newValue);\n }\n }\n\n /** Gets the placeholder of the input. */\n async getPlaceholder(): Promise<string> {\n return await (await this.host()).getProperty<string>('placeholder');\n }\n\n /**\n * Focuses the input and returns a promise that indicates when the\n * action is complete.\n */\n async focus(): Promise<void> {\n return (await this.host()).focus();\n }\n\n /**\n * Blurs the input and returns a promise that indicates when the\n * action is complete.\n */\n async blur(): Promise<void> {\n return (await this.host()).blur();\n }\n\n /** Whether the input is focused. */\n async isFocused(): Promise<boolean> {\n return (await this.host()).isFocused();\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {ComponentHarness, HarnessPredicate} from '@angular/cdk/testing';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {TimepickerToggleHarnessFilters} from './timepicker-harness-filters';\n\n/** Harness for interacting with a standard Material timepicker toggle in tests. */\nexport class MatTimepickerToggleHarness extends ComponentHarness {\n static hostSelector = '.mat-timepicker-toggle';\n\n /** The clickable button inside the toggle. */\n private _button = this.locatorFor('button');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatTimepickerToggleHarness` that\n * meets certain criteria.\n * @param options Options for filtering which timepicker toggle instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(\n options: TimepickerToggleHarnessFilters = {},\n ): HarnessPredicate<MatTimepickerToggleHarness> {\n return new HarnessPredicate(MatTimepickerToggleHarness, options);\n }\n\n /** Opens the timepicker associated with the toggle. */\n async openTimepicker(): Promise<void> {\n const isOpen = await this.isTimepickerOpen();\n\n if (!isOpen) {\n const button = await this._button();\n await button.click();\n }\n }\n\n /** Gets whether the timepicker associated with the toggle is open. */\n async isTimepickerOpen(): Promise<boolean> {\n const button = await this._button();\n const ariaExpanded = await button.getAttribute('aria-expanded');\n return ariaExpanded === 'true';\n }\n\n /** Whether the toggle is disabled. */\n async isDisabled(): Promise<boolean> {\n const button = await this._button();\n return coerceBooleanProperty(await button.getAttribute('disabled'));\n }\n}\n"],"names":["MatTimepickerHarness","ComponentHarness","_documentRootLocator","documentRootLocatorFactory","hostSelector","with","options","HarnessPredicate","isOpen","selector","_getPanelSelector","panel","locatorForOptional","getOptions","filters","Error","locatorForAll","MatOptionHarness","ancestor","selectOption","length","JSON","stringify","click","host","getAttribute","MatTimepickerInputHarness","addOption","value","harness","stringMatches","getValue","placeholder","getPlaceholder","isTimepickerOpen","openTimepicker","isDisabled","sendKeys","TestKey","DOWN_ARROW","getTimepicker","closeTimepicker","rootElement","forceStabilize","filter","timepickerId","locatorFor","getProperty","isRequired","setValue","newValue","inputEl","clear","focus","blur","isFocused","MatTimepickerToggleHarness","_button","button","ariaExpanded","coerceBooleanProperty"],"mappings":"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"}
@@ -125,12 +125,12 @@ class MatTimepicker {
125
125
  debugName: "_options"
126
126
  }] : []));
127
127
  _keyManager = new ActiveDescendantKeyManager(this._options, this._injector).withHomeAndEnd(true).withPageUpDown(true).withVerticalOrientation(true);
128
- interval = input(parseInterval(this._defaultConfig?.interval || null), ...(ngDevMode ? [{
129
- debugName: "interval",
128
+ interval = input(parseInterval(this._defaultConfig?.interval || null), {
129
+ ...(ngDevMode ? {
130
+ debugName: "interval"
131
+ } : {}),
130
132
  transform: parseInterval
131
- }] : [{
132
- transform: parseInterval
133
- }]));
133
+ });
134
134
  options = input(null, ...(ngDevMode ? [{
135
135
  debugName: "options"
136
136
  }] : []));
@@ -140,24 +140,24 @@ class MatTimepicker {
140
140
  closed = output();
141
141
  activeDescendant = this._activeDescendant.asReadonly();
142
142
  panelId = inject(_IdGenerator).getId('mat-timepicker-panel-');
143
- disableRipple = input(this._defaultConfig?.disableRipple ?? false, ...(ngDevMode ? [{
144
- debugName: "disableRipple",
145
- transform: booleanAttribute
146
- }] : [{
143
+ disableRipple = input(this._defaultConfig?.disableRipple ?? false, {
144
+ ...(ngDevMode ? {
145
+ debugName: "disableRipple"
146
+ } : {}),
147
147
  transform: booleanAttribute
148
- }]));
149
- ariaLabel = input(null, ...(ngDevMode ? [{
150
- debugName: "ariaLabel",
151
- alias: 'aria-label'
152
- }] : [{
148
+ });
149
+ ariaLabel = input(null, {
150
+ ...(ngDevMode ? {
151
+ debugName: "ariaLabel"
152
+ } : {}),
153
153
  alias: 'aria-label'
154
- }]));
155
- ariaLabelledby = input(null, ...(ngDevMode ? [{
156
- debugName: "ariaLabelledby",
157
- alias: 'aria-labelledby'
158
- }] : [{
154
+ });
155
+ ariaLabelledby = input(null, {
156
+ ...(ngDevMode ? {
157
+ debugName: "ariaLabelledby"
158
+ } : {}),
159
159
  alias: 'aria-labelledby'
160
- }]));
160
+ });
161
161
  disabled = computed(() => !!this._input()?.disabled(), ...(ngDevMode ? [{
162
162
  debugName: "disabled"
163
163
  }] : []));
@@ -375,7 +375,7 @@ class MatTimepicker {
375
375
  }
376
376
  static ɵfac = i0.ɵɵngDeclareFactory({
377
377
  minVersion: "12.0.0",
378
- version: "21.0.0",
378
+ version: "21.0.3",
379
379
  ngImport: i0,
380
380
  type: MatTimepicker,
381
381
  deps: [],
@@ -383,7 +383,7 @@ class MatTimepicker {
383
383
  });
384
384
  static ɵcmp = i0.ɵɵngDeclareComponent({
385
385
  minVersion: "17.0.0",
386
- version: "21.0.0",
386
+ version: "21.0.3",
387
387
  type: MatTimepicker,
388
388
  isStandalone: true,
389
389
  selector: "mat-timepicker",
@@ -463,7 +463,7 @@ class MatTimepicker {
463
463
  }
464
464
  i0.ɵɵngDeclareClassMetadata({
465
465
  minVersion: "12.0.0",
466
- version: "21.0.0",
466
+ version: "21.0.3",
467
467
  ngImport: i0,
468
468
  type: MatTimepicker,
469
469
  decorators: [{
@@ -579,6 +579,8 @@ class MatTimepickerInput {
579
579
  _timepickerSubscription;
580
580
  _validator;
581
581
  _lastValueValid = true;
582
+ _minValid = true;
583
+ _maxValid = true;
582
584
  _lastValidDate = null;
583
585
  _ariaActiveDescendant = computed(() => {
584
586
  const timepicker = this.timepicker();
@@ -600,55 +602,50 @@ class MatTimepickerInput {
600
602
  value = model(null, ...(ngDevMode ? [{
601
603
  debugName: "value"
602
604
  }] : []));
603
- timepicker = input.required(...(ngDevMode ? [{
604
- debugName: "timepicker",
605
- alias: 'matTimepicker'
606
- }] : [{
605
+ timepicker = input.required({
606
+ ...(ngDevMode ? {
607
+ debugName: "timepicker"
608
+ } : {}),
607
609
  alias: 'matTimepicker'
608
- }]));
609
- min = input(null, ...(ngDevMode ? [{
610
- debugName: "min",
611
- alias: 'matTimepickerMin',
612
- transform: value => this._transformDateInput(value)
613
- }] : [{
610
+ });
611
+ min = input(null, {
612
+ ...(ngDevMode ? {
613
+ debugName: "min"
614
+ } : {}),
614
615
  alias: 'matTimepickerMin',
615
616
  transform: value => this._transformDateInput(value)
616
- }]));
617
- max = input(null, ...(ngDevMode ? [{
618
- debugName: "max",
619
- alias: 'matTimepickerMax',
620
- transform: value => this._transformDateInput(value)
621
- }] : [{
617
+ });
618
+ max = input(null, {
619
+ ...(ngDevMode ? {
620
+ debugName: "max"
621
+ } : {}),
622
622
  alias: 'matTimepickerMax',
623
623
  transform: value => this._transformDateInput(value)
624
- }]));
625
- openOnClick = input(true, ...(ngDevMode ? [{
626
- debugName: "openOnClick",
627
- alias: 'matTimepickerOpenOnClick',
628
- transform: booleanAttribute
629
- }] : [{
624
+ });
625
+ openOnClick = input(true, {
626
+ ...(ngDevMode ? {
627
+ debugName: "openOnClick"
628
+ } : {}),
630
629
  alias: 'matTimepickerOpenOnClick',
631
630
  transform: booleanAttribute
632
- }]));
631
+ });
633
632
  disabled = computed(() => this.disabledInput() || this._accessorDisabled(), ...(ngDevMode ? [{
634
633
  debugName: "disabled"
635
634
  }] : []));
636
- disabledInput = input(false, ...(ngDevMode ? [{
637
- debugName: "disabledInput",
638
- transform: booleanAttribute,
639
- alias: 'disabled'
640
- }] : [{
635
+ disabledInput = input(false, {
636
+ ...(ngDevMode ? {
637
+ debugName: "disabledInput"
638
+ } : {}),
641
639
  transform: booleanAttribute,
642
640
  alias: 'disabled'
643
- }]));
641
+ });
644
642
  constructor() {
645
643
  if (typeof ngDevMode === 'undefined' || ngDevMode) {
646
644
  validateAdapter(this._dateAdapter, this._dateFormats);
647
645
  }
648
646
  const renderer = inject(Renderer2);
649
647
  this._validator = this._getValidator();
650
- this._respondToValueChanges();
651
- this._respondToMinMaxChanges();
648
+ this._updateFormsState();
652
649
  this._registerTimepicker();
653
650
  this._localeSubscription = this._dateAdapter.localeChanges.subscribe(() => {
654
651
  if (!this._hasFocus()) {
@@ -739,18 +736,28 @@ class MatTimepickerInput {
739
736
  this._formatValue(value);
740
737
  }
741
738
  }
742
- _respondToValueChanges() {
739
+ _updateFormsState() {
743
740
  effect(() => {
744
- const value = this._dateAdapter.deserialize(this.value());
745
- const wasValid = this._lastValueValid;
746
- this._lastValueValid = this._isValid(value);
741
+ const {
742
+ _dateAdapter: adapter,
743
+ _lastValueValid: prevValueValid,
744
+ _minValid: prevMinValid,
745
+ _maxValid: prevMaxValid
746
+ } = this;
747
+ const value = adapter.deserialize(this.value());
748
+ const min = this.min();
749
+ const max = this.max();
750
+ const valueValid = this._lastValueValid = this._isValid(value);
751
+ this._minValid = !min || !value || !valueValid || adapter.compareTime(min, value) <= 0;
752
+ this._maxValid = !max || !value || !valueValid || adapter.compareTime(max, value) >= 0;
753
+ const stateChanged = prevValueValid !== valueValid || prevMinValid !== this._minValid || prevMaxValid !== this._maxValid;
747
754
  if (!this._hasFocus()) {
748
755
  this._formatValue(value);
749
756
  }
750
- if (value && this._lastValueValid) {
757
+ if (value && valueValid) {
751
758
  this._lastValidDate = value;
752
759
  }
753
- if (wasValid !== this._lastValueValid) {
760
+ if (stateChanged) {
754
761
  this._validatorOnChange?.();
755
762
  }
756
763
  });
@@ -762,13 +769,6 @@ class MatTimepickerInput {
762
769
  timepicker.closed.subscribe(() => this._onTouched?.());
763
770
  });
764
771
  }
765
- _respondToMinMaxChanges() {
766
- effect(() => {
767
- this.min();
768
- this.max();
769
- this._validatorOnChange?.();
770
- });
771
- }
772
772
  _assignUserSelection(selection, propagateToAccessor) {
773
773
  let toAssign;
774
774
  if (selection == null || !this._isValid(selection)) {
@@ -805,29 +805,21 @@ class MatTimepickerInput {
805
805
  'matTimepickerParse': {
806
806
  'text': this._elementRef.nativeElement.value
807
807
  }
808
- }, control => {
809
- const controlValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(control.value));
810
- const min = this.min();
811
- return !min || !controlValue || this._dateAdapter.compareTime(min, controlValue) <= 0 ? null : {
812
- 'matTimepickerMin': {
813
- 'min': min,
814
- 'actual': controlValue
815
- }
816
- };
817
- }, control => {
818
- const controlValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(control.value));
819
- const max = this.max();
820
- return !max || !controlValue || this._dateAdapter.compareTime(max, controlValue) >= 0 ? null : {
821
- 'matTimepickerMax': {
822
- 'max': max,
823
- 'actual': controlValue
824
- }
825
- };
808
+ }, control => this._minValid ? null : {
809
+ 'matTimepickerMin': {
810
+ 'min': this.min(),
811
+ 'actual': this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(control.value))
812
+ }
813
+ }, control => this._maxValid ? null : {
814
+ 'matTimepickerMax': {
815
+ 'max': this.max(),
816
+ 'actual': this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(control.value))
817
+ }
826
818
  }]);
827
819
  }
828
820
  static ɵfac = i0.ɵɵngDeclareFactory({
829
821
  minVersion: "12.0.0",
830
- version: "21.0.0",
822
+ version: "21.0.3",
831
823
  ngImport: i0,
832
824
  type: MatTimepickerInput,
833
825
  deps: [],
@@ -835,7 +827,7 @@ class MatTimepickerInput {
835
827
  });
836
828
  static ɵdir = i0.ɵɵngDeclareDirective({
837
829
  minVersion: "17.1.0",
838
- version: "21.0.0",
830
+ version: "21.0.3",
839
831
  type: MatTimepickerInput,
840
832
  isStandalone: true,
841
833
  selector: "input[matTimepicker]",
@@ -924,7 +916,7 @@ class MatTimepickerInput {
924
916
  }
925
917
  i0.ɵɵngDeclareClassMetadata({
926
918
  minVersion: "12.0.0",
927
- version: "21.0.0",
919
+ version: "21.0.3",
928
920
  ngImport: i0,
929
921
  type: MatTimepickerInput,
930
922
  decorators: [{
@@ -1033,42 +1025,41 @@ class MatTimepickerToggle {
1033
1025
  }, ...(ngDevMode ? [{
1034
1026
  debugName: "_isDisabled"
1035
1027
  }] : []));
1036
- timepicker = input.required(...(ngDevMode ? [{
1037
- debugName: "timepicker",
1028
+ timepicker = input.required({
1029
+ ...(ngDevMode ? {
1030
+ debugName: "timepicker"
1031
+ } : {}),
1038
1032
  alias: 'for'
1039
- }] : [{
1040
- alias: 'for'
1041
- }]));
1042
- ariaLabel = input(undefined, ...(ngDevMode ? [{
1043
- debugName: "ariaLabel",
1044
- alias: 'aria-label'
1045
- }] : [{
1033
+ });
1034
+ ariaLabel = input(undefined, {
1035
+ ...(ngDevMode ? {
1036
+ debugName: "ariaLabel"
1037
+ } : {}),
1046
1038
  alias: 'aria-label'
1047
- }]));
1048
- ariaLabelledby = input(undefined, ...(ngDevMode ? [{
1049
- debugName: "ariaLabelledby",
1050
- alias: 'aria-labelledby'
1051
- }] : [{
1039
+ });
1040
+ ariaLabelledby = input(undefined, {
1041
+ ...(ngDevMode ? {
1042
+ debugName: "ariaLabelledby"
1043
+ } : {}),
1052
1044
  alias: 'aria-labelledby'
1053
- }]));
1045
+ });
1054
1046
  _defaultAriaLabel = 'Open timepicker options';
1055
- disabled = input(false, ...(ngDevMode ? [{
1056
- debugName: "disabled",
1047
+ disabled = input(false, {
1048
+ ...(ngDevMode ? {
1049
+ debugName: "disabled"
1050
+ } : {}),
1057
1051
  transform: booleanAttribute,
1058
1052
  alias: 'disabled'
1059
- }] : [{
1060
- transform: booleanAttribute,
1061
- alias: 'disabled'
1062
- }]));
1053
+ });
1063
1054
  tabIndex = input(this._defaultTabIndex, ...(ngDevMode ? [{
1064
1055
  debugName: "tabIndex"
1065
1056
  }] : []));
1066
- disableRipple = input(this._defaultConfig?.disableRipple ?? false, ...(ngDevMode ? [{
1067
- debugName: "disableRipple",
1057
+ disableRipple = input(this._defaultConfig?.disableRipple ?? false, {
1058
+ ...(ngDevMode ? {
1059
+ debugName: "disableRipple"
1060
+ } : {}),
1068
1061
  transform: booleanAttribute
1069
- }] : [{
1070
- transform: booleanAttribute
1071
- }]));
1062
+ });
1072
1063
  _open(event) {
1073
1064
  if (this.timepicker() && !this._isDisabled()) {
1074
1065
  this.timepicker().open();
@@ -1080,7 +1071,7 @@ class MatTimepickerToggle {
1080
1071
  }
1081
1072
  static ɵfac = i0.ɵɵngDeclareFactory({
1082
1073
  minVersion: "12.0.0",
1083
- version: "21.0.0",
1074
+ version: "21.0.3",
1084
1075
  ngImport: i0,
1085
1076
  type: MatTimepickerToggle,
1086
1077
  deps: [],
@@ -1088,7 +1079,7 @@ class MatTimepickerToggle {
1088
1079
  });
1089
1080
  static ɵcmp = i0.ɵɵngDeclareComponent({
1090
1081
  minVersion: "17.1.0",
1091
- version: "21.0.0",
1082
+ version: "21.0.3",
1092
1083
  type: MatTimepickerToggle,
1093
1084
  isStandalone: true,
1094
1085
  selector: "mat-timepicker-toggle",
@@ -1160,7 +1151,7 @@ class MatTimepickerToggle {
1160
1151
  }
1161
1152
  i0.ɵɵngDeclareClassMetadata({
1162
1153
  minVersion: "12.0.0",
1163
- version: "21.0.0",
1154
+ version: "21.0.3",
1164
1155
  ngImport: i0,
1165
1156
  type: MatTimepickerToggle,
1166
1157
  decorators: [{
@@ -1234,7 +1225,7 @@ i0.ɵɵngDeclareClassMetadata({
1234
1225
  class MatTimepickerModule {
1235
1226
  static ɵfac = i0.ɵɵngDeclareFactory({
1236
1227
  minVersion: "12.0.0",
1237
- version: "21.0.0",
1228
+ version: "21.0.3",
1238
1229
  ngImport: i0,
1239
1230
  type: MatTimepickerModule,
1240
1231
  deps: [],
@@ -1242,7 +1233,7 @@ class MatTimepickerModule {
1242
1233
  });
1243
1234
  static ɵmod = i0.ɵɵngDeclareNgModule({
1244
1235
  minVersion: "14.0.0",
1245
- version: "21.0.0",
1236
+ version: "21.0.3",
1246
1237
  ngImport: i0,
1247
1238
  type: MatTimepickerModule,
1248
1239
  imports: [MatTimepicker, MatTimepickerInput, MatTimepickerToggle],
@@ -1250,7 +1241,7 @@ class MatTimepickerModule {
1250
1241
  });
1251
1242
  static ɵinj = i0.ɵɵngDeclareInjector({
1252
1243
  minVersion: "12.0.0",
1253
- version: "21.0.0",
1244
+ version: "21.0.3",
1254
1245
  ngImport: i0,
1255
1246
  type: MatTimepickerModule,
1256
1247
  imports: [MatTimepicker, MatTimepickerToggle, CdkScrollableModule]
@@ -1258,7 +1249,7 @@ class MatTimepickerModule {
1258
1249
  }
1259
1250
  i0.ɵɵngDeclareClassMetadata({
1260
1251
  minVersion: "12.0.0",
1261
- version: "21.0.0",
1252
+ version: "21.0.3",
1262
1253
  ngImport: i0,
1263
1254
  type: MatTimepickerModule,
1264
1255
  decorators: [{