@angular/material 21.0.0-next.5 → 21.0.0-next.8
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.
- package/fesm2022/{animation.mjs → _animation-chunk.mjs} +2 -23
- package/fesm2022/_animation-chunk.mjs.map +1 -0
- package/fesm2022/{date-formats.mjs → _date-formats-chunk.mjs} +1 -1
- package/fesm2022/_date-formats-chunk.mjs.map +1 -0
- package/fesm2022/{date-range-input-harness.mjs → _date-range-input-harness-chunk.mjs} +1 -1
- package/fesm2022/_date-range-input-harness-chunk.mjs.map +1 -0
- package/fesm2022/{error-options.mjs → _error-options-chunk.mjs} +1 -1
- package/fesm2022/_error-options-chunk.mjs.map +1 -0
- package/fesm2022/{error-state.mjs → _error-state-chunk.mjs} +1 -1
- package/fesm2022/_error-state-chunk.mjs.map +1 -0
- package/fesm2022/{form-field2.mjs → _form-field-chunk.mjs} +2 -2
- package/fesm2022/_form-field-chunk.mjs.map +1 -0
- package/fesm2022/{icon-button.mjs → _icon-button-chunk.mjs} +4 -4
- package/fesm2022/_icon-button-chunk.mjs.map +1 -0
- package/fesm2022/{icon-registry.mjs → _icon-registry-chunk.mjs} +1 -1
- package/fesm2022/_icon-registry-chunk.mjs.map +1 -0
- package/fesm2022/{input-harness.mjs → _input-harness-chunk.mjs} +1 -1
- package/fesm2022/_input-harness-chunk.mjs.map +1 -0
- package/fesm2022/{input-value-accessor.mjs → _input-value-accessor-chunk.mjs} +1 -1
- package/fesm2022/_input-value-accessor-chunk.mjs.map +1 -0
- package/fesm2022/{internal-form-field.mjs → _internal-form-field-chunk.mjs} +1 -1
- package/fesm2022/_internal-form-field-chunk.mjs.map +1 -0
- package/fesm2022/{line.mjs → _line-chunk.mjs} +1 -1
- package/fesm2022/_line-chunk.mjs.map +1 -0
- package/fesm2022/{option.mjs → _option-chunk.mjs} +4 -4
- package/fesm2022/_option-chunk.mjs.map +1 -0
- package/fesm2022/{option-harness.mjs → _option-harness-chunk.mjs} +1 -1
- package/fesm2022/_option-harness-chunk.mjs.map +1 -0
- package/fesm2022/{option-module.mjs → _option-module-chunk.mjs} +4 -4
- package/fesm2022/_option-module-chunk.mjs.map +1 -0
- package/fesm2022/{pseudo-checkbox.mjs → _pseudo-checkbox-chunk.mjs} +2 -2
- package/fesm2022/_pseudo-checkbox-chunk.mjs.map +1 -0
- package/fesm2022/{pseudo-checkbox-module.mjs → _pseudo-checkbox-module-chunk.mjs} +2 -2
- package/fesm2022/_pseudo-checkbox-module-chunk.mjs.map +1 -0
- package/fesm2022/{public-api.mjs → _public-api-chunk.mjs} +1 -1
- package/fesm2022/_public-api-chunk.mjs.map +1 -0
- package/fesm2022/{ripple.mjs → _ripple-chunk.mjs} +2 -2
- package/fesm2022/_ripple-chunk.mjs.map +1 -0
- package/fesm2022/{ripple-loader.mjs → _ripple-loader-chunk.mjs} +3 -3
- package/fesm2022/_ripple-loader-chunk.mjs.map +1 -0
- package/fesm2022/{ripple-module.mjs → _ripple-module-chunk.mjs} +2 -2
- package/fesm2022/_ripple-module-chunk.mjs.map +1 -0
- package/fesm2022/{structural-styles.mjs → _structural-styles-chunk.mjs} +1 -1
- package/fesm2022/_structural-styles-chunk.mjs.map +1 -0
- package/fesm2022/{tooltip2.mjs → _tooltip-chunk.mjs} +2 -2
- package/fesm2022/_tooltip-chunk.mjs.map +1 -0
- package/fesm2022/{autocomplete/testing.mjs → autocomplete-testing.mjs} +3 -3
- package/fesm2022/autocomplete-testing.mjs.map +1 -0
- package/fesm2022/autocomplete.mjs +10 -10
- package/fesm2022/{badge/testing.mjs → badge-testing.mjs} +1 -1
- package/fesm2022/badge-testing.mjs.map +1 -0
- package/fesm2022/badge.mjs +1 -1
- package/fesm2022/{bottom-sheet/testing.mjs → bottom-sheet-testing.mjs} +1 -1
- package/fesm2022/bottom-sheet-testing.mjs.map +1 -0
- package/fesm2022/bottom-sheet.mjs +6 -1
- package/fesm2022/bottom-sheet.mjs.map +1 -1
- package/fesm2022/{button/testing.mjs → button-testing.mjs} +1 -1
- package/fesm2022/button-testing.mjs.map +1 -0
- package/fesm2022/{button-toggle/testing.mjs → button-toggle-testing.mjs} +1 -1
- package/fesm2022/button-toggle-testing.mjs.map +1 -0
- package/fesm2022/button-toggle.mjs +5 -5
- package/fesm2022/button.mjs +7 -7
- package/fesm2022/{card/testing.mjs → card-testing.mjs} +1 -1
- package/fesm2022/card-testing.mjs.map +1 -0
- package/fesm2022/{checkbox/testing.mjs → checkbox-testing.mjs} +1 -1
- package/fesm2022/checkbox-testing.mjs.map +1 -0
- package/fesm2022/checkbox.mjs +4 -4
- package/fesm2022/{chips/testing.mjs → chips-testing.mjs} +1 -1
- package/fesm2022/chips-testing.mjs.map +1 -0
- package/fesm2022/chips.mjs +30 -9
- package/fesm2022/chips.mjs.map +1 -1
- package/fesm2022/{core/testing.mjs → core-testing.mjs} +2 -2
- package/fesm2022/core-testing.mjs.map +1 -0
- package/fesm2022/core.mjs +15 -20
- package/fesm2022/core.mjs.map +1 -1
- package/fesm2022/{datepicker/testing.mjs → datepicker-testing.mjs} +3 -3
- package/fesm2022/datepicker-testing.mjs.map +1 -0
- package/fesm2022/datepicker.mjs +83 -84
- package/fesm2022/datepicker.mjs.map +1 -1
- package/fesm2022/{dialog/testing.mjs → dialog-testing.mjs} +3 -3
- package/fesm2022/dialog-testing.mjs.map +1 -0
- package/fesm2022/dialog.mjs +1 -1
- package/fesm2022/{divider/testing.mjs → divider-testing.mjs} +1 -1
- package/fesm2022/divider-testing.mjs.map +1 -0
- package/fesm2022/{expansion/testing.mjs → expansion-testing.mjs} +1 -1
- package/fesm2022/expansion-testing.mjs.map +1 -0
- package/fesm2022/expansion.mjs +2 -2
- package/fesm2022/{form-field/testing/control.mjs → form-field-testing-control.mjs} +1 -1
- package/fesm2022/form-field-testing-control.mjs.map +1 -0
- package/fesm2022/{form-field/testing.mjs → form-field-testing.mjs} +5 -5
- package/fesm2022/form-field-testing.mjs.map +1 -0
- package/fesm2022/form-field.mjs +3 -3
- package/fesm2022/{grid-list/testing.mjs → grid-list-testing.mjs} +2 -2
- package/fesm2022/grid-list-testing.mjs.map +1 -0
- package/fesm2022/grid-list.mjs +3 -3
- package/fesm2022/{icon/testing.mjs → icon-testing.mjs} +2 -2
- package/fesm2022/icon-testing.mjs.map +1 -0
- package/fesm2022/icon.mjs +2 -2
- package/fesm2022/{input/testing.mjs → input-testing.mjs} +3 -3
- package/fesm2022/{input/testing.mjs.map → input-testing.mjs.map} +1 -1
- package/fesm2022/input.mjs +6 -6
- package/fesm2022/{list/testing.mjs → list-testing.mjs} +2 -2
- package/fesm2022/list-testing.mjs.map +1 -0
- package/fesm2022/list.mjs +6 -6
- package/fesm2022/{menu/testing.mjs → menu-testing.mjs} +1 -1
- package/fesm2022/menu-testing.mjs.map +1 -0
- package/fesm2022/menu.mjs +14 -11
- package/fesm2022/menu.mjs.map +1 -1
- package/fesm2022/{paginator/testing.mjs → paginator-testing.mjs} +2 -2
- package/fesm2022/paginator-testing.mjs.map +1 -0
- package/fesm2022/paginator.mjs +16 -16
- package/fesm2022/paginator.mjs.map +1 -1
- package/fesm2022/{progress-bar/testing.mjs → progress-bar-testing.mjs} +1 -1
- package/fesm2022/progress-bar-testing.mjs.map +1 -0
- package/fesm2022/progress-bar.mjs +1 -1
- package/fesm2022/{progress-spinner/testing.mjs → progress-spinner-testing.mjs} +1 -1
- package/fesm2022/progress-spinner-testing.mjs.map +1 -0
- package/fesm2022/progress-spinner.mjs +1 -1
- package/fesm2022/{radio/testing.mjs → radio-testing.mjs} +1 -1
- package/fesm2022/radio-testing.mjs.map +1 -0
- package/fesm2022/radio.mjs +5 -5
- package/fesm2022/{select/testing.mjs → select-testing.mjs} +1 -1
- package/fesm2022/select-testing.mjs.map +1 -0
- package/fesm2022/select.mjs +17 -16
- package/fesm2022/select.mjs.map +1 -1
- package/fesm2022/{sidenav/testing.mjs → sidenav-testing.mjs} +1 -1
- package/fesm2022/sidenav-testing.mjs.map +1 -0
- package/fesm2022/sidenav.mjs +1 -1
- package/fesm2022/{slide-toggle/testing.mjs → slide-toggle-testing.mjs} +1 -1
- package/fesm2022/slide-toggle-testing.mjs.map +1 -0
- package/fesm2022/slide-toggle.mjs +4 -4
- package/fesm2022/{slider/testing.mjs → slider-testing.mjs} +1 -1
- package/fesm2022/slider-testing.mjs.map +1 -0
- package/fesm2022/slider.mjs +4 -4
- package/fesm2022/{snack-bar/testing.mjs → snack-bar-testing.mjs} +1 -1
- package/fesm2022/snack-bar-testing.mjs.map +1 -0
- package/fesm2022/snack-bar.mjs +6 -6
- package/fesm2022/{sort/testing.mjs → sort-testing.mjs} +1 -1
- package/fesm2022/sort-testing.mjs.map +1 -0
- package/fesm2022/sort.mjs +2 -2
- package/fesm2022/{stepper/testing.mjs → stepper-testing.mjs} +1 -1
- package/fesm2022/stepper-testing.mjs.map +1 -0
- package/fesm2022/stepper.mjs +6 -6
- package/fesm2022/{table/testing.mjs → table-testing.mjs} +1 -1
- package/fesm2022/table-testing.mjs.map +1 -0
- package/fesm2022/{tabs/testing.mjs → tabs-testing.mjs} +1 -1
- package/fesm2022/tabs-testing.mjs.map +1 -0
- package/fesm2022/tabs.mjs +3 -3
- package/fesm2022/{timepicker/testing.mjs → timepicker-testing.mjs} +2 -2
- package/fesm2022/timepicker-testing.mjs.map +1 -0
- package/fesm2022/timepicker.mjs +25 -19
- package/fesm2022/timepicker.mjs.map +1 -1
- package/fesm2022/{toolbar/testing.mjs → toolbar-testing.mjs} +1 -1
- package/fesm2022/toolbar-testing.mjs.map +1 -0
- package/fesm2022/{tooltip/testing.mjs → tooltip-testing.mjs} +1 -1
- package/fesm2022/tooltip-testing.mjs.map +1 -0
- package/fesm2022/tooltip.mjs +3 -3
- package/fesm2022/{tree/testing.mjs → tree-testing.mjs} +1 -1
- package/fesm2022/tree-testing.mjs.map +1 -0
- package/package.json +115 -114
- package/schematics/ng-add/index.js +1 -1
- package/{badge.d.d.ts → types/_badge-chunk.d.ts} +1 -1
- package/{form-field.d.d.ts → types/_form-field-chunk.d.ts} +2 -2
- package/{form-field-module.d.d.ts → types/_form-field-module-chunk.d.ts} +1 -1
- package/{icon-module.d.d.ts → types/_icon-module-chunk.d.ts} +1 -1
- package/{option-module.d.d.ts → types/_option-module-chunk.d.ts} +3 -3
- package/{paginator.d.d.ts → types/_paginator-chunk.d.ts} +2 -2
- package/{progress-spinner.d.d.ts → types/_progress-spinner-chunk.d.ts} +1 -1
- package/{ripple-module.d.d.ts → types/_ripple-module-chunk.d.ts} +1 -1
- package/{sort.d.d.ts → types/_sort-chunk.d.ts} +1 -1
- package/{autocomplete/testing/index.d.ts → types/autocomplete-testing.d.ts} +2 -2
- package/{autocomplete/index.d.ts → types/autocomplete.d.ts} +6 -6
- package/{badge/testing/index.d.ts → types/badge-testing.d.ts} +2 -2
- package/{badge/index.d.ts → types/badge.d.ts} +3 -3
- package/{bottom-sheet/index.d.ts → types/bottom-sheet.d.ts} +6 -1
- package/{button-toggle/testing/index.d.ts → types/button-toggle-testing.d.ts} +1 -1
- package/{button-toggle/index.d.ts → types/button-toggle.d.ts} +4 -4
- package/{button/index.d.ts → types/button.d.ts} +4 -4
- package/{checkbox/index.d.ts → types/checkbox.d.ts} +1 -1
- package/{chips/index.d.ts → types/chips.d.ts} +53 -47
- package/{core/testing/index.d.ts → types/core-testing.d.ts} +1 -1
- package/{core/index.d.ts → types/core.d.ts} +14 -40
- package/{datepicker/testing/index.d.ts → types/datepicker-testing.d.ts} +2 -2
- package/{datepicker/index.d.ts → types/datepicker.d.ts} +42 -42
- package/{dialog/testing/index.d.ts → types/dialog-testing.d.ts} +1 -1
- package/{dialog/index.d.ts → types/dialog.d.ts} +2 -2
- package/{form-field/testing/control/index.d.ts → types/form-field-testing-control.d.ts} +1 -1
- package/{form-field/testing/index.d.ts → types/form-field-testing.d.ts} +4 -4
- package/{form-field/index.d.ts → types/form-field.d.ts} +4 -4
- package/{grid-list/index.d.ts → types/grid-list.d.ts} +1 -1
- package/{icon/testing/index.d.ts → types/icon-testing.d.ts} +1 -1
- package/{icon/index.d.ts → types/icon.d.ts} +3 -3
- package/{input/testing/index.d.ts → types/input-testing.d.ts} +2 -2
- package/{input/index.d.ts → types/input.d.ts} +7 -7
- package/{list/testing/index.d.ts → types/list-testing.d.ts} +2 -2
- package/{list/index.d.ts → types/list.d.ts} +7 -7
- package/{menu/index.d.ts → types/menu.d.ts} +3 -3
- package/{paginator/testing/index.d.ts → types/paginator-testing.d.ts} +1 -1
- package/{paginator/index.d.ts → types/paginator.d.ts} +16 -16
- package/{progress-bar/index.d.ts → types/progress-bar.d.ts} +1 -1
- package/{progress-spinner/testing/index.d.ts → types/progress-spinner-testing.d.ts} +2 -2
- package/{progress-spinner/index.d.ts → types/progress-spinner.d.ts} +3 -3
- package/{radio/index.d.ts → types/radio.d.ts} +3 -3
- package/{select/index.d.ts → types/select.d.ts} +12 -12
- package/{slide-toggle/index.d.ts → types/slide-toggle.d.ts} +1 -1
- package/{slider/index.d.ts → types/slider.d.ts} +3 -3
- package/{snack-bar/index.d.ts → types/snack-bar.d.ts} +5 -5
- package/{sort/testing/index.d.ts → types/sort-testing.d.ts} +1 -1
- package/{sort/index.d.ts → types/sort.d.ts} +3 -3
- package/{stepper/index.d.ts → types/stepper.d.ts} +5 -5
- package/{table/index.d.ts → types/table.d.ts} +6 -6
- package/{tabs/index.d.ts → types/tabs.d.ts} +2 -2
- package/{timepicker/testing/index.d.ts → types/timepicker-testing.d.ts} +1 -1
- package/{timepicker/index.d.ts → types/timepicker.d.ts} +4 -2
- package/fesm2022/animation.mjs.map +0 -1
- package/fesm2022/autocomplete/testing.mjs.map +0 -1
- package/fesm2022/badge/testing.mjs.map +0 -1
- package/fesm2022/bottom-sheet/testing.mjs.map +0 -1
- package/fesm2022/button/testing.mjs.map +0 -1
- package/fesm2022/button-toggle/testing.mjs.map +0 -1
- package/fesm2022/card/testing.mjs.map +0 -1
- package/fesm2022/checkbox/testing.mjs.map +0 -1
- package/fesm2022/chips/testing.mjs.map +0 -1
- package/fesm2022/core/testing.mjs.map +0 -1
- package/fesm2022/date-formats.mjs.map +0 -1
- package/fesm2022/date-range-input-harness.mjs.map +0 -1
- package/fesm2022/datepicker/testing.mjs.map +0 -1
- package/fesm2022/dialog/testing.mjs.map +0 -1
- package/fesm2022/divider/testing.mjs.map +0 -1
- package/fesm2022/error-options.mjs.map +0 -1
- package/fesm2022/error-state.mjs.map +0 -1
- package/fesm2022/expansion/testing.mjs.map +0 -1
- package/fesm2022/form-field/testing/control.mjs.map +0 -1
- package/fesm2022/form-field/testing.mjs.map +0 -1
- package/fesm2022/form-field2.mjs.map +0 -1
- package/fesm2022/grid-list/testing.mjs.map +0 -1
- package/fesm2022/icon/testing.mjs.map +0 -1
- package/fesm2022/icon-button.mjs.map +0 -1
- package/fesm2022/icon-registry.mjs.map +0 -1
- package/fesm2022/input-harness.mjs.map +0 -1
- package/fesm2022/input-value-accessor.mjs.map +0 -1
- package/fesm2022/internal-form-field.mjs.map +0 -1
- package/fesm2022/line.mjs.map +0 -1
- package/fesm2022/list/testing.mjs.map +0 -1
- package/fesm2022/menu/testing.mjs.map +0 -1
- package/fesm2022/option-harness.mjs.map +0 -1
- package/fesm2022/option-module.mjs.map +0 -1
- package/fesm2022/option.mjs.map +0 -1
- package/fesm2022/paginator/testing.mjs.map +0 -1
- package/fesm2022/progress-bar/testing.mjs.map +0 -1
- package/fesm2022/progress-spinner/testing.mjs.map +0 -1
- package/fesm2022/pseudo-checkbox-module.mjs.map +0 -1
- package/fesm2022/pseudo-checkbox.mjs.map +0 -1
- package/fesm2022/public-api.mjs.map +0 -1
- package/fesm2022/radio/testing.mjs.map +0 -1
- package/fesm2022/ripple-loader.mjs.map +0 -1
- package/fesm2022/ripple-module.mjs.map +0 -1
- package/fesm2022/ripple.mjs.map +0 -1
- package/fesm2022/select/testing.mjs.map +0 -1
- package/fesm2022/sidenav/testing.mjs.map +0 -1
- package/fesm2022/slide-toggle/testing.mjs.map +0 -1
- package/fesm2022/slider/testing.mjs.map +0 -1
- package/fesm2022/snack-bar/testing.mjs.map +0 -1
- package/fesm2022/sort/testing.mjs.map +0 -1
- package/fesm2022/stepper/testing.mjs.map +0 -1
- package/fesm2022/structural-styles.mjs.map +0 -1
- package/fesm2022/table/testing.mjs.map +0 -1
- package/fesm2022/tabs/testing.mjs.map +0 -1
- package/fesm2022/timepicker/testing.mjs.map +0 -1
- package/fesm2022/toolbar/testing.mjs.map +0 -1
- package/fesm2022/tooltip/testing.mjs.map +0 -1
- package/fesm2022/tooltip2.mjs.map +0 -1
- package/fesm2022/tree/testing.mjs.map +0 -1
- /package/{button-toggle.d.d.ts → types/_button-toggle-chunk.d.ts} +0 -0
- /package/{date-adapter.d.d.ts → types/_date-adapter-chunk.d.ts} +0 -0
- /package/{date-range-input-harness.d.d.ts → types/_date-range-input-harness-chunk.d.ts} +0 -0
- /package/{dialog.d.d.ts → types/_dialog-chunk.d.ts} +0 -0
- /package/{error-options.d.d.ts → types/_error-options-chunk.d.ts} +0 -0
- /package/{form-field-control.d.d.ts → types/_form-field-control-chunk.d.ts} +0 -0
- /package/{form-field-control-harness.d.d.ts → types/_form-field-control-harness-chunk.d.ts} +0 -0
- /package/{icon-registry.d.d.ts → types/_icon-registry-chunk.d.ts} +0 -0
- /package/{input-harness.d.d.ts → types/_input-harness-chunk.d.ts} +0 -0
- /package/{line.d.d.ts → types/_line-chunk.d.ts} +0 -0
- /package/{list-option-types.d.d.ts → types/_list-option-types-chunk.d.ts} +0 -0
- /package/{option.d.d.ts → types/_option-chunk.d.ts} +0 -0
- /package/{option-harness.d.d.ts → types/_option-harness-chunk.d.ts} +0 -0
- /package/{option-parent.d.d.ts → types/_option-parent-chunk.d.ts} +0 -0
- /package/{palette.d.d.ts → types/_palette-chunk.d.ts} +0 -0
- /package/{pseudo-checkbox-module.d.d.ts → types/_pseudo-checkbox-module-chunk.d.ts} +0 -0
- /package/{ripple.d.d.ts → types/_ripple-chunk.d.ts} +0 -0
- /package/{ripple-loader.d.d.ts → types/_ripple-loader-chunk.d.ts} +0 -0
- /package/{sort-direction.d.d.ts → types/_sort-direction-chunk.d.ts} +0 -0
- /package/{bottom-sheet/testing/index.d.ts → types/bottom-sheet-testing.d.ts} +0 -0
- /package/{button/testing/index.d.ts → types/button-testing.d.ts} +0 -0
- /package/{card/testing/index.d.ts → types/card-testing.d.ts} +0 -0
- /package/{card/index.d.ts → types/card.d.ts} +0 -0
- /package/{checkbox/testing/index.d.ts → types/checkbox-testing.d.ts} +0 -0
- /package/{chips/testing/index.d.ts → types/chips-testing.d.ts} +0 -0
- /package/{divider/testing/index.d.ts → types/divider-testing.d.ts} +0 -0
- /package/{divider/index.d.ts → types/divider.d.ts} +0 -0
- /package/{expansion/testing/index.d.ts → types/expansion-testing.d.ts} +0 -0
- /package/{expansion/index.d.ts → types/expansion.d.ts} +0 -0
- /package/{grid-list/testing/index.d.ts → types/grid-list-testing.d.ts} +0 -0
- /package/{index.d.ts → types/material.d.ts} +0 -0
- /package/{menu/testing/index.d.ts → types/menu-testing.d.ts} +0 -0
- /package/{progress-bar/testing/index.d.ts → types/progress-bar-testing.d.ts} +0 -0
- /package/{radio/testing/index.d.ts → types/radio-testing.d.ts} +0 -0
- /package/{select/testing/index.d.ts → types/select-testing.d.ts} +0 -0
- /package/{sidenav/testing/index.d.ts → types/sidenav-testing.d.ts} +0 -0
- /package/{sidenav/index.d.ts → types/sidenav.d.ts} +0 -0
- /package/{slide-toggle/testing/index.d.ts → types/slide-toggle-testing.d.ts} +0 -0
- /package/{slider/testing/index.d.ts → types/slider-testing.d.ts} +0 -0
- /package/{snack-bar/testing/index.d.ts → types/snack-bar-testing.d.ts} +0 -0
- /package/{stepper/testing/index.d.ts → types/stepper-testing.d.ts} +0 -0
- /package/{table/testing/index.d.ts → types/table-testing.d.ts} +0 -0
- /package/{tabs/testing/index.d.ts → types/tabs-testing.d.ts} +0 -0
- /package/{toolbar/testing/index.d.ts → types/toolbar-testing.d.ts} +0 -0
- /package/{toolbar/index.d.ts → types/toolbar.d.ts} +0 -0
- /package/{tooltip/testing/index.d.ts → types/tooltip-testing.d.ts} +0 -0
- /package/{tooltip/index.d.ts → types/tooltip.d.ts} +0 -0
- /package/{tree/testing/index.d.ts → types/tree-testing.d.ts} +0 -0
- /package/{tree/index.d.ts → types/tree.d.ts} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"testing.mjs","sources":["../../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/material/core/testing/optgroup-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 {OptgroupHarnessFilters} from './optgroup-harness-filters';\nimport {MatOptionHarness} from './option-harness';\nimport {OptionHarnessFilters} from './option-harness-filters';\n\n/** Harness for interacting with a `mat-optgroup` in tests. */\nexport class MatOptgroupHarness extends ComponentHarness {\n /** Selector used to locate option group instances. */\n static hostSelector = '.mat-mdc-optgroup';\n private _label = this.locatorFor('.mat-mdc-optgroup-label');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a option group with specific\n * attributes.\n * @param options Options for filtering which option instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatOptgroupHarness>(\n this: ComponentHarnessConstructor<T>,\n options: OptgroupHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options).addOption(\n 'labelText',\n options.labelText,\n async (harness, title) => HarnessPredicate.stringMatches(await harness.getLabelText(), title),\n );\n }\n\n /** Gets the option group's label text. */\n async getLabelText(): Promise<string> {\n return (await this._label()).text();\n }\n\n /** Gets whether the option group is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await (await this.host()).getAttribute('aria-disabled')) === 'true';\n }\n\n /**\n * Gets the options that are inside the group.\n * @param filter Optionally filters which options are included.\n */\n async getOptions(filter: OptionHarnessFilters = {}): Promise<MatOptionHarness[]> {\n return this.locatorForAll(MatOptionHarness.with(filter))();\n }\n}\n"],"names":[],"mappings":";;;AAiBA;AACM,MAAO,kBAAmB,SAAQ,gBAAgB,CAAA;;AAEtD,IAAA,OAAO,YAAY,GAAG,mBAAmB;AACjC,IAAA,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,yBAAyB,CAAC;AAE3D;;;;;AAKG;AACH,IAAA,OAAO,IAAI,CAET,OAAA,GAAkC,EAAE,EAAA;AAEpC,QAAA,OAAO,IAAI,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,SAAS,CAClD,WAAW,EACX,OAAO,CAAC,SAAS,EACjB,OAAO,OAAO,EAAE,KAAK,KAAK,gBAAgB,CAAC,aAAa,CAAC,MAAM,OAAO,CAAC,YAAY,EAAE,EAAE,KAAK,CAAC,CAC9F;;;AAIH,IAAA,MAAM,YAAY,GAAA;QAChB,OAAO,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE;;;AAIrC,IAAA,MAAM,UAAU,GAAA;AACd,QAAA,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,YAAY,CAAC,eAAe,CAAC,MAAM,MAAM;;AAG7E;;;AAGG;AACH,IAAA,MAAM,UAAU,CAAC,MAAA,GAA+B,EAAE,EAAA;AAChD,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"date-formats.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/material/core/datetime/date-adapter.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/material/core/datetime/date-formats.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 {inject, InjectionToken, LOCALE_ID} from '@angular/core';\nimport {Observable, Subject} from 'rxjs';\n\n/** InjectionToken for datepicker that can be used to override default locale code. */\nexport const MAT_DATE_LOCALE = new InjectionToken<{}>('MAT_DATE_LOCALE', {\n providedIn: 'root',\n factory: () => inject(LOCALE_ID),\n});\n\nconst NOT_IMPLEMENTED = 'Method not implemented';\n\n/** Adapts type `D` to be usable as a date by cdk-based components that work with dates. */\nexport abstract class DateAdapter<D, L = any> {\n /** The locale to use for all dates. */\n protected locale: L;\n protected readonly _localeChanges = new Subject<void>();\n\n /** A stream that emits when the locale changes. */\n readonly localeChanges: Observable<void> = this._localeChanges;\n\n /**\n * Gets the year component of the given date.\n * @param date The date to extract the year from.\n * @returns The year component.\n */\n abstract getYear(date: D): number;\n\n /**\n * Gets the month component of the given date.\n * @param date The date to extract the month from.\n * @returns The month component (0-indexed, 0 = January).\n */\n abstract getMonth(date: D): number;\n\n /**\n * Gets the date of the month component of the given date.\n * @param date The date to extract the date of the month from.\n * @returns The month component (1-indexed, 1 = first of month).\n */\n abstract getDate(date: D): number;\n\n /**\n * Gets the day of the week component of the given date.\n * @param date The date to extract the day of the week from.\n * @returns The month component (0-indexed, 0 = Sunday).\n */\n abstract getDayOfWeek(date: D): number;\n\n /**\n * Gets a list of names for the months.\n * @param style The naming style (e.g. long = 'January', short = 'Jan', narrow = 'J').\n * @returns An ordered list of all month names, starting with January.\n */\n abstract getMonthNames(style: 'long' | 'short' | 'narrow'): string[];\n\n /**\n * Gets a list of names for the dates of the month.\n * @returns An ordered list of all date of the month names, starting with '1'.\n */\n abstract getDateNames(): string[];\n\n /**\n * Gets a list of names for the days of the week.\n * @param style The naming style (e.g. long = 'Sunday', short = 'Sun', narrow = 'S').\n * @returns An ordered list of all weekday names, starting with Sunday.\n */\n abstract getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[];\n\n /**\n * Gets the name for the year of the given date.\n * @param date The date to get the year name for.\n * @returns The name of the given year (e.g. '2017').\n */\n abstract getYearName(date: D): string;\n\n /**\n * Gets the first day of the week.\n * @returns The first day of the week (0-indexed, 0 = Sunday).\n */\n abstract getFirstDayOfWeek(): number;\n\n /**\n * Gets the number of days in the month of the given date.\n * @param date The date whose month should be checked.\n * @returns The number of days in the month of the given date.\n */\n abstract getNumDaysInMonth(date: D): number;\n\n /**\n * Clones the given date.\n * @param date The date to clone\n * @returns A new date equal to the given date.\n */\n abstract clone(date: D): D;\n\n /**\n * Creates a date with the given year, month, and date. Does not allow over/under-flow of the\n * month and date.\n * @param year The full year of the date. (e.g. 89 means the year 89, not the year 1989).\n * @param month The month of the date (0-indexed, 0 = January). Must be an integer 0 - 11.\n * @param date The date of month of the date. Must be an integer 1 - length of the given month.\n * @returns The new date, or null if invalid.\n */\n abstract createDate(year: number, month: number, date: number): D;\n\n /**\n * Gets today's date.\n * @returns Today's date.\n */\n abstract today(): D;\n\n /**\n * Parses a date from a user-provided value.\n * @param value The value to parse.\n * @param parseFormat The expected format of the value being parsed\n * (type is implementation-dependent).\n * @returns The parsed date.\n */\n abstract parse(value: any, parseFormat: any): D | null;\n\n /**\n * Formats a date as a string according to the given format.\n * @param date The value to format.\n * @param displayFormat The format to use to display the date as a string.\n * @returns The formatted date string.\n */\n abstract format(date: D, displayFormat: any): string;\n\n /**\n * Adds the given number of years to the date. Years are counted as if flipping 12 pages on the\n * calendar for each year and then finding the closest date in the new month. For example when\n * adding 1 year to Feb 29, 2016, the resulting date will be Feb 28, 2017.\n * @param date The date to add years to.\n * @param years The number of years to add (may be negative).\n * @returns A new date equal to the given one with the specified number of years added.\n */\n abstract addCalendarYears(date: D, years: number): D;\n\n /**\n * Adds the given number of months to the date. Months are counted as if flipping a page on the\n * calendar for each month and then finding the closest date in the new month. For example when\n * adding 1 month to Jan 31, 2017, the resulting date will be Feb 28, 2017.\n * @param date The date to add months to.\n * @param months The number of months to add (may be negative).\n * @returns A new date equal to the given one with the specified number of months added.\n */\n abstract addCalendarMonths(date: D, months: number): D;\n\n /**\n * Adds the given number of days to the date. Days are counted as if moving one cell on the\n * calendar for each day.\n * @param date The date to add days to.\n * @param days The number of days to add (may be negative).\n * @returns A new date equal to the given one with the specified number of days added.\n */\n abstract addCalendarDays(date: D, days: number): D;\n\n /**\n * Gets the RFC 3339 compatible string (https://tools.ietf.org/html/rfc3339) for the given date.\n * This method is used to generate date strings that are compatible with native HTML attributes\n * such as the `min` or `max` attribute of an `<input>`.\n * @param date The date to get the ISO date string for.\n * @returns The ISO date string date string.\n */\n abstract toIso8601(date: D): string;\n\n /**\n * Checks whether the given object is considered a date instance by this DateAdapter.\n * @param obj The object to check\n * @returns Whether the object is a date instance.\n */\n abstract isDateInstance(obj: any): boolean;\n\n /**\n * Checks whether the given date is valid.\n * @param date The date to check.\n * @returns Whether the date is valid.\n */\n abstract isValid(date: D): boolean;\n\n /**\n * Gets date instance that is not valid.\n * @returns An invalid date.\n */\n abstract invalid(): D;\n\n /**\n * Sets the time of one date to the time of another.\n * @param target Date whose time will be set.\n * @param hours New hours to set on the date object.\n * @param minutes New minutes to set on the date object.\n * @param seconds New seconds to set on the date object.\n */\n setTime(target: D, hours: number, minutes: number, seconds: number): D {\n throw new Error(NOT_IMPLEMENTED);\n }\n\n /**\n * Gets the hours component of the given date.\n * @param date The date to extract the hours from.\n */\n getHours(date: D): number {\n throw new Error(NOT_IMPLEMENTED);\n }\n\n /**\n * Gets the minutes component of the given date.\n * @param date The date to extract the minutes from.\n */\n getMinutes(date: D): number {\n throw new Error(NOT_IMPLEMENTED);\n }\n\n /**\n * Gets the seconds component of the given date.\n * @param date The date to extract the seconds from.\n */\n getSeconds(date: D): number {\n throw new Error(NOT_IMPLEMENTED);\n }\n\n /**\n * Parses a date with a specific time from a user-provided value.\n * @param value The value to parse.\n * @param parseFormat The expected format of the value being parsed\n * (type is implementation-dependent).\n */\n parseTime(value: any, parseFormat: any): D | null {\n throw new Error(NOT_IMPLEMENTED);\n }\n\n /**\n * Adds an amount of seconds to the specified date.\n * @param date Date to which to add the seconds.\n * @param amount Amount of seconds to add to the date.\n */\n addSeconds(date: D, amount: number): D {\n throw new Error(NOT_IMPLEMENTED);\n }\n\n /**\n * Given a potential date object, returns that same date object if it is\n * a valid date, or `null` if it's not a valid date.\n * @param obj The object to check.\n * @returns A date or `null`.\n */\n getValidDateOrNull(obj: unknown): D | null {\n return this.isDateInstance(obj) && this.isValid(obj as D) ? (obj as D) : null;\n }\n\n /**\n * Attempts to deserialize a value to a valid date object. This is different from parsing in that\n * deserialize should only accept non-ambiguous, locale-independent formats (e.g. a ISO 8601\n * string). The default implementation does not allow any deserialization, it simply checks that\n * the given value is already a valid date object or null. The `<mat-datepicker>` will call this\n * method on all of its `@Input()` properties that accept dates. It is therefore possible to\n * support passing values from your backend directly to these properties by overriding this method\n * to also deserialize the format used by your backend.\n * @param value The value to be deserialized into a date object.\n * @returns The deserialized date object, either a valid date, null if the value can be\n * deserialized into a null date (e.g. the empty string), or an invalid date.\n */\n deserialize(value: any): D | null {\n if (value == null || (this.isDateInstance(value) && this.isValid(value))) {\n return value;\n }\n return this.invalid();\n }\n\n /**\n * Sets the locale used for all dates.\n * @param locale The new locale.\n */\n setLocale(locale: L) {\n this.locale = locale;\n this._localeChanges.next();\n }\n\n /**\n * Compares two dates.\n * @param first The first date to compare.\n * @param second The second date to compare.\n * @returns 0 if the dates are equal, a number less than 0 if the first date is earlier,\n * a number greater than 0 if the first date is later.\n */\n compareDate(first: D, second: D): number {\n return (\n this.getYear(first) - this.getYear(second) ||\n this.getMonth(first) - this.getMonth(second) ||\n this.getDate(first) - this.getDate(second)\n );\n }\n\n /**\n * Compares the time values of two dates.\n * @param first First date to compare.\n * @param second Second date to compare.\n * @returns 0 if the times are equal, a number less than 0 if the first time is earlier,\n * a number greater than 0 if the first time is later.\n */\n compareTime(first: D, second: D): number {\n return (\n this.getHours(first) - this.getHours(second) ||\n this.getMinutes(first) - this.getMinutes(second) ||\n this.getSeconds(first) - this.getSeconds(second)\n );\n }\n\n /**\n * Checks if two dates are equal.\n * @param first The first date to check.\n * @param second The second date to check.\n * @returns Whether the two dates are equal.\n * Null dates are considered equal to other null dates.\n */\n sameDate(first: D | null, second: D | null): boolean {\n if (first && second) {\n let firstValid = this.isValid(first);\n let secondValid = this.isValid(second);\n if (firstValid && secondValid) {\n return !this.compareDate(first, second);\n }\n return firstValid == secondValid;\n }\n return first == second;\n }\n\n /**\n * Checks if the times of two dates are equal.\n * @param first The first date to check.\n * @param second The second date to check.\n * @returns Whether the times of the two dates are equal.\n * Null dates are considered equal to other null dates.\n */\n sameTime(first: D | null, second: D | null): boolean {\n if (first && second) {\n const firstValid = this.isValid(first);\n const secondValid = this.isValid(second);\n if (firstValid && secondValid) {\n return !this.compareTime(first, second);\n }\n return firstValid == secondValid;\n }\n return first == second;\n }\n\n /**\n * Clamp the given date between min and max dates.\n * @param date The date to clamp.\n * @param min The minimum value to allow. If null or omitted no min is enforced.\n * @param max The maximum value to allow. If null or omitted no max is enforced.\n * @returns `min` if `date` is less than `min`, `max` if date is greater than `max`,\n * otherwise `date`.\n */\n clampDate(date: D, min?: D | null, max?: D | null): D {\n if (min && this.compareDate(date, min) < 0) {\n return min;\n }\n if (max && this.compareDate(date, max) > 0) {\n return max;\n }\n return date;\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 {InjectionToken} from '@angular/core';\n\nexport type MatDateFormats = {\n parse: {\n dateInput: any;\n timeInput?: any;\n };\n display: {\n dateInput: any;\n monthLabel?: any;\n monthYearLabel: any;\n dateA11yLabel: any;\n monthYearA11yLabel: any;\n timeInput?: any;\n timeOptionLabel?: any;\n };\n};\n\nexport const MAT_DATE_FORMATS = new InjectionToken<MatDateFormats>('mat-date-formats');\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"date-range-input-harness.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/material/datepicker/testing/datepicker-input-harness-base.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/material/datepicker/testing/calendar-cell-harness.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/material/datepicker/testing/calendar-harness.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/material/datepicker/testing/datepicker-trigger-harness-base.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/material/datepicker/testing/datepicker-input-harness.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/material/datepicker/testing/date-range-input-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 {ComponentHarnessConstructor, HarnessPredicate} from '@angular/cdk/testing';\nimport {MatFormFieldControlHarnessBase} from '@angular/material/form-field/testing/control';\nimport {DatepickerInputHarnessFilters} from './datepicker-harness-filters';\n\n/** Sets up the filter predicates for a datepicker input harness. */\nexport function getInputPredicate<T extends MatDatepickerInputHarnessBase>(\n type: ComponentHarnessConstructor<T>,\n options: DatepickerInputHarnessFilters,\n): HarnessPredicate<T> {\n return new HarnessPredicate(type, 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 .addOption('label', options.label, (harness, label) => {\n return HarnessPredicate.stringMatches(harness.getLabel(), label);\n });\n}\n\n/** Base class for datepicker input harnesses. */\nexport abstract class MatDatepickerInputHarnessBase extends MatFormFieldControlHarnessBase {\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 await inputEl.dispatchEvent('change');\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 /** Gets the formatted minimum date for the input's value. */\n async getMin(): Promise<string | null> {\n return (await this.host()).getAttribute('min');\n }\n\n /** Gets the formatted maximum date for the input's value. */\n async getMax(): Promise<string | null> {\n return (await this.host()).getAttribute('max');\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 {HarnessPredicate, ComponentHarness} from '@angular/cdk/testing';\nimport {CalendarCellHarnessFilters} from './datepicker-harness-filters';\n\n/** Harness for interacting with a standard Material calendar cell in tests. */\nexport class MatCalendarCellHarness extends ComponentHarness {\n static hostSelector = '.mat-calendar-body-cell';\n\n /** Reference to the inner content element inside the cell. */\n private _content = this.locatorFor('.mat-calendar-body-cell-content');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatCalendarCellHarness`\n * that meets certain criteria.\n * @param options Options for filtering which cell instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: CalendarCellHarnessFilters = {}): HarnessPredicate<MatCalendarCellHarness> {\n return new HarnessPredicate(MatCalendarCellHarness, options)\n .addOption('text', options.text, (harness, text) => {\n return HarnessPredicate.stringMatches(harness.getText(), text);\n })\n .addOption('selected', options.selected, async (harness, selected) => {\n return (await harness.isSelected()) === selected;\n })\n .addOption('active', options.active, async (harness, active) => {\n return (await harness.isActive()) === active;\n })\n .addOption('disabled', options.disabled, async (harness, disabled) => {\n return (await harness.isDisabled()) === disabled;\n })\n .addOption('today', options.today, async (harness, today) => {\n return (await harness.isToday()) === today;\n })\n .addOption('inRange', options.inRange, async (harness, inRange) => {\n return (await harness.isInRange()) === inRange;\n })\n .addOption(\n 'inComparisonRange',\n options.inComparisonRange,\n async (harness, inComparisonRange) => {\n return (await harness.isInComparisonRange()) === inComparisonRange;\n },\n )\n .addOption('inPreviewRange', options.inPreviewRange, async (harness, inPreviewRange) => {\n return (await harness.isInPreviewRange()) === inPreviewRange;\n });\n }\n\n /** Gets the text of the calendar cell. */\n async getText(): Promise<string> {\n return (await this._content()).text();\n }\n\n /** Gets the aria-label of the calendar cell. */\n async getAriaLabel(): Promise<string> {\n // We're guaranteed for the `aria-label` to be defined\n // since this is a private element that we control.\n return (await this.host()).getAttribute('aria-label') as Promise<string>;\n }\n\n /** Whether the cell is selected. */\n async isSelected(): Promise<boolean> {\n const host = await this.host();\n return (await host.getAttribute('aria-pressed')) === 'true';\n }\n\n /** Whether the cell is disabled. */\n async isDisabled(): Promise<boolean> {\n return this._hasState('disabled');\n }\n\n /** Whether the cell is currently activated using keyboard navigation. */\n async isActive(): Promise<boolean> {\n return this._hasState('active');\n }\n\n /** Whether the cell represents today's date. */\n async isToday(): Promise<boolean> {\n return (await this._content()).hasClass('mat-calendar-body-today');\n }\n\n /** Selects the calendar cell. Won't do anything if the cell is disabled. */\n async select(): Promise<void> {\n return (await this.host()).click();\n }\n\n /** Hovers over the calendar cell. */\n async hover(): Promise<void> {\n return (await this.host()).hover();\n }\n\n /** Moves the mouse away from the calendar cell. */\n async mouseAway(): Promise<void> {\n return (await this.host()).mouseAway();\n }\n\n /** Focuses the calendar cell. */\n async focus(): Promise<void> {\n return (await this.host()).focus();\n }\n\n /** Removes focus from the calendar cell. */\n async blur(): Promise<void> {\n return (await this.host()).blur();\n }\n\n /** Whether the cell is the start of the main range. */\n async isRangeStart(): Promise<boolean> {\n return this._hasState('range-start');\n }\n\n /** Whether the cell is the end of the main range. */\n async isRangeEnd(): Promise<boolean> {\n return this._hasState('range-end');\n }\n\n /** Whether the cell is part of the main range. */\n async isInRange(): Promise<boolean> {\n return this._hasState('in-range');\n }\n\n /** Whether the cell is the start of the comparison range. */\n async isComparisonRangeStart(): Promise<boolean> {\n return this._hasState('comparison-start');\n }\n\n /** Whether the cell is the end of the comparison range. */\n async isComparisonRangeEnd(): Promise<boolean> {\n return this._hasState('comparison-end');\n }\n\n /** Whether the cell is inside of the comparison range. */\n async isInComparisonRange(): Promise<boolean> {\n return this._hasState('in-comparison-range');\n }\n\n /** Whether the cell is the start of the preview range. */\n async isPreviewRangeStart(): Promise<boolean> {\n return this._hasState('preview-start');\n }\n\n /** Whether the cell is the end of the preview range. */\n async isPreviewRangeEnd(): Promise<boolean> {\n return this._hasState('preview-end');\n }\n\n /** Whether the cell is inside of the preview range. */\n async isInPreviewRange(): Promise<boolean> {\n return this._hasState('in-preview');\n }\n\n /** Returns whether the cell has a particular CSS class-based state. */\n private async _hasState(name: string): Promise<boolean> {\n return (await this.host()).hasClass(`mat-calendar-body-${name}`);\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 {HarnessPredicate, ComponentHarness} from '@angular/cdk/testing';\nimport {CalendarHarnessFilters, CalendarCellHarnessFilters} from './datepicker-harness-filters';\nimport {MatCalendarCellHarness} from './calendar-cell-harness';\n\n/** Possible views of a `MatCalendarHarness`. */\nexport enum CalendarView {\n MONTH,\n YEAR,\n MULTI_YEAR,\n}\n\n/** Harness for interacting with a standard Material calendar in tests. */\nexport class MatCalendarHarness extends ComponentHarness {\n static hostSelector = '.mat-calendar';\n\n /** Queries for the calendar's period toggle button. */\n private _periodButton = this.locatorFor('.mat-calendar-period-button');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatCalendarHarness`\n * that meets certain criteria.\n * @param options Options for filtering which calendar instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: CalendarHarnessFilters = {}): HarnessPredicate<MatCalendarHarness> {\n return new HarnessPredicate(MatCalendarHarness, options);\n }\n\n /**\n * Gets a list of cells inside the calendar.\n * @param filter Optionally filters which cells are included.\n */\n async getCells(filter: CalendarCellHarnessFilters = {}): Promise<MatCalendarCellHarness[]> {\n return this.locatorForAll(MatCalendarCellHarness.with(filter))();\n }\n\n /** Gets the current view that is being shown inside the calendar. */\n async getCurrentView(): Promise<CalendarView> {\n if (await this.locatorForOptional('mat-multi-year-view')()) {\n return CalendarView.MULTI_YEAR;\n }\n\n if (await this.locatorForOptional('mat-year-view')()) {\n return CalendarView.YEAR;\n }\n\n return CalendarView.MONTH;\n }\n\n /** Gets the label of the current calendar view. */\n async getCurrentViewLabel(): Promise<string> {\n return (await this._periodButton()).text();\n }\n\n /** Changes the calendar view by clicking on the view toggle button. */\n async changeView(): Promise<void> {\n return (await this._periodButton()).click();\n }\n\n /** Goes to the next page of the current view (e.g. next month when inside the month view). */\n async next(): Promise<void> {\n return (await this.locatorFor('.mat-calendar-next-button')()).click();\n }\n\n /**\n * Goes to the previous page of the current view\n * (e.g. previous month when inside the month view).\n */\n async previous(): Promise<void> {\n return (await this.locatorFor('.mat-calendar-previous-button')()).click();\n }\n\n /**\n * Selects a cell in the current calendar view.\n * @param filter An optional filter to apply to the cells. The first cell matching the filter\n * will be selected.\n */\n async selectCell(filter: CalendarCellHarnessFilters = {}): Promise<void> {\n const cells = await this.getCells(filter);\n if (!cells.length) {\n throw Error(`Cannot find calendar cell matching filter ${JSON.stringify(filter)}`);\n }\n await cells[0].select();\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, LocatorFactory, parallel, TestElement} from '@angular/cdk/testing';\nimport {CalendarHarnessFilters} from './datepicker-harness-filters';\nimport {MatCalendarHarness} from './calendar-harness';\n\n/** Interface for a test harness that can open and close a calendar. */\nexport interface DatepickerTrigger {\n isCalendarOpen(): Promise<boolean>;\n openCalendar(): Promise<void>;\n closeCalendar(): Promise<void>;\n hasCalendar(): Promise<boolean>;\n getCalendar(filter?: CalendarHarnessFilters): Promise<MatCalendarHarness>;\n}\n\n/** Base class for harnesses that can trigger a calendar. */\nexport abstract class DatepickerTriggerHarnessBase\n extends ComponentHarness\n implements DatepickerTrigger\n{\n /** Whether the trigger is disabled. */\n abstract isDisabled(): Promise<boolean>;\n\n /** Whether the calendar associated with the trigger is open. */\n abstract isCalendarOpen(): Promise<boolean>;\n\n /** Opens the calendar associated with the trigger. */\n protected abstract _openCalendar(): Promise<void>;\n\n /** Opens the calendar if the trigger is enabled and it has a calendar. */\n async openCalendar(): Promise<void> {\n const [isDisabled, hasCalendar] = await parallel(() => [this.isDisabled(), this.hasCalendar()]);\n\n if (!isDisabled && hasCalendar) {\n return this._openCalendar();\n }\n }\n\n /** Closes the calendar if it is open. */\n async closeCalendar(): Promise<void> {\n if (await this.isCalendarOpen()) {\n await closeCalendar(getCalendarId(this.host()), this.documentRootLocatorFactory());\n // This is necessary so that we wait for the closing animation to finish in touch UI mode.\n await this.forceStabilize();\n }\n }\n\n /** Gets whether there is a calendar associated with the trigger. */\n async hasCalendar(): Promise<boolean> {\n return (await getCalendarId(this.host())) != null;\n }\n\n /**\n * Gets the `MatCalendarHarness` that is associated with the trigger.\n * @param filter Optionally filters which calendar is included.\n */\n async getCalendar(filter: CalendarHarnessFilters = {}): Promise<MatCalendarHarness> {\n return getCalendar(filter, this.host(), this.documentRootLocatorFactory());\n }\n}\n\n/** Gets the ID of the calendar that a particular test element can trigger. */\nexport async function getCalendarId(host: Promise<TestElement>): Promise<string | null> {\n return (await host).getAttribute('data-mat-calendar');\n}\n\n/** Closes the calendar with a specific ID. */\nexport async function closeCalendar(\n calendarId: Promise<string | null>,\n documentLocator: LocatorFactory,\n) {\n // We close the calendar by clicking on the backdrop, even though all datepicker variants\n // have the ability to close by pressing escape. The backdrop is preferrable, because the\n // escape key has multiple functions inside a range picker (either cancel the current range\n // or close the calendar). Since we don't have access to set the ID on the backdrop in all\n // cases, we set a unique class instead which is the same as the calendar's ID and suffixed\n // with `-backdrop`.\n const backdropSelector = `.${await calendarId}-backdrop`;\n return (await documentLocator.locatorFor(backdropSelector)()).click();\n}\n\n/** Gets the test harness for a calendar associated with a particular host. */\nexport async function getCalendar(\n filter: CalendarHarnessFilters,\n host: Promise<TestElement>,\n documentLocator: LocatorFactory,\n): Promise<MatCalendarHarness> {\n const calendarId = await getCalendarId(host);\n\n if (!calendarId) {\n throw Error(`Element is not associated with a calendar`);\n }\n\n return documentLocator.locatorFor(\n MatCalendarHarness.with({\n ...filter,\n selector: `#${calendarId}`,\n }),\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 {HarnessPredicate, parallel, TestKey} from '@angular/cdk/testing';\nimport {DatepickerInputHarnessFilters, CalendarHarnessFilters} from './datepicker-harness-filters';\nimport {MatDatepickerInputHarnessBase, getInputPredicate} from './datepicker-input-harness-base';\nimport {MatCalendarHarness} from './calendar-harness';\nimport {\n DatepickerTrigger,\n closeCalendar,\n getCalendarId,\n getCalendar,\n} from './datepicker-trigger-harness-base';\n\n/** Harness for interacting with a standard Material datepicker inputs in tests. */\nexport class MatDatepickerInputHarness\n extends MatDatepickerInputHarnessBase\n implements DatepickerTrigger\n{\n static hostSelector = '.mat-datepicker-input';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatDatepickerInputHarness`\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(\n options: DatepickerInputHarnessFilters = {},\n ): HarnessPredicate<MatDatepickerInputHarness> {\n return getInputPredicate(MatDatepickerInputHarness, options);\n }\n\n /** Gets whether the calendar associated with the input is open. */\n async isCalendarOpen(): Promise<boolean> {\n // `aria-owns` is set only if there's an open datepicker so we can use it as an indicator.\n const host = await this.host();\n return (await host.getAttribute('aria-owns')) != null;\n }\n\n /** Opens the calendar associated with the input. */\n async openCalendar(): Promise<void> {\n const [isDisabled, hasCalendar] = await parallel(() => [this.isDisabled(), this.hasCalendar()]);\n\n if (!isDisabled && hasCalendar) {\n // Alt + down arrow is the combination for opening the calendar with the keyboard.\n const host = await this.host();\n return host.sendKeys({alt: true}, TestKey.DOWN_ARROW);\n }\n }\n\n /** Closes the calendar associated with the input. */\n async closeCalendar(): Promise<void> {\n if (await this.isCalendarOpen()) {\n await closeCalendar(getCalendarId(this.host()), this.documentRootLocatorFactory());\n // This is necessary so that we wait for the closing animation to finish in touch UI mode.\n await this.forceStabilize();\n }\n }\n\n /** Whether a calendar is associated with the input. */\n async hasCalendar(): Promise<boolean> {\n return (await getCalendarId(this.host())) != null;\n }\n\n /**\n * Gets the `MatCalendarHarness` that is associated with the trigger.\n * @param filter Optionally filters which calendar is included.\n */\n async getCalendar(filter: CalendarHarnessFilters = {}): Promise<MatCalendarHarness> {\n return getCalendar(filter, this.host(), this.documentRootLocatorFactory());\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 {HarnessPredicate, parallel, TestKey} from '@angular/cdk/testing';\nimport {MatDatepickerInputHarnessBase, getInputPredicate} from './datepicker-input-harness-base';\nimport {DatepickerTriggerHarnessBase} from './datepicker-trigger-harness-base';\nimport {\n DatepickerInputHarnessFilters,\n DateRangeInputHarnessFilters,\n} from './datepicker-harness-filters';\n\n/** Harness for interacting with a standard Material date range start input in tests. */\nexport class MatStartDateHarness extends MatDatepickerInputHarnessBase {\n static hostSelector = '.mat-start-date';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatStartDateHarness`\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(options: DatepickerInputHarnessFilters = {}): HarnessPredicate<MatStartDateHarness> {\n return getInputPredicate(MatStartDateHarness, options);\n }\n}\n\n/** Harness for interacting with a standard Material date range end input in tests. */\nexport class MatEndDateHarness extends MatDatepickerInputHarnessBase {\n static hostSelector = '.mat-end-date';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatEndDateHarness`\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(options: DatepickerInputHarnessFilters = {}): HarnessPredicate<MatEndDateHarness> {\n return getInputPredicate(MatEndDateHarness, options);\n }\n}\n\n/** Harness for interacting with a standard Material date range input in tests. */\nexport class MatDateRangeInputHarness extends DatepickerTriggerHarnessBase {\n static hostSelector = '.mat-date-range-input';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatDateRangeInputHarness`\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(\n options: DateRangeInputHarnessFilters = {},\n ): HarnessPredicate<MatDateRangeInputHarness> {\n return new HarnessPredicate(MatDateRangeInputHarness, options)\n .addOption('value', options.value, (harness, value) =>\n HarnessPredicate.stringMatches(harness.getValue(), value),\n )\n .addOption('label', options.label, (harness, label) => {\n return HarnessPredicate.stringMatches(harness.getLabel(), label);\n });\n }\n\n /** Gets the combined value of the start and end inputs, including the separator. */\n async getValue(): Promise<string> {\n const [start, end, separator] = await parallel(() => [\n this.getStartInput().then(input => input.getValue()),\n this.getEndInput().then(input => input.getValue()),\n this.getSeparator(),\n ]);\n\n return start + `${end ? ` ${separator} ${end}` : ''}`;\n }\n\n /** Gets the inner start date input inside the range input. */\n async getStartInput(): Promise<MatStartDateHarness> {\n // Don't pass in filters here since the start input is required and there can only be one.\n return this.locatorFor(MatStartDateHarness)();\n }\n\n /** Gets the inner start date input inside the range input. */\n async getEndInput(): Promise<MatEndDateHarness> {\n // Don't pass in filters here since the end input is required and there can only be one.\n return this.locatorFor(MatEndDateHarness)();\n }\n\n /**\n * Gets the label for the range input, if it exists. This might be provided by a label element or\n * by the `aria-label` attribute.\n */\n async getLabel(): Promise<string | null> {\n // Directly copied from MatFormFieldControlHarnessBase. This class already has a parent so it\n // cannot extend MatFormFieldControlHarnessBase for the functionality.\n const documentRootLocator = this.documentRootLocatorFactory();\n const labelId = await (await this.host()).getAttribute('aria-labelledby');\n const labelText = await (await this.host()).getAttribute('aria-label');\n const hostId = await (await this.host()).getAttribute('id');\n\n if (labelId) {\n // First, try to find the label by following [aria-labelledby]\n const labelEl = await documentRootLocator.locatorForOptional(`[id=\"${labelId}\"]`)();\n return labelEl ? labelEl.text() : null;\n } else if (labelText) {\n // If that doesn't work, return [aria-label] if it exists\n return labelText;\n } else if (hostId) {\n // Finally, search the DOM for a label that points to the host element\n const labelEl = await documentRootLocator.locatorForOptional(`[for=\"${hostId}\"]`)();\n return labelEl ? labelEl.text() : null;\n }\n return null;\n }\n\n /** Gets the separator text between the values of the two inputs. */\n async getSeparator(): Promise<string> {\n return (await this.locatorFor('.mat-date-range-input-separator')()).text();\n }\n\n /** Gets whether the range input is disabled. */\n async isDisabled(): Promise<boolean> {\n // We consider the input as disabled if both of the sub-inputs are disabled.\n const [startDisabled, endDisabled] = await parallel(() => [\n this.getStartInput().then(input => input.isDisabled()),\n this.getEndInput().then(input => input.isDisabled()),\n ]);\n\n return startDisabled && endDisabled;\n }\n\n /** Gets whether the range input is required. */\n async isRequired(): Promise<boolean> {\n return (await this.host()).hasClass('mat-date-range-input-required');\n }\n\n /** Opens the calendar associated with the input. */\n async isCalendarOpen(): Promise<boolean> {\n // `aria-owns` is set on both inputs only if there's an\n // open range picker so we can use it as an indicator.\n const startHost = await (await this.getStartInput()).host();\n return (await startHost.getAttribute('aria-owns')) != null;\n }\n\n protected async _openCalendar(): Promise<void> {\n // Alt + down arrow is the combination for opening the calendar with the keyboard.\n const startHost = await (await this.getStartInput()).host();\n return startHost.sendKeys({alt: true}, TestKey.DOWN_ARROW);\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"testing.mjs","sources":["../../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/material/datepicker/testing/datepicker-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 {HarnessPredicate} from '@angular/cdk/testing';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {DatepickerToggleHarnessFilters} from './datepicker-harness-filters';\nimport {DatepickerTriggerHarnessBase} from './datepicker-trigger-harness-base';\n\n/** Harness for interacting with a standard Material datepicker toggle in tests. */\nexport class MatDatepickerToggleHarness extends DatepickerTriggerHarnessBase {\n static hostSelector = '.mat-datepicker-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 `MatDatepickerToggleHarness` that\n * meets certain criteria.\n * @param options Options for filtering which datepicker toggle instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(\n options: DatepickerToggleHarnessFilters = {},\n ): HarnessPredicate<MatDatepickerToggleHarness> {\n return new HarnessPredicate(MatDatepickerToggleHarness, options);\n }\n\n /** Gets whether the calendar associated with the toggle is open. */\n async isCalendarOpen(): Promise<boolean> {\n return (await this.host()).hasClass('mat-datepicker-toggle-active');\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 protected async _openCalendar(): Promise<void> {\n return (await this._button()).click();\n }\n}\n"],"names":[],"mappings":";;;;;;AAaA;AACM,MAAO,0BAA2B,SAAQ,4BAA4B,CAAA;AAC1E,IAAA,OAAO,YAAY,GAAG,wBAAwB;;AAGtC,IAAA,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;AAE3C;;;;;AAKG;AACH,IAAA,OAAO,IAAI,CACT,OAAA,GAA0C,EAAE,EAAA;AAE5C,QAAA,OAAO,IAAI,gBAAgB,CAAC,0BAA0B,EAAE,OAAO,CAAC;;;AAIlE,IAAA,MAAM,cAAc,GAAA;AAClB,QAAA,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC,8BAA8B,CAAC;;;AAIrE,IAAA,MAAM,UAAU,GAAA;AACd,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE;QACnC,OAAO,qBAAqB,CAAC,MAAM,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;;AAG3D,IAAA,MAAM,aAAa,GAAA;QAC3B,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"testing.mjs","sources":["../../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/material/dialog/testing/dialog-harness.ts","../../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/material/dialog/testing/dialog-opener.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 ComponentHarnessConstructor,\n ContentContainerComponentHarness,\n HarnessPredicate,\n TestKey,\n} from '@angular/cdk/testing';\nimport {DialogHarnessFilters} from './dialog-harness-filters';\nimport {DialogRole} from '../../dialog';\n\n/** Selectors for different sections of the mat-dialog that can contain user content. */\nexport enum MatDialogSection {\n TITLE = '.mat-mdc-dialog-title',\n CONTENT = '.mat-mdc-dialog-content',\n ACTIONS = '.mat-mdc-dialog-actions',\n}\n\n/** Harness for interacting with a standard `MatDialog` in tests. */\nexport class MatDialogHarness\n // @breaking-change 14.0.0 change generic type to MatDialogSection.\n extends ContentContainerComponentHarness<MatDialogSection | string>\n{\n /** The selector for the host element of a `MatDialog` instance. */\n static hostSelector = '.mat-mdc-dialog-container';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a dialog with specific attributes.\n * @param options Options for filtering which dialog instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatDialogHarness>(\n this: ComponentHarnessConstructor<T>,\n options: DialogHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n protected _title = this.locatorForOptional(MatDialogSection.TITLE);\n protected _content = this.locatorForOptional(MatDialogSection.CONTENT);\n protected _actions = this.locatorForOptional(MatDialogSection.ACTIONS);\n\n /** Gets the id of the dialog. */\n async getId(): Promise<string | null> {\n const id = await (await this.host()).getAttribute('id');\n // In case no id has been specified, the \"id\" property always returns\n // an empty string. To make this method more explicit, we return null.\n return id !== '' ? id : null;\n }\n\n /** Gets the role of the dialog. */\n async getRole(): Promise<DialogRole | null> {\n return (await this.host()).getAttribute('role') as Promise<DialogRole | null>;\n }\n\n /** Gets the value of the dialog's \"aria-label\" attribute. */\n async getAriaLabel(): Promise<string | null> {\n return (await this.host()).getAttribute('aria-label');\n }\n\n /** Gets the value of the dialog's \"aria-labelledby\" attribute. */\n async getAriaLabelledby(): Promise<string | null> {\n return (await this.host()).getAttribute('aria-labelledby');\n }\n\n /** Gets the value of the dialog's \"aria-describedby\" attribute. */\n async getAriaDescribedby(): Promise<string | null> {\n return (await this.host()).getAttribute('aria-describedby');\n }\n\n /**\n * Closes the dialog by pressing escape.\n *\n * Note: this method does nothing if `disableClose` has been set to `true` for the dialog.\n */\n async close(): Promise<void> {\n await (await this.host()).sendKeys(TestKey.ESCAPE);\n }\n\n /** Gets the dialog's text. */\n async getText() {\n return (await this.host()).text();\n }\n\n /** Gets the dialog's title text. This only works if the dialog is using mat-dialog-title. */\n async getTitleText() {\n return (await this._title())?.text() ?? '';\n }\n\n /** Gets the dialog's content text. This only works if the dialog is using mat-dialog-content. */\n async getContentText() {\n return (await this._content())?.text() ?? '';\n }\n\n /** Gets the dialog's actions text. This only works if the dialog is using mat-dialog-actions. */\n async getActionsText() {\n return (await this._actions())?.text() ?? '';\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 {ComponentType} from '@angular/cdk/overlay';\nimport {\n ChangeDetectionStrategy,\n Component,\n NgModule,\n NgZone,\n OnDestroy,\n ViewEncapsulation,\n inject,\n} from '@angular/core';\nimport {MatDialog, MatDialogConfig, MatDialogModule, MatDialogRef} from '../../dialog';\nimport {Subscription} from 'rxjs';\nimport {AnimationsConfig, MATERIAL_ANIMATIONS} from '@angular/material/core';\n\n/** Test component that immediately opens a dialog when bootstrapped. */\n@Component({\n selector: 'mat-test-dialog-opener',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatTestDialogOpener<T = unknown, R = unknown> implements OnDestroy {\n dialog = inject(MatDialog);\n\n /** Component that should be opened with the MatDialog `open` method. */\n protected static component: ComponentType<unknown> | undefined;\n\n /** Config that should be provided to the MatDialog `open` method. */\n protected static config: MatDialogConfig | undefined;\n\n /** MatDialogRef returned from the MatDialog `open` method. */\n dialogRef: MatDialogRef<T, R>;\n\n /** Data passed to the `MatDialog` close method. */\n closedResult: R | undefined;\n\n private readonly _afterClosedSubscription: Subscription;\n\n private readonly _ngZone = inject(NgZone);\n\n /** Static method that prepares this class to open the provided component. */\n static withComponent<T = unknown, R = unknown>(\n component: ComponentType<T>,\n config?: MatDialogConfig,\n ) {\n MatTestDialogOpener.component = component;\n MatTestDialogOpener.config = config;\n return MatTestDialogOpener as ComponentType<MatTestDialogOpener<T, R>>;\n }\n\n constructor(...args: unknown[]);\n\n constructor() {\n if (!MatTestDialogOpener.component) {\n throw new Error(`MatTestDialogOpener does not have a component provided.`);\n }\n\n this.dialogRef = this._ngZone.run(() => {\n const config = {...(MatTestDialogOpener.config || {})};\n config.enterAnimationDuration = 0;\n config.exitAnimationDuration = 0;\n return this.dialog.open<T, R>(MatTestDialogOpener.component as ComponentType<T>, config);\n });\n this._afterClosedSubscription = this.dialogRef.afterClosed().subscribe(result => {\n this.closedResult = result;\n });\n }\n\n ngOnDestroy() {\n this._afterClosedSubscription.unsubscribe();\n MatTestDialogOpener.component = undefined;\n MatTestDialogOpener.config = undefined;\n }\n}\n\n@NgModule({\n imports: [MatDialogModule, MatTestDialogOpener],\n providers: [\n {\n provide: MATERIAL_ANIMATIONS,\n useValue: {\n animationsDisabled: true,\n } as AnimationsConfig,\n },\n ],\n})\nexport class MatTestDialogOpenerModule {}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"testing.mjs","sources":["../../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/material/divider/testing/divider-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 {ComponentHarness, HarnessPredicate} from '@angular/cdk/testing';\nimport {DividerHarnessFilters} from './divider-harness-filters';\n\n/** Harness for interacting with a `mat-divider`. */\nexport class MatDividerHarness extends ComponentHarness {\n static hostSelector = '.mat-divider';\n\n static with(options: DividerHarnessFilters = {}) {\n return new HarnessPredicate(MatDividerHarness, options);\n }\n\n async getOrientation(): Promise<'horizontal' | 'vertical'> {\n return (await this.host()).getAttribute('aria-orientation') as Promise<\n 'horizontal' | 'vertical'\n >;\n }\n\n async isInset(): Promise<boolean> {\n return (await this.host()).hasClass('mat-divider-inset');\n }\n}\n"],"names":[],"mappings":";;AAWA;AACM,MAAO,iBAAkB,SAAQ,gBAAgB,CAAA;AACrD,IAAA,OAAO,YAAY,GAAG,cAAc;AAEpC,IAAA,OAAO,IAAI,CAAC,OAAA,GAAiC,EAAE,EAAA;AAC7C,QAAA,OAAO,IAAI,gBAAgB,CAAC,iBAAiB,EAAE,OAAO,CAAC;;AAGzD,IAAA,MAAM,cAAc,GAAA;AAClB,QAAA,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,YAAY,CAAC,kBAAkB,CAEzD;;AAGH,IAAA,MAAM,OAAO,GAAA;AACX,QAAA,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC,mBAAmB,CAAC;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"error-options.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/material/core/error/error-options.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 {Injectable} from '@angular/core';\nimport {FormGroupDirective, NgForm, AbstractControl} from '@angular/forms';\n\n/** Error state matcher that matches when a control is invalid and dirty. */\n@Injectable()\nexport class ShowOnDirtyErrorStateMatcher implements ErrorStateMatcher {\n isErrorState(control: AbstractControl | null, form: FormGroupDirective | NgForm | null): boolean {\n return !!(control && control.invalid && (control.dirty || (form && form.submitted)));\n }\n}\n\n/** Provider that defines how form controls behave with regards to displaying error messages. */\n@Injectable({providedIn: 'root'})\nexport class ErrorStateMatcher {\n isErrorState(control: AbstractControl | null, form: FormGroupDirective | NgForm | null): boolean {\n return !!(control && control.invalid && (control.touched || (form && form.submitted)));\n }\n}\n"],"names":[],"mappings":";;;AAWA;MAEa,4BAA4B,CAAA;IACvC,YAAY,CAAC,OAA+B,EAAE,IAAwC,EAAA;QACpF,OAAO,CAAC,EAAE,OAAO,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;;8GAF3E,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;kHAA5B,4BAA4B,EAAA,CAAA;;kGAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBADxC;;AAOD;MAEa,iBAAiB,CAAA;IAC5B,YAAY,CAAC,OAA+B,EAAE,IAAwC,EAAA;QACpF,OAAO,CAAC,EAAE,OAAO,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;;8GAF7E,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,eAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cADL,MAAM,EAAA,CAAA;;kGAClB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,UAAU;mBAAC,EAAC,UAAU,EAAE,MAAM,EAAC;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"error-state.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/material/core/common-behaviors/error-state.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 {AbstractControl, FormGroupDirective, NgControl, NgForm} from '@angular/forms';\nimport {Subject} from 'rxjs';\nimport {ErrorStateMatcher as _ErrorStateMatcher} from '../error/error-options';\n\n// Declare ErrorStateMatcher as an interface to have compatibility with Closure Compiler.\ninterface ErrorStateMatcher extends _ErrorStateMatcher {}\n\n/**\n * Class that tracks the error state of a component.\n * @docs-private\n */\nexport class _ErrorStateTracker {\n /** Whether the tracker is currently in an error state. */\n errorState = false;\n\n /** User-defined matcher for the error state. */\n matcher: ErrorStateMatcher;\n\n constructor(\n private _defaultMatcher: ErrorStateMatcher | null,\n public ngControl: NgControl | null,\n private _parentFormGroup: FormGroupDirective | null,\n private _parentForm: NgForm | null,\n private _stateChanges: Subject<void>,\n ) {}\n\n /** Updates the error state based on the provided error state matcher. */\n updateErrorState() {\n const oldState = this.errorState;\n const parent = this._parentFormGroup || this._parentForm;\n const matcher = this.matcher || this._defaultMatcher;\n const control = this.ngControl ? (this.ngControl.control as AbstractControl) : null;\n const newState = matcher?.isErrorState(control, parent) ?? false;\n\n if (newState !== oldState) {\n this.errorState = newState;\n this._stateChanges.next();\n }\n }\n}\n"],"names":[],"mappings":"AAeA;;;AAGG;MACU,kBAAkB,CAAA;AAQnB,IAAA,eAAA;AACD,IAAA,SAAA;AACC,IAAA,gBAAA;AACA,IAAA,WAAA;AACA,IAAA,aAAA;;IAVV,UAAU,GAAG,KAAK;;AAGlB,IAAA,OAAO;IAEP,WACU,CAAA,eAAyC,EAC1C,SAA2B,EAC1B,gBAA2C,EAC3C,WAA0B,EAC1B,aAA4B,EAAA;QAJ5B,IAAe,CAAA,eAAA,GAAf,eAAe;QAChB,IAAS,CAAA,SAAA,GAAT,SAAS;QACR,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB;QAChB,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAa,CAAA,aAAA,GAAb,aAAa;;;IAIvB,gBAAgB,GAAA;AACd,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,WAAW;QACxD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,eAAe;AACpD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,GAAI,IAAI,CAAC,SAAS,CAAC,OAA2B,GAAG,IAAI;AACnF,QAAA,MAAM,QAAQ,GAAG,OAAO,EAAE,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,KAAK;AAEhE,QAAA,IAAI,QAAQ,KAAK,QAAQ,EAAE;AACzB,YAAA,IAAI,CAAC,UAAU,GAAG,QAAQ;AAC1B,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;;;AAG9B;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"testing.mjs","sources":["../../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/material/expansion/testing/expansion-harness.ts","../../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/material/expansion/testing/accordion-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 ContentContainerComponentHarness,\n HarnessLoader,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {ExpansionPanelHarnessFilters} from './expansion-harness-filters';\n\n/** Selectors for the various `mat-expansion-panel` sections that may contain user content. */\nexport enum MatExpansionPanelSection {\n HEADER = '.mat-expansion-panel-header',\n TITLE = '.mat-expansion-panel-header-title',\n DESCRIPTION = '.mat-expansion-panel-header-description',\n CONTENT = '.mat-expansion-panel-content',\n}\n\n/** Harness for interacting with a standard mat-expansion-panel in tests. */\nexport class MatExpansionPanelHarness extends ContentContainerComponentHarness<MatExpansionPanelSection> {\n static hostSelector = '.mat-expansion-panel';\n\n private _header = this.locatorFor(MatExpansionPanelSection.HEADER);\n private _title = this.locatorForOptional(MatExpansionPanelSection.TITLE);\n private _description = this.locatorForOptional(MatExpansionPanelSection.DESCRIPTION);\n private _expansionIndicator = this.locatorForOptional('.mat-expansion-indicator');\n private _content = this.locatorFor(MatExpansionPanelSection.CONTENT);\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for an expansion-panel\n * with specific attributes.\n * @param options Options for narrowing the search:\n * - `title` finds an expansion-panel with a specific title text.\n * - `description` finds an expansion-panel with a specific description text.\n * - `expanded` finds an expansion-panel that is currently expanded.\n * - `disabled` finds an expansion-panel that is disabled.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(\n options: ExpansionPanelHarnessFilters = {},\n ): HarnessPredicate<MatExpansionPanelHarness> {\n return new HarnessPredicate(MatExpansionPanelHarness, options)\n .addOption('title', options.title, (harness, title) =>\n HarnessPredicate.stringMatches(harness.getTitle(), title),\n )\n .addOption('description', options.description, (harness, description) =>\n HarnessPredicate.stringMatches(harness.getDescription(), description),\n )\n .addOption('content', options.content, (harness, content) =>\n HarnessPredicate.stringMatches(harness.getTextContent(), content),\n )\n .addOption(\n 'expanded',\n options.expanded,\n async (harness, expanded) => (await harness.isExpanded()) === expanded,\n )\n .addOption(\n 'disabled',\n options.disabled,\n async (harness, disabled) => (await harness.isDisabled()) === disabled,\n );\n }\n\n /** Whether the panel is expanded. */\n async isExpanded(): Promise<boolean> {\n return (await this.host()).hasClass('mat-expanded');\n }\n\n /**\n * Gets the title text of the panel.\n * @returns Title text or `null` if no title is set up.\n */\n async getTitle(): Promise<string | null> {\n const titleEl = await this._title();\n return titleEl ? titleEl.text() : null;\n }\n\n /**\n * Gets the description text of the panel.\n * @returns Description text or `null` if no description is set up.\n */\n async getDescription(): Promise<string | null> {\n const descriptionEl = await this._description();\n return descriptionEl ? descriptionEl.text() : null;\n }\n\n /** Whether the panel is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await (await this._header()).getAttribute('aria-disabled')) === 'true';\n }\n\n /**\n * Toggles the expanded state of the panel by clicking on the panel\n * header. This method will not work if the panel is disabled.\n */\n async toggle(): Promise<void> {\n await (await this._header()).click();\n }\n\n /** Expands the expansion panel if collapsed. */\n async expand(): Promise<void> {\n if (!(await this.isExpanded())) {\n await this.toggle();\n }\n }\n\n /** Collapses the expansion panel if expanded. */\n async collapse(): Promise<void> {\n if (await this.isExpanded()) {\n await this.toggle();\n }\n }\n\n /** Gets the text content of the panel. */\n async getTextContent(): Promise<string> {\n return (await this._content()).text();\n }\n\n /**\n * Gets a `HarnessLoader` that can be used to load harnesses for\n * components within the panel's content area.\n * @deprecated Use either `getChildLoader(MatExpansionPanelSection.CONTENT)`, `getHarness` or\n * `getAllHarnesses` instead.\n * @breaking-change 12.0.0\n */\n async getHarnessLoaderForContent(): Promise<HarnessLoader> {\n return this.getChildLoader(MatExpansionPanelSection.CONTENT);\n }\n\n /** Focuses the panel. */\n async focus(): Promise<void> {\n return (await this._header()).focus();\n }\n\n /** Blurs the panel. */\n async blur(): Promise<void> {\n return (await this._header()).blur();\n }\n\n /** Whether the panel is focused. */\n async isFocused(): Promise<boolean> {\n return (await this._header()).isFocused();\n }\n\n /** Whether the panel has a toggle indicator displayed. */\n async hasToggleIndicator(): Promise<boolean> {\n return (await this._expansionIndicator()) !== null;\n }\n\n /** Gets the position of the toggle indicator. */\n async getToggleIndicatorPosition(): Promise<'before' | 'after'> {\n // By default the expansion indicator will show \"after\" the panel header content.\n if (await (await this._header()).hasClass('mat-expansion-toggle-indicator-before')) {\n return 'before';\n }\n return 'after';\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 {MatExpansionPanelHarness} from './expansion-harness';\nimport {AccordionHarnessFilters, ExpansionPanelHarnessFilters} from './expansion-harness-filters';\n\n/** Harness for interacting with a standard mat-accordion in tests. */\nexport class MatAccordionHarness extends ComponentHarness {\n static hostSelector = '.mat-accordion';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for an accordion\n * with specific attributes.\n * @param options Options for narrowing the search.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: AccordionHarnessFilters = {}): HarnessPredicate<MatAccordionHarness> {\n return new HarnessPredicate(MatAccordionHarness, options);\n }\n\n /** Gets all expansion panels which are part of the accordion. */\n async getExpansionPanels(\n filter: ExpansionPanelHarnessFilters = {},\n ): Promise<MatExpansionPanelHarness[]> {\n return this.locatorForAll(MatExpansionPanelHarness.with(filter))();\n }\n\n /** Whether the accordion allows multiple expanded panels simultaneously. */\n async isMulti(): Promise<boolean> {\n return (await this.host()).hasClass('mat-accordion-multi');\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"control.mjs","sources":["../../../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/material/form-field/testing/control/form-field-control-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 {ComponentHarness} from '@angular/cdk/testing';\n\n/**\n * Base class for custom form-field control harnesses. Harnesses for\n * custom controls with form-fields need to implement this interface.\n */\nexport abstract class MatFormFieldControlHarness extends ComponentHarness {}\n\n/**\n * Shared behavior for `MatFormFieldControlHarness` implementations\n */\nexport abstract class MatFormFieldControlHarnessBase extends MatFormFieldControlHarness {\n /**\n * Gets the label for the control, if it exists. This might be provided by a label element or by\n * the `aria-label` attribute.\n */\n async getLabel(): Promise<string | null> {\n const documentRootLocator = this.documentRootLocatorFactory();\n const labelId = await (await this.host()).getAttribute('aria-labelledby');\n const labelText = await (await this.host()).getAttribute('aria-label');\n const hostId = await (await this.host()).getAttribute('id');\n\n if (labelId) {\n // First, try to find the label by following [aria-labelledby]\n const labelEl = await documentRootLocator.locatorForOptional(`[id=\"${labelId}\"]`)();\n return labelEl ? labelEl.text() : null;\n } else if (labelText) {\n // If that doesn't work, return [aria-label] if it exists\n return labelText;\n } else if (hostId) {\n // Finally, search the DOM for a label that points to the host element\n const labelEl = await documentRootLocator.locatorForOptional(`[for=\"${hostId}\"]`)();\n return labelEl ? labelEl.text() : null;\n }\n return null;\n }\n}\n"],"names":[],"mappings":";;AAUA;;;AAGG;AACG,MAAgB,0BAA2B,SAAQ,gBAAgB,CAAA;AAAG;AAE5E;;AAEG;AACG,MAAgB,8BAA+B,SAAQ,0BAA0B,CAAA;AACrF;;;AAGG;AACH,IAAA,MAAM,QAAQ,GAAA;AACZ,QAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,0BAA0B,EAAE;AAC7D,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,YAAY,CAAC,iBAAiB,CAAC;AACzE,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,YAAY,CAAC,YAAY,CAAC;AACtE,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC;QAE3D,IAAI,OAAO,EAAE;;AAEX,YAAA,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,kBAAkB,CAAC,CAAA,KAAA,EAAQ,OAAO,CAAA,EAAA,CAAI,CAAC,EAAE;AACnF,YAAA,OAAO,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG,IAAI;;aACjC,IAAI,SAAS,EAAE;;AAEpB,YAAA,OAAO,SAAS;;aACX,IAAI,MAAM,EAAE;;AAEjB,YAAA,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,kBAAkB,CAAC,CAAA,MAAA,EAAS,MAAM,CAAA,EAAA,CAAI,CAAC,EAAE;AACnF,YAAA,OAAO,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG,IAAI;;AAExC,QAAA,OAAO,IAAI;;AAEd;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"testing.mjs","sources":["../../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/material/form-field/testing/error-harness.ts","../../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/material/form-field/testing/form-field-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 BaseHarnessFilters,\n ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n} from '@angular/cdk/testing';\n\n/** A set of criteria that can be used to filter a list of error harness instances. */\nexport interface ErrorHarnessFilters extends BaseHarnessFilters {\n /** Only find instances whose text matches the given value. */\n text?: string | RegExp;\n}\n\n/** Harness for interacting with a `mat-error` in tests. */\nexport class MatErrorHarness extends ComponentHarness {\n static hostSelector = '.mat-mdc-form-field-error';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for an error with specific\n * attributes.\n * @param options Options for filtering which error instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatErrorHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ErrorHarnessFilters = {},\n ): HarnessPredicate<T> {\n return MatErrorHarness._getErrorPredicate(this, options);\n }\n\n protected static _getErrorPredicate<T extends MatErrorHarness>(\n type: ComponentHarnessConstructor<T>,\n options: ErrorHarnessFilters,\n ): HarnessPredicate<T> {\n return new HarnessPredicate(type, options).addOption('text', options.text, (harness, text) =>\n HarnessPredicate.stringMatches(harness.getText(), text),\n );\n }\n\n /** Gets a promise for the error's label text. */\n async getText(): Promise<string> {\n return (await this.host()).text();\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 HarnessQuery,\n parallel,\n} from '@angular/cdk/testing';\nimport {ErrorHarnessFilters, MatErrorHarness} from './error-harness';\nimport {MatInputHarness} from '../../input/testing';\nimport {MatFormFieldControlHarness} from './control';\nimport {MatSelectHarness} from '../../select/testing';\nimport {MatDatepickerInputHarness, MatDateRangeInputHarness} from '../../datepicker/testing';\nimport {FormFieldHarnessFilters} from './form-field-harness-filters';\n\n/** Possible harnesses of controls which can be bound to a form-field. */\nexport type FormFieldControlHarness =\n | MatInputHarness\n | MatSelectHarness\n | MatDatepickerInputHarness\n | MatDateRangeInputHarness;\n\nexport class MatFormFieldHarness extends ComponentHarness {\n private _prefixContainer = this.locatorForOptional('.mat-mdc-form-field-text-prefix');\n private _suffixContainer = this.locatorForOptional('.mat-mdc-form-field-text-suffix');\n private _label = this.locatorForOptional('.mdc-floating-label');\n private _hints = this.locatorForAll('.mat-mdc-form-field-hint');\n private _inputControl = this.locatorForOptional(MatInputHarness);\n private _selectControl = this.locatorForOptional(MatSelectHarness);\n private _datepickerInputControl = this.locatorForOptional(MatDatepickerInputHarness);\n private _dateRangeInputControl = this.locatorForOptional(MatDateRangeInputHarness);\n private _textField = this.locatorFor('.mat-mdc-text-field-wrapper');\n private _errorHarness = MatErrorHarness;\n\n static hostSelector = '.mat-mdc-form-field';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a form field with specific\n * attributes.\n * @param options Options for filtering which form field instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatFormFieldHarness>(\n this: ComponentHarnessConstructor<T>,\n options: FormFieldHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options)\n .addOption('floatingLabelText', options.floatingLabelText, async (harness, text) =>\n HarnessPredicate.stringMatches(await harness.getLabel(), text),\n )\n .addOption(\n 'hasErrors',\n options.hasErrors,\n async (harness, hasErrors) => (await harness.hasErrors()) === hasErrors,\n )\n .addOption(\n 'isValid',\n options.isValid,\n async (harness, isValid) => (await harness.isControlValid()) === isValid,\n );\n }\n\n /** Gets the appearance of the form-field. */\n async getAppearance(): Promise<'fill' | 'outline'> {\n const textFieldEl = await this._textField();\n if (await textFieldEl.hasClass('mdc-text-field--outlined')) {\n return 'outline';\n }\n return 'fill';\n }\n\n /** Whether the form-field has a label. */\n async hasLabel(): Promise<boolean> {\n return (await this._label()) !== null;\n }\n\n /** Whether the label is currently floating. */\n async isLabelFloating(): Promise<boolean> {\n const labelEl = await this._label();\n return labelEl !== null ? await labelEl.hasClass('mdc-floating-label--float-above') : false;\n }\n\n /** Gets the label of the form-field. */\n async getLabel(): Promise<string | null> {\n const labelEl = await this._label();\n return labelEl ? labelEl.text() : null;\n }\n\n /** Whether the form-field has errors. */\n async hasErrors(): Promise<boolean> {\n return (await this.getTextErrors()).length > 0;\n }\n\n /** Whether the form-field is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await this.host()).hasClass('mat-form-field-disabled');\n }\n\n /** Whether the form-field is currently autofilled. */\n async isAutofilled(): Promise<boolean> {\n return (await this.host()).hasClass('mat-form-field-autofilled');\n }\n\n /**\n * Gets the harness of the control that is bound to the form-field. Only\n * default controls such as \"MatInputHarness\" and \"MatSelectHarness\" are\n * supported.\n */\n async getControl(): Promise<FormFieldControlHarness | null>;\n\n /**\n * Gets the harness of the control that is bound to the form-field. Searches\n * for a control that matches the specified harness type.\n */\n async getControl<X extends MatFormFieldControlHarness>(\n type: ComponentHarnessConstructor<X>,\n ): Promise<X | null>;\n\n /**\n * Gets the harness of the control that is bound to the form-field. Searches\n * for a control that matches the specified harness predicate.\n */\n async getControl<X extends MatFormFieldControlHarness>(\n type: HarnessPredicate<X>,\n ): Promise<X | null>;\n\n // Implementation of the \"getControl\" method overload signatures.\n async getControl<X extends MatFormFieldControlHarness>(type?: HarnessQuery<X>) {\n if (type) {\n return this.locatorForOptional(type)();\n }\n const [select, input, datepickerInput, dateRangeInput] = await parallel(() => [\n this._selectControl(),\n this._inputControl(),\n this._datepickerInputControl(),\n this._dateRangeInputControl(),\n ]);\n\n // Match the datepicker inputs first since they can also have a `MatInput`.\n return datepickerInput || dateRangeInput || select || input;\n }\n\n /** Gets the theme color of the form-field. */\n async getThemeColor(): Promise<'primary' | 'accent' | 'warn'> {\n const hostEl = await this.host();\n const [isAccent, isWarn] = await parallel(() => {\n return [hostEl.hasClass('mat-accent'), hostEl.hasClass('mat-warn')];\n });\n if (isAccent) {\n return 'accent';\n } else if (isWarn) {\n return 'warn';\n }\n return 'primary';\n }\n\n /** Gets error messages which are currently displayed in the form-field. */\n async getTextErrors(): Promise<string[]> {\n const errors = await this.getErrors();\n return parallel(() => errors.map(e => e.getText()));\n }\n\n /** Gets all of the error harnesses in the form field. */\n async getErrors(filter: ErrorHarnessFilters = {}): Promise<MatErrorHarness[]> {\n return this.locatorForAll(this._errorHarness.with(filter))();\n }\n\n /** Gets hint messages which are currently displayed in the form-field. */\n async getTextHints(): Promise<string[]> {\n const hints = await this._hints();\n return parallel(() => hints.map(e => e.text()));\n }\n\n /** Gets the text inside the prefix element. */\n async getPrefixText(): Promise<string> {\n const prefix = await this._prefixContainer();\n return prefix ? prefix.text() : '';\n }\n\n /** Gets the text inside the suffix element. */\n async getSuffixText(): Promise<string> {\n const suffix = await this._suffixContainer();\n return suffix ? suffix.text() : '';\n }\n\n /**\n * Whether the form control has been touched. Returns \"null\"\n * if no form control is set up.\n */\n async isControlTouched(): Promise<boolean | null> {\n if (!(await this._hasFormControl())) {\n return null;\n }\n return (await this.host()).hasClass('ng-touched');\n }\n\n /**\n * Whether the form control is dirty. Returns \"null\"\n * if no form control is set up.\n */\n async isControlDirty(): Promise<boolean | null> {\n if (!(await this._hasFormControl())) {\n return null;\n }\n return (await this.host()).hasClass('ng-dirty');\n }\n\n /**\n * Whether the form control is valid. Returns \"null\"\n * if no form control is set up.\n */\n async isControlValid(): Promise<boolean | null> {\n if (!(await this._hasFormControl())) {\n return null;\n }\n return (await this.host()).hasClass('ng-valid');\n }\n\n /**\n * Whether the form control is pending validation. Returns \"null\"\n * if no form control is set up.\n */\n async isControlPending(): Promise<boolean | null> {\n if (!(await this._hasFormControl())) {\n return null;\n }\n return (await this.host()).hasClass('ng-pending');\n }\n\n /** Checks whether the form-field control has set up a form control. */\n private async _hasFormControl(): Promise<boolean> {\n const hostEl = await this.host();\n // If no form \"NgControl\" is bound to the form-field control, the form-field\n // is not able to forward any control status classes. Therefore if either the\n // \"ng-touched\" or \"ng-untouched\" class is set, we know that it has a form control\n const [isTouched, isUntouched] = await parallel(() => [\n hostEl.hasClass('ng-touched'),\n hostEl.hasClass('ng-untouched'),\n ]);\n return isTouched || isUntouched;\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"form-field2.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/material/form-field/directives/label.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/material/form-field/directives/error.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/material/form-field/directives/hint.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/material/form-field/directives/prefix.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/material/form-field/directives/suffix.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/material/form-field/directives/floating-label.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/material/form-field/directives/line-ripple.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/material/form-field/directives/notched-outline.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/material/form-field/directives/notched-outline.html","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/material/form-field/form-field-control.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/material/form-field/form-field-errors.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/material/form-field/form-field.ts","../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/material/form-field/form-field.html"],"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 {Directive} from '@angular/core';\n\n/** The floating label for a `mat-form-field`. */\n@Directive({\n selector: 'mat-label',\n})\nexport class MatLabel {}\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 {Directive, InjectionToken, Input, inject} from '@angular/core';\nimport {_IdGenerator} from '@angular/cdk/a11y';\n\n/**\n * Injection token that can be used to reference instances of `MatError`. It serves as\n * alternative token to the actual `MatError` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nexport const MAT_ERROR = new InjectionToken<MatError>('MatError');\n\n/** Single error message to be shown underneath the form-field. */\n@Directive({\n selector: 'mat-error, [matError]',\n host: {\n 'class': 'mat-mdc-form-field-error mat-mdc-form-field-bottom-align',\n '[id]': 'id',\n },\n providers: [{provide: MAT_ERROR, useExisting: MatError}],\n})\nexport class MatError {\n @Input() id: string = inject(_IdGenerator).getId('mat-mdc-error-');\n\n constructor(...args: unknown[]);\n\n constructor() {}\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 {Directive, inject, Input} from '@angular/core';\nimport {_IdGenerator} from '@angular/cdk/a11y';\n\n/** Hint text to be shown underneath the form field control. */\n@Directive({\n selector: 'mat-hint',\n host: {\n 'class': 'mat-mdc-form-field-hint mat-mdc-form-field-bottom-align',\n '[class.mat-mdc-form-field-hint-end]': 'align === \"end\"',\n '[id]': 'id',\n // Remove align attribute to prevent it from interfering with layout.\n '[attr.align]': 'null',\n },\n})\nexport class MatHint {\n /** Whether to align the hint label at the start or end of the line. */\n @Input() align: 'start' | 'end' = 'start';\n\n /** Unique ID for the hint. Used for the aria-describedby on the form field control. */\n @Input() id: string = inject(_IdGenerator).getId('mat-mdc-hint-');\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 {Directive, InjectionToken, Input} from '@angular/core';\n\n/**\n * Injection token that can be used to reference instances of `MatPrefix`. It serves as\n * alternative token to the actual `MatPrefix` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nexport const MAT_PREFIX = new InjectionToken<MatPrefix>('MatPrefix');\n\n/** Prefix to be placed in front of the form field. */\n@Directive({\n selector: '[matPrefix], [matIconPrefix], [matTextPrefix]',\n providers: [{provide: MAT_PREFIX, useExisting: MatPrefix}],\n})\nexport class MatPrefix {\n @Input('matTextPrefix')\n set _isTextSelector(value: '') {\n this._isText = true;\n }\n\n _isText = false;\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 {Directive, InjectionToken, Input} from '@angular/core';\n\n/**\n * Injection token that can be used to reference instances of `MatSuffix`. It serves as\n * alternative token to the actual `MatSuffix` class which could cause unnecessary\n * retention of the class and its directive metadata.\n */\nexport const MAT_SUFFIX = new InjectionToken<MatSuffix>('MatSuffix');\n\n/** Suffix to be placed at the end of the form field. */\n@Directive({\n selector: '[matSuffix], [matIconSuffix], [matTextSuffix]',\n providers: [{provide: MAT_SUFFIX, useExisting: MatSuffix}],\n})\nexport class MatSuffix {\n @Input('matTextSuffix')\n set _isTextSelector(value: '') {\n this._isText = true;\n }\n\n _isText = false;\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 Directive,\n ElementRef,\n inject,\n Input,\n NgZone,\n OnDestroy,\n InjectionToken,\n} from '@angular/core';\nimport {SharedResizeObserver} from '@angular/cdk/observers/private';\nimport {Subscription} from 'rxjs';\n\n/** An interface that the parent form-field should implement to receive resize events. */\nexport interface FloatingLabelParent {\n _handleLabelResized(): void;\n}\n\n/** An injion token for the parent form-field. */\nexport const FLOATING_LABEL_PARENT = new InjectionToken<FloatingLabelParent>('FloatingLabelParent');\n\n/**\n * Internal directive that maintains a MDC floating label. This directive does not\n * use the `MDCFloatingLabelFoundation` class, as it is not worth the size cost of\n * including it just to measure the label width and toggle some classes.\n *\n * The use of a directive allows us to conditionally render a floating label in the\n * template without having to manually manage instantiation and destruction of the\n * floating label component based on.\n *\n * The component is responsible for setting up the floating label styles, measuring label\n * width for the outline notch, and providing inputs that can be used to toggle the\n * label's floating or required state.\n */\n@Directive({\n selector: 'label[matFormFieldFloatingLabel]',\n host: {\n 'class': 'mdc-floating-label mat-mdc-floating-label',\n '[class.mdc-floating-label--float-above]': 'floating',\n },\n})\nexport class MatFormFieldFloatingLabel implements OnDestroy {\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /** Whether the label is floating. */\n @Input()\n get floating() {\n return this._floating;\n }\n set floating(value: boolean) {\n this._floating = value;\n if (this.monitorResize) {\n this._handleResize();\n }\n }\n private _floating = false;\n\n /** Whether to monitor for resize events on the floating label. */\n @Input()\n get monitorResize() {\n return this._monitorResize;\n }\n set monitorResize(value: boolean) {\n this._monitorResize = value;\n if (this._monitorResize) {\n this._subscribeToResize();\n } else {\n this._resizeSubscription.unsubscribe();\n }\n }\n private _monitorResize = false;\n\n /** The shared ResizeObserver. */\n private _resizeObserver = inject(SharedResizeObserver);\n\n /** The Angular zone. */\n private _ngZone = inject(NgZone);\n\n /** The parent form-field. */\n private _parent = inject(FLOATING_LABEL_PARENT);\n\n /** The current resize event subscription. */\n private _resizeSubscription = new Subscription();\n\n constructor(...args: unknown[]);\n constructor() {}\n\n ngOnDestroy() {\n this._resizeSubscription.unsubscribe();\n }\n\n /** Gets the width of the label. Used for the outline notch. */\n getWidth(): number {\n return estimateScrollWidth(this._elementRef.nativeElement);\n }\n\n /** Gets the HTML element for the floating label. */\n get element(): HTMLElement {\n return this._elementRef.nativeElement;\n }\n\n /** Handles resize events from the ResizeObserver. */\n private _handleResize() {\n // In the case where the label grows in size, the following sequence of events occurs:\n // 1. The label grows by 1px triggering the ResizeObserver\n // 2. The notch is expanded to accommodate the entire label\n // 3. The label expands to its full width, triggering the ResizeObserver again\n //\n // This is expected, but If we allow this to all happen within the same macro task it causes an\n // error: `ResizeObserver loop limit exceeded`. Therefore we push the notch resize out until\n // the next macro task.\n setTimeout(() => this._parent._handleLabelResized());\n }\n\n /** Subscribes to resize events. */\n private _subscribeToResize() {\n this._resizeSubscription.unsubscribe();\n this._ngZone.runOutsideAngular(() => {\n this._resizeSubscription = this._resizeObserver\n .observe(this._elementRef.nativeElement, {box: 'border-box'})\n .subscribe(() => this._handleResize());\n });\n }\n}\n\n/**\n * Estimates the scroll width of an element.\n * via https://github.com/material-components/material-components-web/blob/c0a11ef0d000a098fd0c372be8f12d6a99302855/packages/mdc-dom/ponyfill.ts\n */\nfunction estimateScrollWidth(element: HTMLElement): number {\n // Check the offsetParent. If the element inherits display: none from any\n // parent, the offsetParent property will be null (see\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetParent).\n // This check ensures we only clone the node when necessary.\n const htmlEl = element as HTMLElement;\n if (htmlEl.offsetParent !== null) {\n return htmlEl.scrollWidth;\n }\n\n const clone = htmlEl.cloneNode(true) as HTMLElement;\n clone.style.setProperty('position', 'absolute');\n clone.style.setProperty('transform', 'translate(-9999px, -9999px)');\n document.documentElement.appendChild(clone);\n const scrollWidth = clone.scrollWidth;\n clone.remove();\n return scrollWidth;\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 {Directive, ElementRef, NgZone, OnDestroy, Renderer2, inject} from '@angular/core';\n\n/** Class added when the line ripple is active. */\nconst ACTIVATE_CLASS = 'mdc-line-ripple--active';\n\n/** Class added when the line ripple is being deactivated. */\nconst DEACTIVATING_CLASS = 'mdc-line-ripple--deactivating';\n\n/**\n * Internal directive that creates an instance of the MDC line-ripple component. Using a\n * directive allows us to conditionally render a line-ripple in the template without having\n * to manually create and destroy the `MDCLineRipple` component whenever the condition changes.\n *\n * The directive sets up the styles for the line-ripple and provides an API for activating\n * and deactivating the line-ripple.\n */\n@Directive({\n selector: 'div[matFormFieldLineRipple]',\n host: {\n 'class': 'mdc-line-ripple',\n },\n})\nexport class MatFormFieldLineRipple implements OnDestroy {\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private _cleanupTransitionEnd: () => void;\n\n constructor(...args: unknown[]);\n\n constructor() {\n const ngZone = inject(NgZone);\n const renderer = inject(Renderer2);\n\n ngZone.runOutsideAngular(() => {\n this._cleanupTransitionEnd = renderer.listen(\n this._elementRef.nativeElement,\n 'transitionend',\n this._handleTransitionEnd,\n );\n });\n }\n\n activate() {\n const classList = this._elementRef.nativeElement.classList;\n classList.remove(DEACTIVATING_CLASS);\n classList.add(ACTIVATE_CLASS);\n }\n\n deactivate() {\n this._elementRef.nativeElement.classList.add(DEACTIVATING_CLASS);\n }\n\n private _handleTransitionEnd = (event: TransitionEvent) => {\n const classList = this._elementRef.nativeElement.classList;\n const isDeactivating = classList.contains(DEACTIVATING_CLASS);\n\n if (event.propertyName === 'opacity' && isDeactivating) {\n classList.remove(ACTIVATE_CLASS, DEACTIVATING_CLASS);\n }\n };\n\n ngOnDestroy() {\n this._cleanupTransitionEnd();\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 AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n NgZone,\n ViewChild,\n ViewEncapsulation,\n inject,\n} from '@angular/core';\n\n/**\n * Internal component that creates an instance of the MDC notched-outline component.\n *\n * The component sets up the HTML structure and styles for the notched-outline. It provides\n * inputs to toggle the notch state and width.\n */\n@Component({\n selector: 'div[matFormFieldNotchedOutline]',\n templateUrl: './notched-outline.html',\n host: {\n 'class': 'mdc-notched-outline',\n // Besides updating the notch state through the MDC component, we toggle this class through\n // a host binding in order to ensure that the notched-outline renders correctly on the server.\n '[class.mdc-notched-outline--notched]': 'open',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatFormFieldNotchedOutline implements AfterViewInit {\n private _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private _ngZone = inject(NgZone);\n\n /** Whether the notch should be opened. */\n @Input('matFormFieldNotchedOutlineOpen') open: boolean = false;\n\n @ViewChild('notch') _notch: ElementRef<HTMLElement>;\n\n ngAfterViewInit(): void {\n const element = this._elementRef.nativeElement;\n const label = element.querySelector<HTMLElement>('.mdc-floating-label');\n\n if (label) {\n element.classList.add('mdc-notched-outline--upgraded');\n\n if (typeof requestAnimationFrame === 'function') {\n label.style.transitionDuration = '0s';\n this._ngZone.runOutsideAngular(() => {\n requestAnimationFrame(() => (label.style.transitionDuration = ''));\n });\n }\n } else {\n element.classList.add('mdc-notched-outline--no-label');\n }\n }\n\n _setNotchWidth(labelWidth: number) {\n const notch = this._notch.nativeElement;\n\n if (!this.open || !labelWidth) {\n notch.style.width = '';\n } else {\n const NOTCH_ELEMENT_PADDING = 8;\n const NOTCH_ELEMENT_BORDER = 1;\n notch.style.width = `calc(${labelWidth}px * var(--mat-mdc-form-field-floating-label-scale, 0.75) + ${\n NOTCH_ELEMENT_PADDING + NOTCH_ELEMENT_BORDER\n }px)`;\n }\n }\n\n _setMaxWidth(prefixAndSuffixWidth: number) {\n // Set this only on the notch to avoid style recalculations in other parts of the form field.\n this._notch.nativeElement.style.setProperty(\n '--mat-form-field-notch-max-width',\n `calc(100% - ${prefixAndSuffixWidth}px)`,\n );\n }\n}\n","<div class=\"mat-mdc-notch-piece mdc-notched-outline__leading\"></div>\n<div class=\"mat-mdc-notch-piece mdc-notched-outline__notch\" #notch>\n <ng-content></ng-content>\n</div>\n<div class=\"mat-mdc-notch-piece mdc-notched-outline__trailing\"></div>\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 {Observable} from 'rxjs';\nimport {AbstractControlDirective, NgControl} from '@angular/forms';\nimport {Directive} from '@angular/core';\n\n/** An interface which allows a control to work inside of a `MatFormField`. */\n@Directive()\nexport abstract class MatFormFieldControl<T> {\n /** The value of the control. */\n value: T | null;\n\n /**\n * Stream that emits whenever the state of the control changes such that the parent `MatFormField`\n * needs to run change detection.\n */\n readonly stateChanges: Observable<void>;\n\n /** The element ID for this control. */\n readonly id: string;\n\n /** The placeholder for this control. */\n readonly placeholder: string;\n\n /** Gets the AbstractControlDirective for this control. */\n readonly ngControl: NgControl | AbstractControlDirective | null;\n\n /** Whether the control is focused. */\n readonly focused: boolean;\n\n /** Whether the control is empty. */\n readonly empty: boolean;\n\n /** Whether the `MatFormField` label should try to float. */\n readonly shouldLabelFloat: boolean;\n\n /** Whether the control is required. */\n readonly required: boolean;\n\n /** Whether the control is disabled. */\n readonly disabled: boolean;\n\n /** Whether the control is in an error state. */\n readonly errorState: boolean;\n\n /**\n * An optional name for the control type that can be used to distinguish `mat-form-field` elements\n * based on their control type. The form field will add a class,\n * `mat-form-field-type-{{controlType}}` to its root element.\n */\n readonly controlType?: string;\n\n /**\n * Whether the input is currently in an autofilled state. If property is not present on the\n * control it is assumed to be false.\n */\n readonly autofilled?: boolean;\n\n /**\n * Value of `aria-describedby` that should be merged with the described-by ids\n * which are set by the form-field.\n */\n readonly userAriaDescribedBy?: string;\n\n /**\n * Whether to automatically assign the ID of the form field as the `for` attribute\n * on the `<label>` inside the form field. Set this to true to prevent the form\n * field from associating the label with non-native elements.\n */\n readonly disableAutomaticLabeling?: boolean;\n\n /** Gets the list of element IDs that currently describe this control. */\n readonly describedByIds?: string[];\n\n /** Sets the list of element IDs that currently describe this control. */\n abstract setDescribedByIds(ids: string[]): void;\n\n /** Handles a click on the control's container. */\n abstract onContainerClick(event: MouseEvent): void;\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\n/** @docs-private */\nexport function getMatFormFieldPlaceholderConflictError(): Error {\n return Error('Placeholder attribute and child element were both specified.');\n}\n\n/** @docs-private */\nexport function getMatFormFieldDuplicatedHintError(align: string): Error {\n return Error(`A hint was already declared for 'align=\"${align}\"'.`);\n}\n\n/** @docs-private */\nexport function getMatFormFieldMissingControlError(): Error {\n return Error('mat-form-field must contain a MatFormFieldControl.');\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 */\nimport {_IdGenerator} from '@angular/cdk/a11y';\nimport {Direction, Directionality} from '@angular/cdk/bidi';\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {Platform} from '@angular/cdk/platform';\nimport {NgTemplateOutlet} from '@angular/common';\nimport {\n AfterContentChecked,\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n InjectionToken,\n Input,\n NgZone,\n OnDestroy,\n QueryList,\n ViewChild,\n ViewEncapsulation,\n afterRenderEffect,\n computed,\n contentChild,\n effect,\n inject,\n signal,\n viewChild,\n} from '@angular/core';\nimport {AbstractControlDirective, ValidatorFn} from '@angular/forms';\nimport {Subject, Subscription, merge} from 'rxjs';\nimport {filter, map, pairwise, startWith, takeUntil} from 'rxjs/operators';\nimport {ThemePalette, _animationsDisabled} from '../core';\nimport {MAT_ERROR, MatError} from './directives/error';\nimport {\n FLOATING_LABEL_PARENT,\n FloatingLabelParent,\n MatFormFieldFloatingLabel,\n} from './directives/floating-label';\nimport {MatHint} from './directives/hint';\nimport {MatLabel} from './directives/label';\nimport {MatFormFieldLineRipple} from './directives/line-ripple';\nimport {MatFormFieldNotchedOutline} from './directives/notched-outline';\nimport {MAT_PREFIX, MatPrefix} from './directives/prefix';\nimport {MAT_SUFFIX, MatSuffix} from './directives/suffix';\nimport {MatFormFieldControl as _MatFormFieldControl} from './form-field-control';\nimport {\n getMatFormFieldDuplicatedHintError,\n getMatFormFieldMissingControlError,\n} from './form-field-errors';\n\n/** Type for the available floatLabel values. */\nexport type FloatLabelType = 'always' | 'auto';\n\n/** Possible appearance styles for the form field. */\nexport type MatFormFieldAppearance = 'fill' | 'outline';\n\n/** Behaviors for how the subscript height is set. */\nexport type SubscriptSizing = 'fixed' | 'dynamic';\n\n/**\n * Represents the default options for the form field that can be configured\n * using the `MAT_FORM_FIELD_DEFAULT_OPTIONS` injection token.\n */\nexport interface MatFormFieldDefaultOptions {\n /** Default form field appearance style. */\n appearance?: MatFormFieldAppearance;\n /**\n * Default theme color of the form field. This API is supported in M2 themes only, it has no\n * effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/form-field/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n color?: ThemePalette;\n /** Whether the required marker should be hidden by default. */\n hideRequiredMarker?: boolean;\n /**\n * Whether the label for form fields should by default float `always`,\n * `never`, or `auto` (only when necessary).\n */\n floatLabel?: FloatLabelType;\n /** Whether the form field should reserve space for one line by default. */\n subscriptSizing?: SubscriptSizing;\n}\n\n/**\n * Injection token that can be used to inject an instances of `MatFormField`. It serves\n * as alternative token to the actual `MatFormField` class which would cause unnecessary\n * retention of the `MatFormField` class and its component metadata.\n */\nexport const MAT_FORM_FIELD = new InjectionToken<MatFormField>('MatFormField');\n\n/**\n * Injection token that can be used to configure the\n * default options for all form field within an app.\n */\nexport const MAT_FORM_FIELD_DEFAULT_OPTIONS = new InjectionToken<MatFormFieldDefaultOptions>(\n 'MAT_FORM_FIELD_DEFAULT_OPTIONS',\n);\n\n/** Styles that are to be applied to the label elements in the outlined appearance. */\ntype OutlinedLabelStyles =\n | [floatingLabelTransform: string, notchedOutlineWidth: number | null]\n | null;\n\n/** Default appearance used by the form field. */\nconst DEFAULT_APPEARANCE: MatFormFieldAppearance = 'fill';\n\n/**\n * Whether the label for form fields should by default float `always`,\n * `never`, or `auto`.\n */\nconst DEFAULT_FLOAT_LABEL: FloatLabelType = 'auto';\n\n/** Default way that the subscript element height is set. */\nconst DEFAULT_SUBSCRIPT_SIZING: SubscriptSizing = 'fixed';\n\n/**\n * Default transform for docked floating labels in a MDC text-field. This value has been\n * extracted from the MDC text-field styles because we programmatically modify the docked\n * label transform, but do not want to accidentally discard the default label transform.\n */\nconst FLOATING_LABEL_DEFAULT_DOCKED_TRANSFORM = `translateY(-50%)`;\n\n/**\n * Despite `MatFormFieldControl` being an abstract class, most of our usages enforce its shape\n * using `implements` instead of `extends`. This appears to be problematic when Closure compiler\n * is configured to use type information to rename properties, because it can't figure out which\n * class properties are coming from. This interface seems to work around the issue while preserving\n * our type safety (alternative being using `any` everywhere).\n * @docs-private\n */\ninterface MatFormFieldControl<T> extends _MatFormFieldControl<T> {}\n\n/** Container for form controls that applies Material Design styling and behavior. */\n@Component({\n selector: 'mat-form-field',\n exportAs: 'matFormField',\n templateUrl: './form-field.html',\n styleUrl: './form-field.css',\n host: {\n 'class': 'mat-mdc-form-field',\n '[class.mat-mdc-form-field-label-always-float]': '_shouldAlwaysFloat()',\n '[class.mat-mdc-form-field-has-icon-prefix]': '_hasIconPrefix',\n '[class.mat-mdc-form-field-has-icon-suffix]': '_hasIconSuffix',\n // Note that these classes reuse the same names as the non-MDC version, because they can be\n // considered a public API since custom form controls may use them to style themselves.\n // See https://github.com/angular/components/pull/20502#discussion_r486124901.\n '[class.mat-form-field-invalid]': '_control.errorState',\n '[class.mat-form-field-disabled]': '_control.disabled',\n '[class.mat-form-field-autofilled]': '_control.autofilled',\n '[class.mat-form-field-appearance-fill]': 'appearance == \"fill\"',\n '[class.mat-form-field-appearance-outline]': 'appearance == \"outline\"',\n '[class.mat-form-field-hide-placeholder]': '_hasFloatingLabel() && !_shouldLabelFloat()',\n '[class.mat-primary]': 'color !== \"accent\" && color !== \"warn\"',\n '[class.mat-accent]': 'color === \"accent\"',\n '[class.mat-warn]': 'color === \"warn\"',\n '[class.ng-untouched]': '_shouldForward(\"untouched\")',\n '[class.ng-touched]': '_shouldForward(\"touched\")',\n '[class.ng-pristine]': '_shouldForward(\"pristine\")',\n '[class.ng-dirty]': '_shouldForward(\"dirty\")',\n '[class.ng-valid]': '_shouldForward(\"valid\")',\n '[class.ng-invalid]': '_shouldForward(\"invalid\")',\n '[class.ng-pending]': '_shouldForward(\"pending\")',\n },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {provide: MAT_FORM_FIELD, useExisting: MatFormField},\n {provide: FLOATING_LABEL_PARENT, useExisting: MatFormField},\n ],\n imports: [\n MatFormFieldFloatingLabel,\n MatFormFieldNotchedOutline,\n NgTemplateOutlet,\n MatFormFieldLineRipple,\n MatHint,\n ],\n})\nexport class MatFormField\n implements FloatingLabelParent, AfterContentInit, AfterContentChecked, AfterViewInit, OnDestroy\n{\n _elementRef = inject(ElementRef);\n private _changeDetectorRef = inject(ChangeDetectorRef);\n private _platform = inject(Platform);\n private _idGenerator = inject(_IdGenerator);\n private _ngZone = inject(NgZone);\n private _defaults = inject<MatFormFieldDefaultOptions>(MAT_FORM_FIELD_DEFAULT_OPTIONS, {\n optional: true,\n });\n private _currentDirection: Direction;\n\n @ViewChild('textField') _textField: ElementRef<HTMLElement>;\n @ViewChild('iconPrefixContainer') _iconPrefixContainer: ElementRef<HTMLElement>;\n @ViewChild('textPrefixContainer') _textPrefixContainer: ElementRef<HTMLElement>;\n @ViewChild('iconSuffixContainer') _iconSuffixContainer: ElementRef<HTMLElement>;\n @ViewChild('textSuffixContainer') _textSuffixContainer: ElementRef<HTMLElement>;\n @ViewChild(MatFormFieldFloatingLabel) _floatingLabel: MatFormFieldFloatingLabel | undefined;\n @ViewChild(MatFormFieldNotchedOutline) _notchedOutline: MatFormFieldNotchedOutline | undefined;\n @ViewChild(MatFormFieldLineRipple) _lineRipple: MatFormFieldLineRipple | undefined;\n\n private _iconPrefixContainerSignal = viewChild<ElementRef<HTMLElement>>('iconPrefixContainer');\n private _textPrefixContainerSignal = viewChild<ElementRef<HTMLElement>>('textPrefixContainer');\n private _iconSuffixContainerSignal = viewChild<ElementRef<HTMLElement>>('iconSuffixContainer');\n private _textSuffixContainerSignal = viewChild<ElementRef<HTMLElement>>('textSuffixContainer');\n private _prefixSuffixContainers = computed(() => {\n return [\n this._iconPrefixContainerSignal(),\n this._textPrefixContainerSignal(),\n this._iconSuffixContainerSignal(),\n this._textSuffixContainerSignal(),\n ]\n .map(container => container?.nativeElement)\n .filter(e => e !== undefined);\n });\n\n @ContentChild(_MatFormFieldControl) _formFieldControl: MatFormFieldControl<any>;\n @ContentChildren(MAT_PREFIX, {descendants: true}) _prefixChildren: QueryList<MatPrefix>;\n @ContentChildren(MAT_SUFFIX, {descendants: true}) _suffixChildren: QueryList<MatSuffix>;\n @ContentChildren(MAT_ERROR, {descendants: true}) _errorChildren: QueryList<MatError>;\n @ContentChildren(MatHint, {descendants: true}) _hintChildren: QueryList<MatHint>;\n\n private readonly _labelChild = contentChild(MatLabel);\n\n /** Whether the required marker should be hidden. */\n @Input()\n get hideRequiredMarker(): boolean {\n return this._hideRequiredMarker;\n }\n set hideRequiredMarker(value: BooleanInput) {\n this._hideRequiredMarker = coerceBooleanProperty(value);\n }\n private _hideRequiredMarker = false;\n\n /**\n * Theme color of the form field. This API is supported in M2 themes only, it\n * has no effect in M3 themes. For color customization in M3, see https://material.angular.dev/components/form-field/styling.\n *\n * For information on applying color variants in M3, see\n * https://material.angular.dev/guide/material-2-theming#optional-add-backwards-compatibility-styles-for-color-variants\n */\n @Input() color: ThemePalette = 'primary';\n\n /** Whether the label should always float or float as the user types. */\n @Input()\n get floatLabel(): FloatLabelType {\n return this._floatLabel || this._defaults?.floatLabel || DEFAULT_FLOAT_LABEL;\n }\n set floatLabel(value: FloatLabelType) {\n if (value !== this._floatLabel) {\n this._floatLabel = value;\n // For backwards compatibility. Custom form field controls or directives might set\n // the \"floatLabel\" input and expect the form field view to be updated automatically.\n // e.g. autocomplete trigger. Ideally we'd get rid of this and the consumers would just\n // emit the \"stateChanges\" observable. TODO(devversion): consider removing.\n this._changeDetectorRef.markForCheck();\n }\n }\n private _floatLabel: FloatLabelType;\n\n /** The form field appearance style. */\n @Input()\n get appearance(): MatFormFieldAppearance {\n return this._appearanceSignal();\n }\n set appearance(value: MatFormFieldAppearance) {\n const newAppearance = value || this._defaults?.appearance || DEFAULT_APPEARANCE;\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (newAppearance !== 'fill' && newAppearance !== 'outline') {\n throw new Error(\n `MatFormField: Invalid appearance \"${newAppearance}\", valid values are \"fill\" or \"outline\".`,\n );\n }\n }\n this._appearanceSignal.set(newAppearance);\n }\n private _appearanceSignal = signal(DEFAULT_APPEARANCE);\n\n /**\n * Whether the form field should reserve space for one line of hint/error text (default)\n * or to have the spacing grow from 0px as needed based on the size of the hint/error content.\n * Note that when using dynamic sizing, layout shifts will occur when hint/error text changes.\n */\n @Input()\n get subscriptSizing(): SubscriptSizing {\n return this._subscriptSizing || this._defaults?.subscriptSizing || DEFAULT_SUBSCRIPT_SIZING;\n }\n set subscriptSizing(value: SubscriptSizing) {\n this._subscriptSizing = value || this._defaults?.subscriptSizing || DEFAULT_SUBSCRIPT_SIZING;\n }\n private _subscriptSizing: SubscriptSizing | null = null;\n\n /** Text for the form field hint. */\n @Input()\n get hintLabel(): string {\n return this._hintLabel;\n }\n set hintLabel(value: string) {\n this._hintLabel = value;\n this._processHints();\n }\n private _hintLabel = '';\n\n _hasIconPrefix = false;\n _hasTextPrefix = false;\n _hasIconSuffix = false;\n _hasTextSuffix = false;\n\n // Unique id for the internal form field label.\n readonly _labelId = this._idGenerator.getId('mat-mdc-form-field-label-');\n\n // Unique id for the hint label.\n readonly _hintLabelId = this._idGenerator.getId('mat-mdc-hint-');\n\n // Ids obtained from the error and hint fields\n private _describedByIds: string[] | undefined;\n\n /** Gets the current form field control */\n get _control(): MatFormFieldControl<any> {\n return this._explicitFormFieldControl || this._formFieldControl;\n }\n set _control(value) {\n this._explicitFormFieldControl = value;\n }\n\n private _destroyed = new Subject<void>();\n private _isFocused: boolean | null = null;\n private _explicitFormFieldControl: MatFormFieldControl<any>;\n private _previousControl: MatFormFieldControl<unknown> | null = null;\n private _previousControlValidatorFn: ValidatorFn | null = null;\n private _stateChanges: Subscription | undefined;\n private _valueChanges: Subscription | undefined;\n private _describedByChanges: Subscription | undefined;\n private _outlineLabelOffsetResizeObserver: ResizeObserver | null = null;\n protected readonly _animationsDisabled = _animationsDisabled();\n\n constructor(...args: unknown[]);\n\n constructor() {\n const defaults = this._defaults;\n const dir = inject(Directionality);\n\n if (defaults) {\n if (defaults.appearance) {\n this.appearance = defaults.appearance;\n }\n this._hideRequiredMarker = Boolean(defaults?.hideRequiredMarker);\n if (defaults.color) {\n this.color = defaults.color;\n }\n }\n\n // We need this value inside a `afterRenderEffect`, however at the time of writing, reading the\n // signal directly causes a memory leak (see https://github.com/angular/angular/issues/62980).\n // TODO(crisbeto): clean this up once the framework issue is resolved.\n effect(() => (this._currentDirection = dir.valueSignal()));\n this._syncOutlineLabelOffset();\n }\n\n ngAfterViewInit() {\n // Initial focus state sync. This happens rarely, but we want to account for\n // it in case the form field control has \"focused\" set to true on init.\n this._updateFocusState();\n\n if (!this._animationsDisabled) {\n this._ngZone.runOutsideAngular(() => {\n // Enable animations after a certain amount of time so that they don't run on init.\n setTimeout(() => {\n this._elementRef.nativeElement.classList.add('mat-form-field-animations-enabled');\n }, 300);\n });\n }\n\n // Because the above changes a value used in the template after it was checked, we need\n // to trigger CD or the change might not be reflected if there is no other CD scheduled.\n this._changeDetectorRef.detectChanges();\n }\n\n ngAfterContentInit() {\n this._assertFormFieldControl();\n this._initializeSubscript();\n this._initializePrefixAndSuffix();\n }\n\n ngAfterContentChecked() {\n this._assertFormFieldControl();\n\n // if form field was being used with an input in first place and then replaced by other\n // component such as select.\n if (this._control !== this._previousControl) {\n this._initializeControl(this._previousControl);\n\n // keep a reference for last validator we had.\n if (this._control.ngControl && this._control.ngControl.control) {\n this._previousControlValidatorFn = this._control.ngControl.control.validator;\n }\n\n this._previousControl = this._control;\n }\n\n // make sure the the control has been initialized.\n if (this._control.ngControl && this._control.ngControl.control) {\n // get the validators for current control.\n const validatorFn = this._control.ngControl.control.validator;\n\n // if our current validatorFn isn't equal to it might be we are CD behind, marking the\n // component will allow us to catch up.\n if (validatorFn !== this._previousControlValidatorFn) {\n this._changeDetectorRef.markForCheck();\n }\n }\n }\n\n ngOnDestroy() {\n this._outlineLabelOffsetResizeObserver?.disconnect();\n this._stateChanges?.unsubscribe();\n this._valueChanges?.unsubscribe();\n this._describedByChanges?.unsubscribe();\n this._destroyed.next();\n this._destroyed.complete();\n }\n\n /**\n * Gets the id of the label element. If no label is present, returns `null`.\n */\n getLabelId = computed(() => (this._hasFloatingLabel() ? this._labelId : null));\n\n /**\n * Gets an ElementRef for the element that a overlay attached to the form field\n * should be positioned relative to.\n */\n getConnectedOverlayOrigin(): ElementRef {\n return this._textField || this._elementRef;\n }\n\n /** Animates the placeholder up and locks it in position. */\n _animateAndLockLabel(): void {\n // This is for backwards compatibility only. Consumers of the form field might use\n // this method. e.g. the autocomplete trigger. This method has been added to the non-MDC\n // form field because setting \"floatLabel\" to \"always\" caused the label to float without\n // animation. This is different in MDC where the label always animates, so this method\n // is no longer necessary. There doesn't seem any benefit in adding logic to allow changing\n // the floating label state without animations. The non-MDC implementation was inconsistent\n // because it always animates if \"floatLabel\" is set away from \"always\".\n // TODO(devversion): consider removing this method when releasing the MDC form field.\n if (this._hasFloatingLabel()) {\n this.floatLabel = 'always';\n }\n }\n\n /** Initializes the registered form field control. */\n private _initializeControl(previousControl: MatFormFieldControl<unknown> | null) {\n const control = this._control;\n const classPrefix = 'mat-mdc-form-field-type-';\n\n if (previousControl) {\n this._elementRef.nativeElement.classList.remove(classPrefix + previousControl.controlType);\n }\n\n if (control.controlType) {\n this._elementRef.nativeElement.classList.add(classPrefix + control.controlType);\n }\n\n // Subscribe to changes in the child control state in order to update the form field UI.\n this._stateChanges?.unsubscribe();\n this._stateChanges = control.stateChanges.subscribe(() => {\n this._updateFocusState();\n this._changeDetectorRef.markForCheck();\n });\n\n // Updating the `aria-describedby` touches the DOM. Only do it if it actually needs to change.\n this._describedByChanges?.unsubscribe();\n this._describedByChanges = control.stateChanges\n .pipe(\n startWith([undefined, undefined] as const),\n map(() => [control.errorState, control.userAriaDescribedBy] as const),\n pairwise(),\n filter(([[prevErrorState, prevDescribedBy], [currentErrorState, currentDescribedBy]]) => {\n return prevErrorState !== currentErrorState || prevDescribedBy !== currentDescribedBy;\n }),\n )\n .subscribe(() => this._syncDescribedByIds());\n\n this._valueChanges?.unsubscribe();\n\n // Run change detection if the value changes.\n if (control.ngControl && control.ngControl.valueChanges) {\n this._valueChanges = control.ngControl.valueChanges\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => this._changeDetectorRef.markForCheck());\n }\n }\n\n private _checkPrefixAndSuffixTypes() {\n this._hasIconPrefix = !!this._prefixChildren.find(p => !p._isText);\n this._hasTextPrefix = !!this._prefixChildren.find(p => p._isText);\n this._hasIconSuffix = !!this._suffixChildren.find(s => !s._isText);\n this._hasTextSuffix = !!this._suffixChildren.find(s => s._isText);\n }\n\n /** Initializes the prefix and suffix containers. */\n private _initializePrefixAndSuffix() {\n this._checkPrefixAndSuffixTypes();\n // Mark the form field as dirty whenever the prefix or suffix children change. This\n // is necessary because we conditionally display the prefix/suffix containers based\n // on whether there is projected content.\n merge(this._prefixChildren.changes, this._suffixChildren.changes).subscribe(() => {\n this._checkPrefixAndSuffixTypes();\n this._changeDetectorRef.markForCheck();\n });\n }\n\n /**\n * Initializes the subscript by validating hints and synchronizing \"aria-describedby\" ids\n * with the custom form field control. Also subscribes to hint and error changes in order\n * to be able to validate and synchronize ids on change.\n */\n private _initializeSubscript() {\n // Re-validate when the number of hints changes.\n this._hintChildren.changes.subscribe(() => {\n this._processHints();\n this._changeDetectorRef.markForCheck();\n });\n\n // Update the aria-described by when the number of errors changes.\n this._errorChildren.changes.subscribe(() => {\n this._syncDescribedByIds();\n this._changeDetectorRef.markForCheck();\n });\n\n // Initial mat-hint validation and subscript describedByIds sync.\n this._validateHints();\n this._syncDescribedByIds();\n }\n\n /** Throws an error if the form field's control is missing. */\n private _assertFormFieldControl() {\n if (!this._control && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n throw getMatFormFieldMissingControlError();\n }\n }\n\n private _updateFocusState() {\n const controlFocused = this._control.focused;\n\n // Usually the MDC foundation would call \"activateFocus\" and \"deactivateFocus\" whenever\n // certain DOM events are emitted. This is not possible in our implementation of the\n // form field because we support abstract form field controls which are not necessarily\n // of type input, nor do we have a reference to a native form field control element. Instead\n // we handle the focus by checking if the abstract form field control focused state changes.\n if (controlFocused && !this._isFocused) {\n this._isFocused = true;\n this._lineRipple?.activate();\n } else if (!controlFocused && (this._isFocused || this._isFocused === null)) {\n this._isFocused = false;\n this._lineRipple?.deactivate();\n }\n\n this._elementRef.nativeElement.classList.toggle('mat-focused', controlFocused);\n this._textField?.nativeElement.classList.toggle('mdc-text-field--focused', controlFocused);\n }\n\n /**\n * The floating label in the docked state needs to account for prefixes. The horizontal offset\n * is calculated whenever the appearance changes to `outline`, the prefixes change, or when the\n * form field is added to the DOM. This method sets up all subscriptions which are needed to\n * trigger the label offset update.\n */\n private _syncOutlineLabelOffset() {\n afterRenderEffect({\n earlyRead: () => {\n if (this._appearanceSignal() !== 'outline') {\n this._outlineLabelOffsetResizeObserver?.disconnect();\n return null;\n }\n\n // Setup a resize observer to monitor changes to the size of the prefix / suffix and\n // readjust the label offset.\n if (globalThis.ResizeObserver) {\n this._outlineLabelOffsetResizeObserver ||= new globalThis.ResizeObserver(() => {\n this._writeOutlinedLabelStyles(this._getOutlinedLabelOffset());\n });\n for (const el of this._prefixSuffixContainers()) {\n this._outlineLabelOffsetResizeObserver.observe(el, {box: 'border-box'});\n }\n }\n\n return this._getOutlinedLabelOffset();\n },\n write: labelStyles => this._writeOutlinedLabelStyles(labelStyles()),\n });\n }\n\n /** Whether the floating label should always float or not. */\n _shouldAlwaysFloat() {\n return this.floatLabel === 'always';\n }\n\n _hasOutline() {\n return this.appearance === 'outline';\n }\n\n /**\n * Whether the label should display in the infix. Labels in the outline appearance are\n * displayed as part of the notched-outline and are horizontally offset to account for\n * form field prefix content. This won't work in server side rendering since we cannot\n * measure the width of the prefix container. To make the docked label appear as if the\n * right offset has been calculated, we forcibly render the label inside the infix. Since\n * the label is part of the infix, the label cannot overflow the prefix content.\n */\n _forceDisplayInfixLabel() {\n return !this._platform.isBrowser && this._prefixChildren.length && !this._shouldLabelFloat();\n }\n\n _hasFloatingLabel = computed(() => !!this._labelChild());\n\n _shouldLabelFloat(): boolean {\n if (!this._hasFloatingLabel()) {\n return false;\n }\n return this._control.shouldLabelFloat || this._shouldAlwaysFloat();\n }\n\n /**\n * Determines whether a class from the AbstractControlDirective\n * should be forwarded to the host element.\n */\n _shouldForward(prop: keyof AbstractControlDirective): boolean {\n const control = this._control ? this._control.ngControl : null;\n return control && control[prop];\n }\n\n /** Gets the type of subscript message to render (error or hint). */\n _getSubscriptMessageType(): 'error' | 'hint' {\n return this._errorChildren && this._errorChildren.length > 0 && this._control.errorState\n ? 'error'\n : 'hint';\n }\n\n /** Handle label resize events. */\n _handleLabelResized() {\n this._refreshOutlineNotchWidth();\n }\n\n /** Refreshes the width of the outline-notch, if present. */\n _refreshOutlineNotchWidth() {\n if (!this._hasOutline() || !this._floatingLabel || !this._shouldLabelFloat()) {\n this._notchedOutline?._setNotchWidth(0);\n } else {\n this._notchedOutline?._setNotchWidth(this._floatingLabel.getWidth());\n }\n }\n\n /** Does any extra processing that is required when handling the hints. */\n private _processHints() {\n this._validateHints();\n this._syncDescribedByIds();\n }\n\n /**\n * Ensure that there is a maximum of one of each \"mat-hint\" alignment specified. The hint\n * label specified set through the input is being considered as \"start\" aligned.\n *\n * This method is a noop if Angular runs in production mode.\n */\n private _validateHints() {\n if (this._hintChildren && (typeof ngDevMode === 'undefined' || ngDevMode)) {\n let startHint: MatHint;\n let endHint: MatHint;\n this._hintChildren.forEach((hint: MatHint) => {\n if (hint.align === 'start') {\n if (startHint || this.hintLabel) {\n throw getMatFormFieldDuplicatedHintError('start');\n }\n startHint = hint;\n } else if (hint.align === 'end') {\n if (endHint) {\n throw getMatFormFieldDuplicatedHintError('end');\n }\n endHint = hint;\n }\n });\n }\n }\n\n /**\n * Sets the list of element IDs that describe the child control. This allows the control to update\n * its `aria-describedby` attribute accordingly.\n */\n private _syncDescribedByIds() {\n if (this._control) {\n let ids: string[] = [];\n\n // TODO(wagnermaciel): Remove the type check when we find the root cause of this bug.\n if (\n this._control.userAriaDescribedBy &&\n typeof this._control.userAriaDescribedBy === 'string'\n ) {\n ids.push(...this._control.userAriaDescribedBy.split(' '));\n }\n\n if (this._getSubscriptMessageType() === 'hint') {\n const startHint = this._hintChildren\n ? this._hintChildren.find(hint => hint.align === 'start')\n : null;\n const endHint = this._hintChildren\n ? this._hintChildren.find(hint => hint.align === 'end')\n : null;\n\n if (startHint) {\n ids.push(startHint.id);\n } else if (this._hintLabel) {\n ids.push(this._hintLabelId);\n }\n\n if (endHint) {\n ids.push(endHint.id);\n }\n } else if (this._errorChildren) {\n ids.push(...this._errorChildren.map(error => error.id));\n }\n\n const existingDescribedBy = this._control.describedByIds;\n let toAssign: string[];\n\n // In some cases there might be some `aria-describedby` IDs that were assigned directly,\n // like by the `AriaDescriber` (see #30011). Attempt to preserve them by taking the previous\n // attribute value and filtering out the IDs that came from the previous `setDescribedByIds`\n // call. Note the `|| ids` here allows us to avoid duplicating IDs on the first render.\n if (existingDescribedBy) {\n const exclude = this._describedByIds || ids;\n toAssign = ids.concat(existingDescribedBy.filter(id => id && !exclude.includes(id)));\n } else {\n toAssign = ids;\n }\n\n this._control.setDescribedByIds(toAssign);\n this._describedByIds = ids;\n }\n }\n\n /**\n * Calculates the horizontal offset of the label in the outline appearance. In the outline\n * appearance, the notched-outline and label are not relative to the infix container because\n * the outline intends to surround prefixes, suffixes and the infix. This means that the\n * floating label by default overlaps prefixes in the docked state. To avoid this, we need to\n * horizontally offset the label by the width of the prefix container. The MDC text-field does\n * not need to do this because they use a fixed width for prefixes. Hence, they can simply\n * incorporate the horizontal offset into their default text-field styles.\n */\n private _getOutlinedLabelOffset(): OutlinedLabelStyles {\n if (!this._hasOutline() || !this._floatingLabel) {\n return null;\n }\n // If no prefix is displayed, reset the outline label offset from potential\n // previous label offset updates.\n if (!this._iconPrefixContainer && !this._textPrefixContainer) {\n return ['', null];\n }\n // If the form field is not attached to the DOM yet (e.g. in a tab), we defer\n // the label offset update until the zone stabilizes.\n if (!this._isAttachedToDom()) {\n return null;\n }\n const iconPrefixContainer = this._iconPrefixContainer?.nativeElement;\n const textPrefixContainer = this._textPrefixContainer?.nativeElement;\n const iconSuffixContainer = this._iconSuffixContainer?.nativeElement;\n const textSuffixContainer = this._textSuffixContainer?.nativeElement;\n const iconPrefixContainerWidth = iconPrefixContainer?.getBoundingClientRect().width ?? 0;\n const textPrefixContainerWidth = textPrefixContainer?.getBoundingClientRect().width ?? 0;\n const iconSuffixContainerWidth = iconSuffixContainer?.getBoundingClientRect().width ?? 0;\n const textSuffixContainerWidth = textSuffixContainer?.getBoundingClientRect().width ?? 0;\n // If the directionality is RTL, the x-axis transform needs to be inverted. This\n // is because `transformX` does not change based on the page directionality.\n const negate = this._currentDirection === 'rtl' ? '-1' : '1';\n const prefixWidth = `${iconPrefixContainerWidth + textPrefixContainerWidth}px`;\n const labelOffset = `var(--mat-mdc-form-field-label-offset-x, 0px)`;\n const labelHorizontalOffset = `calc(${negate} * (${prefixWidth} + ${labelOffset}))`;\n\n // Update the translateX of the floating label to account for the prefix container,\n // but allow the CSS to override this setting via a CSS variable when the label is\n // floating.\n const floatingLabelTransform =\n 'var(--mat-mdc-form-field-label-transform, ' +\n `${FLOATING_LABEL_DEFAULT_DOCKED_TRANSFORM} translateX(${labelHorizontalOffset}))`;\n\n // Prevent the label from overlapping the suffix when in resting position.\n const notchedOutlineWidth =\n iconPrefixContainerWidth +\n textPrefixContainerWidth +\n iconSuffixContainerWidth +\n textSuffixContainerWidth;\n\n return [floatingLabelTransform, notchedOutlineWidth];\n }\n\n /** Writes the styles produced by `_getOutlineLabelOffset` synchronously to the DOM. */\n private _writeOutlinedLabelStyles(styles: OutlinedLabelStyles): void {\n if (styles !== null) {\n const [floatingLabelTransform, notchedOutlineWidth] = styles;\n\n if (this._floatingLabel) {\n this._floatingLabel.element.style.transform = floatingLabelTransform;\n }\n\n if (notchedOutlineWidth !== null) {\n this._notchedOutline?._setMaxWidth(notchedOutlineWidth);\n }\n }\n }\n\n /** Checks whether the form field is attached to the DOM. */\n private _isAttachedToDom(): boolean {\n const element: HTMLElement = this._elementRef.nativeElement;\n if (element.getRootNode) {\n const rootNode = element.getRootNode();\n // If the element is inside the DOM the root node will be either the document\n // or the closest shadow root, otherwise it'll be the element itself.\n return rootNode && rootNode !== element;\n }\n // Otherwise fall back to checking if it's in the document. This doesn't account for\n // shadow DOM, however browser that support shadow DOM should support `getRootNode` as well.\n return document.documentElement!.contains(element);\n }\n}\n","<ng-template #labelTemplate>\n <!--\n MDC recommends that the text-field is a `<label>` element. This rather complicates the\n setup because it would require every form-field control to explicitly set `aria-labelledby`.\n This is because the `<label>` itself contains more than the actual label (e.g. prefix, suffix\n or other projected content), and screen readers could potentially read out undesired content.\n Excluding elements from being printed out requires them to be marked with `aria-hidden`, or\n the form control is set to a scoped element for the label (using `aria-labelledby`). Both of\n these options seem to complicate the setup because we know exactly what content is rendered\n as part of the label, and we don't want to spend resources on walking through projected content\n to set `aria-hidden`. Nor do we want to set `aria-labelledby` on every form control if we could\n simply link the label to the control using the label `for` attribute.\n -->\n @if (_hasFloatingLabel()) {\n <label\n matFormFieldFloatingLabel\n [floating]=\"_shouldLabelFloat()\"\n [monitorResize]=\"_hasOutline()\"\n [id]=\"_labelId\"\n [attr.for]=\"_control.disableAutomaticLabeling ? null : _control.id\"\n >\n <ng-content select=\"mat-label\"></ng-content>\n <!--\n We set the required marker as a separate element, in order to make it easier to target if\n apps want to override it and to be able to set `aria-hidden` so that screen readers don't\n pick it up.\n -->\n @if (!hideRequiredMarker && _control.required) {\n <span\n aria-hidden=\"true\"\n class=\"mat-mdc-form-field-required-marker mdc-floating-label--required\"\n ></span>\n }\n </label>\n }\n</ng-template>\n\n<div\n class=\"mat-mdc-text-field-wrapper mdc-text-field\"\n #textField\n [class.mdc-text-field--filled]=\"!_hasOutline()\"\n [class.mdc-text-field--outlined]=\"_hasOutline()\"\n [class.mdc-text-field--no-label]=\"!_hasFloatingLabel()\"\n [class.mdc-text-field--disabled]=\"_control.disabled\"\n [class.mdc-text-field--invalid]=\"_control.errorState\"\n (click)=\"_control.onContainerClick($event)\"\n>\n @if (!_hasOutline() && !_control.disabled) {\n <div class=\"mat-mdc-form-field-focus-overlay\"></div>\n }\n <div class=\"mat-mdc-form-field-flex\">\n @if (_hasOutline()) {\n <div matFormFieldNotchedOutline [matFormFieldNotchedOutlineOpen]=\"_shouldLabelFloat()\">\n @if (!_forceDisplayInfixLabel()) {\n <ng-template [ngTemplateOutlet]=\"labelTemplate\"></ng-template>\n }\n </div>\n }\n\n @if (_hasIconPrefix) {\n <div class=\"mat-mdc-form-field-icon-prefix\" #iconPrefixContainer>\n <ng-content select=\"[matPrefix], [matIconPrefix]\"></ng-content>\n </div>\n }\n\n @if (_hasTextPrefix) {\n <div class=\"mat-mdc-form-field-text-prefix\" #textPrefixContainer>\n <ng-content select=\"[matTextPrefix]\"></ng-content>\n </div>\n }\n\n <div class=\"mat-mdc-form-field-infix\">\n @if (!_hasOutline() || _forceDisplayInfixLabel()) {\n <ng-template [ngTemplateOutlet]=\"labelTemplate\"></ng-template>\n }\n\n <ng-content></ng-content>\n </div>\n\n @if (_hasTextSuffix) {\n <div class=\"mat-mdc-form-field-text-suffix\" #textSuffixContainer>\n <ng-content select=\"[matTextSuffix]\"></ng-content>\n </div>\n }\n\n @if (_hasIconSuffix) {\n <div class=\"mat-mdc-form-field-icon-suffix\" #iconSuffixContainer>\n <ng-content select=\"[matSuffix], [matIconSuffix]\"></ng-content>\n </div>\n }\n </div>\n\n @if (!_hasOutline()) {\n <div matFormFieldLineRipple></div>\n }\n</div>\n\n<div aria-atomic=\"true\" aria-live=\"polite\"\n class=\"mat-mdc-form-field-subscript-wrapper mat-mdc-form-field-bottom-align\"\n [class.mat-mdc-form-field-subscript-dynamic-size]=\"subscriptSizing === 'dynamic'\"\n>\n @let subscriptMessageType = _getSubscriptMessageType();\n\n @switch (subscriptMessageType) {\n @case ('error') {\n <div class=\"mat-mdc-form-field-error-wrapper\">\n <ng-content select=\"mat-error, [matError]\"></ng-content>\n </div>\n }\n\n @case ('hint') {\n <div class=\"mat-mdc-form-field-hint-wrapper\">\n @if (hintLabel) {\n <mat-hint [id]=\"_hintLabelId\">{{hintLabel}}</mat-hint>\n }\n <ng-content select=\"mat-hint:not([align='end'])\"></ng-content>\n <div class=\"mat-mdc-form-field-hint-spacer\"></div>\n <ng-content select=\"mat-hint[align='end']\"></ng-content>\n </div>\n }\n }\n</div>\n"],"names":["_MatFormFieldControl"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"testing.mjs","sources":["../../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/material/grid-list/testing/grid-tile-harness.ts","../../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/material/grid-list/testing/grid-list-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 {ContentContainerComponentHarness, HarnessPredicate} from '@angular/cdk/testing';\nimport {GridTileHarnessFilters} from './grid-list-harness-filters';\n\n/** Selectors for the various `mat-grid-tile` sections that may contain user content. */\nexport enum MatGridTileSection {\n HEADER = '.mat-grid-tile-header',\n FOOTER = '.mat-grid-tile-footer',\n}\n\n/** Harness for interacting with a standard `MatGridTitle` in tests. */\nexport class MatGridTileHarness extends ContentContainerComponentHarness<MatGridTileSection> {\n /** The selector for the host element of a `MatGridTile` instance. */\n static hostSelector = '.mat-grid-tile';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatGridTileHarness`\n * that meets certain criteria.\n * @param options Options for filtering which dialog instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: GridTileHarnessFilters = {}): HarnessPredicate<MatGridTileHarness> {\n return new HarnessPredicate(MatGridTileHarness, options)\n .addOption('headerText', options.headerText, (harness, pattern) =>\n HarnessPredicate.stringMatches(harness.getHeaderText(), pattern),\n )\n .addOption('footerText', options.footerText, (harness, pattern) =>\n HarnessPredicate.stringMatches(harness.getFooterText(), pattern),\n );\n }\n\n private _header = this.locatorForOptional(MatGridTileSection.HEADER);\n private _footer = this.locatorForOptional(MatGridTileSection.FOOTER);\n private _avatar = this.locatorForOptional('.mat-grid-avatar');\n\n /** Gets the amount of rows that the grid-tile takes up. */\n async getRowspan(): Promise<number> {\n return Number(await (await this.host()).getAttribute('rowspan'));\n }\n\n /** Gets the amount of columns that the grid-tile takes up. */\n async getColspan(): Promise<number> {\n return Number(await (await this.host()).getAttribute('colspan'));\n }\n\n /** Whether the grid-tile has a header. */\n async hasHeader(): Promise<boolean> {\n return (await this._header()) !== null;\n }\n\n /** Whether the grid-tile has a footer. */\n async hasFooter(): Promise<boolean> {\n return (await this._footer()) !== null;\n }\n\n /** Whether the grid-tile has an avatar. */\n async hasAvatar(): Promise<boolean> {\n return (await this._avatar()) !== null;\n }\n\n /** Gets the text of the header if present. */\n async getHeaderText(): Promise<string | null> {\n // For performance reasons, we do not use \"hasHeader\" as\n // we would then need to query twice for the header.\n const headerEl = await this._header();\n return headerEl ? headerEl.text() : null;\n }\n\n /** Gets the text of the footer if present. */\n async getFooterText(): Promise<string | null> {\n // For performance reasons, we do not use \"hasFooter\" as\n // we would then need to query twice for the footer.\n const headerEl = await this._footer();\n return headerEl ? headerEl.text() : null;\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, parallel} from '@angular/cdk/testing';\nimport {ɵTileCoordinator as TileCoordinator} from '../../grid-list';\nimport {GridListHarnessFilters, GridTileHarnessFilters} from './grid-list-harness-filters';\nimport {MatGridTileHarness} from './grid-tile-harness';\n\n/** Harness for interacting with a standard `MatGridList` in tests. */\nexport class MatGridListHarness extends ComponentHarness {\n /** The selector for the host element of a `MatGridList` instance. */\n static hostSelector = '.mat-grid-list';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatGridListHarness`\n * that meets certain criteria.\n * @param options Options for filtering which dialog instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: GridListHarnessFilters = {}): HarnessPredicate<MatGridListHarness> {\n return new HarnessPredicate(MatGridListHarness, options);\n }\n\n /**\n * Tile coordinator that is used by the \"MatGridList\" for computing\n * positions of tiles. We leverage the coordinator to provide an API\n * for retrieving tiles based on visual tile positions.\n */\n private _tileCoordinator = new TileCoordinator();\n\n /** Gets all tiles of the grid-list. */\n async getTiles(filters: GridTileHarnessFilters = {}): Promise<MatGridTileHarness[]> {\n return await this.locatorForAll(MatGridTileHarness.with(filters))();\n }\n\n /** Gets the amount of columns of the grid-list. */\n async getColumns(): Promise<number> {\n return Number(await (await this.host()).getAttribute('cols'));\n }\n\n /**\n * Gets a tile of the grid-list that is located at the given location.\n * @param row Zero-based row index.\n * @param column Zero-based column index.\n */\n async getTileAtPosition({\n row,\n column,\n }: {\n row: number;\n column: number;\n }): Promise<MatGridTileHarness> {\n const [tileHarnesses, columns] = await parallel(() => [this.getTiles(), this.getColumns()]);\n const tileSpans = tileHarnesses.map(t => parallel(() => [t.getColspan(), t.getRowspan()]));\n const tiles = (await parallel(() => tileSpans)).map(([colspan, rowspan]) => ({\n colspan,\n rowspan,\n }));\n // Update the tile coordinator to reflect the current column amount and\n // rendered tiles. We update upon every call of this method since we do not\n // know if tiles have been added, removed or updated (in terms of rowspan/colspan).\n this._tileCoordinator.update(columns, tiles);\n // The tile coordinator respects the colspan and rowspan for calculating the positions\n // of tiles, but it does not create multiple position entries if a tile spans over multiple\n // columns or rows. We want to provide an API where developers can retrieve a tile based on\n // any position that lies within the visual tile boundaries. For example: If a tile spans\n // over two columns, then the same tile should be returned for either column indices.\n for (let i = 0; i < this._tileCoordinator.positions.length; i++) {\n const position = this._tileCoordinator.positions[i];\n const {rowspan, colspan} = tiles[i];\n // Return the tile harness if the given position visually resolves to the tile.\n if (\n column >= position.col &&\n column <= position.col + colspan - 1 &&\n row >= position.row &&\n row <= position.row + rowspan - 1\n ) {\n return tileHarnesses[i];\n }\n }\n throw Error('Could not find tile at given position.');\n }\n}\n"],"names":["TileCoordinator"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"testing.mjs","sources":["../../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/material/icon/testing/icon-harness-filters.ts","../../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/material/icon/testing/icon-harness.ts","../../../../../../darwin_arm64-fastbuild-ST-199a4f3c4e20/bin/src/material/icon/testing/fake-icon-registry.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 {BaseHarnessFilters} from '@angular/cdk/testing';\n\n/** Possible types of icons. */\nexport enum IconType {\n SVG,\n FONT,\n}\n\n/** A set of criteria that can be used to filter a list of `MatIconHarness` instances. */\nexport interface IconHarnessFilters extends BaseHarnessFilters {\n /** Filters based on the typef of the icon. */\n type?: IconType;\n /** Filters based on the name of the icon. */\n name?: string | RegExp;\n /** Filters based on the namespace of the icon. */\n namespace?: string | null | RegExp;\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 {IconHarnessFilters, IconType} from './icon-harness-filters';\n\n/** Harness for interacting with a standard mat-icon in tests. */\nexport class MatIconHarness extends ComponentHarness {\n /** The selector for the host element of a `MatIcon` instance. */\n static hostSelector = '.mat-icon';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatIconHarness` that meets\n * certain criteria.\n * @param options Options for filtering which icon instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: IconHarnessFilters = {}): HarnessPredicate<MatIconHarness> {\n return new HarnessPredicate(MatIconHarness, options)\n .addOption('type', options.type, async (harness, type) => (await harness.getType()) === type)\n .addOption('name', options.name, (harness, text) =>\n HarnessPredicate.stringMatches(harness.getName(), text),\n )\n .addOption('namespace', options.namespace, (harness, text) =>\n HarnessPredicate.stringMatches(harness.getNamespace(), text),\n );\n }\n\n /** Gets the type of the icon. */\n async getType(): Promise<IconType> {\n const type = await (await this.host()).getAttribute('data-mat-icon-type');\n return type === 'svg' ? IconType.SVG : IconType.FONT;\n }\n\n /** Gets the name of the icon. */\n async getName(): Promise<string | null> {\n const host = await this.host();\n const nameFromDom = await host.getAttribute('data-mat-icon-name');\n\n // If we managed to figure out the name from the attribute, use it.\n if (nameFromDom) {\n return nameFromDom;\n }\n\n // Some icons support defining the icon as a ligature.\n // As a fallback, try to extract it from the DOM text.\n if ((await this.getType()) === IconType.FONT) {\n // Other directives may add content to the icon (e.g. `MatBadge`), however only the direct\n // text nodes affect the name of the icon. Exclude all element descendants from the result.\n const text = await host.text({exclude: '*'});\n\n // There are some internal cases where the icon name is wrapped in another node.\n // Fall back to extracting the entire text if we ended up excluding everything above.\n return text.length > 0 ? text : host.text();\n }\n\n return null;\n }\n\n /** Gets the namespace of the icon. */\n async getNamespace(): Promise<string | null> {\n return (await this.host()).getAttribute('data-mat-icon-namespace');\n }\n\n /** Gets whether the icon is inline. */\n async isInline(): Promise<boolean> {\n return (await this.host()).hasClass('mat-icon-inline');\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 {Injectable, NgModule, OnDestroy} from '@angular/core';\nimport {MatIconRegistry} from '../../icon';\nimport {Observable, of as observableOf} from 'rxjs';\n\ntype PublicApi<T> = {\n [K in keyof T]: T[K] extends (...x: any[]) => T ? (...x: any[]) => PublicApi<T> : T[K];\n};\n\n/**\n * A null icon registry that must be imported to allow disabling of custom\n * icons.\n */\n@Injectable()\nexport class FakeMatIconRegistry implements PublicApi<MatIconRegistry>, OnDestroy {\n addSvgIcon(): this {\n return this;\n }\n\n addSvgIconLiteral(): this {\n return this;\n }\n\n addSvgIconInNamespace(): this {\n return this;\n }\n\n addSvgIconLiteralInNamespace(): this {\n return this;\n }\n\n addSvgIconSet(): this {\n return this;\n }\n\n addSvgIconSetLiteral(): this {\n return this;\n }\n\n addSvgIconSetInNamespace(): this {\n return this;\n }\n\n addSvgIconSetLiteralInNamespace(): this {\n return this;\n }\n\n registerFontClassAlias(): this {\n return this;\n }\n\n classNameForFontAlias(alias: string): string {\n return alias;\n }\n\n getDefaultFontSetClass() {\n return ['material-icons'];\n }\n\n getSvgIconFromUrl(): Observable<SVGElement> {\n return observableOf(this._generateEmptySvg());\n }\n\n getNamedSvgIcon(): Observable<SVGElement> {\n return observableOf(this._generateEmptySvg());\n }\n\n setDefaultFontSetClass(): this {\n return this;\n }\n\n addSvgIconResolver(): this {\n return this;\n }\n\n ngOnDestroy() {}\n\n private _generateEmptySvg(): SVGElement {\n const emptySvg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n emptySvg.classList.add('fake-testing-svg');\n // Emulate real icon characteristics from `MatIconRegistry` so size remains consistent in tests.\n emptySvg.setAttribute('fit', '');\n emptySvg.setAttribute('height', '100%');\n emptySvg.setAttribute('width', '100%');\n emptySvg.setAttribute('preserveAspectRatio', 'xMidYMid meet');\n emptySvg.setAttribute('focusable', 'false');\n return emptySvg;\n }\n}\n\n/** Import this module in tests to install the null icon registry. */\n@NgModule({\n providers: [{provide: MatIconRegistry, useClass: FakeMatIconRegistry}],\n})\nexport class MatIconTestingModule {}\n"],"names":["observableOf"],"mappings":"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"}
|