@angular/material 16.1.4 → 16.1.5
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/index.d.ts +6 -2
- package/core/index.d.ts +2 -2
- package/core/tokens/_token-utils.scss +1 -0
- package/core/tokens/m2/mat/_expansion.scss +90 -0
- package/esm2022/autocomplete/autocomplete-trigger.mjs +61 -38
- package/esm2022/core/option/option.mjs +9 -5
- package/esm2022/core/version.mjs +1 -1
- package/esm2022/expansion/expansion-animations.mjs +5 -2
- package/esm2022/expansion/expansion-panel-header.mjs +3 -3
- package/esm2022/expansion/expansion-panel.mjs +3 -3
- package/esm2022/legacy-dialog/testing/dialog-opener.mjs +6 -1
- package/esm2022/legacy-menu/menu.mjs +4 -2
- package/esm2022/legacy-table/text-column.mjs +6 -2
- package/esm2022/legacy-tabs/tab.mjs +6 -3
- package/esm2022/legacy-tooltip/tooltip.mjs +5 -2
- package/expansion/_expansion-legacy-index.scss +0 -1
- package/expansion/_expansion-theme.import.scss +0 -2
- package/expansion/_expansion-theme.scss +12 -68
- package/fesm2022/autocomplete.mjs +61 -38
- package/fesm2022/autocomplete.mjs.map +1 -1
- package/fesm2022/core.mjs +9 -5
- package/fesm2022/core.mjs.map +1 -1
- package/fesm2022/expansion.mjs +8 -5
- package/fesm2022/expansion.mjs.map +1 -1
- package/fesm2022/legacy-dialog/testing.mjs +5 -0
- package/fesm2022/legacy-dialog/testing.mjs.map +1 -1
- package/fesm2022/legacy-menu.mjs +3 -1
- package/fesm2022/legacy-menu.mjs.map +1 -1
- package/fesm2022/legacy-table.mjs +5 -1
- package/fesm2022/legacy-table.mjs.map +1 -1
- package/fesm2022/legacy-tabs.mjs +5 -2
- package/fesm2022/legacy-tabs.mjs.map +1 -1
- package/fesm2022/legacy-tooltip.mjs +4 -1
- package/fesm2022/legacy-tooltip.mjs.map +1 -1
- package/legacy-prebuilt-themes/legacy-deeppurple-amber.css +1 -1
- package/legacy-prebuilt-themes/legacy-indigo-pink.css +1 -1
- package/legacy-prebuilt-themes/legacy-pink-bluegrey.css +1 -1
- package/legacy-prebuilt-themes/legacy-purple-green.css +1 -1
- package/package.json +2 -2
- package/prebuilt-themes/deeppurple-amber.css +1 -1
- package/prebuilt-themes/indigo-pink.css +1 -1
- package/prebuilt-themes/pink-bluegrey.css +1 -1
- package/prebuilt-themes/purple-green.css +1 -1
- package/schematics/ng-add/index.js +1 -1
- package/schematics/ng-add/index.mjs +1 -1
- package/expansion/_expansion-mixins.import.scss +0 -1
- package/expansion/_expansion-mixins.scss +0 -11
|
@@ -23,7 +23,7 @@ import * as i1 from "./cell";
|
|
|
23
23
|
*/
|
|
24
24
|
export class MatLegacyTextColumn extends CdkTextColumn {
|
|
25
25
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: MatLegacyTextColumn, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
26
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.1", type: MatLegacyTextColumn, selector: "mat-text-column", usesInheritance: true, ngImport: i0, template: `
|
|
26
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.1", type: MatLegacyTextColumn, selector: "mat-text-column", host: { properties: { "attr.mat-id-collision": "null" } }, usesInheritance: true, ngImport: i0, template: `
|
|
27
27
|
<ng-container matColumnDef>
|
|
28
28
|
<th mat-header-cell *matHeaderCellDef [style.text-align]="justify">
|
|
29
29
|
{{headerText}}
|
|
@@ -49,6 +49,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImpor
|
|
|
49
49
|
</ng-container>
|
|
50
50
|
`,
|
|
51
51
|
encapsulation: ViewEncapsulation.None,
|
|
52
|
+
host: {
|
|
53
|
+
// This binding is used to ensure that the component ID doesn't clash with the `MatTextColumn`.
|
|
54
|
+
'[attr.mat-id-collision]': 'null',
|
|
55
|
+
},
|
|
52
56
|
// Change detection is intentionally not set to OnPush. This component's template will be provided
|
|
53
57
|
// to the table to be inserted into its view. This is problematic when change detection runs since
|
|
54
58
|
// the bindings in this template will be evaluated _after_ the table's view is evaluated, which
|
|
@@ -58,4 +62,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImpor
|
|
|
58
62
|
changeDetection: ChangeDetectionStrategy.Default,
|
|
59
63
|
}]
|
|
60
64
|
}] });
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dC1jb2x1bW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwvbGVnYWN5LXRhYmxlL3RleHQtY29sdW1uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDOzs7QUFFcEY7Ozs7Ozs7Ozs7O0dBV0c7QUEwQkgsTUFBTSxPQUFPLG1CQUF1QixTQUFRLGFBQWdCOzhHQUEvQyxtQkFBbUI7a0dBQW5CLG1CQUFtQix5SUF2QnBCOzs7Ozs7Ozs7R0FTVDs7MkZBY1UsbUJBQW1CO2tCQXpCL0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixRQUFRLEVBQUU7Ozs7Ozs7OztHQVNUO29CQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxJQUFJLEVBQUU7d0JBQ0osK0ZBQStGO3dCQUMvRix5QkFBeUIsRUFBRSxNQUFNO3FCQUNsQztvQkFDRCxrR0FBa0c7b0JBQ2xHLGtHQUFrRztvQkFDbEcsK0ZBQStGO29CQUMvRixrR0FBa0c7b0JBQ2xHLG1EQUFtRDtvQkFDbkQsK0NBQStDO29CQUMvQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsT0FBTztpQkFDakQiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtDZGtUZXh0Q29sdW1ufSBmcm9tICdAYW5ndWxhci9jZGsvdGFibGUnO1xuaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogQ29sdW1uIHRoYXQgc2ltcGx5IHNob3dzIHRleHQgY29udGVudCBmb3IgdGhlIGhlYWRlciBhbmQgcm93IGNlbGxzLiBBc3N1bWVzIHRoYXQgdGhlIHRhYmxlXG4gKiBpcyB1c2luZyB0aGUgbmF0aXZlIHRhYmxlIGltcGxlbWVudGF0aW9uIChgPHRhYmxlPmApLlxuICpcbiAqIEJ5IGRlZmF1bHQsIHRoZSBuYW1lIG9mIHRoaXMgY29sdW1uIHdpbGwgYmUgdGhlIGhlYWRlciB0ZXh0IGFuZCBkYXRhIHByb3BlcnR5IGFjY2Vzc29yLlxuICogVGhlIGhlYWRlciB0ZXh0IGNhbiBiZSBvdmVycmlkZGVuIHdpdGggdGhlIGBoZWFkZXJUZXh0YCBpbnB1dC4gQ2VsbCB2YWx1ZXMgY2FuIGJlIG92ZXJyaWRkZW4gd2l0aFxuICogdGhlIGBkYXRhQWNjZXNzb3JgIGlucHV0LiBDaGFuZ2UgdGhlIHRleHQganVzdGlmaWNhdGlvbiB0byB0aGUgc3RhcnQgb3IgZW5kIHVzaW5nIHRoZSBganVzdGlmeWBcbiAqIGlucHV0LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBgTWF0VGV4dENvbHVtbmAgZnJvbSBgQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGVgIGluc3RlYWQuIFNlZSBodHRwczovL21hdGVyaWFsLmFuZ3VsYXIuaW8vZ3VpZGUvbWRjLW1pZ3JhdGlvbiBmb3IgaW5mb3JtYXRpb24gYWJvdXQgbWlncmF0aW5nLlxuICogQGJyZWFraW5nLWNoYW5nZSAxNy4wLjBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWF0LXRleHQtY29sdW1uJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj5cbiAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWYgW3N0eWxlLnRleHQtYWxpZ25dPVwianVzdGlmeVwiPlxuICAgICAgICB7e2hlYWRlclRleHR9fVxuICAgICAgPC90aD5cbiAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBkYXRhXCIgW3N0eWxlLnRleHQtYWxpZ25dPVwianVzdGlmeVwiPlxuICAgICAgICB7e2RhdGFBY2Nlc3NvcihkYXRhLCBuYW1lKX19XG4gICAgICA8L3RkPlxuICAgIDwvbmctY29udGFpbmVyPlxuICBgLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBob3N0OiB7XG4gICAgLy8gVGhpcyBiaW5kaW5nIGlzIHVzZWQgdG8gZW5zdXJlIHRoYXQgdGhlIGNvbXBvbmVudCBJRCBkb2Vzbid0IGNsYXNoIHdpdGggdGhlIGBNYXRUZXh0Q29sdW1uYC5cbiAgICAnW2F0dHIubWF0LWlkLWNvbGxpc2lvbl0nOiAnbnVsbCcsXG4gIH0sXG4gIC8vIENoYW5nZSBkZXRlY3Rpb24gaXMgaW50ZW50aW9uYWxseSBub3Qgc2V0IHRvIE9uUHVzaC4gVGhpcyBjb21wb25lbnQncyB0ZW1wbGF0ZSB3aWxsIGJlIHByb3ZpZGVkXG4gIC8vIHRvIHRoZSB0YWJsZSB0byBiZSBpbnNlcnRlZCBpbnRvIGl0cyB2aWV3LiBUaGlzIGlzIHByb2JsZW1hdGljIHdoZW4gY2hhbmdlIGRldGVjdGlvbiBydW5zIHNpbmNlXG4gIC8vIHRoZSBiaW5kaW5ncyBpbiB0aGlzIHRlbXBsYXRlIHdpbGwgYmUgZXZhbHVhdGVkIF9hZnRlcl8gdGhlIHRhYmxlJ3MgdmlldyBpcyBldmFsdWF0ZWQsIHdoaWNoXG4gIC8vIG1lYW4ncyB0aGUgdGVtcGxhdGUgaW4gdGhlIHRhYmxlJ3MgdmlldyB3aWxsIG5vdCBoYXZlIHRoZSB1cGRhdGVkIHZhbHVlIChhbmQgaW4gZmFjdCB3aWxsIGNhdXNlXG4gIC8vIGFuIEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3IpLlxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dmFsaWRhdGUtZGVjb3JhdG9yc1xuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LkRlZmF1bHQsXG59KVxuZXhwb3J0IGNsYXNzIE1hdExlZ2FjeVRleHRDb2x1bW48VD4gZXh0ZW5kcyBDZGtUZXh0Q29sdW1uPFQ+IHt9XG4iXX0=
|
|
@@ -28,11 +28,14 @@ export class MatLegacyTab extends _MatTabBase {
|
|
|
28
28
|
this._setTemplateLabelInput(value);
|
|
29
29
|
}
|
|
30
30
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: MatLegacyTab, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
31
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.1", type: MatLegacyTab, selector: "mat-tab", inputs: { disabled: "disabled" }, providers: [{ provide: MAT_TAB, useExisting: MatLegacyTab }], queries: [{ propertyName: "templateLabel", first: true, predicate: MAT_TAB_LABEL, descendants: true }, { propertyName: "_explicitContent", first: true, predicate: MAT_TAB_CONTENT, descendants: true, read: TemplateRef, static: true }], exportAs: ["matTab"], usesInheritance: true, ngImport: i0, template: "<!-- Create a template for the content of the <mat-tab> so that we can grab a reference to this\n TemplateRef and use it in a Portal to render the tab content in the appropriate place in the\n tab-group. -->\n<ng-template><ng-content></ng-content></ng-template>\n", changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }
|
|
31
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.1", type: MatLegacyTab, selector: "mat-tab", inputs: { disabled: "disabled" }, host: { properties: { "attr.mat-id-collision": "null" } }, providers: [{ provide: MAT_TAB, useExisting: MatLegacyTab }], queries: [{ propertyName: "templateLabel", first: true, predicate: MAT_TAB_LABEL, descendants: true }, { propertyName: "_explicitContent", first: true, predicate: MAT_TAB_CONTENT, descendants: true, read: TemplateRef, static: true }], exportAs: ["matTab"], usesInheritance: true, ngImport: i0, template: "<!-- Create a template for the content of the <mat-tab> so that we can grab a reference to this\n TemplateRef and use it in a Portal to render the tab content in the appropriate place in the\n tab-group. -->\n<ng-template><ng-content></ng-content></ng-template>\n", changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }
|
|
32
32
|
}
|
|
33
33
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: MatLegacyTab, decorators: [{
|
|
34
34
|
type: Component,
|
|
35
|
-
args: [{ selector: 'mat-tab', inputs: ['disabled'], changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, exportAs: 'matTab', providers: [{ provide: MAT_TAB, useExisting: MatLegacyTab }],
|
|
35
|
+
args: [{ selector: 'mat-tab', inputs: ['disabled'], changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, exportAs: 'matTab', providers: [{ provide: MAT_TAB, useExisting: MatLegacyTab }], host: {
|
|
36
|
+
// This binding is used to ensure that the component ID doesn't clash with the `MatTab`.
|
|
37
|
+
'[attr.mat-id-collision]': 'null',
|
|
38
|
+
}, template: "<!-- Create a template for the content of the <mat-tab> so that we can grab a reference to this\n TemplateRef and use it in a Portal to render the tab content in the appropriate place in the\n tab-group. -->\n<ng-template><ng-content></ng-content></ng-template>\n" }]
|
|
36
39
|
}], propDecorators: { templateLabel: [{
|
|
37
40
|
type: ContentChild,
|
|
38
41
|
args: [MAT_TAB_LABEL]
|
|
@@ -40,4 +43,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImpor
|
|
|
40
43
|
type: ContentChild,
|
|
41
44
|
args: [MAT_TAB_CONTENT, { read: TemplateRef, static: true }]
|
|
42
45
|
}] } });
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21hdGVyaWFsL2xlZ2FjeS10YWJzL3RhYi50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC9sZWdhY3ktdGFicy90YWIuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osV0FBVyxFQUNYLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsV0FBVyxFQUNYLE9BQU8sRUFDUCxXQUFXLEVBQ1gsYUFBYSxFQUNiLGVBQWUsR0FDaEIsTUFBTSx3QkFBd0IsQ0FBQzs7QUFFaEM7OztHQUdHO0FBZUgsTUFBTSxPQUFPLFlBQWEsU0FBUSxXQUFXO0lBZDdDOztRQXdCRTs7V0FFRztRQUdNLHFCQUFnQixHQUFxQixTQUFVLENBQUM7S0FDMUQ7SUFmQyx3RUFBd0U7SUFDeEUsSUFDSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFDRCxJQUFJLGFBQWEsQ0FBQyxLQUFrQjtRQUNsQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckMsQ0FBQzs4R0FSVSxZQUFZO2tHQUFaLFlBQVksK0hBTlosQ0FBQyxFQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBQyxDQUFDLHFFQVE1QyxhQUFhLG1GQVdiLGVBQWUsMkJBQVMsV0FBVyx3RkN0RG5ELCtRQUlBOzsyRkRxQ2EsWUFBWTtrQkFkeEIsU0FBUzsrQkFDRSxTQUFTLFVBRVgsQ0FBQyxVQUFVLENBQUMsbUJBRUgsdUJBQXVCLENBQUMsT0FBTyxpQkFDakMsaUJBQWlCLENBQUMsSUFBSSxZQUMzQixRQUFRLGFBQ1AsQ0FBQyxFQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsV0FBVyxjQUFjLEVBQUMsQ0FBQyxRQUNwRDt3QkFDSix3RkFBd0Y7d0JBQ3hGLHlCQUF5QixFQUFFLE1BQU07cUJBQ2xDOzhCQUtHLGFBQWE7c0JBRGhCLFlBQVk7dUJBQUMsYUFBYTtnQkFhbEIsZ0JBQWdCO3NCQUZ4QixZQUFZO3VCQUFDLGVBQWUsRUFBRSxFQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBfTWF0VGFiQmFzZSxcbiAgTUFUX1RBQixcbiAgTWF0VGFiTGFiZWwsXG4gIE1BVF9UQUJfTEFCRUwsXG4gIE1BVF9UQUJfQ09OVEVOVCxcbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIGBNYXRUYWJgIGZyb20gYEBhbmd1bGFyL21hdGVyaWFsL3RhYnNgIGluc3RlYWQuIFNlZSBodHRwczovL21hdGVyaWFsLmFuZ3VsYXIuaW8vZ3VpZGUvbWRjLW1pZ3JhdGlvbiBmb3IgaW5mb3JtYXRpb24gYWJvdXQgbWlncmF0aW5nLlxuICogQGJyZWFraW5nLWNoYW5nZSAxNy4wLjBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWF0LXRhYicsXG4gIHRlbXBsYXRlVXJsOiAndGFiLmh0bWwnLFxuICBpbnB1dHM6IFsnZGlzYWJsZWQnXSxcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnZhbGlkYXRlLWRlY29yYXRvcnNcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0LFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBleHBvcnRBczogJ21hdFRhYicsXG4gIHByb3ZpZGVyczogW3twcm92aWRlOiBNQVRfVEFCLCB1c2VFeGlzdGluZzogTWF0TGVnYWN5VGFifV0sXG4gIGhvc3Q6IHtcbiAgICAvLyBUaGlzIGJpbmRpbmcgaXMgdXNlZCB0byBlbnN1cmUgdGhhdCB0aGUgY29tcG9uZW50IElEIGRvZXNuJ3QgY2xhc2ggd2l0aCB0aGUgYE1hdFRhYmAuXG4gICAgJ1thdHRyLm1hdC1pZC1jb2xsaXNpb25dJzogJ251bGwnLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBNYXRMZWdhY3lUYWIgZXh0ZW5kcyBfTWF0VGFiQmFzZSB7XG4gIC8qKiBDb250ZW50IGZvciB0aGUgdGFiIGxhYmVsIGdpdmVuIGJ5IGA8bmctdGVtcGxhdGUgbWF0LXRhYi1sYWJlbD5gLiAqL1xuICBAQ29udGVudENoaWxkKE1BVF9UQUJfTEFCRUwpXG4gIGdldCB0ZW1wbGF0ZUxhYmVsKCk6IE1hdFRhYkxhYmVsIHtcbiAgICByZXR1cm4gdGhpcy5fdGVtcGxhdGVMYWJlbDtcbiAgfVxuICBzZXQgdGVtcGxhdGVMYWJlbCh2YWx1ZTogTWF0VGFiTGFiZWwpIHtcbiAgICB0aGlzLl9zZXRUZW1wbGF0ZUxhYmVsSW5wdXQodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRlbXBsYXRlIHByb3ZpZGVkIGluIHRoZSB0YWIgY29udGVudCB0aGF0IHdpbGwgYmUgdXNlZCBpZiBwcmVzZW50LCB1c2VkIHRvIGVuYWJsZSBsYXp5LWxvYWRpbmdcbiAgICovXG4gIEBDb250ZW50Q2hpbGQoTUFUX1RBQl9DT05URU5ULCB7cmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogdHJ1ZX0pXG4gIC8vIFdlIG5lZWQgYW4gaW5pdGlhbGl6ZXIgaGVyZSB0byBhdm9pZCBhIFRTIGVycm9yLiBUaGUgdmFsdWUgd2lsbCBiZSBzZXQgaW4gYG5nQWZ0ZXJWaWV3SW5pdGAuXG4gIG92ZXJyaWRlIF9leHBsaWNpdENvbnRlbnQ6IFRlbXBsYXRlUmVmPGFueT4gPSB1bmRlZmluZWQhO1xufVxuIiwiPCEtLSBDcmVhdGUgYSB0ZW1wbGF0ZSBmb3IgdGhlIGNvbnRlbnQgb2YgdGhlIDxtYXQtdGFiPiBzbyB0aGF0IHdlIGNhbiBncmFiIGEgcmVmZXJlbmNlIHRvIHRoaXNcbiAgICBUZW1wbGF0ZVJlZiBhbmQgdXNlIGl0IGluIGEgUG9ydGFsIHRvIHJlbmRlciB0aGUgdGFiIGNvbnRlbnQgaW4gdGhlIGFwcHJvcHJpYXRlIHBsYWNlIGluIHRoZVxuICAgIHRhYi1ncm91cC4gLS0+XG48bmctdGVtcGxhdGU+PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -78,7 +78,7 @@ export class LegacyTooltipComponent extends _TooltipComponentBase {
|
|
|
78
78
|
this._isHandset = breakpointObserver.observe(Breakpoints.Handset);
|
|
79
79
|
}
|
|
80
80
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: LegacyTooltipComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i6.BreakpointObserver }, { token: ANIMATION_MODULE_TYPE, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
81
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.1", type: LegacyTooltipComponent, selector: "mat-tooltip-component", host: { attributes: { "aria-hidden": "true" }, listeners: { "mouseleave": "_handleMouseLeave($event)" }, properties: { "style.zoom": "isVisible() ? 1 : null" } }, viewQueries: [{ propertyName: "_tooltip", first: true, predicate: ["tooltip"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div #tooltip\n class=\"mat-tooltip\"\n (animationend)=\"_handleAnimationEnd($event)\"\n [ngClass]=\"tooltipClass\"\n [class.mat-tooltip-handset]=\"(_isHandset | async)?.matches\">{{message}}</div>\n", styles: [".mat-tooltip{color:#fff;border-radius:4px;margin:14px;max-width:250px;padding-left:8px;padding-right:8px;overflow:hidden;text-overflow:ellipsis;transform:scale(0)}.mat-tooltip._mat-animation-noopable{animation:none;transform:scale(1)}.cdk-high-contrast-active .mat-tooltip{outline:solid 1px}.mat-tooltip-handset{margin:24px;padding-left:16px;padding-right:16px}.mat-tooltip-panel-non-interactive{pointer-events:none}@keyframes mat-tooltip-show{0%{opacity:0;transform:scale(0)}50%{opacity:.5;transform:scale(0.99)}100%{opacity:1;transform:scale(1)}}@keyframes mat-tooltip-hide{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(1)}}.mat-tooltip-show{animation:mat-tooltip-show 200ms cubic-bezier(0, 0, 0.2, 1) forwards}.mat-tooltip-hide{animation:mat-tooltip-hide 100ms cubic-bezier(0, 0, 0.2, 1) forwards}"], dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
81
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.1", type: LegacyTooltipComponent, selector: "mat-tooltip-component", host: { attributes: { "aria-hidden": "true" }, listeners: { "mouseleave": "_handleMouseLeave($event)" }, properties: { "style.zoom": "isVisible() ? 1 : null", "attr.mat-id-collision": "null" } }, viewQueries: [{ propertyName: "_tooltip", first: true, predicate: ["tooltip"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div #tooltip\n class=\"mat-tooltip\"\n (animationend)=\"_handleAnimationEnd($event)\"\n [ngClass]=\"tooltipClass\"\n [class.mat-tooltip-handset]=\"(_isHandset | async)?.matches\">{{message}}</div>\n", styles: [".mat-tooltip{color:#fff;border-radius:4px;margin:14px;max-width:250px;padding-left:8px;padding-right:8px;overflow:hidden;text-overflow:ellipsis;transform:scale(0)}.mat-tooltip._mat-animation-noopable{animation:none;transform:scale(1)}.cdk-high-contrast-active .mat-tooltip{outline:solid 1px}.mat-tooltip-handset{margin:24px;padding-left:16px;padding-right:16px}.mat-tooltip-panel-non-interactive{pointer-events:none}@keyframes mat-tooltip-show{0%{opacity:0;transform:scale(0)}50%{opacity:.5;transform:scale(0.99)}100%{opacity:1;transform:scale(1)}}@keyframes mat-tooltip-hide{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(1)}}.mat-tooltip-show{animation:mat-tooltip-show 200ms cubic-bezier(0, 0, 0.2, 1) forwards}.mat-tooltip-hide{animation:mat-tooltip-hide 100ms cubic-bezier(0, 0, 0.2, 1) forwards}"], dependencies: [{ kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i7.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
82
82
|
}
|
|
83
83
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImport: i0, type: LegacyTooltipComponent, decorators: [{
|
|
84
84
|
type: Component,
|
|
@@ -88,6 +88,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImpor
|
|
|
88
88
|
'[style.zoom]': 'isVisible() ? 1 : null',
|
|
89
89
|
'(mouseleave)': '_handleMouseLeave($event)',
|
|
90
90
|
'aria-hidden': 'true',
|
|
91
|
+
// This binding is used to ensure that the component
|
|
92
|
+
// ID doesn't clash with the `TooltipComponent`.
|
|
93
|
+
'[attr.mat-id-collision]': 'null',
|
|
91
94
|
}, template: "<div #tooltip\n class=\"mat-tooltip\"\n (animationend)=\"_handleAnimationEnd($event)\"\n [ngClass]=\"tooltipClass\"\n [class.mat-tooltip-handset]=\"(_isHandset | async)?.matches\">{{message}}</div>\n", styles: [".mat-tooltip{color:#fff;border-radius:4px;margin:14px;max-width:250px;padding-left:8px;padding-right:8px;overflow:hidden;text-overflow:ellipsis;transform:scale(0)}.mat-tooltip._mat-animation-noopable{animation:none;transform:scale(1)}.cdk-high-contrast-active .mat-tooltip{outline:solid 1px}.mat-tooltip-handset{margin:24px;padding-left:16px;padding-right:16px}.mat-tooltip-panel-non-interactive{pointer-events:none}@keyframes mat-tooltip-show{0%{opacity:0;transform:scale(0)}50%{opacity:.5;transform:scale(0.99)}100%{opacity:1;transform:scale(1)}}@keyframes mat-tooltip-hide{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(1)}}.mat-tooltip-show{animation:mat-tooltip-show 200ms cubic-bezier(0, 0, 0.2, 1) forwards}.mat-tooltip-hide{animation:mat-tooltip-hide 100ms cubic-bezier(0, 0, 0.2, 1) forwards}"] }]
|
|
92
95
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i6.BreakpointObserver }, { type: undefined, decorators: [{
|
|
93
96
|
type: Optional
|
|
@@ -102,4 +105,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.1", ngImpor
|
|
|
102
105
|
static: true,
|
|
103
106
|
}]
|
|
104
107
|
}] } });
|
|
105
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC9sZWdhY3ktdG9vbHRpcC90b29sdGlwLnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21hdGVyaWFsL2xlZ2FjeS10b29sdGlwL3Rvb2x0aXAuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFDSCxPQUFPLEVBQUMsYUFBYSxFQUFFLFlBQVksRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQzlELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUMsa0JBQWtCLEVBQUUsV0FBVyxFQUFrQixNQUFNLHFCQUFxQixDQUFDO0FBQ3JGLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUM3QyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDL0MsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUNOLE1BQU0sRUFDTixRQUFRLEVBQ1IsU0FBUyxFQUNULGdCQUFnQixFQUNoQixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBRTNFLE9BQU8sRUFDTCxlQUFlLEVBQ2YscUJBQXFCLEVBQ3JCLDJCQUEyQixFQUMzQiwyQkFBMkIsR0FFNUIsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7O0FBRW5DOzs7Ozs7OztHQVFHO0FBU0gsTUFBTSxPQUFPLGdCQUFpQixTQUFRLGVBQXVDO0lBRzNFLFlBQ0UsT0FBZ0IsRUFDaEIsVUFBbUMsRUFDbkMsZ0JBQWtDLEVBQ2xDLGdCQUFrQyxFQUNsQyxNQUFjLEVBQ2QsUUFBa0IsRUFDbEIsYUFBNEIsRUFDNUIsWUFBMEIsRUFDVyxjQUFtQixFQUM1QyxHQUFtQixFQUNrQixjQUF3QyxFQUN2RSxTQUFjO1FBRWhDLEtBQUssQ0FDSCxPQUFPLEVBQ1AsVUFBVSxFQUNWLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsTUFBTSxFQUNOLFFBQVEsRUFDUixhQUFhLEVBQ2IsWUFBWSxFQUNaLGNBQWMsRUFDZCxHQUFHLEVBQ0gsY0FBYyxFQUNkLFNBQVMsQ0FDVixDQUFDO1FBN0JlLHNCQUFpQixHQUFHLHNCQUFzQixDQUFDO0lBOEI5RCxDQUFDOzhHQS9CVSxnQkFBZ0IsME9BWWpCLDJCQUEyQiwyREFFZiwyQkFBMkIsNkJBQ3ZDLFFBQVE7a0dBZlAsZ0JBQWdCOzsyRkFBaEIsZ0JBQWdCO2tCQVI1QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxjQUFjO29CQUN4QixRQUFRLEVBQUUsWUFBWTtvQkFDdEIsSUFBSSxFQUFFO3dCQUNKLE9BQU8sRUFBRSxxQkFBcUI7d0JBQzlCLDhCQUE4QixFQUFFLFVBQVU7cUJBQzNDO2lCQUNGOzswQkFhSSxNQUFNOzJCQUFDLDJCQUEyQjs7MEJBQ2xDLFFBQVE7OzBCQUNSLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsMkJBQTJCOzswQkFDOUMsTUFBTTsyQkFBQyxRQUFROztBQW1CcEI7Ozs7O0dBS0c7QUFrQkgsTUFBTSxPQUFPLHNCQUF1QixTQUFRLHFCQUFxQjtJQWEvRCxZQUNFLGlCQUFvQyxFQUNwQyxrQkFBc0MsRUFDSyxhQUFzQjtRQUVqRSxLQUFLLENBQUMsaUJBQWlCLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFmMUMsbUJBQWMsR0FBRyxrQkFBa0IsQ0FBQztRQUNwQyxtQkFBYyxHQUFHLGtCQUFrQixDQUFDO1FBZWxDLElBQUksQ0FBQyxVQUFVLEdBQUcsa0JBQWtCLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNwRSxDQUFDOzhHQXBCVSxzQkFBc0IscUZBZ0JYLHFCQUFxQjtrR0FoQmhDLHNCQUFzQiwyWUMvR25DLHlOQUtBOzsyRkQwR2Esc0JBQXNCO2tCQWpCbEMsU0FBUzsrQkFDRSx1QkFBdUIsaUJBR2xCLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sUUFDekM7d0JBQ0osMEZBQTBGO3dCQUMxRiwyRkFBMkY7d0JBQzNGLGNBQWMsRUFBRSx3QkFBd0I7d0JBQ3hDLGNBQWMsRUFBRSwyQkFBMkI7d0JBQzNDLGFBQWEsRUFBRSxNQUFNO3dCQUNyQixvREFBb0Q7d0JBQ3BELGdEQUFnRDt3QkFDaEQseUJBQXlCLEVBQUUsTUFBTTtxQkFDbEM7OzBCQWtCRSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLHFCQUFxQjs0Q0FMM0MsUUFBUTtzQkFMUCxTQUFTO3VCQUFDLFNBQVMsRUFBRTt3QkFDcEIsMERBQTBEO3dCQUMxRCxxREFBcUQ7d0JBQ3JELE1BQU0sRUFBRSxJQUFJO3FCQUNiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQge0FyaWFEZXNjcmliZXIsIEZvY3VzTW9uaXRvcn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHtEaXJlY3Rpb25hbGl0eX0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xuaW1wb3J0IHtCcmVha3BvaW50T2JzZXJ2ZXIsIEJyZWFrcG9pbnRzLCBCcmVha3BvaW50U3RhdGV9IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xuaW1wb3J0IHtPdmVybGF5fSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQge1BsYXRmb3JtfSBmcm9tICdAYW5ndWxhci9jZGsvcGxhdGZvcm0nO1xuaW1wb3J0IHtTY3JvbGxEaXNwYXRjaGVyfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdCxcbiAgTmdab25lLFxuICBPcHRpb25hbCxcbiAgVmlld0NoaWxkLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0RPQ1VNRU5UfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtBTklNQVRJT05fTU9EVUxFX1RZUEV9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgX01hdFRvb2x0aXBCYXNlLFxuICBfVG9vbHRpcENvbXBvbmVudEJhc2UsXG4gIE1BVF9UT09MVElQX0RFRkFVTFRfT1BUSU9OUyxcbiAgTUFUX1RPT0xUSVBfU0NST0xMX1NUUkFURUdZLFxuICBNYXRUb29sdGlwRGVmYXVsdE9wdGlvbnMsXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuXG4vKipcbiAqIERpcmVjdGl2ZSB0aGF0IGF0dGFjaGVzIGEgbWF0ZXJpYWwgZGVzaWduIHRvb2x0aXAgdG8gdGhlIGhvc3QgZWxlbWVudC4gQW5pbWF0ZXMgdGhlIHNob3dpbmcgYW5kXG4gKiBoaWRpbmcgb2YgYSB0b29sdGlwIHByb3ZpZGVkIHBvc2l0aW9uIChkZWZhdWx0cyB0byBiZWxvdyB0aGUgZWxlbWVudCkuXG4gKlxuICogaHR0cHM6Ly9tYXRlcmlhbC5pby9kZXNpZ24vY29tcG9uZW50cy90b29sdGlwcy5odG1sXG4gKlxuICogQGRlcHJlY2F0ZWQgVXNlIGBNYXRUb29sdGlwYCBmcm9tIGBAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwYCBpbnN0ZWFkLiBTZWUgaHR0cHM6Ly9tYXRlcmlhbC5hbmd1bGFyLmlvL2d1aWRlL21kYy1taWdyYXRpb24gZm9yIGluZm9ybWF0aW9uIGFib3V0IG1pZ3JhdGluZy5cbiAqIEBicmVha2luZy1jaGFuZ2UgMTcuMC4wXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1ttYXRUb29sdGlwXScsXG4gIGV4cG9ydEFzOiAnbWF0VG9vbHRpcCcsXG4gIGhvc3Q6IHtcbiAgICAnY2xhc3MnOiAnbWF0LXRvb2x0aXAtdHJpZ2dlcicsXG4gICAgJ1tjbGFzcy5tYXQtdG9vbHRpcC1kaXNhYmxlZF0nOiAnZGlzYWJsZWQnLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBNYXRMZWdhY3lUb29sdGlwIGV4dGVuZHMgX01hdFRvb2x0aXBCYXNlPExlZ2FjeVRvb2x0aXBDb21wb25lbnQ+IHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF90b29sdGlwQ29tcG9uZW50ID0gTGVnYWN5VG9vbHRpcENvbXBvbmVudDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBvdmVybGF5OiBPdmVybGF5LFxuICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHNjcm9sbERpc3BhdGNoZXI6IFNjcm9sbERpc3BhdGNoZXIsXG4gICAgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICBuZ1pvbmU6IE5nWm9uZSxcbiAgICBwbGF0Zm9ybTogUGxhdGZvcm0sXG4gICAgYXJpYURlc2NyaWJlcjogQXJpYURlc2NyaWJlcixcbiAgICBmb2N1c01vbml0b3I6IEZvY3VzTW9uaXRvcixcbiAgICBASW5qZWN0KE1BVF9UT09MVElQX1NDUk9MTF9TVFJBVEVHWSkgc2Nyb2xsU3RyYXRlZ3k6IGFueSxcbiAgICBAT3B0aW9uYWwoKSBkaXI6IERpcmVjdGlvbmFsaXR5LFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoTUFUX1RPT0xUSVBfREVGQVVMVF9PUFRJT05TKSBkZWZhdWx0T3B0aW9uczogTWF0VG9vbHRpcERlZmF1bHRPcHRpb25zLFxuICAgIEBJbmplY3QoRE9DVU1FTlQpIF9kb2N1bWVudDogYW55LFxuICApIHtcbiAgICBzdXBlcihcbiAgICAgIG92ZXJsYXksXG4gICAgICBlbGVtZW50UmVmLFxuICAgICAgc2Nyb2xsRGlzcGF0Y2hlcixcbiAgICAgIHZpZXdDb250YWluZXJSZWYsXG4gICAgICBuZ1pvbmUsXG4gICAgICBwbGF0Zm9ybSxcbiAgICAgIGFyaWFEZXNjcmliZXIsXG4gICAgICBmb2N1c01vbml0b3IsXG4gICAgICBzY3JvbGxTdHJhdGVneSxcbiAgICAgIGRpcixcbiAgICAgIGRlZmF1bHRPcHRpb25zLFxuICAgICAgX2RvY3VtZW50LFxuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiBJbnRlcm5hbCBjb21wb25lbnQgdGhhdCB3cmFwcyB0aGUgdG9vbHRpcCdzIGNvbnRlbnQuXG4gKiBAZG9jcy1wcml2YXRlXG4gKiBAZGVwcmVjYXRlZCBVc2UgYFRvb2x0aXBDb21wb25lbnRgIGZyb20gYEBhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXBgIGluc3RlYWQuIFNlZSBodHRwczovL21hdGVyaWFsLmFuZ3VsYXIuaW8vZ3VpZGUvbWRjLW1pZ3JhdGlvbiBmb3IgaW5mb3JtYXRpb24gYWJvdXQgbWlncmF0aW5nLlxuICogQGJyZWFraW5nLWNoYW5nZSAxNy4wLjBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWF0LXRvb2x0aXAtY29tcG9uZW50JyxcbiAgdGVtcGxhdGVVcmw6ICd0b29sdGlwLmh0bWwnLFxuICBzdHlsZVVybHM6IFsndG9vbHRpcC5jc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3Q6IHtcbiAgICAvLyBGb3JjZXMgdGhlIGVsZW1lbnQgdG8gaGF2ZSBhIGxheW91dCBpbiBJRSBhbmQgRWRnZS4gVGhpcyBmaXhlcyBpc3N1ZXMgd2hlcmUgdGhlIGVsZW1lbnRcbiAgICAvLyB3b24ndCBiZSByZW5kZXJlZCBpZiB0aGUgYW5pbWF0aW9ucyBhcmUgZGlzYWJsZWQgb3IgdGhlcmUgaXMgbm8gd2ViIGFuaW1hdGlvbnMgcG9seWZpbGwuXG4gICAgJ1tzdHlsZS56b29tXSc6ICdpc1Zpc2libGUoKSA/IDEgOiBudWxsJyxcbiAgICAnKG1vdXNlbGVhdmUpJzogJ19oYW5kbGVNb3VzZUxlYXZlKCRldmVudCknLFxuICAgICdhcmlhLWhpZGRlbic6ICd0cnVlJyxcbiAgICAvLyBUaGlzIGJpbmRpbmcgaXMgdXNlZCB0byBlbnN1cmUgdGhhdCB0aGUgY29tcG9uZW50XG4gICAgLy8gSUQgZG9lc24ndCBjbGFzaCB3aXRoIHRoZSBgVG9vbHRpcENvbXBvbmVudGAuXG4gICAgJ1thdHRyLm1hdC1pZC1jb2xsaXNpb25dJzogJ251bGwnLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBMZWdhY3lUb29sdGlwQ29tcG9uZW50IGV4dGVuZHMgX1Rvb2x0aXBDb21wb25lbnRCYXNlIHtcbiAgLyoqIFN0cmVhbSB0aGF0IGVtaXRzIHdoZXRoZXIgdGhlIHVzZXIgaGFzIGEgaGFuZHNldC1zaXplZCBkaXNwbGF5LiAgKi9cbiAgX2lzSGFuZHNldDogT2JzZXJ2YWJsZTxCcmVha3BvaW50U3RhdGU+O1xuICBfc2hvd0FuaW1hdGlvbiA9ICdtYXQtdG9vbHRpcC1zaG93JztcbiAgX2hpZGVBbmltYXRpb24gPSAnbWF0LXRvb2x0aXAtaGlkZSc7XG5cbiAgQFZpZXdDaGlsZCgndG9vbHRpcCcsIHtcbiAgICAvLyBVc2UgYSBzdGF0aWMgcXVlcnkgaGVyZSBzaW5jZSB3ZSBpbnRlcmFjdCBkaXJlY3RseSB3aXRoXG4gICAgLy8gdGhlIERPTSB3aGljaCBjYW4gaGFwcGVuIGJlZm9yZSBgbmdBZnRlclZpZXdJbml0YC5cbiAgICBzdGF0aWM6IHRydWUsXG4gIH0pXG4gIF90b29sdGlwOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgYnJlYWtwb2ludE9ic2VydmVyOiBCcmVha3BvaW50T2JzZXJ2ZXIsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChBTklNQVRJT05fTU9EVUxFX1RZUEUpIGFuaW1hdGlvbk1vZGU/OiBzdHJpbmcsXG4gICkge1xuICAgIHN1cGVyKGNoYW5nZURldGVjdG9yUmVmLCBhbmltYXRpb25Nb2RlKTtcbiAgICB0aGlzLl9pc0hhbmRzZXQgPSBicmVha3BvaW50T2JzZXJ2ZXIub2JzZXJ2ZShCcmVha3BvaW50cy5IYW5kc2V0KTtcbiAgfVxufVxuIiwiPGRpdiAjdG9vbHRpcFxuICAgICBjbGFzcz1cIm1hdC10b29sdGlwXCJcbiAgICAgKGFuaW1hdGlvbmVuZCk9XCJfaGFuZGxlQW5pbWF0aW9uRW5kKCRldmVudClcIlxuICAgICBbbmdDbGFzc109XCJ0b29sdGlwQ2xhc3NcIlxuICAgICBbY2xhc3MubWF0LXRvb2x0aXAtaGFuZHNldF09XCIoX2lzSGFuZHNldCB8IGFzeW5jKT8ubWF0Y2hlc1wiPnt7bWVzc2FnZX19PC9kaXY+XG4iXX0=
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
@forward '../core/style/private.import';
|
|
3
3
|
@forward 'expansion-variables' as mat-expansion-panel-*;
|
|
4
4
|
@forward '../core/typography/typography-utils.import';
|
|
5
|
-
@forward 'expansion-mixins' as mat-*;
|
|
6
5
|
@forward 'expansion-theme' as mat-expansion-panel-*;
|
|
7
6
|
|
|
8
7
|
@import '../core/density/private/compatibility';
|
|
@@ -11,4 +10,3 @@
|
|
|
11
10
|
@import '../core/style/private';
|
|
12
11
|
@import '../core/typography/typography-utils';
|
|
13
12
|
@import './expansion-variables';
|
|
14
|
-
@import './expansion-mixins';
|
|
@@ -1,90 +1,34 @@
|
|
|
1
|
-
@use 'sass:map';
|
|
2
|
-
@use '../core/density/private/compatibility';
|
|
3
1
|
@use '../core/theming/theming';
|
|
4
|
-
@use '../core/style/private';
|
|
5
2
|
@use '../core/typography/typography';
|
|
6
|
-
@use '../core/
|
|
7
|
-
@use '
|
|
8
|
-
@use '
|
|
3
|
+
@use '../core/style/sass-utils';
|
|
4
|
+
@use '../core/tokens/token-utils';
|
|
5
|
+
@use '../core/tokens/m2/mat/expansion' as tokens-mat-expansion;
|
|
9
6
|
|
|
10
7
|
@mixin color($config-or-theme) {
|
|
11
8
|
$config: theming.get-color-config($config-or-theme);
|
|
12
|
-
$background: map.get($config, background);
|
|
13
|
-
$foreground: map.get($config, foreground);
|
|
14
9
|
|
|
15
|
-
.
|
|
16
|
-
@include
|
|
17
|
-
|
|
18
|
-
color: theming.get-color-from-palette($foreground, text);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
.mat-action-row {
|
|
22
|
-
border-top-color: theming.get-color-from-palette($foreground, divider);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
@include expansion-mixins.private-expansion-focus {
|
|
26
|
-
background: theming.get-color-from-palette($background, hover);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
// Disable the hover on touch devices since it can appear like it is stuck. We can't use
|
|
30
|
-
// `@media (hover)` above, because the desktop support browser support isn't great.
|
|
31
|
-
@media (hover: none) {
|
|
32
|
-
.mat-expansion-panel:not(.mat-expanded):not([aria-disabled='true'])
|
|
33
|
-
.mat-expansion-panel-header:hover {
|
|
34
|
-
background: theming.get-color-from-palette($background, card);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
.mat-expansion-panel-header-title {
|
|
39
|
-
color: theming.get-color-from-palette($foreground, text);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
.mat-expansion-panel-header-description,
|
|
43
|
-
.mat-expansion-indicator::after {
|
|
44
|
-
color: theming.get-color-from-palette($foreground, secondary-text);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
.mat-expansion-panel-header[aria-disabled='true'] {
|
|
48
|
-
color: theming.get-color-from-palette($foreground, disabled-button);
|
|
49
|
-
|
|
50
|
-
.mat-expansion-panel-header-title,
|
|
51
|
-
.mat-expansion-panel-header-description {
|
|
52
|
-
color: inherit;
|
|
53
|
-
}
|
|
10
|
+
@include sass-utils.current-selector-or-root() {
|
|
11
|
+
@include token-utils.create-token-values(tokens-mat-expansion.$prefix,
|
|
12
|
+
tokens-mat-expansion.get-color-tokens($config));
|
|
54
13
|
}
|
|
55
14
|
}
|
|
56
15
|
|
|
57
16
|
@mixin typography($config-or-theme) {
|
|
58
17
|
$config: typography.private-typography-to-2014-config(
|
|
59
18
|
theming.get-typography-config($config-or-theme));
|
|
60
|
-
.mat-expansion-panel-header {
|
|
61
|
-
font: {
|
|
62
|
-
family: typography-utils.font-family($config, subheading-1);
|
|
63
|
-
size: typography-utils.font-size($config, subheading-1);
|
|
64
|
-
weight: typography-utils.font-weight($config, subheading-1);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
19
|
|
|
68
|
-
.
|
|
69
|
-
@include
|
|
20
|
+
@include sass-utils.current-selector-or-root() {
|
|
21
|
+
@include token-utils.create-token-values(tokens-mat-expansion.$prefix,
|
|
22
|
+
tokens-mat-expansion.get-typography-tokens($config));
|
|
70
23
|
}
|
|
71
24
|
}
|
|
72
25
|
|
|
73
26
|
@mixin density($config-or-theme) {
|
|
74
27
|
$density-scale: theming.get-density-config($config-or-theme);
|
|
75
|
-
$expanded-height: compatibility.private-density-prop-value(
|
|
76
|
-
expansion-variables.$header-density-config, $density-scale, expanded-height);
|
|
77
|
-
$collapsed-height: compatibility.private-density-prop-value(
|
|
78
|
-
expansion-variables.$header-density-config, $density-scale, collapsed-height);
|
|
79
28
|
|
|
80
|
-
@include
|
|
81
|
-
.mat-expansion
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
&.mat-expanded {
|
|
85
|
-
height: $expanded-height;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
29
|
+
@include sass-utils.current-selector-or-root() {
|
|
30
|
+
@include token-utils.create-token-values(tokens-mat-expansion.$prefix,
|
|
31
|
+
tokens-mat-expansion.get-density-tokens($density-scale));
|
|
88
32
|
}
|
|
89
33
|
}
|
|
90
34
|
|
|
@@ -13,7 +13,7 @@ import * as i1 from '@angular/cdk/platform';
|
|
|
13
13
|
import { _getEventTarget } from '@angular/cdk/platform';
|
|
14
14
|
import { trigger, state, style, transition, group, animate } from '@angular/animations';
|
|
15
15
|
import { Subscription, Subject, defer, merge, of, fromEvent } from 'rxjs';
|
|
16
|
-
import { hasModifierKey,
|
|
16
|
+
import { ESCAPE, hasModifierKey, UP_ARROW, ENTER, DOWN_ARROW, TAB } from '@angular/cdk/keycodes';
|
|
17
17
|
import { TemplatePortal } from '@angular/cdk/portal';
|
|
18
18
|
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
19
19
|
import * as i4 from '@angular/material/form-field';
|
|
@@ -443,6 +443,26 @@ class _MatAutocompleteTriggerBase {
|
|
|
443
443
|
// Return a stream that we'll replace with the real one once everything is in place.
|
|
444
444
|
return this._zone.onStable.pipe(take(1), switchMap(() => this.optionSelections));
|
|
445
445
|
});
|
|
446
|
+
/** Handles keyboard events coming from the overlay panel. */
|
|
447
|
+
this._handlePanelKeydown = (event) => {
|
|
448
|
+
// Close when pressing ESCAPE or ALT + UP_ARROW, based on the a11y guidelines.
|
|
449
|
+
// See: https://www.w3.org/TR/wai-aria-practices-1.1/#textbox-keyboard-interaction
|
|
450
|
+
if ((event.keyCode === ESCAPE && !hasModifierKey(event)) ||
|
|
451
|
+
(event.keyCode === UP_ARROW && hasModifierKey(event, 'altKey'))) {
|
|
452
|
+
// If the user had typed something in before we autoselected an option, and they decided
|
|
453
|
+
// to cancel the selection, restore the input value to the one they had typed in.
|
|
454
|
+
if (this._pendingAutoselectedOption) {
|
|
455
|
+
this._updateNativeInputValue(this._valueBeforeAutoSelection ?? '');
|
|
456
|
+
this._pendingAutoselectedOption = null;
|
|
457
|
+
}
|
|
458
|
+
this._closeKeyEventStream.next();
|
|
459
|
+
this._resetActiveItem();
|
|
460
|
+
// We need to stop propagation, otherwise the event will eventually
|
|
461
|
+
// reach the input itself and cause the overlay to be reopened.
|
|
462
|
+
event.stopPropagation();
|
|
463
|
+
event.preventDefault();
|
|
464
|
+
}
|
|
465
|
+
};
|
|
446
466
|
/**
|
|
447
467
|
* Track which modal we have modified the `aria-owns` attribute of. When the combobox trigger is
|
|
448
468
|
* inside an aria-modal, we apply aria-owns to the parent modal with the `id` of the options
|
|
@@ -506,6 +526,7 @@ class _MatAutocompleteTriggerBase {
|
|
|
506
526
|
this._overlayRef.detach();
|
|
507
527
|
this._closingActionsSubscription.unsubscribe();
|
|
508
528
|
}
|
|
529
|
+
this._updatePanelState();
|
|
509
530
|
// Note that in some cases this can end up being called after the component is destroyed.
|
|
510
531
|
// Add a check to ensure that we don't try to run change detection on a destroyed view.
|
|
511
532
|
if (!this._componentDestroyed) {
|
|
@@ -632,6 +653,9 @@ class _MatAutocompleteTriggerBase {
|
|
|
632
653
|
this._previousValue = value;
|
|
633
654
|
this._pendingAutoselectedOption = null;
|
|
634
655
|
this._onChange(value);
|
|
656
|
+
if (!value) {
|
|
657
|
+
this._clearPreviousSelectedOption(null, false);
|
|
658
|
+
}
|
|
635
659
|
if (this._canOpen() && this._document.activeElement === event.target) {
|
|
636
660
|
this.openPanel();
|
|
637
661
|
}
|
|
@@ -700,7 +724,7 @@ class _MatAutocompleteTriggerBase {
|
|
|
700
724
|
this._zone.run(() => {
|
|
701
725
|
const wasOpen = this.panelOpen;
|
|
702
726
|
this._resetActiveItem();
|
|
703
|
-
this.
|
|
727
|
+
this._updatePanelState();
|
|
704
728
|
this._changeDetectorRef.detectChanges();
|
|
705
729
|
if (this.panelOpen) {
|
|
706
730
|
this._overlayRef.updatePosition();
|
|
@@ -774,12 +798,14 @@ class _MatAutocompleteTriggerBase {
|
|
|
774
798
|
/**
|
|
775
799
|
* Clear any previous selected option and emit a selection change event for this option
|
|
776
800
|
*/
|
|
777
|
-
_clearPreviousSelectedOption(skip) {
|
|
778
|
-
this.autocomplete.options
|
|
779
|
-
|
|
780
|
-
option.
|
|
781
|
-
|
|
782
|
-
|
|
801
|
+
_clearPreviousSelectedOption(skip, emitEvent) {
|
|
802
|
+
if (this.autocomplete && this.autocomplete.options) {
|
|
803
|
+
this.autocomplete.options.forEach(option => {
|
|
804
|
+
if (option !== skip && option.selected) {
|
|
805
|
+
option.deselect(emitEvent);
|
|
806
|
+
}
|
|
807
|
+
});
|
|
808
|
+
}
|
|
783
809
|
}
|
|
784
810
|
_attachOverlay() {
|
|
785
811
|
if (!this.autocomplete && (typeof ngDevMode === 'undefined' || ngDevMode)) {
|
|
@@ -792,7 +818,6 @@ class _MatAutocompleteTriggerBase {
|
|
|
792
818
|
});
|
|
793
819
|
overlayRef = this._overlay.create(this._getOverlayConfig());
|
|
794
820
|
this._overlayRef = overlayRef;
|
|
795
|
-
this._handleOverlayEvents(overlayRef);
|
|
796
821
|
this._viewportSubscription = this._viewportRuler.change().subscribe(() => {
|
|
797
822
|
if (this.panelOpen && overlayRef) {
|
|
798
823
|
overlayRef.updateSize({ width: this._getPanelWidth() });
|
|
@@ -809,9 +834,9 @@ class _MatAutocompleteTriggerBase {
|
|
|
809
834
|
this._closingActionsSubscription = this._subscribeToClosingActions();
|
|
810
835
|
}
|
|
811
836
|
const wasOpen = this.panelOpen;
|
|
812
|
-
this.autocomplete._setVisibility();
|
|
813
837
|
this.autocomplete._isOpen = this._overlayAttached = true;
|
|
814
838
|
this.autocomplete._setColor(this._formField?.color);
|
|
839
|
+
this._updatePanelState();
|
|
815
840
|
this._applyModalPanelOwnership();
|
|
816
841
|
// We need to do an extra `panelOpen` check in here, because the
|
|
817
842
|
// autocomplete won't be shown if there are no options.
|
|
@@ -819,6 +844,32 @@ class _MatAutocompleteTriggerBase {
|
|
|
819
844
|
this.autocomplete.opened.emit();
|
|
820
845
|
}
|
|
821
846
|
}
|
|
847
|
+
/** Updates the panel's visibility state and any trigger state tied to id. */
|
|
848
|
+
_updatePanelState() {
|
|
849
|
+
this.autocomplete._setVisibility();
|
|
850
|
+
// Note that here we subscribe and unsubscribe based on the panel's visiblity state,
|
|
851
|
+
// because the act of subscribing will prevent events from reaching other overlays and
|
|
852
|
+
// we don't want to block the events if there are no options.
|
|
853
|
+
if (this.panelOpen) {
|
|
854
|
+
const overlayRef = this._overlayRef;
|
|
855
|
+
if (!this._keydownSubscription) {
|
|
856
|
+
// Use the `keydownEvents` in order to take advantage of
|
|
857
|
+
// the overlay event targeting provided by the CDK overlay.
|
|
858
|
+
this._keydownSubscription = overlayRef.keydownEvents().subscribe(this._handlePanelKeydown);
|
|
859
|
+
}
|
|
860
|
+
if (!this._outsideClickSubscription) {
|
|
861
|
+
// Subscribe to the pointer events stream so that it doesn't get picked up by other overlays.
|
|
862
|
+
// TODO(crisbeto): we should switch `_getOutsideClickStream` eventually to use this stream,
|
|
863
|
+
// but the behvior isn't exactly the same and it ends up breaking some internal tests.
|
|
864
|
+
this._outsideClickSubscription = overlayRef.outsidePointerEvents().subscribe();
|
|
865
|
+
}
|
|
866
|
+
}
|
|
867
|
+
else {
|
|
868
|
+
this._keydownSubscription?.unsubscribe();
|
|
869
|
+
this._outsideClickSubscription?.unsubscribe();
|
|
870
|
+
this._keydownSubscription = this._outsideClickSubscription = null;
|
|
871
|
+
}
|
|
872
|
+
}
|
|
822
873
|
_getOverlayConfig() {
|
|
823
874
|
return new OverlayConfig({
|
|
824
875
|
positionStrategy: this._getOverlayPosition(),
|
|
@@ -941,34 +992,6 @@ class _MatAutocompleteTriggerBase {
|
|
|
941
992
|
}
|
|
942
993
|
}
|
|
943
994
|
}
|
|
944
|
-
/** Handles keyboard events coming from the overlay panel. */
|
|
945
|
-
_handleOverlayEvents(overlayRef) {
|
|
946
|
-
// Use the `keydownEvents` in order to take advantage of
|
|
947
|
-
// the overlay event targeting provided by the CDK overlay.
|
|
948
|
-
overlayRef.keydownEvents().subscribe(event => {
|
|
949
|
-
// Close when pressing ESCAPE or ALT + UP_ARROW, based on the a11y guidelines.
|
|
950
|
-
// See: https://www.w3.org/TR/wai-aria-practices-1.1/#textbox-keyboard-interaction
|
|
951
|
-
if ((event.keyCode === ESCAPE && !hasModifierKey(event)) ||
|
|
952
|
-
(event.keyCode === UP_ARROW && hasModifierKey(event, 'altKey'))) {
|
|
953
|
-
// If the user had typed something in before we autoselected an option, and they decided
|
|
954
|
-
// to cancel the selection, restore the input value to the one they had typed in.
|
|
955
|
-
if (this._pendingAutoselectedOption) {
|
|
956
|
-
this._updateNativeInputValue(this._valueBeforeAutoSelection ?? '');
|
|
957
|
-
this._pendingAutoselectedOption = null;
|
|
958
|
-
}
|
|
959
|
-
this._closeKeyEventStream.next();
|
|
960
|
-
this._resetActiveItem();
|
|
961
|
-
// We need to stop propagation, otherwise the event will eventually
|
|
962
|
-
// reach the input itself and cause the overlay to be reopened.
|
|
963
|
-
event.stopPropagation();
|
|
964
|
-
event.preventDefault();
|
|
965
|
-
}
|
|
966
|
-
});
|
|
967
|
-
// Subscribe to the pointer events stream so that it doesn't get picked up by other overlays.
|
|
968
|
-
// TODO(crisbeto): we should switch `_getOutsideClickStream` eventually to use this stream,
|
|
969
|
-
// but the behvior isn't exactly the same and it ends up breaking some internal tests.
|
|
970
|
-
overlayRef.outsidePointerEvents().subscribe();
|
|
971
|
-
}
|
|
972
995
|
/**
|
|
973
996
|
* If the autocomplete trigger is inside of an `aria-modal` element, connect
|
|
974
997
|
* that modal to the options panel with `aria-owns`.
|