@angular/material 19.0.0-next.9 → 19.0.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/autocomplete/_autocomplete-theme.scss +8 -4
- package/autocomplete/index.d.ts +5 -6
- package/badge/_badge-theme.scss +10 -6
- package/bottom-sheet/_bottom-sheet-theme.scss +8 -4
- package/button/_button-theme.scss +10 -6
- package/button/_fab-theme.scss +10 -6
- package/button/_icon-button-theme.scss +8 -4
- package/button/index.d.ts +1 -1
- package/button-toggle/_button-toggle-theme.scss +11 -6
- package/card/_card-theme.scss +8 -4
- package/card/index.d.ts +2 -3
- package/checkbox/_checkbox-theme.scss +10 -6
- package/chips/_chips-theme.scss +10 -6
- package/core/_core-theme.scss +4 -7
- package/core/_core.scss +2 -5
- package/core/option/_optgroup-theme.scss +8 -4
- package/core/option/_option-theme.scss +10 -6
- package/core/ripple/_ripple-theme.scss +8 -4
- package/core/selection/pseudo-checkbox/_pseudo-checkbox-theme.scss +10 -6
- package/core/theming/_config-validation.scss +4 -4
- package/core/theming/_definition.scss +12 -2
- package/core/tokens/_m3-system.scss +55 -39
- package/datepicker/_datepicker-theme.scss +10 -6
- package/datepicker/index.d.ts +32 -33
- package/dialog/_dialog-theme.scss +8 -4
- package/divider/_divider-theme.scss +8 -4
- package/expansion/_expansion-theme.scss +8 -4
- package/fesm2022/autocomplete/testing.mjs +2 -5
- package/fesm2022/autocomplete/testing.mjs.map +1 -1
- package/fesm2022/autocomplete.mjs +220 -141
- package/fesm2022/autocomplete.mjs.map +1 -1
- package/fesm2022/badge/testing.mjs +2 -5
- package/fesm2022/badge/testing.mjs.map +1 -1
- package/fesm2022/badge.mjs +41 -30
- package/fesm2022/badge.mjs.map +1 -1
- package/fesm2022/bottom-sheet/testing.mjs +1 -1
- package/fesm2022/bottom-sheet/testing.mjs.map +1 -1
- package/fesm2022/bottom-sheet.mjs +76 -54
- package/fesm2022/bottom-sheet.mjs.map +1 -1
- package/fesm2022/button/testing.mjs +2 -2
- package/fesm2022/button/testing.mjs.map +1 -1
- package/fesm2022/button-toggle/testing.mjs +4 -7
- package/fesm2022/button-toggle/testing.mjs.map +1 -1
- package/fesm2022/button-toggle.mjs +78 -40
- package/fesm2022/button-toggle.mjs.map +1 -1
- package/fesm2022/button.mjs +87 -60
- package/fesm2022/button.mjs.map +1 -1
- package/fesm2022/card/testing.mjs +3 -6
- package/fesm2022/card/testing.mjs.map +1 -1
- package/fesm2022/card.mjs +38 -40
- package/fesm2022/card.mjs.map +1 -1
- package/fesm2022/checkbox/testing.mjs +4 -7
- package/fesm2022/checkbox/testing.mjs.map +1 -1
- package/fesm2022/checkbox.mjs +99 -56
- package/fesm2022/checkbox.mjs.map +1 -1
- package/fesm2022/chips/testing.mjs +11 -14
- package/fesm2022/chips/testing.mjs.map +1 -1
- package/fesm2022/chips.mjs +303 -251
- package/fesm2022/chips.mjs.map +1 -1
- package/fesm2022/core/testing.mjs +5 -11
- package/fesm2022/core/testing.mjs.map +1 -1
- package/fesm2022/core.mjs +217 -160
- package/fesm2022/core.mjs.map +1 -1
- package/fesm2022/datepicker/testing.mjs +13 -22
- package/fesm2022/datepicker/testing.mjs.map +1 -1
- package/fesm2022/datepicker.mjs +788 -533
- package/fesm2022/datepicker.mjs.map +1 -1
- package/fesm2022/dialog/testing.mjs +15 -9
- package/fesm2022/dialog/testing.mjs.map +1 -1
- package/fesm2022/dialog.mjs +210 -140
- package/fesm2022/dialog.mjs.map +1 -1
- package/fesm2022/divider/testing.mjs +1 -1
- package/fesm2022/divider/testing.mjs.map +1 -1
- package/fesm2022/divider.mjs +7 -9
- package/fesm2022/divider.mjs.map +1 -1
- package/fesm2022/expansion/testing.mjs +7 -10
- package/fesm2022/expansion/testing.mjs.map +1 -1
- package/fesm2022/expansion.mjs +76 -65
- package/fesm2022/expansion.mjs.map +1 -1
- package/fesm2022/form-field/testing.mjs +12 -15
- package/fesm2022/form-field/testing.mjs.map +1 -1
- package/fesm2022/form-field.mjs +165 -111
- package/fesm2022/form-field.mjs.map +1 -1
- package/fesm2022/grid-list/testing.mjs +11 -17
- package/fesm2022/grid-list/testing.mjs.map +1 -1
- package/fesm2022/grid-list.mjs +65 -43
- package/fesm2022/grid-list.mjs.map +1 -1
- package/fesm2022/icon/testing.mjs +6 -6
- package/fesm2022/icon/testing.mjs.map +1 -1
- package/fesm2022/icon.mjs +62 -42
- package/fesm2022/icon.mjs.map +1 -1
- package/fesm2022/input/testing.mjs +3 -3
- package/fesm2022/input/testing.mjs.map +1 -1
- package/fesm2022/input.mjs +101 -69
- package/fesm2022/input.mjs.map +1 -1
- package/fesm2022/list/testing.mjs +21 -38
- package/fesm2022/list/testing.mjs.map +1 -1
- package/fesm2022/list.mjs +175 -164
- package/fesm2022/list.mjs.map +1 -1
- package/fesm2022/menu/testing.mjs +3 -6
- package/fesm2022/menu/testing.mjs.map +1 -1
- package/fesm2022/menu.mjs +171 -118
- package/fesm2022/menu.mjs.map +1 -1
- package/fesm2022/paginator/testing.mjs +10 -13
- package/fesm2022/paginator/testing.mjs.map +1 -1
- package/fesm2022/paginator.mjs +79 -54
- package/fesm2022/paginator.mjs.map +1 -1
- package/fesm2022/progress-bar/testing.mjs +1 -1
- package/fesm2022/progress-bar/testing.mjs.map +1 -1
- package/fesm2022/progress-bar.mjs +33 -32
- package/fesm2022/progress-bar.mjs.map +1 -1
- package/fesm2022/progress-spinner/testing.mjs +1 -1
- package/fesm2022/progress-spinner/testing.mjs.map +1 -1
- package/fesm2022/progress-spinner.mjs +25 -11
- package/fesm2022/progress-spinner.mjs.map +1 -1
- package/fesm2022/radio/testing.mjs +6 -12
- package/fesm2022/radio/testing.mjs.map +1 -1
- package/fesm2022/radio.mjs +119 -82
- package/fesm2022/radio.mjs.map +1 -1
- package/fesm2022/select/testing.mjs +6 -9
- package/fesm2022/select/testing.mjs.map +1 -1
- package/fesm2022/select.mjs +215 -177
- package/fesm2022/select.mjs.map +1 -1
- package/fesm2022/sidenav/testing.mjs +6 -6
- package/fesm2022/sidenav/testing.mjs.map +1 -1
- package/fesm2022/sidenav.mjs +125 -112
- package/fesm2022/sidenav.mjs.map +1 -1
- package/fesm2022/slide-toggle/testing.mjs +3 -6
- package/fesm2022/slide-toggle/testing.mjs.map +1 -1
- package/fesm2022/slide-toggle.mjs +72 -41
- package/fesm2022/slide-toggle.mjs.map +1 -1
- package/fesm2022/slider/testing.mjs +2 -2
- package/fesm2022/slider/testing.mjs.map +1 -1
- package/fesm2022/slider.mjs +255 -185
- package/fesm2022/slider.mjs.map +1 -1
- package/fesm2022/snack-bar/testing.mjs +4 -7
- package/fesm2022/snack-bar/testing.mjs.map +1 -1
- package/fesm2022/snack-bar.mjs +133 -98
- package/fesm2022/snack-bar.mjs.map +1 -1
- package/fesm2022/sort/testing.mjs +3 -6
- package/fesm2022/sort/testing.mjs.map +1 -1
- package/fesm2022/sort.mjs +89 -68
- package/fesm2022/sort.mjs.map +1 -1
- package/fesm2022/stepper/testing.mjs +4 -4
- package/fesm2022/stepper/testing.mjs.map +1 -1
- package/fesm2022/stepper.mjs +133 -95
- package/fesm2022/stepper.mjs.map +1 -1
- package/fesm2022/table/testing.mjs +13 -25
- package/fesm2022/table/testing.mjs.map +1 -1
- package/fesm2022/table.mjs +164 -159
- package/fesm2022/table.mjs.map +1 -1
- package/fesm2022/tabs/testing.mjs +5 -5
- package/fesm2022/tabs/testing.mjs.map +1 -1
- package/fesm2022/tabs.mjs +308 -225
- package/fesm2022/tabs.mjs.map +1 -1
- package/fesm2022/timepicker/testing.mjs +7 -16
- package/fesm2022/timepicker/testing.mjs.map +1 -1
- package/fesm2022/timepicker.mjs +152 -146
- package/fesm2022/timepicker.mjs.map +1 -1
- package/fesm2022/toolbar/testing.mjs +2 -5
- package/fesm2022/toolbar/testing.mjs.map +1 -1
- package/fesm2022/toolbar.mjs +22 -12
- package/fesm2022/toolbar.mjs.map +1 -1
- package/fesm2022/tooltip/testing.mjs +6 -9
- package/fesm2022/tooltip/testing.mjs.map +1 -1
- package/fesm2022/tooltip.mjs +93 -69
- package/fesm2022/tooltip.mjs.map +1 -1
- package/fesm2022/tree/testing.mjs +3 -6
- package/fesm2022/tree/testing.mjs.map +1 -1
- package/fesm2022/tree.mjs +48 -46
- package/fesm2022/tree.mjs.map +1 -1
- package/form-field/_form-field-theme.scss +9 -5
- package/form-field/index.d.ts +8 -9
- package/grid-list/_grid-list-theme.scss +8 -4
- package/icon/_icon-theme.scss +10 -6
- package/input/_input-theme.scss +8 -4
- package/list/_list-theme.scss +8 -4
- package/list/index.d.ts +20 -21
- package/menu/_menu-theme.scss +8 -4
- package/menu/index.d.ts +8 -9
- package/package.json +2 -2
- package/paginator/_paginator-theme.scss +8 -4
- package/prebuilt-themes/azure-blue.css +1 -1
- package/prebuilt-themes/cyan-orange.css +1 -1
- package/prebuilt-themes/deeppurple-amber.css +1 -1
- package/prebuilt-themes/indigo-pink.css +1 -1
- package/prebuilt-themes/magenta-violet.css +1 -1
- package/prebuilt-themes/pink-bluegrey.css +1 -1
- package/prebuilt-themes/purple-green.css +1 -1
- package/prebuilt-themes/rose-red.css +1 -1
- package/progress-bar/_progress-bar-theme.scss +11 -9
- package/progress-spinner/_progress-spinner-theme.scss +11 -9
- package/progress-spinner/index.d.ts +3 -4
- package/radio/_radio-theme.scss +10 -6
- package/radio/index.d.ts +2 -3
- package/schematics/ng-add/index.js +1 -1
- package/schematics/ng-add/index.mjs +1 -1
- package/schematics/ng-add/theming/create-custom-theme.js +1 -6
- package/schematics/ng-add/theming/create-custom-theme.mjs +1 -6
- package/schematics/ng-generate/theme-color/index_bundled.js +35 -9
- package/schematics/ng-generate/theme-color/index_bundled.js.map +2 -2
- package/schematics/ng-update/index_bundled.js +6 -1
- package/schematics/ng-update/index_bundled.js.map +1 -1
- package/select/_select-theme.scss +10 -6
- package/select/index.d.ts +6 -7
- package/sidenav/_sidenav-theme.scss +8 -4
- package/slide-toggle/_slide-toggle-theme.scss +10 -6
- package/slider/_slider-theme.scss +10 -6
- package/snack-bar/_snack-bar-theme.scss +10 -6
- package/sort/_sort-theme.scss +8 -4
- package/stepper/_stepper-theme.scss +10 -6
- package/stepper/index.d.ts +14 -15
- package/table/_table-theme.scss +8 -4
- package/tabs/_tabs-theme.scss +10 -6
- package/timepicker/_timepicker-theme.scss +10 -6
- package/toolbar/_toolbar-theme.scss +10 -6
- package/tooltip/_tooltip-theme.scss +8 -4
- package/tooltip/index.d.ts +5 -6
- package/tree/_tree-theme.scss +8 -4
|
@@ -15,14 +15,8 @@ var MatDialogSection;
|
|
|
15
15
|
class MatDialogHarness
|
|
16
16
|
// @breaking-change 14.0.0 change generic type to MatDialogSection.
|
|
17
17
|
extends ContentContainerComponentHarness {
|
|
18
|
-
constructor() {
|
|
19
|
-
super(...arguments);
|
|
20
|
-
this._title = this.locatorForOptional(MatDialogSection.TITLE);
|
|
21
|
-
this._content = this.locatorForOptional(MatDialogSection.CONTENT);
|
|
22
|
-
this._actions = this.locatorForOptional(MatDialogSection.ACTIONS);
|
|
23
|
-
}
|
|
24
18
|
/** The selector for the host element of a `MatDialog` instance. */
|
|
25
|
-
static
|
|
19
|
+
static hostSelector = '.mat-mdc-dialog-container';
|
|
26
20
|
/**
|
|
27
21
|
* Gets a `HarnessPredicate` that can be used to search for a dialog with specific attributes.
|
|
28
22
|
* @param options Options for filtering which dialog instances are considered a match.
|
|
@@ -31,6 +25,9 @@ class MatDialogHarness
|
|
|
31
25
|
static with(options = {}) {
|
|
32
26
|
return new HarnessPredicate(this, options);
|
|
33
27
|
}
|
|
28
|
+
_title = this.locatorForOptional(MatDialogSection.TITLE);
|
|
29
|
+
_content = this.locatorForOptional(MatDialogSection.CONTENT);
|
|
30
|
+
_actions = this.locatorForOptional(MatDialogSection.ACTIONS);
|
|
34
31
|
/** Gets the id of the dialog. */
|
|
35
32
|
async getId() {
|
|
36
33
|
const id = await (await this.host()).getAttribute('id');
|
|
@@ -84,6 +81,17 @@ var MatTestDialogOpener_1;
|
|
|
84
81
|
/** Test component that immediately opens a dialog when bootstrapped. */
|
|
85
82
|
let MatTestDialogOpener = class MatTestDialogOpener {
|
|
86
83
|
static { MatTestDialogOpener_1 = this; }
|
|
84
|
+
dialog = inject(MatDialog);
|
|
85
|
+
/** Component that should be opened with the MatDialog `open` method. */
|
|
86
|
+
static component;
|
|
87
|
+
/** Config that should be provided to the MatDialog `open` method. */
|
|
88
|
+
static config;
|
|
89
|
+
/** MatDialogRef returned from the MatDialog `open` method. */
|
|
90
|
+
dialogRef;
|
|
91
|
+
/** Data passed to the `MatDialog` close method. */
|
|
92
|
+
closedResult;
|
|
93
|
+
_afterClosedSubscription;
|
|
94
|
+
_ngZone = inject(NgZone);
|
|
87
95
|
/** Static method that prepares this class to open the provided component. */
|
|
88
96
|
static withComponent(component, config) {
|
|
89
97
|
MatTestDialogOpener_1.component = component;
|
|
@@ -91,8 +99,6 @@ let MatTestDialogOpener = class MatTestDialogOpener {
|
|
|
91
99
|
return MatTestDialogOpener_1;
|
|
92
100
|
}
|
|
93
101
|
constructor() {
|
|
94
|
-
this.dialog = inject(MatDialog);
|
|
95
|
-
this._ngZone = inject(NgZone);
|
|
96
102
|
if (!MatTestDialogOpener_1.component) {
|
|
97
103
|
throw new Error(`MatTestDialogOpener does not have a component provided.`);
|
|
98
104
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing.mjs","sources":["../../../../../../../src/material/dialog/testing/dialog-harness.ts","../../../../../../../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 '@angular/material/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 te 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 '@angular/material/dialog';\nimport {NoopAnimationsModule} from '@angular/platform-browser/animations';\nimport {Subscription} from 'rxjs';\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 this.dialog.open<T, R>(\n MatTestDialogOpener.component as ComponentType<T>,\n MatTestDialogOpener.config || {},\n ),\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, NoopAnimationsModule, MatTestDialogOpener],\n})\nexport class MatTestDialogOpenerModule {}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"testing.mjs","sources":["../../../../../../../src/material/dialog/testing/dialog-harness.ts","../../../../../../../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 '@angular/material/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 te 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 '@angular/material/dialog';\nimport {NoopAnimationsModule} from '@angular/platform-browser/animations';\nimport {Subscription} from 'rxjs';\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 this.dialog.open<T, R>(\n MatTestDialogOpener.component as ComponentType<T>,\n MatTestDialogOpener.config || {},\n ),\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, NoopAnimationsModule, MatTestDialogOpener],\n})\nexport class MatTestDialogOpenerModule {}\n"],"names":[],"mappings":"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"}
|
package/fesm2022/dialog.mjs
CHANGED
|
@@ -16,52 +16,95 @@ import { trigger, state, style, transition, group, animate, query, animateChild
|
|
|
16
16
|
* Configuration for opening a modal dialog with the MatDialog service.
|
|
17
17
|
*/
|
|
18
18
|
class MatDialogConfig {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
19
|
+
/**
|
|
20
|
+
* Where the attached component should live in Angular's *logical* component tree.
|
|
21
|
+
* This affects what is available for injection and the change detection order for the
|
|
22
|
+
* component instantiated inside of the dialog. This does not affect where the dialog
|
|
23
|
+
* content will be rendered.
|
|
24
|
+
*/
|
|
25
|
+
viewContainerRef;
|
|
26
|
+
/**
|
|
27
|
+
* Injector used for the instantiation of the component to be attached. If provided,
|
|
28
|
+
* takes precedence over the injector indirectly provided by `ViewContainerRef`.
|
|
29
|
+
*/
|
|
30
|
+
injector;
|
|
31
|
+
/** ID for the dialog. If omitted, a unique one will be generated. */
|
|
32
|
+
id;
|
|
33
|
+
/** The ARIA role of the dialog element. */
|
|
34
|
+
role = 'dialog';
|
|
35
|
+
/** Custom class for the overlay pane. */
|
|
36
|
+
panelClass = '';
|
|
37
|
+
/** Whether the dialog has a backdrop. */
|
|
38
|
+
hasBackdrop = true;
|
|
39
|
+
/** Custom class for the backdrop. */
|
|
40
|
+
backdropClass = '';
|
|
41
|
+
/** Whether the user can use escape or clicking on the backdrop to close the modal. */
|
|
42
|
+
disableClose = false;
|
|
43
|
+
/** Width of the dialog. */
|
|
44
|
+
width = '';
|
|
45
|
+
/** Height of the dialog. */
|
|
46
|
+
height = '';
|
|
47
|
+
/** Min-width of the dialog. If a number is provided, assumes pixel units. */
|
|
48
|
+
minWidth;
|
|
49
|
+
/** Min-height of the dialog. If a number is provided, assumes pixel units. */
|
|
50
|
+
minHeight;
|
|
51
|
+
/** Max-width of the dialog. If a number is provided, assumes pixel units. Defaults to 80vw. */
|
|
52
|
+
maxWidth;
|
|
53
|
+
/** Max-height of the dialog. If a number is provided, assumes pixel units. */
|
|
54
|
+
maxHeight;
|
|
55
|
+
/** Position overrides. */
|
|
56
|
+
position;
|
|
57
|
+
/** Data being injected into the child component. */
|
|
58
|
+
data = null;
|
|
59
|
+
/** Layout direction for the dialog's content. */
|
|
60
|
+
direction;
|
|
61
|
+
/** ID of the element that describes the dialog. */
|
|
62
|
+
ariaDescribedBy = null;
|
|
63
|
+
/** ID of the element that labels the dialog. */
|
|
64
|
+
ariaLabelledBy = null;
|
|
65
|
+
/** Aria label to assign to the dialog element. */
|
|
66
|
+
ariaLabel = null;
|
|
67
|
+
/** Whether this is a modal dialog. Used to set the `aria-modal` attribute. */
|
|
68
|
+
ariaModal = true;
|
|
69
|
+
/**
|
|
70
|
+
* Where the dialog should focus on open.
|
|
71
|
+
* @breaking-change 14.0.0 Remove boolean option from autoFocus. Use string or
|
|
72
|
+
* AutoFocusTarget instead.
|
|
73
|
+
*/
|
|
74
|
+
autoFocus = 'first-tabbable';
|
|
75
|
+
/**
|
|
76
|
+
* Whether the dialog should restore focus to the
|
|
77
|
+
* previously-focused element, after it's closed.
|
|
78
|
+
*/
|
|
79
|
+
restoreFocus = true;
|
|
80
|
+
/** Whether to wait for the opening animation to finish before trapping focus. */
|
|
81
|
+
delayFocusTrap = true;
|
|
82
|
+
/** Scroll strategy to be used for the dialog. */
|
|
83
|
+
scrollStrategy;
|
|
84
|
+
/**
|
|
85
|
+
* Whether the dialog should close when the user goes backwards/forwards in history.
|
|
86
|
+
* Note that this usually doesn't include clicking on links (unless the user is using
|
|
87
|
+
* the `HashLocationStrategy`).
|
|
88
|
+
*/
|
|
89
|
+
closeOnNavigation = true;
|
|
90
|
+
/**
|
|
91
|
+
* Alternate `ComponentFactoryResolver` to use when resolving the associated component.
|
|
92
|
+
* @deprecated No longer used. Will be removed.
|
|
93
|
+
* @breaking-change 20.0.0
|
|
94
|
+
*/
|
|
95
|
+
componentFactoryResolver;
|
|
96
|
+
/**
|
|
97
|
+
* Duration of the enter animation in ms.
|
|
98
|
+
* Should be a number, string type is deprecated.
|
|
99
|
+
* @breaking-change 17.0.0 Remove string signature.
|
|
100
|
+
*/
|
|
101
|
+
enterAnimationDuration;
|
|
102
|
+
/**
|
|
103
|
+
* Duration of the exit animation in ms.
|
|
104
|
+
* Should be a number, string type is deprecated.
|
|
105
|
+
* @breaking-change 17.0.0 Remove string signature.
|
|
106
|
+
*/
|
|
107
|
+
exitAnimationDuration;
|
|
65
108
|
}
|
|
66
109
|
|
|
67
110
|
/** Class added when the dialog is open. */
|
|
@@ -75,44 +118,25 @@ const OPEN_ANIMATION_DURATION = 150;
|
|
|
75
118
|
/** Duration of the closing animation in milliseconds. */
|
|
76
119
|
const CLOSE_ANIMATION_DURATION = 75;
|
|
77
120
|
class MatDialogContainer extends CdkDialogContainer {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
/** Current timer for dialog animations. */
|
|
98
|
-
this._animationTimer = null;
|
|
99
|
-
/**
|
|
100
|
-
* Completes the dialog open by clearing potential animation classes, trapping
|
|
101
|
-
* focus and emitting an opened event.
|
|
102
|
-
*/
|
|
103
|
-
this._finishDialogOpen = () => {
|
|
104
|
-
this._clearAnimationClasses();
|
|
105
|
-
this._openAnimationDone(this._enterAnimationDuration);
|
|
106
|
-
};
|
|
107
|
-
/**
|
|
108
|
-
* Completes the dialog close by clearing potential animation classes, restoring
|
|
109
|
-
* focus and emitting a closed event.
|
|
110
|
-
*/
|
|
111
|
-
this._finishDialogClose = () => {
|
|
112
|
-
this._clearAnimationClasses();
|
|
113
|
-
this._animationStateChanged.emit({ state: 'closed', totalTime: this._exitAnimationDuration });
|
|
114
|
-
};
|
|
115
|
-
}
|
|
121
|
+
_animationMode = inject(ANIMATION_MODULE_TYPE, { optional: true });
|
|
122
|
+
/** Emits when an animation state changes. */
|
|
123
|
+
_animationStateChanged = new EventEmitter();
|
|
124
|
+
/** Whether animations are enabled. */
|
|
125
|
+
_animationsEnabled = this._animationMode !== 'NoopAnimations';
|
|
126
|
+
/** Number of actions projected in the dialog. */
|
|
127
|
+
_actionSectionCount = 0;
|
|
128
|
+
/** Host element of the dialog container component. */
|
|
129
|
+
_hostElement = this._elementRef.nativeElement;
|
|
130
|
+
/** Duration of the dialog open animation. */
|
|
131
|
+
_enterAnimationDuration = this._animationsEnabled
|
|
132
|
+
? parseCssTime(this._config.enterAnimationDuration) ?? OPEN_ANIMATION_DURATION
|
|
133
|
+
: 0;
|
|
134
|
+
/** Duration of the dialog close animation. */
|
|
135
|
+
_exitAnimationDuration = this._animationsEnabled
|
|
136
|
+
? parseCssTime(this._config.exitAnimationDuration) ?? CLOSE_ANIMATION_DURATION
|
|
137
|
+
: 0;
|
|
138
|
+
/** Current timer for dialog animations. */
|
|
139
|
+
_animationTimer = null;
|
|
116
140
|
_contentAttached() {
|
|
117
141
|
// Delegate to the original dialog-container initialization (i.e. saving the
|
|
118
142
|
// previous element, setting up the focus trap and moving focus to the container).
|
|
@@ -187,6 +211,22 @@ class MatDialogContainer extends CdkDialogContainer {
|
|
|
187
211
|
this._actionSectionCount += delta;
|
|
188
212
|
this._changeDetectorRef.markForCheck();
|
|
189
213
|
}
|
|
214
|
+
/**
|
|
215
|
+
* Completes the dialog open by clearing potential animation classes, trapping
|
|
216
|
+
* focus and emitting an opened event.
|
|
217
|
+
*/
|
|
218
|
+
_finishDialogOpen = () => {
|
|
219
|
+
this._clearAnimationClasses();
|
|
220
|
+
this._openAnimationDone(this._enterAnimationDuration);
|
|
221
|
+
};
|
|
222
|
+
/**
|
|
223
|
+
* Completes the dialog close by clearing potential animation classes, restoring
|
|
224
|
+
* focus and emitting a closed event.
|
|
225
|
+
*/
|
|
226
|
+
_finishDialogClose = () => {
|
|
227
|
+
this._clearAnimationClasses();
|
|
228
|
+
this._animationStateChanged.emit({ state: 'closed', totalTime: this._exitAnimationDuration });
|
|
229
|
+
};
|
|
190
230
|
/** Clears all dialog animation classes. */
|
|
191
231
|
_clearAnimationClasses() {
|
|
192
232
|
this._hostElement.classList.remove(OPENING_CLASS, CLOSING_CLASS);
|
|
@@ -244,8 +284,8 @@ class MatDialogContainer extends CdkDialogContainer {
|
|
|
244
284
|
ref.location.nativeElement.classList.add('mat-mdc-dialog-component-host');
|
|
245
285
|
return ref;
|
|
246
286
|
}
|
|
247
|
-
static
|
|
248
|
-
static
|
|
287
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDialogContainer, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
288
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.0-next.10", type: MatDialogContainer, isStandalone: true, selector: "mat-dialog-container", host: { attributes: { "tabindex": "-1" }, properties: { "attr.aria-modal": "_config.ariaModal", "id": "_config.id", "attr.role": "_config.role", "attr.aria-labelledby": "_config.ariaLabel ? null : _ariaLabelledByQueue[0]", "attr.aria-label": "_config.ariaLabel", "attr.aria-describedby": "_config.ariaDescribedBy || null", "class._mat-animation-noopable": "!_animationsEnabled", "class.mat-mdc-dialog-container-with-actions": "_actionSectionCount > 0" }, classAttribute: "mat-mdc-dialog-container mdc-dialog" }, usesInheritance: true, ngImport: i0, template: "<div class=\"mat-mdc-dialog-inner-container mdc-dialog__container\">\n <div class=\"mat-mdc-dialog-surface mdc-dialog__surface\">\n <ng-template cdkPortalOutlet />\n </div>\n</div>\n", styles: [".mat-mdc-dialog-container{width:100%;height:100%;display:block;box-sizing:border-box;max-height:inherit;min-height:inherit;min-width:inherit;max-width:inherit;outline:0}.cdk-overlay-pane.mat-mdc-dialog-panel{max-width:var(--mat-dialog-container-max-width, 560px);min-width:var(--mat-dialog-container-min-width, 280px)}@media(max-width: 599px){.cdk-overlay-pane.mat-mdc-dialog-panel{max-width:var(--mat-dialog-container-small-max-width, calc(100vw - 32px))}}.mat-mdc-dialog-inner-container{display:flex;flex-direction:row;align-items:center;justify-content:space-around;box-sizing:border-box;height:100%;opacity:0;transition:opacity linear var(--mat-dialog-transition-duration, 0ms);max-height:inherit;min-height:inherit;min-width:inherit;max-width:inherit}.mdc-dialog--closing .mat-mdc-dialog-inner-container{transition:opacity 75ms linear;transform:none}.mdc-dialog--open .mat-mdc-dialog-inner-container{opacity:1}._mat-animation-noopable .mat-mdc-dialog-inner-container{transition:none}.mat-mdc-dialog-surface{display:flex;flex-direction:column;flex-grow:0;flex-shrink:0;box-sizing:border-box;width:100%;height:100%;position:relative;overflow-y:auto;outline:0;transform:scale(0.8);transition:transform var(--mat-dialog-transition-duration, 0ms) cubic-bezier(0, 0, 0.2, 1);max-height:inherit;min-height:inherit;min-width:inherit;max-width:inherit;box-shadow:var(--mat-dialog-container-elevation-shadow, none);border-radius:var(--mdc-dialog-container-shape, var(--mat-sys-corner-extra-large, 4px));background-color:var(--mdc-dialog-container-color, var(--mat-sys-surface, white))}[dir=rtl] .mat-mdc-dialog-surface{text-align:right}.mdc-dialog--open .mat-mdc-dialog-surface,.mdc-dialog--closing .mat-mdc-dialog-surface{transform:none}._mat-animation-noopable .mat-mdc-dialog-surface{transition:none}.mat-mdc-dialog-surface::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:2px solid rgba(0,0,0,0);border-radius:inherit;content:\"\";pointer-events:none}.mat-mdc-dialog-title{display:block;position:relative;flex-shrink:0;box-sizing:border-box;margin:0 0 1px;padding:var(--mat-dialog-headline-padding, 6px 24px 13px)}.mat-mdc-dialog-title::before{display:inline-block;width:0;height:40px;content:\"\";vertical-align:0}[dir=rtl] .mat-mdc-dialog-title{text-align:right}.mat-mdc-dialog-container .mat-mdc-dialog-title{color:var(--mdc-dialog-subhead-color, var(--mat-sys-on-surface, rgba(0, 0, 0, 0.87)));font-family:var(--mdc-dialog-subhead-font, var(--mat-sys-headline-small-font, inherit));line-height:var(--mdc-dialog-subhead-line-height, var(--mat-sys-headline-small-line-height, 1.5rem));font-size:var(--mdc-dialog-subhead-size, var(--mat-sys-headline-small-size, 1rem));font-weight:var(--mdc-dialog-subhead-weight, var(--mat-sys-headline-small-weight, 400));letter-spacing:var(--mdc-dialog-subhead-tracking, var(--mat-sys-headline-small-tracking, 0.03125em))}.mat-mdc-dialog-content{display:block;flex-grow:1;box-sizing:border-box;margin:0;overflow:auto;max-height:65vh}.mat-mdc-dialog-content>:first-child{margin-top:0}.mat-mdc-dialog-content>:last-child{margin-bottom:0}.mat-mdc-dialog-container .mat-mdc-dialog-content{color:var(--mdc-dialog-supporting-text-color, var(--mat-sys-on-surface-variant, rgba(0, 0, 0, 0.6)));font-family:var(--mdc-dialog-supporting-text-font, var(--mat-sys-body-medium-font, inherit));line-height:var(--mdc-dialog-supporting-text-line-height, var(--mat-sys-body-medium-line-height, 1.5rem));font-size:var(--mdc-dialog-supporting-text-size, var(--mat-sys-body-medium-size, 1rem));font-weight:var(--mdc-dialog-supporting-text-weight, var(--mat-sys-body-medium-weight, 400));letter-spacing:var(--mdc-dialog-supporting-text-tracking, var(--mat-sys-body-medium-tracking, 0.03125em))}.mat-mdc-dialog-container .mat-mdc-dialog-content{padding:var(--mat-dialog-content-padding, 20px 24px)}.mat-mdc-dialog-container-with-actions .mat-mdc-dialog-content{padding:var(--mat-dialog-with-actions-content-padding, 20px 24px 0)}.mat-mdc-dialog-container .mat-mdc-dialog-title+.mat-mdc-dialog-content{padding-top:0}.mat-mdc-dialog-actions{display:flex;position:relative;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;box-sizing:border-box;min-height:52px;margin:0;padding:8px;border-top:1px solid rgba(0,0,0,0);padding:var(--mat-dialog-actions-padding, 16px 24px);justify-content:var(--mat-dialog-actions-alignment, flex-end)}@media(forced-colors: active){.mat-mdc-dialog-actions{border-top-color:CanvasText}}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-start,.mat-mdc-dialog-actions[align=start]{justify-content:start}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-center,.mat-mdc-dialog-actions[align=center]{justify-content:center}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-end,.mat-mdc-dialog-actions[align=end]{justify-content:flex-end}.mat-mdc-dialog-actions .mat-button-base+.mat-button-base,.mat-mdc-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:8px}[dir=rtl] .mat-mdc-dialog-actions .mat-button-base+.mat-button-base,[dir=rtl] .mat-mdc-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:0;margin-right:8px}.mat-mdc-dialog-component-host{display:contents}"], dependencies: [{ kind: "directive", type: CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });
|
|
249
289
|
}
|
|
250
290
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDialogContainer, decorators: [{
|
|
251
291
|
type: Component,
|
|
@@ -298,15 +338,38 @@ var MatDialogState;
|
|
|
298
338
|
* Reference to a dialog opened via the MatDialog service.
|
|
299
339
|
*/
|
|
300
340
|
class MatDialogRef {
|
|
341
|
+
_ref;
|
|
342
|
+
_containerInstance;
|
|
343
|
+
/** The instance of component opened into the dialog. */
|
|
344
|
+
componentInstance;
|
|
345
|
+
/**
|
|
346
|
+
* `ComponentRef` of the component opened into the dialog. Will be
|
|
347
|
+
* null when the dialog is opened using a `TemplateRef`.
|
|
348
|
+
*/
|
|
349
|
+
componentRef;
|
|
350
|
+
/** Whether the user is allowed to close the dialog. */
|
|
351
|
+
disableClose;
|
|
352
|
+
/** Unique ID for the dialog. */
|
|
353
|
+
id;
|
|
354
|
+
/** Subject for notifying the user that the dialog has finished opening. */
|
|
355
|
+
_afterOpened = new Subject();
|
|
356
|
+
/** Subject for notifying the user that the dialog has started closing. */
|
|
357
|
+
_beforeClosed = new Subject();
|
|
358
|
+
/** Result to be passed to afterClosed. */
|
|
359
|
+
_result;
|
|
360
|
+
/** Handle to the timeout that's running as a fallback in case the exit animation doesn't fire. */
|
|
361
|
+
_closeFallbackTimeout;
|
|
362
|
+
/** Current state of the dialog. */
|
|
363
|
+
_state = MatDialogState.OPEN;
|
|
364
|
+
// TODO(crisbeto): we shouldn't have to declare this property, because `DialogRef.close`
|
|
365
|
+
// already has a second `options` parameter that we can use. The problem is that internal tests
|
|
366
|
+
// have assertions like `expect(MatDialogRef.close).toHaveBeenCalledWith(foo)` which will break,
|
|
367
|
+
// because it'll be called with two arguments by things like `MatDialogClose`.
|
|
368
|
+
/** Interaction that caused the dialog to close. */
|
|
369
|
+
_closeInteractionType;
|
|
301
370
|
constructor(_ref, config, _containerInstance) {
|
|
302
371
|
this._ref = _ref;
|
|
303
372
|
this._containerInstance = _containerInstance;
|
|
304
|
-
/** Subject for notifying the user that the dialog has finished opening. */
|
|
305
|
-
this._afterOpened = new Subject();
|
|
306
|
-
/** Subject for notifying the user that the dialog has started closing. */
|
|
307
|
-
this._beforeClosed = new Subject();
|
|
308
|
-
/** Current state of the dialog. */
|
|
309
|
-
this._state = MatDialogState.OPEN;
|
|
310
373
|
this.disableClose = config.disableClose;
|
|
311
374
|
this.id = _ref.id;
|
|
312
375
|
// Used to target panels specifically tied to dialogs.
|
|
@@ -491,6 +554,18 @@ let uniqueId = 0;
|
|
|
491
554
|
* Service to open Material Design modal dialogs.
|
|
492
555
|
*/
|
|
493
556
|
class MatDialog {
|
|
557
|
+
_overlay = inject(Overlay);
|
|
558
|
+
_defaultOptions = inject(MAT_DIALOG_DEFAULT_OPTIONS, { optional: true });
|
|
559
|
+
_scrollStrategy = inject(MAT_DIALOG_SCROLL_STRATEGY);
|
|
560
|
+
_parentDialog = inject(MatDialog, { optional: true, skipSelf: true });
|
|
561
|
+
_dialog = inject(Dialog);
|
|
562
|
+
_openDialogsAtThisLevel = [];
|
|
563
|
+
_afterAllClosedAtThisLevel = new Subject();
|
|
564
|
+
_afterOpenedAtThisLevel = new Subject();
|
|
565
|
+
dialogConfigClass = MatDialogConfig;
|
|
566
|
+
_dialogRefConstructor;
|
|
567
|
+
_dialogContainerType;
|
|
568
|
+
_dialogDataToken;
|
|
494
569
|
/** Keeps track of the currently-open dialogs. */
|
|
495
570
|
get openDialogs() {
|
|
496
571
|
return this._parentDialog ? this._parentDialog.openDialogs : this._openDialogsAtThisLevel;
|
|
@@ -503,23 +578,14 @@ class MatDialog {
|
|
|
503
578
|
const parent = this._parentDialog;
|
|
504
579
|
return parent ? parent._getAfterAllClosed() : this._afterAllClosedAtThisLevel;
|
|
505
580
|
}
|
|
581
|
+
/**
|
|
582
|
+
* Stream that emits when all open dialog have finished closing.
|
|
583
|
+
* Will emit on subscribe if there are no open dialogs to begin with.
|
|
584
|
+
*/
|
|
585
|
+
afterAllClosed = defer(() => this.openDialogs.length
|
|
586
|
+
? this._getAfterAllClosed()
|
|
587
|
+
: this._getAfterAllClosed().pipe(startWith(undefined)));
|
|
506
588
|
constructor() {
|
|
507
|
-
this._overlay = inject(Overlay);
|
|
508
|
-
this._defaultOptions = inject(MAT_DIALOG_DEFAULT_OPTIONS, { optional: true });
|
|
509
|
-
this._scrollStrategy = inject(MAT_DIALOG_SCROLL_STRATEGY);
|
|
510
|
-
this._parentDialog = inject(MatDialog, { optional: true, skipSelf: true });
|
|
511
|
-
this._dialog = inject(Dialog);
|
|
512
|
-
this._openDialogsAtThisLevel = [];
|
|
513
|
-
this._afterAllClosedAtThisLevel = new Subject();
|
|
514
|
-
this._afterOpenedAtThisLevel = new Subject();
|
|
515
|
-
this.dialogConfigClass = MatDialogConfig;
|
|
516
|
-
/**
|
|
517
|
-
* Stream that emits when all open dialog have finished closing.
|
|
518
|
-
* Will emit on subscribe if there are no open dialogs to begin with.
|
|
519
|
-
*/
|
|
520
|
-
this.afterAllClosed = defer(() => this.openDialogs.length
|
|
521
|
-
? this._getAfterAllClosed()
|
|
522
|
-
: this._getAfterAllClosed().pipe(startWith(undefined)));
|
|
523
589
|
this._dialogRefConstructor = MatDialogRef;
|
|
524
590
|
this._dialogContainerType = MatDialogContainer;
|
|
525
591
|
this._dialogDataToken = MAT_DIALOG_DATA;
|
|
@@ -605,8 +671,8 @@ class MatDialog {
|
|
|
605
671
|
dialogs[i].close();
|
|
606
672
|
}
|
|
607
673
|
}
|
|
608
|
-
static
|
|
609
|
-
static
|
|
674
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDialog, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
675
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDialog, providedIn: 'root' });
|
|
610
676
|
}
|
|
611
677
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDialog, decorators: [{
|
|
612
678
|
type: Injectable,
|
|
@@ -619,13 +685,17 @@ let dialogElementUid = 0;
|
|
|
619
685
|
* Button that will close the current dialog.
|
|
620
686
|
*/
|
|
621
687
|
class MatDialogClose {
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
688
|
+
dialogRef = inject(MatDialogRef, { optional: true });
|
|
689
|
+
_elementRef = inject(ElementRef);
|
|
690
|
+
_dialog = inject(MatDialog);
|
|
691
|
+
/** Screen-reader label for the button. */
|
|
692
|
+
ariaLabel;
|
|
693
|
+
/** Default to "button" to prevents accidental form submits. */
|
|
694
|
+
type = 'button';
|
|
695
|
+
/** Dialog close input. */
|
|
696
|
+
dialogResult;
|
|
697
|
+
_matDialogClose;
|
|
698
|
+
constructor() { }
|
|
629
699
|
ngOnInit() {
|
|
630
700
|
if (!this.dialogRef) {
|
|
631
701
|
// When this directive is included in a dialog via TemplateRef (rather than being
|
|
@@ -649,8 +719,8 @@ class MatDialogClose {
|
|
|
649
719
|
// the FocusMonitor won't detect any origin change, and will always output `program`.
|
|
650
720
|
_closeDialogVia(this.dialogRef, event.screenX === 0 && event.screenY === 0 ? 'keyboard' : 'mouse', this.dialogResult);
|
|
651
721
|
}
|
|
652
|
-
static
|
|
653
|
-
static
|
|
722
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDialogClose, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
723
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0-next.10", type: MatDialogClose, isStandalone: true, selector: "[mat-dialog-close], [matDialogClose]", inputs: { ariaLabel: ["aria-label", "ariaLabel"], type: "type", dialogResult: ["mat-dialog-close", "dialogResult"], _matDialogClose: ["matDialogClose", "_matDialogClose"] }, host: { listeners: { "click": "_onButtonClick($event)" }, properties: { "attr.aria-label": "ariaLabel || null", "attr.type": "type" } }, exportAs: ["matDialogClose"], usesOnChanges: true, ngImport: i0 });
|
|
654
724
|
}
|
|
655
725
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDialogClose, decorators: [{
|
|
656
726
|
type: Directive,
|
|
@@ -676,11 +746,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10",
|
|
|
676
746
|
args: ['matDialogClose']
|
|
677
747
|
}] } });
|
|
678
748
|
class MatDialogLayoutSection {
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
}
|
|
749
|
+
_dialogRef = inject(MatDialogRef, { optional: true });
|
|
750
|
+
_elementRef = inject(ElementRef);
|
|
751
|
+
_dialog = inject(MatDialog);
|
|
752
|
+
constructor() { }
|
|
684
753
|
ngOnInit() {
|
|
685
754
|
if (!this._dialogRef) {
|
|
686
755
|
this._dialogRef = getClosestDialog(this._elementRef, this._dialog.openDialogs);
|
|
@@ -701,8 +770,8 @@ class MatDialogLayoutSection {
|
|
|
701
770
|
});
|
|
702
771
|
}
|
|
703
772
|
}
|
|
704
|
-
static
|
|
705
|
-
static
|
|
773
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDialogLayoutSection, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
774
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0-next.10", type: MatDialogLayoutSection, isStandalone: true, ngImport: i0 });
|
|
706
775
|
}
|
|
707
776
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDialogLayoutSection, decorators: [{
|
|
708
777
|
type: Directive
|
|
@@ -711,10 +780,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10",
|
|
|
711
780
|
* Title of a dialog element. Stays fixed to the top of the dialog when scrolling.
|
|
712
781
|
*/
|
|
713
782
|
class MatDialogTitle extends MatDialogLayoutSection {
|
|
714
|
-
|
|
715
|
-
super(...arguments);
|
|
716
|
-
this.id = `mat-mdc-dialog-title-${dialogElementUid++}`;
|
|
717
|
-
}
|
|
783
|
+
id = `mat-mdc-dialog-title-${dialogElementUid++}`;
|
|
718
784
|
_onAdd() {
|
|
719
785
|
// Note: we null check the queue, because there are some internal
|
|
720
786
|
// tests that are mocking out `MatDialogRef` incorrectly.
|
|
@@ -723,8 +789,8 @@ class MatDialogTitle extends MatDialogLayoutSection {
|
|
|
723
789
|
_onRemove() {
|
|
724
790
|
this._dialogRef?._containerInstance?._removeAriaLabelledBy?.(this.id);
|
|
725
791
|
}
|
|
726
|
-
static
|
|
727
|
-
static
|
|
792
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDialogTitle, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
793
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0-next.10", type: MatDialogTitle, isStandalone: true, selector: "[mat-dialog-title], [matDialogTitle]", inputs: { id: "id" }, host: { properties: { "id": "id" }, classAttribute: "mat-mdc-dialog-title mdc-dialog__title" }, exportAs: ["matDialogTitle"], usesInheritance: true, ngImport: i0 });
|
|
728
794
|
}
|
|
729
795
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDialogTitle, decorators: [{
|
|
730
796
|
type: Directive,
|
|
@@ -743,8 +809,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10",
|
|
|
743
809
|
* Scrollable content container of a dialog.
|
|
744
810
|
*/
|
|
745
811
|
class MatDialogContent {
|
|
746
|
-
static
|
|
747
|
-
static
|
|
812
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDialogContent, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
813
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0-next.10", type: MatDialogContent, isStandalone: true, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]", host: { classAttribute: "mat-mdc-dialog-content mdc-dialog__content" }, hostDirectives: [{ directive: i1.CdkScrollable }], ngImport: i0 });
|
|
748
814
|
}
|
|
749
815
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDialogContent, decorators: [{
|
|
750
816
|
type: Directive,
|
|
@@ -759,14 +825,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10",
|
|
|
759
825
|
* Stays fixed to the bottom when scrolling.
|
|
760
826
|
*/
|
|
761
827
|
class MatDialogActions extends MatDialogLayoutSection {
|
|
828
|
+
/**
|
|
829
|
+
* Horizontal alignment of action buttons.
|
|
830
|
+
*/
|
|
831
|
+
align;
|
|
762
832
|
_onAdd() {
|
|
763
833
|
this._dialogRef._containerInstance?._updateActionSectionCount?.(1);
|
|
764
834
|
}
|
|
765
835
|
_onRemove() {
|
|
766
836
|
this._dialogRef._containerInstance?._updateActionSectionCount?.(-1);
|
|
767
837
|
}
|
|
768
|
-
static
|
|
769
|
-
static
|
|
838
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDialogActions, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
839
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0-next.10", type: MatDialogActions, isStandalone: true, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: { align: "align" }, host: { properties: { "class.mat-mdc-dialog-actions-align-start": "align === \"start\"", "class.mat-mdc-dialog-actions-align-center": "align === \"center\"", "class.mat-mdc-dialog-actions-align-end": "align === \"end\"" }, classAttribute: "mat-mdc-dialog-actions mdc-dialog__actions" }, usesInheritance: true, ngImport: i0 });
|
|
770
840
|
}
|
|
771
841
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDialogActions, decorators: [{
|
|
772
842
|
type: Directive,
|
|
@@ -803,8 +873,8 @@ const DIRECTIVES = [
|
|
|
803
873
|
MatDialogContent,
|
|
804
874
|
];
|
|
805
875
|
class MatDialogModule {
|
|
806
|
-
static
|
|
807
|
-
static
|
|
876
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDialogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
877
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDialogModule, imports: [DialogModule, OverlayModule, PortalModule, MatCommonModule, MatDialogContainer,
|
|
808
878
|
MatDialogClose,
|
|
809
879
|
MatDialogTitle,
|
|
810
880
|
MatDialogActions,
|
|
@@ -812,8 +882,8 @@ class MatDialogModule {
|
|
|
812
882
|
MatDialogClose,
|
|
813
883
|
MatDialogTitle,
|
|
814
884
|
MatDialogActions,
|
|
815
|
-
MatDialogContent] });
|
|
816
|
-
static
|
|
885
|
+
MatDialogContent] });
|
|
886
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDialogModule, providers: [MatDialog], imports: [DialogModule, OverlayModule, PortalModule, MatCommonModule, MatCommonModule] });
|
|
817
887
|
}
|
|
818
888
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: MatDialogModule, decorators: [{
|
|
819
889
|
type: NgModule,
|