@angular/material 8.1.1 → 8.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. package/_theming.scss +4 -2
  2. package/bundles/material-bottom-sheet.umd.js +15 -1
  3. package/bundles/material-bottom-sheet.umd.js.map +1 -1
  4. package/bundles/material-bottom-sheet.umd.min.js +1 -1
  5. package/bundles/material-bottom-sheet.umd.min.js.map +1 -1
  6. package/bundles/material-button-toggle.umd.js +10 -5
  7. package/bundles/material-button-toggle.umd.js.map +1 -1
  8. package/bundles/material-button-toggle.umd.min.js +1 -1
  9. package/bundles/material-button-toggle.umd.min.js.map +1 -1
  10. package/bundles/material-checkbox.umd.js +0 -1
  11. package/bundles/material-checkbox.umd.js.map +1 -1
  12. package/bundles/material-checkbox.umd.min.js +1 -1
  13. package/bundles/material-checkbox.umd.min.js.map +1 -1
  14. package/bundles/material-core.umd.js +2 -2
  15. package/bundles/material-core.umd.js.map +1 -1
  16. package/bundles/material-core.umd.min.js +1 -1
  17. package/bundles/material-core.umd.min.js.map +1 -1
  18. package/bundles/material-datepicker.umd.js +1 -1
  19. package/bundles/material-datepicker.umd.js.map +1 -1
  20. package/bundles/material-datepicker.umd.min.js +2 -2
  21. package/bundles/material-datepicker.umd.min.js.map +1 -1
  22. package/bundles/material-expansion.umd.js +2 -2
  23. package/bundles/material-expansion.umd.js.map +1 -1
  24. package/bundles/material-expansion.umd.min.js.map +1 -1
  25. package/bundles/material-grid-list.umd.js +1 -1
  26. package/bundles/material-grid-list.umd.min.js +1 -1
  27. package/bundles/material-slide-toggle.umd.js +63 -2
  28. package/bundles/material-slide-toggle.umd.js.map +1 -1
  29. package/bundles/material-slide-toggle.umd.min.js +1 -1
  30. package/bundles/material-slide-toggle.umd.min.js.map +1 -1
  31. package/bundles/material-table.umd.js +4 -4
  32. package/bundles/material-table.umd.js.map +1 -1
  33. package/bundles/material-table.umd.min.js +1 -1
  34. package/bundles/material-table.umd.min.js.map +1 -1
  35. package/bundles/material-tabs.umd.js +1 -1
  36. package/bundles/material-tabs.umd.js.map +1 -1
  37. package/bundles/material-tabs.umd.min.js +1 -1
  38. package/bundles/material-tabs.umd.min.js.map +1 -1
  39. package/bundles/material-tree.umd.js +71 -39
  40. package/bundles/material-tree.umd.js.map +1 -1
  41. package/bundles/material-tree.umd.min.js +1 -1
  42. package/bundles/material-tree.umd.min.js.map +1 -1
  43. package/bundles/material.umd.js +166 -55
  44. package/bundles/material.umd.js.map +1 -1
  45. package/bundles/material.umd.min.js +18 -18
  46. package/bundles/material.umd.min.js.map +1 -1
  47. package/button-toggle/typings/index.metadata.json +1 -1
  48. package/checkbox/typings/index.metadata.json +1 -1
  49. package/datepicker/typings/index.metadata.json +1 -1
  50. package/esm2015/bottom-sheet.js +15 -1
  51. package/esm2015/bottom-sheet.js.map +1 -1
  52. package/esm2015/button-toggle.js +10 -5
  53. package/esm2015/button-toggle.js.map +1 -1
  54. package/esm2015/checkbox.js +0 -1
  55. package/esm2015/checkbox.js.map +1 -1
  56. package/esm2015/core.js +2 -2
  57. package/esm2015/core.js.map +1 -1
  58. package/esm2015/datepicker.js +1 -1
  59. package/esm2015/datepicker.js.map +1 -1
  60. package/esm2015/expansion.js +1 -1
  61. package/esm2015/expansion.js.map +1 -1
  62. package/esm2015/grid-list.js +1 -1
  63. package/esm2015/material.js +2 -2
  64. package/esm2015/slide-toggle.js +57 -5
  65. package/esm2015/slide-toggle.js.map +1 -1
  66. package/esm2015/table.js +2 -2
  67. package/esm2015/table.js.map +1 -1
  68. package/esm2015/tabs.js +1 -1
  69. package/esm2015/tabs.js.map +1 -1
  70. package/esm2015/tree.js +63 -40
  71. package/esm2015/tree.js.map +1 -1
  72. package/esm5/bottom-sheet.es5.js +15 -1
  73. package/esm5/bottom-sheet.es5.js.map +1 -1
  74. package/esm5/button-toggle.es5.js +10 -5
  75. package/esm5/button-toggle.es5.js.map +1 -1
  76. package/esm5/checkbox.es5.js +0 -1
  77. package/esm5/checkbox.es5.js.map +1 -1
  78. package/esm5/core.es5.js +2 -2
  79. package/esm5/core.es5.js.map +1 -1
  80. package/esm5/datepicker.es5.js +1 -1
  81. package/esm5/datepicker.es5.js.map +1 -1
  82. package/esm5/expansion.es5.js +2 -2
  83. package/esm5/expansion.es5.js.map +1 -1
  84. package/esm5/grid-list.es5.js +1 -1
  85. package/esm5/material.es5.js +2 -2
  86. package/esm5/slide-toggle.es5.js +63 -5
  87. package/esm5/slide-toggle.es5.js.map +1 -1
  88. package/esm5/table.es5.js +4 -4
  89. package/esm5/table.es5.js.map +1 -1
  90. package/esm5/tabs.es5.js +1 -1
  91. package/esm5/tabs.es5.js.map +1 -1
  92. package/esm5/tree.es5.js +70 -37
  93. package/esm5/tree.es5.js.map +1 -1
  94. package/expansion/typings/expansion-panel.d.ts +1 -1
  95. package/grid-list/typings/index.d.ts +1 -1
  96. package/grid-list/typings/index.metadata.json +1 -1
  97. package/material.d.ts +1 -1
  98. package/material.metadata.json +3 -3
  99. package/package.json +4 -4
  100. package/prebuilt-themes/deeppurple-amber.css +1 -1
  101. package/prebuilt-themes/indigo-pink.css +1 -1
  102. package/prebuilt-themes/pink-bluegrey.css +1 -1
  103. package/prebuilt-themes/purple-green.css +1 -1
  104. package/slide-toggle/typings/index.metadata.json +1 -1
  105. package/slide-toggle/typings/public-api.d.ts +1 -0
  106. package/slide-toggle/typings/slide-toggle-module.d.ts +3 -0
  107. package/slide-toggle/typings/slide-toggle-required-validator.d.ts +20 -0
  108. package/table/typings/table-data-source.d.ts +1 -1
  109. package/tabs/typings/index.metadata.json +1 -1
  110. package/tree/typings/index.metadata.json +1 -1
  111. package/tree/typings/node.d.ts +8 -6
  112. package/typings/button-toggle/index.metadata.json +1 -1
  113. package/typings/checkbox/index.metadata.json +1 -1
  114. package/typings/core/index.metadata.json +1 -1
  115. package/typings/datepicker/index.metadata.json +1 -1
  116. package/typings/esm5/button-toggle/index.metadata.json +1 -1
  117. package/typings/esm5/checkbox/index.metadata.json +1 -1
  118. package/typings/esm5/core/index.metadata.json +1 -1
  119. package/typings/esm5/datepicker/index.metadata.json +1 -1
  120. package/typings/esm5/expansion/expansion-panel.d.ts +1 -1
  121. package/typings/esm5/grid-list/index.d.ts +1 -1
  122. package/typings/esm5/grid-list/index.metadata.json +1 -1
  123. package/typings/esm5/slide-toggle/index.metadata.json +1 -1
  124. package/typings/esm5/slide-toggle/public-api.d.ts +1 -0
  125. package/typings/esm5/slide-toggle/slide-toggle-module.d.ts +3 -0
  126. package/typings/esm5/slide-toggle/slide-toggle-required-validator.d.ts +20 -0
  127. package/typings/esm5/table/table-data-source.d.ts +1 -1
  128. package/typings/esm5/tabs/index.metadata.json +1 -1
  129. package/typings/esm5/tree/index.metadata.json +1 -1
  130. package/typings/esm5/tree/node.d.ts +8 -6
  131. package/typings/expansion/expansion-panel.d.ts +1 -1
  132. package/typings/grid-list/index.d.ts +1 -1
  133. package/typings/grid-list/index.metadata.json +1 -1
  134. package/typings/slide-toggle/index.metadata.json +1 -1
  135. package/typings/slide-toggle/public-api.d.ts +1 -0
  136. package/typings/slide-toggle/slide-toggle-module.d.ts +3 -0
  137. package/typings/slide-toggle/slide-toggle-required-validator.d.ts +20 -0
  138. package/typings/table/table-data-source.d.ts +1 -1
  139. package/typings/tabs/index.metadata.json +1 -1
  140. package/typings/tree/index.metadata.json +1 -1
  141. package/typings/tree/node.d.ts +8 -6
package/esm2015/tree.js CHANGED
@@ -5,51 +5,21 @@
5
5
  * Use of this source code is governed by an MIT-style license that can be
6
6
  * found in the LICENSE file at https://angular.io/license
7
7
  */
8
- import { CDK_TREE_NODE_OUTLET_NODE, CdkNestedTreeNode, CdkTree, CdkTreeNode, CdkTreeNodeDef, CdkTreeNodePadding, CdkTreeNodeToggle, CdkTreeModule } from '@angular/cdk/tree';
9
- import { Directive, Inject, Optional, ViewContainerRef, Attribute, ContentChildren, ElementRef, Input, IterableDiffers, ChangeDetectionStrategy, Component, ViewChild, ViewEncapsulation, NgModule } from '@angular/core';
8
+ import { CDK_TREE_NODE_OUTLET_NODE, CdkNestedTreeNode, CdkTree, CdkTreeNode, CdkTreeNodeDef, CdkTreeNodePadding, CdkTreeNodeOutlet, CdkTreeNodeToggle, CdkTreeModule } from '@angular/cdk/tree';
9
+ import { Attribute, Directive, ElementRef, Input, IterableDiffers, Inject, Optional, ViewContainerRef, ChangeDetectionStrategy, Component, ViewChild, ViewEncapsulation, NgModule } from '@angular/core';
10
10
  import { mixinDisabled, mixinTabIndex, MatCommonModule } from '@angular/material/core';
11
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
11
12
  import { CommonModule } from '@angular/common';
12
13
  import { DataSource } from '@angular/cdk/collections';
13
14
  import { BehaviorSubject, merge } from 'rxjs';
14
15
  import { map, take } from 'rxjs/operators';
15
16
 
16
- /**
17
- * @fileoverview added by tsickle
18
- * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
19
- */
20
- /**
21
- * Outlet for nested CdkNode. Put `[matTreeNodeOutlet]` on a tag to place children dataNodes
22
- * inside the outlet.
23
- */
24
- class MatTreeNodeOutlet {
25
- /**
26
- * @param {?} viewContainer
27
- * @param {?=} _node
28
- */
29
- constructor(viewContainer, _node) {
30
- this.viewContainer = viewContainer;
31
- this._node = _node;
32
- }
33
- }
34
- MatTreeNodeOutlet.decorators = [
35
- { type: Directive, args: [{
36
- selector: '[matTreeNodeOutlet]'
37
- },] },
38
- ];
39
- /** @nocollapse */
40
- MatTreeNodeOutlet.ctorParameters = () => [
41
- { type: ViewContainerRef },
42
- { type: undefined, decorators: [{ type: Inject, args: [CDK_TREE_NODE_OUTLET_NODE,] }, { type: Optional }] }
43
- ];
44
-
45
17
  /**
46
18
  * @fileoverview added by tsickle
47
19
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
48
20
  */
49
21
  /** @type {?} */
50
22
  const _MatTreeNodeMixinBase = mixinTabIndex(mixinDisabled(CdkTreeNode));
51
- /** @type {?} */
52
- const _MatNestedTreeNodeMixinBase = mixinTabIndex(mixinDisabled(CdkNestedTreeNode));
53
23
  /**
54
24
  * Wrapper for the CdkTree node with Material design styles.
55
25
  * @template T
@@ -113,7 +83,7 @@ MatTreeNodeDef.propDecorators = {
113
83
  * Wrapper for the CdkTree nested node with Material design styles.
114
84
  * @template T
115
85
  */
116
- class MatNestedTreeNode extends _MatNestedTreeNodeMixinBase {
86
+ class MatNestedTreeNode extends CdkNestedTreeNode {
117
87
  /**
118
88
  * @param {?} _elementRef
119
89
  * @param {?} _tree
@@ -125,8 +95,32 @@ class MatNestedTreeNode extends _MatNestedTreeNodeMixinBase {
125
95
  this._elementRef = _elementRef;
126
96
  this._tree = _tree;
127
97
  this._differs = _differs;
98
+ this._disabled = false;
128
99
  this.tabIndex = Number(tabIndex) || 0;
129
100
  }
101
+ /**
102
+ * Whether the node is disabled.
103
+ * @return {?}
104
+ */
105
+ get disabled() { return this._disabled; }
106
+ /**
107
+ * @param {?} value
108
+ * @return {?}
109
+ */
110
+ set disabled(value) { this._disabled = coerceBooleanProperty(value); }
111
+ /**
112
+ * Tabindex for the node.
113
+ * @return {?}
114
+ */
115
+ get tabIndex() { return this.disabled ? -1 : this._tabIndex; }
116
+ /**
117
+ * @param {?} value
118
+ * @return {?}
119
+ */
120
+ set tabIndex(value) {
121
+ // If the specified tabIndex value is null or undefined, fall back to the default value.
122
+ this._tabIndex = value != null ? value : 0;
123
+ }
130
124
  // This is a workaround for https://github.com/angular/angular/issues/23091
131
125
  // In aot mode, the lifecycle hooks from parent class are not called.
132
126
  // TODO(tinayuangao): Remove when the angular issue #23091 is fixed
@@ -152,7 +146,6 @@ MatNestedTreeNode.decorators = [
152
146
  '[attr.role]': 'role',
153
147
  'class': 'mat-nested-tree-node',
154
148
  },
155
- inputs: ['disabled', 'tabIndex'],
156
149
  providers: [
157
150
  { provide: CdkNestedTreeNode, useExisting: MatNestedTreeNode },
158
151
  { provide: CdkTreeNode, useExisting: MatNestedTreeNode },
@@ -169,11 +162,8 @@ MatNestedTreeNode.ctorParameters = () => [
169
162
  ];
170
163
  MatNestedTreeNode.propDecorators = {
171
164
  node: [{ type: Input, args: ['matNestedTreeNode',] }],
172
- nodeOutlet: [{ type: ContentChildren, args: [MatTreeNodeOutlet, {
173
- // We need to use `descendants: true`, because Ivy will no longer match
174
- // indirect descendants if it's left as false.
175
- descendants: true
176
- },] }]
165
+ disabled: [{ type: Input }],
166
+ tabIndex: [{ type: Input }]
177
167
  };
178
168
 
179
169
  /**
@@ -197,6 +187,39 @@ MatTreeNodePadding.propDecorators = {
197
187
  indent: [{ type: Input, args: ['matTreeNodePaddingIndent',] }]
198
188
  };
199
189
 
190
+ /**
191
+ * @fileoverview added by tsickle
192
+ * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
193
+ */
194
+ /**
195
+ * Outlet for nested CdkNode. Put `[matTreeNodeOutlet]` on a tag to place children dataNodes
196
+ * inside the outlet.
197
+ */
198
+ class MatTreeNodeOutlet {
199
+ /**
200
+ * @param {?} viewContainer
201
+ * @param {?=} _node
202
+ */
203
+ constructor(viewContainer, _node) {
204
+ this.viewContainer = viewContainer;
205
+ this._node = _node;
206
+ }
207
+ }
208
+ MatTreeNodeOutlet.decorators = [
209
+ { type: Directive, args: [{
210
+ selector: '[matTreeNodeOutlet]',
211
+ providers: [{
212
+ provide: CdkTreeNodeOutlet,
213
+ useExisting: MatTreeNodeOutlet
214
+ }]
215
+ },] },
216
+ ];
217
+ /** @nocollapse */
218
+ MatTreeNodeOutlet.ctorParameters = () => [
219
+ { type: ViewContainerRef },
220
+ { type: undefined, decorators: [{ type: Inject, args: [CDK_TREE_NODE_OUTLET_NODE,] }, { type: Optional }] }
221
+ ];
222
+
200
223
  /**
201
224
  * @fileoverview added by tsickle
202
225
  * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
@@ -1 +1 @@
1
- {"version":3,"file":"tree.js","sources":["../../../src/material/tree/data-source/nested-data-source.ts","../../../src/material/tree/data-source/flat-data-source.ts","../../../src/material/tree/tree-module.ts","../../../src/material/tree/toggle.ts","../../../src/material/tree/tree.ts","../../../src/material/tree/padding.ts","../../../src/material/tree/node.ts","../../../src/material/tree/outlet.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.io/license\n */\n\nimport {CollectionViewer, DataSource} from '@angular/cdk/collections';\nimport {BehaviorSubject, merge, Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\n\n/**\n * Data source for nested tree.\n *\n * The data source for nested tree doesn't have to consider node flattener, or the way to expand\n * or collapse. The expansion/collapsion will be handled by TreeControl and each non-leaf node.\n */\nexport class MatTreeNestedDataSource<T> extends DataSource<T> {\n _data = new BehaviorSubject<T[]>([]);\n\n /**\n * Data for the nested tree\n */\n get data() { return this._data.value; }\n set data(value: T[]) { this._data.next(value); }\n\n connect(collectionViewer: CollectionViewer): Observable<T[]> {\n return merge(...[collectionViewer.viewChange, this._data])\n .pipe(map(() => {\n return this.data;\n }));\n }\n\n disconnect() {\n // no op\n }\n}\n\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {CollectionViewer, DataSource} from '@angular/cdk/collections';\nimport {FlatTreeControl, TreeControl} from '@angular/cdk/tree';\nimport {BehaviorSubject, merge, Observable} from 'rxjs';\nimport {map, take} from 'rxjs/operators';\n\n/**\n * Tree flattener to convert a normal type of node to node with children & level information.\n * Transform nested nodes of type `T` to flattened nodes of type `F`.\n *\n * For example, the input data of type `T` is nested, and contains its children data:\n * SomeNode: {\n * key: 'Fruits',\n * children: [\n * NodeOne: {\n * key: 'Apple',\n * },\n * NodeTwo: {\n * key: 'Pear',\n * }\n * ]\n * }\n * After flattener flatten the tree, the structure will become\n * SomeNode: {\n * key: 'Fruits',\n * expandable: true,\n * level: 1\n * },\n * NodeOne: {\n * key: 'Apple',\n * expandable: false,\n * level: 2\n * },\n * NodeTwo: {\n * key: 'Pear',\n * expandable: false,\n * level: 2\n * }\n * and the output flattened type is `F` with additional information.\n */\nexport class MatTreeFlattener<T, F> {\n\n constructor(public transformFunction: (node: T, level: number) => F,\n public getLevel: (node: F) => number,\n public isExpandable: (node: F) => boolean,\n public getChildren: (node: T) =>\n Observable<T[]> | T[] | undefined | null) {}\n\n _flattenNode(node: T, level: number,\n resultNodes: F[], parentMap: boolean[]): F[] {\n const flatNode = this.transformFunction(node, level);\n resultNodes.push(flatNode);\n\n if (this.isExpandable(flatNode)) {\n const childrenNodes = this.getChildren(node);\n if (childrenNodes) {\n if (Array.isArray(childrenNodes)) {\n this._flattenChildren(childrenNodes, level, resultNodes, parentMap);\n } else {\n childrenNodes.pipe(take(1)).subscribe(children => {\n this._flattenChildren(children, level, resultNodes, parentMap);\n });\n }\n }\n }\n return resultNodes;\n }\n\n _flattenChildren(children: T[], level: number,\n resultNodes: F[], parentMap: boolean[]): void {\n children.forEach((child, index) => {\n let childParentMap: boolean[] = parentMap.slice();\n childParentMap.push(index != children.length - 1);\n this._flattenNode(child, level + 1, resultNodes, childParentMap);\n });\n }\n\n /**\n * Flatten a list of node type T to flattened version of node F.\n * Please note that type T may be nested, and the length of `structuredData` may be different\n * from that of returned list `F[]`.\n */\n flattenNodes(structuredData: T[]): F[] {\n let resultNodes: F[] = [];\n structuredData.forEach(node => this._flattenNode(node, 0, resultNodes, []));\n return resultNodes;\n }\n\n /**\n * Expand flattened node with current expansion status.\n * The returned list may have different length.\n */\n expandFlattenedNodes(nodes: F[], treeControl: TreeControl<F>): F[] {\n let results: F[] = [];\n let currentExpand: boolean[] = [];\n currentExpand[0] = true;\n\n nodes.forEach(node => {\n let expand = true;\n for (let i = 0; i <= this.getLevel(node); i++) {\n expand = expand && currentExpand[i];\n }\n if (expand) {\n results.push(node);\n }\n if (this.isExpandable(node)) {\n currentExpand[this.getLevel(node) + 1] = treeControl.isExpanded(node);\n }\n });\n return results;\n }\n}\n\n\n/**\n * Data source for flat tree.\n * The data source need to handle expansion/collapsion of the tree node and change the data feed\n * to `MatTree`.\n * The nested tree nodes of type `T` are flattened through `MatTreeFlattener`, and converted\n * to type `F` for `MatTree` to consume.\n */\nexport class MatTreeFlatDataSource<T, F> extends DataSource<F> {\n _flattenedData = new BehaviorSubject<F[]>([]);\n\n _expandedData = new BehaviorSubject<F[]>([]);\n\n _data: BehaviorSubject<T[]>;\n get data() { return this._data.value; }\n set data(value: T[]) {\n this._data.next(value);\n this._flattenedData.next(this._treeFlattener.flattenNodes(this.data));\n this._treeControl.dataNodes = this._flattenedData.value;\n }\n\n constructor(private _treeControl: FlatTreeControl<F>,\n private _treeFlattener: MatTreeFlattener<T, F>,\n initialData: T[] = []) {\n super();\n this._data = new BehaviorSubject<T[]>(initialData);\n }\n\n connect(collectionViewer: CollectionViewer): Observable<F[]> {\n const changes = [\n collectionViewer.viewChange,\n this._treeControl.expansionModel.onChange,\n this._flattenedData\n ];\n return merge(...changes).pipe(map(() => {\n this._expandedData.next(\n this._treeFlattener.expandFlattenedNodes(this._flattenedData.value, this._treeControl));\n return this._expandedData.value;\n }));\n }\n\n disconnect() {\n // no op\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.io/license\n */\n\nimport {NgModule} from '@angular/core';\n\nimport {CdkTreeModule} from '@angular/cdk/tree';\nimport {CommonModule} from '@angular/common';\nimport {MatCommonModule} from '@angular/material/core';\nimport {MatNestedTreeNode, MatTreeNodeDef, MatTreeNode} from './node';\nimport {MatTree} from './tree';\nimport {MatTreeNodeToggle} from './toggle';\nimport {MatTreeNodeOutlet} from './outlet';\nimport {MatTreeNodePadding} from './padding';\n\nconst MAT_TREE_DIRECTIVES = [\n MatNestedTreeNode,\n MatTreeNodeDef,\n MatTreeNodePadding,\n MatTreeNodeToggle,\n MatTree,\n MatTreeNode,\n MatTreeNodeOutlet\n];\n\n@NgModule({\n imports: [CdkTreeModule, CommonModule, MatCommonModule],\n exports: MAT_TREE_DIRECTIVES,\n declarations: MAT_TREE_DIRECTIVES,\n})\nexport class MatTreeModule {}\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.io/license\n */\n\nimport {CdkTreeNodeToggle} from '@angular/cdk/tree';\nimport {Directive, Input} from '@angular/core';\n\n/**\n * Wrapper for the CdkTree's toggle with Material design styles.\n */\n@Directive({\n selector: '[matTreeNodeToggle]',\n providers: [{provide: CdkTreeNodeToggle, useExisting: MatTreeNodeToggle}]\n})\nexport class MatTreeNodeToggle<T> extends CdkTreeNodeToggle<T> {\n @Input('matTreeNodeToggleRecursive') recursive: boolean = false;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {CdkTree} from '@angular/cdk/tree';\nimport {ChangeDetectionStrategy, Component, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {MatTreeNodeOutlet} from './outlet';\n\n/**\n * Wrapper for the CdkTable with Material design styles.\n */\n@Component({\n moduleId: module.id,\n selector: 'mat-tree',\n exportAs: 'matTree',\n template: `<ng-container matTreeNodeOutlet></ng-container>`,\n host: {\n 'class': 'mat-tree',\n 'role': 'tree',\n },\n styleUrls: ['tree.css'],\n encapsulation: ViewEncapsulation.None,\n // See note on CdkTree for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n providers: [{provide: CdkTree, useExisting: MatTree}]\n})\nexport class MatTree<T> extends CdkTree<T> {\n // Outlets within the tree's template where the dataNodes will be inserted.\n @ViewChild(MatTreeNodeOutlet, {static: true}) _nodeOutlet: MatTreeNodeOutlet;\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.io/license\n */\nimport {CdkTreeNodePadding} from '@angular/cdk/tree';\nimport {Directive, Input} from '@angular/core';\n\n/**\n * Wrapper for the CdkTree padding with Material design styles.\n */\n@Directive({\n selector: '[matTreeNodePadding]',\n providers: [{provide: CdkTreeNodePadding, useExisting: MatTreeNodePadding}]\n})\nexport class MatTreeNodePadding<T> extends CdkTreeNodePadding<T> {\n\n /** The level of depth of the tree node. The padding will be `level * indent` pixels. */\n @Input('matTreeNodePadding') level: number;\n\n /** The indent for each level. Default number 40px from material design menu sub-menu spec. */\n @Input('matTreeNodePaddingIndent') indent: number;\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.io/license\n */\n\nimport {\n CDK_TREE_NODE_OUTLET_NODE,\n CdkNestedTreeNode,\n CdkTree,\n CdkTreeNode,\n CdkTreeNodeDef,\n} from '@angular/cdk/tree';\nimport {\n AfterContentInit,\n Attribute,\n ContentChildren,\n Directive,\n ElementRef,\n Input,\n IterableDiffers,\n OnDestroy,\n QueryList,\n} from '@angular/core';\nimport {\n CanDisable,\n CanDisableCtor,\n HasTabIndex,\n HasTabIndexCtor,\n mixinDisabled,\n mixinTabIndex,\n} from '@angular/material/core';\n\nimport {MatTreeNodeOutlet} from './outlet';\n\nconst _MatTreeNodeMixinBase: HasTabIndexCtor & CanDisableCtor & typeof CdkTreeNode =\n mixinTabIndex(mixinDisabled(CdkTreeNode));\n\nconst _MatNestedTreeNodeMixinBase:\n HasTabIndexCtor & CanDisableCtor & typeof CdkNestedTreeNode =\n mixinTabIndex(mixinDisabled(CdkNestedTreeNode));\n\n/**\n * Wrapper for the CdkTree node with Material design styles.\n */\n@Directive({\n selector: 'mat-tree-node',\n exportAs: 'matTreeNode',\n inputs: ['disabled', 'tabIndex'],\n host: {\n '[attr.aria-expanded]': 'isExpanded',\n '[attr.aria-level]': 'role === \"treeitem\" ? level : null',\n '[attr.role]': 'role',\n 'class': 'mat-tree-node'\n },\n providers: [{provide: CdkTreeNode, useExisting: MatTreeNode}]\n})\nexport class MatTreeNode<T> extends _MatTreeNodeMixinBase<T>\n implements CanDisable, HasTabIndex {\n @Input() role: 'treeitem' | 'group' = 'treeitem';\n\n constructor(protected _elementRef: ElementRef<HTMLElement>,\n protected _tree: CdkTree<T>,\n @Attribute('tabindex') tabIndex: string) {\n super(_elementRef, _tree);\n\n this.tabIndex = Number(tabIndex) || 0;\n }\n}\n\n/**\n * Wrapper for the CdkTree node definition with Material design styles.\n */\n@Directive({\n selector: '[matTreeNodeDef]',\n inputs: [\n 'when: matTreeNodeDefWhen'\n ],\n providers: [{provide: CdkTreeNodeDef, useExisting: MatTreeNodeDef}]\n})\nexport class MatTreeNodeDef<T> extends CdkTreeNodeDef<T> {\n @Input('matTreeNode') data: T;\n}\n\n/**\n * Wrapper for the CdkTree nested node with Material design styles.\n */\n@Directive({\n selector: 'mat-nested-tree-node',\n exportAs: 'matNestedTreeNode',\n host: {\n '[attr.aria-expanded]': 'isExpanded',\n '[attr.role]': 'role',\n 'class': 'mat-nested-tree-node',\n },\n inputs: ['disabled', 'tabIndex'],\n providers: [\n {provide: CdkNestedTreeNode, useExisting: MatNestedTreeNode},\n {provide: CdkTreeNode, useExisting: MatNestedTreeNode},\n {provide: CDK_TREE_NODE_OUTLET_NODE, useExisting: MatNestedTreeNode}\n ]\n})\nexport class MatNestedTreeNode<T> extends _MatNestedTreeNodeMixinBase<T> implements\n AfterContentInit, CanDisable, HasTabIndex, OnDestroy {\n @Input('matNestedTreeNode') node: T;\n\n /** The children node placeholder. */\n @ContentChildren(MatTreeNodeOutlet, {\n // We need to use `descendants: true`, because Ivy will no longer match\n // indirect descendants if it's left as false.\n descendants: true\n })\n nodeOutlet: QueryList<MatTreeNodeOutlet>;\n\n constructor(protected _elementRef: ElementRef<HTMLElement>,\n protected _tree: CdkTree<T>,\n protected _differs: IterableDiffers,\n @Attribute('tabindex') tabIndex: string) {\n super(_elementRef, _tree, _differs);\n\n this.tabIndex = Number(tabIndex) || 0;\n }\n\n // This is a workaround for https://github.com/angular/angular/issues/23091\n // In aot mode, the lifecycle hooks from parent class are not called.\n // TODO(tinayuangao): Remove when the angular issue #23091 is fixed\n ngAfterContentInit() {\n super.ngAfterContentInit();\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\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.io/license\n */\nimport {CDK_TREE_NODE_OUTLET_NODE, CdkTreeNodeOutlet} from '@angular/cdk/tree';\nimport {\n Directive,\n Inject,\n Optional,\n ViewContainerRef,\n} from '@angular/core';\n\n/**\n * Outlet for nested CdkNode. Put `[matTreeNodeOutlet]` on a tag to place children dataNodes\n * inside the outlet.\n */\n@Directive({\n selector: '[matTreeNodeOutlet]'\n})\nexport class MatTreeNodeOutlet implements CdkTreeNodeOutlet {\n constructor(\n public viewContainer: ViewContainerRef,\n @Inject(CDK_TREE_NODE_OUTLET_NODE) @Optional() public _node?: any) {}\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tree.js","sources":["../../../src/material/tree/data-source/nested-data-source.ts","../../../src/material/tree/data-source/flat-data-source.ts","../../../src/material/tree/tree-module.ts","../../../src/material/tree/toggle.ts","../../../src/material/tree/tree.ts","../../../src/material/tree/outlet.ts","../../../src/material/tree/padding.ts","../../../src/material/tree/node.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.io/license\n */\n\nimport {CollectionViewer, DataSource} from '@angular/cdk/collections';\nimport {BehaviorSubject, merge, Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\n\n/**\n * Data source for nested tree.\n *\n * The data source for nested tree doesn't have to consider node flattener, or the way to expand\n * or collapse. The expansion/collapsion will be handled by TreeControl and each non-leaf node.\n */\nexport class MatTreeNestedDataSource<T> extends DataSource<T> {\n _data = new BehaviorSubject<T[]>([]);\n\n /**\n * Data for the nested tree\n */\n get data() { return this._data.value; }\n set data(value: T[]) { this._data.next(value); }\n\n connect(collectionViewer: CollectionViewer): Observable<T[]> {\n return merge(...[collectionViewer.viewChange, this._data])\n .pipe(map(() => {\n return this.data;\n }));\n }\n\n disconnect() {\n // no op\n }\n}\n\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {CollectionViewer, DataSource} from '@angular/cdk/collections';\nimport {FlatTreeControl, TreeControl} from '@angular/cdk/tree';\nimport {BehaviorSubject, merge, Observable} from 'rxjs';\nimport {map, take} from 'rxjs/operators';\n\n/**\n * Tree flattener to convert a normal type of node to node with children & level information.\n * Transform nested nodes of type `T` to flattened nodes of type `F`.\n *\n * For example, the input data of type `T` is nested, and contains its children data:\n * SomeNode: {\n * key: 'Fruits',\n * children: [\n * NodeOne: {\n * key: 'Apple',\n * },\n * NodeTwo: {\n * key: 'Pear',\n * }\n * ]\n * }\n * After flattener flatten the tree, the structure will become\n * SomeNode: {\n * key: 'Fruits',\n * expandable: true,\n * level: 1\n * },\n * NodeOne: {\n * key: 'Apple',\n * expandable: false,\n * level: 2\n * },\n * NodeTwo: {\n * key: 'Pear',\n * expandable: false,\n * level: 2\n * }\n * and the output flattened type is `F` with additional information.\n */\nexport class MatTreeFlattener<T, F> {\n\n constructor(public transformFunction: (node: T, level: number) => F,\n public getLevel: (node: F) => number,\n public isExpandable: (node: F) => boolean,\n public getChildren: (node: T) =>\n Observable<T[]> | T[] | undefined | null) {}\n\n _flattenNode(node: T, level: number,\n resultNodes: F[], parentMap: boolean[]): F[] {\n const flatNode = this.transformFunction(node, level);\n resultNodes.push(flatNode);\n\n if (this.isExpandable(flatNode)) {\n const childrenNodes = this.getChildren(node);\n if (childrenNodes) {\n if (Array.isArray(childrenNodes)) {\n this._flattenChildren(childrenNodes, level, resultNodes, parentMap);\n } else {\n childrenNodes.pipe(take(1)).subscribe(children => {\n this._flattenChildren(children, level, resultNodes, parentMap);\n });\n }\n }\n }\n return resultNodes;\n }\n\n _flattenChildren(children: T[], level: number,\n resultNodes: F[], parentMap: boolean[]): void {\n children.forEach((child, index) => {\n let childParentMap: boolean[] = parentMap.slice();\n childParentMap.push(index != children.length - 1);\n this._flattenNode(child, level + 1, resultNodes, childParentMap);\n });\n }\n\n /**\n * Flatten a list of node type T to flattened version of node F.\n * Please note that type T may be nested, and the length of `structuredData` may be different\n * from that of returned list `F[]`.\n */\n flattenNodes(structuredData: T[]): F[] {\n let resultNodes: F[] = [];\n structuredData.forEach(node => this._flattenNode(node, 0, resultNodes, []));\n return resultNodes;\n }\n\n /**\n * Expand flattened node with current expansion status.\n * The returned list may have different length.\n */\n expandFlattenedNodes(nodes: F[], treeControl: TreeControl<F>): F[] {\n let results: F[] = [];\n let currentExpand: boolean[] = [];\n currentExpand[0] = true;\n\n nodes.forEach(node => {\n let expand = true;\n for (let i = 0; i <= this.getLevel(node); i++) {\n expand = expand && currentExpand[i];\n }\n if (expand) {\n results.push(node);\n }\n if (this.isExpandable(node)) {\n currentExpand[this.getLevel(node) + 1] = treeControl.isExpanded(node);\n }\n });\n return results;\n }\n}\n\n\n/**\n * Data source for flat tree.\n * The data source need to handle expansion/collapsion of the tree node and change the data feed\n * to `MatTree`.\n * The nested tree nodes of type `T` are flattened through `MatTreeFlattener`, and converted\n * to type `F` for `MatTree` to consume.\n */\nexport class MatTreeFlatDataSource<T, F> extends DataSource<F> {\n _flattenedData = new BehaviorSubject<F[]>([]);\n\n _expandedData = new BehaviorSubject<F[]>([]);\n\n _data: BehaviorSubject<T[]>;\n get data() { return this._data.value; }\n set data(value: T[]) {\n this._data.next(value);\n this._flattenedData.next(this._treeFlattener.flattenNodes(this.data));\n this._treeControl.dataNodes = this._flattenedData.value;\n }\n\n constructor(private _treeControl: FlatTreeControl<F>,\n private _treeFlattener: MatTreeFlattener<T, F>,\n initialData: T[] = []) {\n super();\n this._data = new BehaviorSubject<T[]>(initialData);\n }\n\n connect(collectionViewer: CollectionViewer): Observable<F[]> {\n const changes = [\n collectionViewer.viewChange,\n this._treeControl.expansionModel.onChange,\n this._flattenedData\n ];\n return merge(...changes).pipe(map(() => {\n this._expandedData.next(\n this._treeFlattener.expandFlattenedNodes(this._flattenedData.value, this._treeControl));\n return this._expandedData.value;\n }));\n }\n\n disconnect() {\n // no op\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.io/license\n */\n\nimport {NgModule} from '@angular/core';\n\nimport {CdkTreeModule} from '@angular/cdk/tree';\nimport {CommonModule} from '@angular/common';\nimport {MatCommonModule} from '@angular/material/core';\nimport {MatNestedTreeNode, MatTreeNodeDef, MatTreeNode} from './node';\nimport {MatTree} from './tree';\nimport {MatTreeNodeToggle} from './toggle';\nimport {MatTreeNodeOutlet} from './outlet';\nimport {MatTreeNodePadding} from './padding';\n\nconst MAT_TREE_DIRECTIVES = [\n MatNestedTreeNode,\n MatTreeNodeDef,\n MatTreeNodePadding,\n MatTreeNodeToggle,\n MatTree,\n MatTreeNode,\n MatTreeNodeOutlet\n];\n\n@NgModule({\n imports: [CdkTreeModule, CommonModule, MatCommonModule],\n exports: MAT_TREE_DIRECTIVES,\n declarations: MAT_TREE_DIRECTIVES,\n})\nexport class MatTreeModule {}\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.io/license\n */\n\nimport {CdkTreeNodeToggle} from '@angular/cdk/tree';\nimport {Directive, Input} from '@angular/core';\n\n/**\n * Wrapper for the CdkTree's toggle with Material design styles.\n */\n@Directive({\n selector: '[matTreeNodeToggle]',\n providers: [{provide: CdkTreeNodeToggle, useExisting: MatTreeNodeToggle}]\n})\nexport class MatTreeNodeToggle<T> extends CdkTreeNodeToggle<T> {\n @Input('matTreeNodeToggleRecursive') recursive: boolean = false;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {CdkTree} from '@angular/cdk/tree';\nimport {ChangeDetectionStrategy, Component, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {MatTreeNodeOutlet} from './outlet';\n\n/**\n * Wrapper for the CdkTable with Material design styles.\n */\n@Component({\n moduleId: module.id,\n selector: 'mat-tree',\n exportAs: 'matTree',\n template: `<ng-container matTreeNodeOutlet></ng-container>`,\n host: {\n 'class': 'mat-tree',\n 'role': 'tree',\n },\n styleUrls: ['tree.css'],\n encapsulation: ViewEncapsulation.None,\n // See note on CdkTree for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n providers: [{provide: CdkTree, useExisting: MatTree}]\n})\nexport class MatTree<T> extends CdkTree<T> {\n // Outlets within the tree's template where the dataNodes will be inserted.\n @ViewChild(MatTreeNodeOutlet, {static: true}) _nodeOutlet: MatTreeNodeOutlet;\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.io/license\n */\nimport {CDK_TREE_NODE_OUTLET_NODE, CdkTreeNodeOutlet} from '@angular/cdk/tree';\nimport {\n Directive,\n Inject,\n Optional,\n ViewContainerRef,\n} from '@angular/core';\n\n/**\n * Outlet for nested CdkNode. Put `[matTreeNodeOutlet]` on a tag to place children dataNodes\n * inside the outlet.\n */\n@Directive({\n selector: '[matTreeNodeOutlet]',\n providers: [{\n provide: CdkTreeNodeOutlet,\n useExisting: MatTreeNodeOutlet\n }]\n})\nexport class MatTreeNodeOutlet implements CdkTreeNodeOutlet {\n constructor(\n public viewContainer: ViewContainerRef,\n @Inject(CDK_TREE_NODE_OUTLET_NODE) @Optional() public _node?: any) {}\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.io/license\n */\nimport {CdkTreeNodePadding} from '@angular/cdk/tree';\nimport {Directive, Input} from '@angular/core';\n\n/**\n * Wrapper for the CdkTree padding with Material design styles.\n */\n@Directive({\n selector: '[matTreeNodePadding]',\n providers: [{provide: CdkTreeNodePadding, useExisting: MatTreeNodePadding}]\n})\nexport class MatTreeNodePadding<T> extends CdkTreeNodePadding<T> {\n\n /** The level of depth of the tree node. The padding will be `level * indent` pixels. */\n @Input('matTreeNodePadding') level: number;\n\n /** The indent for each level. Default number 40px from material design menu sub-menu spec. */\n @Input('matTreeNodePaddingIndent') indent: number;\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.io/license\n */\n\nimport {\n CDK_TREE_NODE_OUTLET_NODE,\n CdkNestedTreeNode,\n CdkTree,\n CdkTreeNode,\n CdkTreeNodeDef,\n} from '@angular/cdk/tree';\nimport {\n AfterContentInit,\n Attribute,\n Directive,\n ElementRef,\n Input,\n IterableDiffers,\n OnDestroy,\n} from '@angular/core';\nimport {\n CanDisable,\n CanDisableCtor,\n HasTabIndex,\n HasTabIndexCtor,\n mixinDisabled,\n mixinTabIndex,\n} from '@angular/material/core';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst _MatTreeNodeMixinBase: HasTabIndexCtor & CanDisableCtor & typeof CdkTreeNode =\n mixinTabIndex(mixinDisabled(CdkTreeNode));\n\n/**\n * Wrapper for the CdkTree node with Material design styles.\n */\n@Directive({\n selector: 'mat-tree-node',\n exportAs: 'matTreeNode',\n inputs: ['disabled', 'tabIndex'],\n host: {\n '[attr.aria-expanded]': 'isExpanded',\n '[attr.aria-level]': 'role === \"treeitem\" ? level : null',\n '[attr.role]': 'role',\n 'class': 'mat-tree-node'\n },\n providers: [{provide: CdkTreeNode, useExisting: MatTreeNode}]\n})\nexport class MatTreeNode<T> extends _MatTreeNodeMixinBase<T>\n implements CanDisable, HasTabIndex {\n @Input() role: 'treeitem' | 'group' = 'treeitem';\n\n constructor(protected _elementRef: ElementRef<HTMLElement>,\n protected _tree: CdkTree<T>,\n @Attribute('tabindex') tabIndex: string) {\n super(_elementRef, _tree);\n\n this.tabIndex = Number(tabIndex) || 0;\n }\n}\n\n/**\n * Wrapper for the CdkTree node definition with Material design styles.\n */\n@Directive({\n selector: '[matTreeNodeDef]',\n inputs: [\n 'when: matTreeNodeDefWhen'\n ],\n providers: [{provide: CdkTreeNodeDef, useExisting: MatTreeNodeDef}]\n})\nexport class MatTreeNodeDef<T> extends CdkTreeNodeDef<T> {\n @Input('matTreeNode') data: T;\n}\n\n/**\n * Wrapper for the CdkTree nested node with Material design styles.\n */\n@Directive({\n selector: 'mat-nested-tree-node',\n exportAs: 'matNestedTreeNode',\n host: {\n '[attr.aria-expanded]': 'isExpanded',\n '[attr.role]': 'role',\n 'class': 'mat-nested-tree-node',\n },\n providers: [\n {provide: CdkNestedTreeNode, useExisting: MatNestedTreeNode},\n {provide: CdkTreeNode, useExisting: MatNestedTreeNode},\n {provide: CDK_TREE_NODE_OUTLET_NODE, useExisting: MatNestedTreeNode}\n ]\n})\nexport class MatNestedTreeNode<T> extends CdkNestedTreeNode<T> implements AfterContentInit,\n OnDestroy {\n @Input('matNestedTreeNode') node: T;\n\n /** Whether the node is disabled. */\n @Input()\n get disabled() { return this._disabled; }\n set disabled(value: any) { this._disabled = coerceBooleanProperty(value); }\n private _disabled = false;\n\n /** Tabindex for the node. */\n @Input()\n get tabIndex(): number { return this.disabled ? -1 : this._tabIndex; }\n set tabIndex(value: number) {\n // If the specified tabIndex value is null or undefined, fall back to the default value.\n this._tabIndex = value != null ? value : 0;\n }\n private _tabIndex: number;\n\n constructor(protected _elementRef: ElementRef<HTMLElement>,\n protected _tree: CdkTree<T>,\n protected _differs: IterableDiffers,\n @Attribute('tabindex') tabIndex: string) {\n super(_elementRef, _tree, _differs);\n this.tabIndex = Number(tabIndex) || 0;\n }\n\n // This is a workaround for https://github.com/angular/angular/issues/23091\n // In aot mode, the lifecycle hooks from parent class are not called.\n // TODO(tinayuangao): Remove when the angular issue #23091 is fixed\n ngAfterContentInit() {\n super.ngAfterContentInit();\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n"],"names":[],"mappings":"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"}
@@ -311,12 +311,26 @@ var MatBottomSheetContainer = /** @class */ (function (_super) {
311
311
  * @return {?}
312
312
  */
313
313
  function () {
314
+ /** @type {?} */
315
+ var element = this._elementRef.nativeElement;
314
316
  if (!this._focusTrap) {
315
- this._focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement);
317
+ this._focusTrap = this._focusTrapFactory.create(element);
316
318
  }
317
319
  if (this.bottomSheetConfig.autoFocus) {
318
320
  this._focusTrap.focusInitialElementWhenReady();
319
321
  }
322
+ else {
323
+ /** @type {?} */
324
+ var activeElement = this._document.activeElement;
325
+ // Otherwise ensure that focus is on the container. It's possible that a different
326
+ // component tried to move focus while the open animation was running. See:
327
+ // https://github.com/angular/components/issues/16215. Note that we only want to do this
328
+ // if the focus isn't inside the bottom sheet already, because it's possible that the
329
+ // consumer turned off `autoFocus` in order to move focus themselves.
330
+ if (activeElement !== element && !element.contains(activeElement)) {
331
+ element.focus();
332
+ }
333
+ }
320
334
  };
321
335
  /** Restores focus to the element that was focused before the bottom sheet was opened. */
322
336
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"bottom-sheet.es5.js","sources":["../../../src/material/bottom-sheet/bottom-sheet.ts","../../../src/material/bottom-sheet/bottom-sheet-ref.ts","../../../src/material/bottom-sheet/bottom-sheet-module.ts","../../../src/material/bottom-sheet/bottom-sheet-container.ts","../../../src/material/bottom-sheet/bottom-sheet-animations.ts","../../../src/material/bottom-sheet/bottom-sheet-config.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.io/license\n */\n\nimport {Directionality} from '@angular/cdk/bidi';\nimport {Overlay, OverlayConfig, OverlayRef} from '@angular/cdk/overlay';\nimport {ComponentPortal, ComponentType, PortalInjector, TemplatePortal} from '@angular/cdk/portal';\nimport {\n ComponentRef,\n Injectable,\n Injector,\n Optional,\n SkipSelf,\n TemplateRef,\n InjectionToken,\n Inject,\n OnDestroy,\n} from '@angular/core';\nimport {Location} from '@angular/common';\nimport {of as observableOf} from 'rxjs';\nimport {MAT_BOTTOM_SHEET_DATA, MatBottomSheetConfig} from './bottom-sheet-config';\nimport {MatBottomSheetContainer} from './bottom-sheet-container';\nimport {MatBottomSheetModule} from './bottom-sheet-module';\nimport {MatBottomSheetRef} from './bottom-sheet-ref';\n\n\n/** Injection token that can be used to specify default bottom sheet options. */\nexport const MAT_BOTTOM_SHEET_DEFAULT_OPTIONS =\n new InjectionToken<MatBottomSheetConfig>('mat-bottom-sheet-default-options');\n\n/**\n * Service to trigger Material Design bottom sheets.\n */\n@Injectable({providedIn: MatBottomSheetModule})\nexport class MatBottomSheet implements OnDestroy {\n private _bottomSheetRefAtThisLevel: MatBottomSheetRef<any> | null = null;\n\n /** Reference to the currently opened bottom sheet. */\n get _openedBottomSheetRef(): MatBottomSheetRef<any> | null {\n const parent = this._parentBottomSheet;\n return parent ? parent._openedBottomSheetRef : this._bottomSheetRefAtThisLevel;\n }\n\n set _openedBottomSheetRef(value: MatBottomSheetRef<any> | null) {\n if (this._parentBottomSheet) {\n this._parentBottomSheet._openedBottomSheetRef = value;\n } else {\n this._bottomSheetRefAtThisLevel = value;\n }\n }\n\n constructor(\n private _overlay: Overlay,\n private _injector: Injector,\n @Optional() @SkipSelf() private _parentBottomSheet: MatBottomSheet,\n @Optional() private _location?: Location,\n @Optional() @Inject(MAT_BOTTOM_SHEET_DEFAULT_OPTIONS)\n private _defaultOptions?: MatBottomSheetConfig) {}\n\n open<T, D = any, R = any>(component: ComponentType<T>,\n config?: MatBottomSheetConfig<D>): MatBottomSheetRef<T, R>;\n open<T, D = any, R = any>(template: TemplateRef<T>,\n config?: MatBottomSheetConfig<D>): MatBottomSheetRef<T, R>;\n\n open<T, D = any, R = any>(componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n config?: MatBottomSheetConfig<D>): MatBottomSheetRef<T, R> {\n\n const _config =\n _applyConfigDefaults(this._defaultOptions || new MatBottomSheetConfig(), config);\n const overlayRef = this._createOverlay(_config);\n const container = this._attachContainer(overlayRef, _config);\n const ref = new MatBottomSheetRef<T, R>(container, overlayRef, this._location);\n\n if (componentOrTemplateRef instanceof TemplateRef) {\n container.attachTemplatePortal(new TemplatePortal<T>(componentOrTemplateRef, null!, {\n $implicit: _config.data,\n bottomSheetRef: ref\n } as any));\n } else {\n const portal = new ComponentPortal(componentOrTemplateRef, undefined,\n this._createInjector(_config, ref));\n const contentRef = container.attachComponentPortal(portal);\n ref.instance = contentRef.instance;\n }\n\n // When the bottom sheet is dismissed, clear the reference to it.\n ref.afterDismissed().subscribe(() => {\n // Clear the bottom sheet ref if it hasn't already been replaced by a newer one.\n if (this._openedBottomSheetRef == ref) {\n this._openedBottomSheetRef = null;\n }\n });\n\n if (this._openedBottomSheetRef) {\n // If a bottom sheet is already in view, dismiss it and enter the\n // new bottom sheet after exit animation is complete.\n this._openedBottomSheetRef.afterDismissed().subscribe(() => ref.containerInstance.enter());\n this._openedBottomSheetRef.dismiss();\n } else {\n // If no bottom sheet is in view, enter the new bottom sheet.\n ref.containerInstance.enter();\n }\n\n this._openedBottomSheetRef = ref;\n\n return ref;\n }\n\n /**\n * Dismisses the currently-visible bottom sheet.\n */\n dismiss(): void {\n if (this._openedBottomSheetRef) {\n this._openedBottomSheetRef.dismiss();\n }\n }\n\n ngOnDestroy() {\n if (this._bottomSheetRefAtThisLevel) {\n this._bottomSheetRefAtThisLevel.dismiss();\n }\n }\n\n /**\n * Attaches the bottom sheet container component to the overlay.\n */\n private _attachContainer(overlayRef: OverlayRef,\n config: MatBottomSheetConfig): MatBottomSheetContainer {\n\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n const injector = new PortalInjector(userInjector || this._injector, new WeakMap([\n [MatBottomSheetConfig, config]\n ]));\n\n const containerPortal =\n new ComponentPortal(MatBottomSheetContainer, config.viewContainerRef, injector);\n const containerRef: ComponentRef<MatBottomSheetContainer> = overlayRef.attach(containerPortal);\n return containerRef.instance;\n }\n\n /**\n * Creates a new overlay and places it in the correct location.\n * @param config The user-specified bottom sheet config.\n */\n private _createOverlay(config: MatBottomSheetConfig): OverlayRef {\n const overlayConfig = new OverlayConfig({\n direction: config.direction,\n hasBackdrop: config.hasBackdrop,\n disposeOnNavigation: config.closeOnNavigation,\n maxWidth: '100%',\n scrollStrategy: config.scrollStrategy || this._overlay.scrollStrategies.block(),\n positionStrategy: this._overlay.position().global().centerHorizontally().bottom('0')\n });\n\n if (config.backdropClass) {\n overlayConfig.backdropClass = config.backdropClass;\n }\n\n return this._overlay.create(overlayConfig);\n }\n\n /**\n * Creates an injector to be used inside of a bottom sheet component.\n * @param config Config that was used to create the bottom sheet.\n * @param bottomSheetRef Reference to the bottom sheet.\n */\n private _createInjector<T>(config: MatBottomSheetConfig,\n bottomSheetRef: MatBottomSheetRef<T>): PortalInjector {\n\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n const injectionTokens = new WeakMap<any, any>([\n [MatBottomSheetRef, bottomSheetRef],\n [MAT_BOTTOM_SHEET_DATA, config.data]\n ]);\n\n if (config.direction &&\n (!userInjector || !userInjector.get<Directionality | null>(Directionality, null))) {\n injectionTokens.set(Directionality, {\n value: config.direction,\n change: observableOf()\n });\n }\n\n return new PortalInjector(userInjector || this._injector, injectionTokens);\n }\n}\n\n/**\n * Applies default options to the bottom sheet config.\n * @param defaults Object containing the default values to which to fall back.\n * @param config The configuration to which the defaults will be applied.\n * @returns The new configuration object with defaults applied.\n */\nfunction _applyConfigDefaults(defaults: MatBottomSheetConfig,\n config?: MatBottomSheetConfig): MatBottomSheetConfig {\n return {...defaults, ...config};\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.io/license\n */\n\nimport {Location} from '@angular/common';\nimport {ESCAPE, hasModifierKey} from '@angular/cdk/keycodes';\nimport {OverlayRef} from '@angular/cdk/overlay';\nimport {merge, Observable, Subject} from 'rxjs';\nimport {filter, take} from 'rxjs/operators';\nimport {MatBottomSheetContainer} from './bottom-sheet-container';\n\n\n/**\n * Reference to a bottom sheet dispatched from the bottom sheet service.\n */\nexport class MatBottomSheetRef<T = any, R = any> {\n /** Instance of the component making up the content of the bottom sheet. */\n instance: T;\n\n /**\n * Instance of the component into which the bottom sheet content is projected.\n * @docs-private\n */\n containerInstance: MatBottomSheetContainer;\n\n /** Whether the user is allowed to close the bottom sheet. */\n disableClose: boolean | undefined;\n\n /** Subject for notifying the user that the bottom sheet has been dismissed. */\n private readonly _afterDismissed = new Subject<R | undefined>();\n\n /** Subject for notifying the user that the bottom sheet has opened and appeared. */\n private readonly _afterOpened = new Subject<void>();\n\n /** Result to be passed down to the `afterDismissed` stream. */\n private _result: R | undefined;\n\n /** Handle to the timeout that's running as a fallback in case the exit animation doesn't fire. */\n private _closeFallbackTimeout: number;\n\n constructor(\n containerInstance: MatBottomSheetContainer,\n private _overlayRef: OverlayRef,\n // @breaking-change 8.0.0 `_location` parameter to be removed.\n _location?: Location) {\n this.containerInstance = containerInstance;\n this.disableClose = containerInstance.bottomSheetConfig.disableClose;\n\n // Emit when opening animation completes\n containerInstance._animationStateChanged.pipe(\n filter(event => event.phaseName === 'done' && event.toState === 'visible'),\n take(1)\n )\n .subscribe(() => {\n this._afterOpened.next();\n this._afterOpened.complete();\n });\n\n // Dispose overlay when closing animation is complete\n containerInstance._animationStateChanged\n .pipe(filter(event => event.phaseName === 'done' && event.toState === 'hidden'), take(1))\n .subscribe(() => {\n clearTimeout(this._closeFallbackTimeout);\n _overlayRef.dispose();\n });\n\n _overlayRef.detachments().pipe(take(1)).subscribe(() => {\n this._afterDismissed.next(this._result);\n this._afterDismissed.complete();\n });\n\n merge(\n _overlayRef.backdropClick(),\n _overlayRef.keydownEvents().pipe(filter(event => event.keyCode === ESCAPE))\n ).subscribe(event => {\n if (!this.disableClose &&\n (event.type !== 'keydown' || !hasModifierKey(event as KeyboardEvent))) {\n event.preventDefault();\n this.dismiss();\n }\n });\n }\n\n /**\n * Dismisses the bottom sheet.\n * @param result Data to be passed back to the bottom sheet opener.\n */\n dismiss(result?: R): void {\n if (!this._afterDismissed.closed) {\n // Transition the backdrop in parallel to the bottom sheet.\n this.containerInstance._animationStateChanged.pipe(\n filter(event => event.phaseName === 'start'),\n take(1)\n ).subscribe(event => {\n // The logic that disposes of the overlay depends on the exit animation completing, however\n // it isn't guaranteed if the parent view is destroyed while it's running. Add a fallback\n // timeout which will clean everything up if the animation hasn't fired within the specified\n // amount of time plus 100ms. We don't need to run this outside the NgZone, because for the\n // vast majority of cases the timeout will have been cleared before it has fired.\n this._closeFallbackTimeout = setTimeout(() => {\n this._overlayRef.dispose();\n }, event.totalTime + 100);\n\n this._overlayRef.detachBackdrop();\n });\n\n this._result = result;\n this.containerInstance.exit();\n }\n }\n\n /** Gets an observable that is notified when the bottom sheet is finished closing. */\n afterDismissed(): Observable<R | undefined> {\n return this._afterDismissed.asObservable();\n }\n\n /** Gets an observable that is notified when the bottom sheet has opened and appeared. */\n afterOpened(): Observable<void> {\n return this._afterOpened.asObservable();\n }\n\n /**\n * Gets an observable that emits when the overlay's backdrop has been clicked.\n */\n backdropClick(): Observable<MouseEvent> {\n return this._overlayRef.backdropClick();\n }\n\n /**\n * Gets an observable that emits when keydown events are targeted on the overlay.\n */\n keydownEvents(): Observable<KeyboardEvent> {\n return this._overlayRef.keydownEvents();\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.io/license\n */\n\nimport {OverlayModule} from '@angular/cdk/overlay';\nimport {PortalModule} from '@angular/cdk/portal';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {MatCommonModule} from '@angular/material/core';\nimport {MatBottomSheetContainer} from './bottom-sheet-container';\n\n\n@NgModule({\n imports: [\n CommonModule,\n OverlayModule,\n MatCommonModule,\n PortalModule,\n ],\n exports: [MatBottomSheetContainer, MatCommonModule],\n declarations: [MatBottomSheetContainer],\n entryComponents: [MatBottomSheetContainer],\n})\nexport class MatBottomSheetModule {}\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.io/license\n */\n\nimport {\n Component,\n ComponentRef,\n EmbeddedViewRef,\n ViewChild,\n OnDestroy,\n ElementRef,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n ChangeDetectorRef,\n EventEmitter,\n Inject,\n Optional,\n} from '@angular/core';\nimport {AnimationEvent} from '@angular/animations';\nimport {\n BasePortalOutlet,\n ComponentPortal,\n TemplatePortal,\n CdkPortalOutlet,\n} from '@angular/cdk/portal';\nimport {BreakpointObserver, Breakpoints} from '@angular/cdk/layout';\nimport {MatBottomSheetConfig} from './bottom-sheet-config';\nimport {matBottomSheetAnimations} from './bottom-sheet-animations';\nimport {Subscription} from 'rxjs';\nimport {DOCUMENT} from '@angular/common';\nimport {FocusTrap, FocusTrapFactory} from '@angular/cdk/a11y';\n\n// TODO(crisbeto): consolidate some logic between this, MatDialog and MatSnackBar\n\n/**\n * Internal component that wraps user-provided bottom sheet content.\n * @docs-private\n */\n@Component({\n moduleId: module.id,\n selector: 'mat-bottom-sheet-container',\n templateUrl: 'bottom-sheet-container.html',\n styleUrls: ['bottom-sheet-container.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n animations: [matBottomSheetAnimations.bottomSheetState],\n host: {\n 'class': 'mat-bottom-sheet-container',\n 'tabindex': '-1',\n 'role': 'dialog',\n 'aria-modal': 'true',\n '[attr.aria-label]': 'bottomSheetConfig?.ariaLabel',\n '[@state]': '_animationState',\n '(@state.start)': '_onAnimationStart($event)',\n '(@state.done)': '_onAnimationDone($event)'\n },\n})\nexport class MatBottomSheetContainer extends BasePortalOutlet implements OnDestroy {\n private _breakpointSubscription: Subscription;\n\n /** The portal outlet inside of this container into which the content will be loaded. */\n @ViewChild(CdkPortalOutlet, {static: true}) _portalOutlet: CdkPortalOutlet;\n\n /** The state of the bottom sheet animations. */\n _animationState: 'void' | 'visible' | 'hidden' = 'void';\n\n /** Emits whenever the state of the animation changes. */\n _animationStateChanged = new EventEmitter<AnimationEvent>();\n\n /** The class that traps and manages focus within the bottom sheet. */\n private _focusTrap: FocusTrap;\n\n /** Element that was focused before the bottom sheet was opened. */\n private _elementFocusedBeforeOpened: HTMLElement | null = null;\n\n /** Server-side rendering-compatible reference to the global document object. */\n private _document: Document;\n\n /** Whether the component has been destroyed. */\n private _destroyed: boolean;\n\n constructor(\n private _elementRef: ElementRef<HTMLElement>,\n private _changeDetectorRef: ChangeDetectorRef,\n private _focusTrapFactory: FocusTrapFactory,\n breakpointObserver: BreakpointObserver,\n @Optional() @Inject(DOCUMENT) document: any,\n /** The bottom sheet configuration. */\n public bottomSheetConfig: MatBottomSheetConfig) {\n super();\n\n this._document = document;\n this._breakpointSubscription = breakpointObserver\n .observe([Breakpoints.Medium, Breakpoints.Large, Breakpoints.XLarge])\n .subscribe(() => {\n this._toggleClass('mat-bottom-sheet-container-medium',\n breakpointObserver.isMatched(Breakpoints.Medium));\n this._toggleClass('mat-bottom-sheet-container-large',\n breakpointObserver.isMatched(Breakpoints.Large));\n this._toggleClass('mat-bottom-sheet-container-xlarge',\n breakpointObserver.isMatched(Breakpoints.XLarge));\n });\n }\n\n /** Attach a component portal as content to this bottom sheet container. */\n attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\n this._validatePortalAttached();\n this._setPanelClass();\n this._savePreviouslyFocusedElement();\n return this._portalOutlet.attachComponentPortal(portal);\n }\n\n /** Attach a template portal as content to this bottom sheet container. */\n attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {\n this._validatePortalAttached();\n this._setPanelClass();\n this._savePreviouslyFocusedElement();\n return this._portalOutlet.attachTemplatePortal(portal);\n }\n\n /** Begin animation of bottom sheet entrance into view. */\n enter(): void {\n if (!this._destroyed) {\n this._animationState = 'visible';\n this._changeDetectorRef.detectChanges();\n }\n }\n\n /** Begin animation of the bottom sheet exiting from view. */\n exit(): void {\n if (!this._destroyed) {\n this._animationState = 'hidden';\n this._changeDetectorRef.markForCheck();\n }\n }\n\n ngOnDestroy() {\n this._breakpointSubscription.unsubscribe();\n this._destroyed = true;\n }\n\n _onAnimationDone(event: AnimationEvent) {\n if (event.toState === 'hidden') {\n this._restoreFocus();\n } else if (event.toState === 'visible') {\n this._trapFocus();\n }\n\n this._animationStateChanged.emit(event);\n }\n\n _onAnimationStart(event: AnimationEvent) {\n this._animationStateChanged.emit(event);\n }\n\n private _toggleClass(cssClass: string, add: boolean) {\n const classList = this._elementRef.nativeElement.classList;\n add ? classList.add(cssClass) : classList.remove(cssClass);\n }\n\n private _validatePortalAttached() {\n if (this._portalOutlet.hasAttached()) {\n throw Error('Attempting to attach bottom sheet content after content is already attached');\n }\n }\n\n private _setPanelClass() {\n const element: HTMLElement = this._elementRef.nativeElement;\n const panelClass = this.bottomSheetConfig.panelClass;\n\n if (Array.isArray(panelClass)) {\n // Note that we can't use a spread here, because IE doesn't support multiple arguments.\n panelClass.forEach(cssClass => element.classList.add(cssClass));\n } else if (panelClass) {\n element.classList.add(panelClass);\n }\n }\n\n\n /** Moves the focus inside the focus trap. */\n private _trapFocus() {\n if (!this._focusTrap) {\n this._focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement);\n }\n\n if (this.bottomSheetConfig.autoFocus) {\n this._focusTrap.focusInitialElementWhenReady();\n }\n }\n\n /** Restores focus to the element that was focused before the bottom sheet was opened. */\n private _restoreFocus() {\n const toFocus = this._elementFocusedBeforeOpened;\n\n // We need the extra check, because IE can set the `activeElement` to null in some cases.\n if (this.bottomSheetConfig.restoreFocus && toFocus && typeof toFocus.focus === 'function') {\n toFocus.focus();\n }\n\n if (this._focusTrap) {\n this._focusTrap.destroy();\n }\n }\n\n /** Saves a reference to the element that was focused before the bottom sheet was opened. */\n private _savePreviouslyFocusedElement() {\n this._elementFocusedBeforeOpened = this._document.activeElement as HTMLElement;\n\n // The `focus` method isn't available during server-side rendering.\n if (this._elementRef.nativeElement.focus) {\n Promise.resolve().then(() => this._elementRef.nativeElement.focus());\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {\n animate,\n state,\n style,\n transition,\n trigger,\n AnimationTriggerMetadata,\n} from '@angular/animations';\nimport {AnimationCurves, AnimationDurations} from '@angular/material/core';\n\n/** Animations used by the Material bottom sheet. */\nexport const matBottomSheetAnimations: {\n readonly bottomSheetState: AnimationTriggerMetadata;\n} = {\n /** Animation that shows and hides a bottom sheet. */\n bottomSheetState: trigger('state', [\n state('void, hidden', style({transform: 'translateY(100%)'})),\n state('visible', style({transform: 'translateY(0%)'})),\n transition('visible => void, visible => hidden',\n animate(`${AnimationDurations.COMPLEX} ${AnimationCurves.ACCELERATION_CURVE}`)),\n transition('void => visible',\n animate(`${AnimationDurations.EXITING} ${AnimationCurves.DECELERATION_CURVE}`)),\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.io/license\n */\n\nimport {Direction} from '@angular/cdk/bidi';\nimport {ScrollStrategy} from '@angular/cdk/overlay';\nimport {InjectionToken, ViewContainerRef} from '@angular/core';\n\n/** Injection token that can be used to access the data that was passed in to a bottom sheet. */\nexport const MAT_BOTTOM_SHEET_DATA = new InjectionToken<any>('MatBottomSheetData');\n\n/**\n * Configuration used when opening a bottom sheet.\n */\nexport class MatBottomSheetConfig<D = any> {\n /** The view container to place the overlay for the bottom sheet into. */\n viewContainerRef?: ViewContainerRef;\n\n /** Extra CSS classes to be added to the bottom sheet container. */\n panelClass?: string | string[];\n\n /** Text layout direction for the bottom sheet. */\n direction?: Direction;\n\n /** Data being injected into the child component. */\n data?: D | null = null;\n\n /** Whether the bottom sheet has a backdrop. */\n hasBackdrop?: boolean = true;\n\n /** Custom class for the backdrop. */\n backdropClass?: string;\n\n /** Whether the user can use escape or clicking outside to close the bottom sheet. */\n disableClose?: boolean = false;\n\n /** Aria label to assign to the bottom sheet element. */\n ariaLabel?: string | null = null;\n\n /**\n * Whether the bottom sheet should close when the user goes backwards/forwards in history.\n * Note that this usually doesn't include clicking on links (unless the user is using\n * the `HashLocationStrategy`).\n */\n closeOnNavigation?: boolean = true;\n\n // Note that this is disabled by default, because while the a11y recommendations are to focus\n // the first focusable element, doing so prevents screen readers from reading out the\n // rest of the bottom sheet content.\n /** Whether the bottom sheet should focus the first focusable element on open. */\n autoFocus?: boolean = false;\n\n /**\n * Whether the bottom sheet should restore focus to the\n * previously-focused element, after it's closed.\n */\n restoreFocus?: boolean = true;\n\n /** Scroll strategy to be used for the bottom sheet. */\n scrollStrategy?: ScrollStrategy;\n}\n"],"names":["tslib_1.__assign","observableOf","tslib_1.__extends"],"mappings":"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"}
1
+ {"version":3,"file":"bottom-sheet.es5.js","sources":["../../../src/material/bottom-sheet/bottom-sheet.ts","../../../src/material/bottom-sheet/bottom-sheet-ref.ts","../../../src/material/bottom-sheet/bottom-sheet-module.ts","../../../src/material/bottom-sheet/bottom-sheet-container.ts","../../../src/material/bottom-sheet/bottom-sheet-animations.ts","../../../src/material/bottom-sheet/bottom-sheet-config.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.io/license\n */\n\nimport {Directionality} from '@angular/cdk/bidi';\nimport {Overlay, OverlayConfig, OverlayRef} from '@angular/cdk/overlay';\nimport {ComponentPortal, ComponentType, PortalInjector, TemplatePortal} from '@angular/cdk/portal';\nimport {\n ComponentRef,\n Injectable,\n Injector,\n Optional,\n SkipSelf,\n TemplateRef,\n InjectionToken,\n Inject,\n OnDestroy,\n} from '@angular/core';\nimport {Location} from '@angular/common';\nimport {of as observableOf} from 'rxjs';\nimport {MAT_BOTTOM_SHEET_DATA, MatBottomSheetConfig} from './bottom-sheet-config';\nimport {MatBottomSheetContainer} from './bottom-sheet-container';\nimport {MatBottomSheetModule} from './bottom-sheet-module';\nimport {MatBottomSheetRef} from './bottom-sheet-ref';\n\n\n/** Injection token that can be used to specify default bottom sheet options. */\nexport const MAT_BOTTOM_SHEET_DEFAULT_OPTIONS =\n new InjectionToken<MatBottomSheetConfig>('mat-bottom-sheet-default-options');\n\n/**\n * Service to trigger Material Design bottom sheets.\n */\n@Injectable({providedIn: MatBottomSheetModule})\nexport class MatBottomSheet implements OnDestroy {\n private _bottomSheetRefAtThisLevel: MatBottomSheetRef<any> | null = null;\n\n /** Reference to the currently opened bottom sheet. */\n get _openedBottomSheetRef(): MatBottomSheetRef<any> | null {\n const parent = this._parentBottomSheet;\n return parent ? parent._openedBottomSheetRef : this._bottomSheetRefAtThisLevel;\n }\n\n set _openedBottomSheetRef(value: MatBottomSheetRef<any> | null) {\n if (this._parentBottomSheet) {\n this._parentBottomSheet._openedBottomSheetRef = value;\n } else {\n this._bottomSheetRefAtThisLevel = value;\n }\n }\n\n constructor(\n private _overlay: Overlay,\n private _injector: Injector,\n @Optional() @SkipSelf() private _parentBottomSheet: MatBottomSheet,\n @Optional() private _location?: Location,\n @Optional() @Inject(MAT_BOTTOM_SHEET_DEFAULT_OPTIONS)\n private _defaultOptions?: MatBottomSheetConfig) {}\n\n open<T, D = any, R = any>(component: ComponentType<T>,\n config?: MatBottomSheetConfig<D>): MatBottomSheetRef<T, R>;\n open<T, D = any, R = any>(template: TemplateRef<T>,\n config?: MatBottomSheetConfig<D>): MatBottomSheetRef<T, R>;\n\n open<T, D = any, R = any>(componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n config?: MatBottomSheetConfig<D>): MatBottomSheetRef<T, R> {\n\n const _config =\n _applyConfigDefaults(this._defaultOptions || new MatBottomSheetConfig(), config);\n const overlayRef = this._createOverlay(_config);\n const container = this._attachContainer(overlayRef, _config);\n const ref = new MatBottomSheetRef<T, R>(container, overlayRef, this._location);\n\n if (componentOrTemplateRef instanceof TemplateRef) {\n container.attachTemplatePortal(new TemplatePortal<T>(componentOrTemplateRef, null!, {\n $implicit: _config.data,\n bottomSheetRef: ref\n } as any));\n } else {\n const portal = new ComponentPortal(componentOrTemplateRef, undefined,\n this._createInjector(_config, ref));\n const contentRef = container.attachComponentPortal(portal);\n ref.instance = contentRef.instance;\n }\n\n // When the bottom sheet is dismissed, clear the reference to it.\n ref.afterDismissed().subscribe(() => {\n // Clear the bottom sheet ref if it hasn't already been replaced by a newer one.\n if (this._openedBottomSheetRef == ref) {\n this._openedBottomSheetRef = null;\n }\n });\n\n if (this._openedBottomSheetRef) {\n // If a bottom sheet is already in view, dismiss it and enter the\n // new bottom sheet after exit animation is complete.\n this._openedBottomSheetRef.afterDismissed().subscribe(() => ref.containerInstance.enter());\n this._openedBottomSheetRef.dismiss();\n } else {\n // If no bottom sheet is in view, enter the new bottom sheet.\n ref.containerInstance.enter();\n }\n\n this._openedBottomSheetRef = ref;\n\n return ref;\n }\n\n /**\n * Dismisses the currently-visible bottom sheet.\n */\n dismiss(): void {\n if (this._openedBottomSheetRef) {\n this._openedBottomSheetRef.dismiss();\n }\n }\n\n ngOnDestroy() {\n if (this._bottomSheetRefAtThisLevel) {\n this._bottomSheetRefAtThisLevel.dismiss();\n }\n }\n\n /**\n * Attaches the bottom sheet container component to the overlay.\n */\n private _attachContainer(overlayRef: OverlayRef,\n config: MatBottomSheetConfig): MatBottomSheetContainer {\n\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n const injector = new PortalInjector(userInjector || this._injector, new WeakMap([\n [MatBottomSheetConfig, config]\n ]));\n\n const containerPortal =\n new ComponentPortal(MatBottomSheetContainer, config.viewContainerRef, injector);\n const containerRef: ComponentRef<MatBottomSheetContainer> = overlayRef.attach(containerPortal);\n return containerRef.instance;\n }\n\n /**\n * Creates a new overlay and places it in the correct location.\n * @param config The user-specified bottom sheet config.\n */\n private _createOverlay(config: MatBottomSheetConfig): OverlayRef {\n const overlayConfig = new OverlayConfig({\n direction: config.direction,\n hasBackdrop: config.hasBackdrop,\n disposeOnNavigation: config.closeOnNavigation,\n maxWidth: '100%',\n scrollStrategy: config.scrollStrategy || this._overlay.scrollStrategies.block(),\n positionStrategy: this._overlay.position().global().centerHorizontally().bottom('0')\n });\n\n if (config.backdropClass) {\n overlayConfig.backdropClass = config.backdropClass;\n }\n\n return this._overlay.create(overlayConfig);\n }\n\n /**\n * Creates an injector to be used inside of a bottom sheet component.\n * @param config Config that was used to create the bottom sheet.\n * @param bottomSheetRef Reference to the bottom sheet.\n */\n private _createInjector<T>(config: MatBottomSheetConfig,\n bottomSheetRef: MatBottomSheetRef<T>): PortalInjector {\n\n const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;\n const injectionTokens = new WeakMap<any, any>([\n [MatBottomSheetRef, bottomSheetRef],\n [MAT_BOTTOM_SHEET_DATA, config.data]\n ]);\n\n if (config.direction &&\n (!userInjector || !userInjector.get<Directionality | null>(Directionality, null))) {\n injectionTokens.set(Directionality, {\n value: config.direction,\n change: observableOf()\n });\n }\n\n return new PortalInjector(userInjector || this._injector, injectionTokens);\n }\n}\n\n/**\n * Applies default options to the bottom sheet config.\n * @param defaults Object containing the default values to which to fall back.\n * @param config The configuration to which the defaults will be applied.\n * @returns The new configuration object with defaults applied.\n */\nfunction _applyConfigDefaults(defaults: MatBottomSheetConfig,\n config?: MatBottomSheetConfig): MatBottomSheetConfig {\n return {...defaults, ...config};\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.io/license\n */\n\nimport {Location} from '@angular/common';\nimport {ESCAPE, hasModifierKey} from '@angular/cdk/keycodes';\nimport {OverlayRef} from '@angular/cdk/overlay';\nimport {merge, Observable, Subject} from 'rxjs';\nimport {filter, take} from 'rxjs/operators';\nimport {MatBottomSheetContainer} from './bottom-sheet-container';\n\n\n/**\n * Reference to a bottom sheet dispatched from the bottom sheet service.\n */\nexport class MatBottomSheetRef<T = any, R = any> {\n /** Instance of the component making up the content of the bottom sheet. */\n instance: T;\n\n /**\n * Instance of the component into which the bottom sheet content is projected.\n * @docs-private\n */\n containerInstance: MatBottomSheetContainer;\n\n /** Whether the user is allowed to close the bottom sheet. */\n disableClose: boolean | undefined;\n\n /** Subject for notifying the user that the bottom sheet has been dismissed. */\n private readonly _afterDismissed = new Subject<R | undefined>();\n\n /** Subject for notifying the user that the bottom sheet has opened and appeared. */\n private readonly _afterOpened = new Subject<void>();\n\n /** Result to be passed down to the `afterDismissed` stream. */\n private _result: R | undefined;\n\n /** Handle to the timeout that's running as a fallback in case the exit animation doesn't fire. */\n private _closeFallbackTimeout: number;\n\n constructor(\n containerInstance: MatBottomSheetContainer,\n private _overlayRef: OverlayRef,\n // @breaking-change 8.0.0 `_location` parameter to be removed.\n _location?: Location) {\n this.containerInstance = containerInstance;\n this.disableClose = containerInstance.bottomSheetConfig.disableClose;\n\n // Emit when opening animation completes\n containerInstance._animationStateChanged.pipe(\n filter(event => event.phaseName === 'done' && event.toState === 'visible'),\n take(1)\n )\n .subscribe(() => {\n this._afterOpened.next();\n this._afterOpened.complete();\n });\n\n // Dispose overlay when closing animation is complete\n containerInstance._animationStateChanged\n .pipe(filter(event => event.phaseName === 'done' && event.toState === 'hidden'), take(1))\n .subscribe(() => {\n clearTimeout(this._closeFallbackTimeout);\n _overlayRef.dispose();\n });\n\n _overlayRef.detachments().pipe(take(1)).subscribe(() => {\n this._afterDismissed.next(this._result);\n this._afterDismissed.complete();\n });\n\n merge(\n _overlayRef.backdropClick(),\n _overlayRef.keydownEvents().pipe(filter(event => event.keyCode === ESCAPE))\n ).subscribe(event => {\n if (!this.disableClose &&\n (event.type !== 'keydown' || !hasModifierKey(event as KeyboardEvent))) {\n event.preventDefault();\n this.dismiss();\n }\n });\n }\n\n /**\n * Dismisses the bottom sheet.\n * @param result Data to be passed back to the bottom sheet opener.\n */\n dismiss(result?: R): void {\n if (!this._afterDismissed.closed) {\n // Transition the backdrop in parallel to the bottom sheet.\n this.containerInstance._animationStateChanged.pipe(\n filter(event => event.phaseName === 'start'),\n take(1)\n ).subscribe(event => {\n // The logic that disposes of the overlay depends on the exit animation completing, however\n // it isn't guaranteed if the parent view is destroyed while it's running. Add a fallback\n // timeout which will clean everything up if the animation hasn't fired within the specified\n // amount of time plus 100ms. We don't need to run this outside the NgZone, because for the\n // vast majority of cases the timeout will have been cleared before it has fired.\n this._closeFallbackTimeout = setTimeout(() => {\n this._overlayRef.dispose();\n }, event.totalTime + 100);\n\n this._overlayRef.detachBackdrop();\n });\n\n this._result = result;\n this.containerInstance.exit();\n }\n }\n\n /** Gets an observable that is notified when the bottom sheet is finished closing. */\n afterDismissed(): Observable<R | undefined> {\n return this._afterDismissed.asObservable();\n }\n\n /** Gets an observable that is notified when the bottom sheet has opened and appeared. */\n afterOpened(): Observable<void> {\n return this._afterOpened.asObservable();\n }\n\n /**\n * Gets an observable that emits when the overlay's backdrop has been clicked.\n */\n backdropClick(): Observable<MouseEvent> {\n return this._overlayRef.backdropClick();\n }\n\n /**\n * Gets an observable that emits when keydown events are targeted on the overlay.\n */\n keydownEvents(): Observable<KeyboardEvent> {\n return this._overlayRef.keydownEvents();\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.io/license\n */\n\nimport {OverlayModule} from '@angular/cdk/overlay';\nimport {PortalModule} from '@angular/cdk/portal';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {MatCommonModule} from '@angular/material/core';\nimport {MatBottomSheetContainer} from './bottom-sheet-container';\n\n\n@NgModule({\n imports: [\n CommonModule,\n OverlayModule,\n MatCommonModule,\n PortalModule,\n ],\n exports: [MatBottomSheetContainer, MatCommonModule],\n declarations: [MatBottomSheetContainer],\n entryComponents: [MatBottomSheetContainer],\n})\nexport class MatBottomSheetModule {}\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.io/license\n */\n\nimport {\n Component,\n ComponentRef,\n EmbeddedViewRef,\n ViewChild,\n OnDestroy,\n ElementRef,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n ChangeDetectorRef,\n EventEmitter,\n Inject,\n Optional,\n} from '@angular/core';\nimport {AnimationEvent} from '@angular/animations';\nimport {\n BasePortalOutlet,\n ComponentPortal,\n TemplatePortal,\n CdkPortalOutlet,\n} from '@angular/cdk/portal';\nimport {BreakpointObserver, Breakpoints} from '@angular/cdk/layout';\nimport {MatBottomSheetConfig} from './bottom-sheet-config';\nimport {matBottomSheetAnimations} from './bottom-sheet-animations';\nimport {Subscription} from 'rxjs';\nimport {DOCUMENT} from '@angular/common';\nimport {FocusTrap, FocusTrapFactory} from '@angular/cdk/a11y';\n\n// TODO(crisbeto): consolidate some logic between this, MatDialog and MatSnackBar\n\n/**\n * Internal component that wraps user-provided bottom sheet content.\n * @docs-private\n */\n@Component({\n moduleId: module.id,\n selector: 'mat-bottom-sheet-container',\n templateUrl: 'bottom-sheet-container.html',\n styleUrls: ['bottom-sheet-container.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n animations: [matBottomSheetAnimations.bottomSheetState],\n host: {\n 'class': 'mat-bottom-sheet-container',\n 'tabindex': '-1',\n 'role': 'dialog',\n 'aria-modal': 'true',\n '[attr.aria-label]': 'bottomSheetConfig?.ariaLabel',\n '[@state]': '_animationState',\n '(@state.start)': '_onAnimationStart($event)',\n '(@state.done)': '_onAnimationDone($event)'\n },\n})\nexport class MatBottomSheetContainer extends BasePortalOutlet implements OnDestroy {\n private _breakpointSubscription: Subscription;\n\n /** The portal outlet inside of this container into which the content will be loaded. */\n @ViewChild(CdkPortalOutlet, {static: true}) _portalOutlet: CdkPortalOutlet;\n\n /** The state of the bottom sheet animations. */\n _animationState: 'void' | 'visible' | 'hidden' = 'void';\n\n /** Emits whenever the state of the animation changes. */\n _animationStateChanged = new EventEmitter<AnimationEvent>();\n\n /** The class that traps and manages focus within the bottom sheet. */\n private _focusTrap: FocusTrap;\n\n /** Element that was focused before the bottom sheet was opened. */\n private _elementFocusedBeforeOpened: HTMLElement | null = null;\n\n /** Server-side rendering-compatible reference to the global document object. */\n private _document: Document;\n\n /** Whether the component has been destroyed. */\n private _destroyed: boolean;\n\n constructor(\n private _elementRef: ElementRef<HTMLElement>,\n private _changeDetectorRef: ChangeDetectorRef,\n private _focusTrapFactory: FocusTrapFactory,\n breakpointObserver: BreakpointObserver,\n @Optional() @Inject(DOCUMENT) document: any,\n /** The bottom sheet configuration. */\n public bottomSheetConfig: MatBottomSheetConfig) {\n super();\n\n this._document = document;\n this._breakpointSubscription = breakpointObserver\n .observe([Breakpoints.Medium, Breakpoints.Large, Breakpoints.XLarge])\n .subscribe(() => {\n this._toggleClass('mat-bottom-sheet-container-medium',\n breakpointObserver.isMatched(Breakpoints.Medium));\n this._toggleClass('mat-bottom-sheet-container-large',\n breakpointObserver.isMatched(Breakpoints.Large));\n this._toggleClass('mat-bottom-sheet-container-xlarge',\n breakpointObserver.isMatched(Breakpoints.XLarge));\n });\n }\n\n /** Attach a component portal as content to this bottom sheet container. */\n attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\n this._validatePortalAttached();\n this._setPanelClass();\n this._savePreviouslyFocusedElement();\n return this._portalOutlet.attachComponentPortal(portal);\n }\n\n /** Attach a template portal as content to this bottom sheet container. */\n attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C> {\n this._validatePortalAttached();\n this._setPanelClass();\n this._savePreviouslyFocusedElement();\n return this._portalOutlet.attachTemplatePortal(portal);\n }\n\n /** Begin animation of bottom sheet entrance into view. */\n enter(): void {\n if (!this._destroyed) {\n this._animationState = 'visible';\n this._changeDetectorRef.detectChanges();\n }\n }\n\n /** Begin animation of the bottom sheet exiting from view. */\n exit(): void {\n if (!this._destroyed) {\n this._animationState = 'hidden';\n this._changeDetectorRef.markForCheck();\n }\n }\n\n ngOnDestroy() {\n this._breakpointSubscription.unsubscribe();\n this._destroyed = true;\n }\n\n _onAnimationDone(event: AnimationEvent) {\n if (event.toState === 'hidden') {\n this._restoreFocus();\n } else if (event.toState === 'visible') {\n this._trapFocus();\n }\n\n this._animationStateChanged.emit(event);\n }\n\n _onAnimationStart(event: AnimationEvent) {\n this._animationStateChanged.emit(event);\n }\n\n private _toggleClass(cssClass: string, add: boolean) {\n const classList = this._elementRef.nativeElement.classList;\n add ? classList.add(cssClass) : classList.remove(cssClass);\n }\n\n private _validatePortalAttached() {\n if (this._portalOutlet.hasAttached()) {\n throw Error('Attempting to attach bottom sheet content after content is already attached');\n }\n }\n\n private _setPanelClass() {\n const element: HTMLElement = this._elementRef.nativeElement;\n const panelClass = this.bottomSheetConfig.panelClass;\n\n if (Array.isArray(panelClass)) {\n // Note that we can't use a spread here, because IE doesn't support multiple arguments.\n panelClass.forEach(cssClass => element.classList.add(cssClass));\n } else if (panelClass) {\n element.classList.add(panelClass);\n }\n }\n\n /** Moves the focus inside the focus trap. */\n private _trapFocus() {\n const element = this._elementRef.nativeElement;\n\n if (!this._focusTrap) {\n this._focusTrap = this._focusTrapFactory.create(element);\n }\n\n if (this.bottomSheetConfig.autoFocus) {\n this._focusTrap.focusInitialElementWhenReady();\n } else {\n const activeElement = this._document.activeElement;\n\n // Otherwise ensure that focus is on the container. It's possible that a different\n // component tried to move focus while the open animation was running. See:\n // https://github.com/angular/components/issues/16215. Note that we only want to do this\n // if the focus isn't inside the bottom sheet already, because it's possible that the\n // consumer turned off `autoFocus` in order to move focus themselves.\n if (activeElement !== element && !element.contains(activeElement)) {\n element.focus();\n }\n }\n }\n\n /** Restores focus to the element that was focused before the bottom sheet was opened. */\n private _restoreFocus() {\n const toFocus = this._elementFocusedBeforeOpened;\n\n // We need the extra check, because IE can set the `activeElement` to null in some cases.\n if (this.bottomSheetConfig.restoreFocus && toFocus && typeof toFocus.focus === 'function') {\n toFocus.focus();\n }\n\n if (this._focusTrap) {\n this._focusTrap.destroy();\n }\n }\n\n /** Saves a reference to the element that was focused before the bottom sheet was opened. */\n private _savePreviouslyFocusedElement() {\n this._elementFocusedBeforeOpened = this._document.activeElement as HTMLElement;\n\n // The `focus` method isn't available during server-side rendering.\n if (this._elementRef.nativeElement.focus) {\n Promise.resolve().then(() => this._elementRef.nativeElement.focus());\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {\n animate,\n state,\n style,\n transition,\n trigger,\n AnimationTriggerMetadata,\n} from '@angular/animations';\nimport {AnimationCurves, AnimationDurations} from '@angular/material/core';\n\n/** Animations used by the Material bottom sheet. */\nexport const matBottomSheetAnimations: {\n readonly bottomSheetState: AnimationTriggerMetadata;\n} = {\n /** Animation that shows and hides a bottom sheet. */\n bottomSheetState: trigger('state', [\n state('void, hidden', style({transform: 'translateY(100%)'})),\n state('visible', style({transform: 'translateY(0%)'})),\n transition('visible => void, visible => hidden',\n animate(`${AnimationDurations.COMPLEX} ${AnimationCurves.ACCELERATION_CURVE}`)),\n transition('void => visible',\n animate(`${AnimationDurations.EXITING} ${AnimationCurves.DECELERATION_CURVE}`)),\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.io/license\n */\n\nimport {Direction} from '@angular/cdk/bidi';\nimport {ScrollStrategy} from '@angular/cdk/overlay';\nimport {InjectionToken, ViewContainerRef} from '@angular/core';\n\n/** Injection token that can be used to access the data that was passed in to a bottom sheet. */\nexport const MAT_BOTTOM_SHEET_DATA = new InjectionToken<any>('MatBottomSheetData');\n\n/**\n * Configuration used when opening a bottom sheet.\n */\nexport class MatBottomSheetConfig<D = any> {\n /** The view container to place the overlay for the bottom sheet into. */\n viewContainerRef?: ViewContainerRef;\n\n /** Extra CSS classes to be added to the bottom sheet container. */\n panelClass?: string | string[];\n\n /** Text layout direction for the bottom sheet. */\n direction?: Direction;\n\n /** Data being injected into the child component. */\n data?: D | null = null;\n\n /** Whether the bottom sheet has a backdrop. */\n hasBackdrop?: boolean = true;\n\n /** Custom class for the backdrop. */\n backdropClass?: string;\n\n /** Whether the user can use escape or clicking outside to close the bottom sheet. */\n disableClose?: boolean = false;\n\n /** Aria label to assign to the bottom sheet element. */\n ariaLabel?: string | null = null;\n\n /**\n * Whether the bottom sheet should close when the user goes backwards/forwards in history.\n * Note that this usually doesn't include clicking on links (unless the user is using\n * the `HashLocationStrategy`).\n */\n closeOnNavigation?: boolean = true;\n\n // Note that this is disabled by default, because while the a11y recommendations are to focus\n // the first focusable element, doing so prevents screen readers from reading out the\n // rest of the bottom sheet content.\n /** Whether the bottom sheet should focus the first focusable element on open. */\n autoFocus?: boolean = false;\n\n /**\n * Whether the bottom sheet should restore focus to the\n * previously-focused element, after it's closed.\n */\n restoreFocus?: boolean = true;\n\n /** Scroll strategy to be used for the bottom sheet. */\n scrollStrategy?: ScrollStrategy;\n}\n"],"names":["tslib_1.__assign","observableOf","tslib_1.__extends"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AKaA,AAAA,IAAa,qBAAqB,GAAG,IAAI,cAAc,CAAM,oBAAoB,CAAC,CAAlF;;;;;AAKA,AAAA,IAAA;;;;;IAAA,SAAA,oBAAA,GAAA;;;;QAWE,IAAF,CAAA,IAAM,GAAc,IAAI,CAAC;;;;QAGvB,IAAF,CAAA,WAAa,GAAa,IAAI,CAAC;;;;QAM7B,IAAF,CAAA,YAAc,GAAa,KAAK,CAAC;;;;QAG/B,IAAF,CAAA,SAAW,GAAmB,IAAI,CAAC;;;;;;QAOjC,IAAF,CAAA,iBAAmB,GAAa,IAAI,CAAC;;;;;;;QAMnC,IAAF,CAAA,SAAW,GAAa,KAAK,CAAC;;;;;QAM5B,IAAF,CAAA,YAAc,GAAa,IAAI,CAAC;KAI/B;IAAD,OAAA,oBAAC,CAAD;CAAC,EAAD,CAAA;;;;;;;;;;AD9CA,AAAA,IAAa,wBAAwB,GAEjC;;;;IAEF,gBAAgB,EAAE,OAAO,CAAC,OAAO,EAAE;QACjC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,EAAC,SAAS,EAAE,kBAAkB,EAAC,CAAC,CAAC;QAC7D,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,EAAC,SAAS,EAAE,gBAAgB,EAAC,CAAC,CAAC;QACtD,UAAU,CAAC,oCAAoC,EAC3C,OAAO,CAAI,kBAAkB,CAAC,OAAO,GAD7C,GAAA,GACiD,eAAe,CAAC,kBAAoB,CAAC,CAAC;QACnF,UAAU,CAAC,iBAAiB,EACxB,OAAO,CAAI,kBAAkB,CAAC,OAAO,GAD7C,GAAA,GACiD,eAAe,CAAC,kBAAoB,CAAC,CAAC;KACpF,CAAC;CACH;;;;;;;;;;;ADYD,AAAA,IAAA,uBAAA,kBAAA,UAAA,MAAA,EAAA;IAmB6CE,SAA7C,CAAA,uBAAA,EAAA,MAAA,CAAA,CAA6D;IAwB3D,SAAF,uBAAA,CACY,WAAoC,EACpC,kBAAqC,EACrC,iBAAmC,EAC3C,kBAAsC,EACR,QAAa,EAEpC,iBAAuC,EAPlD;QAAE,IAAF,KAAA,GAQI,MARJ,CAAA,IAAA,CAAA,IAAA,CAQW,IARX,IAAA,CAqBG;QApBS,KAAZ,CAAA,WAAuB,GAAX,WAAW,CAAyB;QACpC,KAAZ,CAAA,kBAA8B,GAAlB,kBAAkB,CAAmB;QACrC,KAAZ,CAAA,iBAA6B,GAAjB,iBAAiB,CAAkB;QAIpC,KAAX,CAAA,iBAA4B,GAAjB,iBAAiB,CAAsB;;;;QAxBhD,KAAF,CAAA,eAAiB,GAAkC,MAAM,CAAC;;;;QAGxD,KAAF,CAAA,sBAAwB,GAAG,IAAI,YAAY,EAAkB,CAAC;;;;QAMpD,KAAV,CAAA,2BAAqC,GAAuB,IAAI,CAAC;QAkB7D,KAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,KAAI,CAAC,uBAAuB,GAAG,kBAAkB;aAC9C,OAAO,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;aACpE,SAAS;;;QAAC,YAAjB;YACQ,KAAI,CAAC,YAAY,CAAC,mCAAmC,EACjD,kBAAkB,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;YACtD,KAAI,CAAC,YAAY,CAAC,kCAAkC,EAChD,kBAAkB,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;YACrD,KAAI,CAAC,YAAY,CAAC,mCAAmC,EACjD,kBAAkB,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;SACvD,EAAC,CAAC;;KACN;;;;;;;;IAGD,uBAAF,CAAA,SAAA,CAAA,qBAAuB;;;;;;IAArB,UAAyB,MAA0B,EAArD;QACI,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,6BAA6B,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;KACzD,CAAH;;;;;;;;IAGE,uBAAF,CAAA,SAAA,CAAA,oBAAsB;;;;;;IAApB,UAAwB,MAAyB,EAAnD;QACI,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,6BAA6B,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;KACxD,CAAH;;;;;;IAGE,uBAAF,CAAA,SAAA,CAAA,KAAO;;;;IAAL,YAAF;QACI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;YACjC,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;SACzC;KACF,CAAH;;;;;;IAGE,uBAAF,CAAA,SAAA,CAAA,IAAM;;;;IAAJ,YAAF;QACI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC;YAChC,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;SACxC;KACF,CAAH;;;;IAEE,uBAAF,CAAA,SAAA,CAAA,WAAa;;;IAAX,YAAF;QACI,IAAI,CAAC,uBAAuB,CAAC,WAAW,EAAE,CAAC;QAC3C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;KACxB,CAAH;;;;;IAEE,uBAAF,CAAA,SAAA,CAAA,gBAAkB;;;;IAAhB,UAAiB,KAAqB,EAAxC;QACI,IAAI,KAAK,CAAC,OAAO,KAAK,QAAQ,EAAE;YAC9B,IAAI,CAAC,aAAa,EAAE,CAAC;SACtB;aAAM,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE;YACtC,IAAI,CAAC,UAAU,EAAE,CAAC;SACnB;QAED,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACzC,CAAH;;;;;IAEE,uBAAF,CAAA,SAAA,CAAA,iBAAmB;;;;IAAjB,UAAkB,KAAqB,EAAzC;QACI,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACzC,CAAH;;;;;;;IAEU,uBAAV,CAAA,SAAA,CAAA,YAAsB;;;;;;IAApB,UAAqB,QAAgB,EAAE,GAAY,EAArD;;QACA,IAAU,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,CAA9D;QACI,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;KAC5D,CAAH;;;;;IAEU,uBAAV,CAAA,SAAA,CAAA,uBAAiC;;;;IAA/B,YAAF;QACI,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,EAAE;YACpC,MAAM,KAAK,CAAC,6EAA6E,CAAC,CAAC;SAC5F;KACF,CAAH;;;;;IAEU,uBAAV,CAAA,SAAA,CAAA,cAAwB;;;;IAAtB,YAAF;;QACA,IAAU,OAAO,GAAgB,IAAI,CAAC,WAAW,CAAC,aAAa,CAA/D;;QACA,IAAU,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAxD;QAEI,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;;YAE7B,UAAU,CAAC,OAAO;;;;YAAC,UAAA,QAAQ,EAAjC,EAAqC,OAAA,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAApE,EAAoE,EAAC,CAAC;SACjE;aAAM,IAAI,UAAU,EAAE;YACrB,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;SACnC;KACF,CAAH;;;;;;;IAGU,uBAAV,CAAA,SAAA,CAAA,UAAoB;;;;;IAAlB,YAAF;;QACA,IAAU,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAlD;QAEI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SAC1D;QAED,IAAI,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE;YACpC,IAAI,CAAC,UAAU,CAAC,4BAA4B,EAAE,CAAC;SAChD;aAAM;;YACX,IAAY,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAxD;;;;;;YAOM,IAAI,aAAa,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;gBACjE,OAAO,CAAC,KAAK,EAAE,CAAC;aACjB;SACF;KACF,CAAH;;;;;;;IAGU,uBAAV,CAAA,SAAA,CAAA,aAAuB;;;;;IAArB,YAAF;;QACA,IAAU,OAAO,GAAG,IAAI,CAAC,2BAA2B,CAApD;;QAGI,IAAI,IAAI,CAAC,iBAAiB,CAAC,YAAY,IAAI,OAAO,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,UAAU,EAAE;YACzF,OAAO,CAAC,KAAK,EAAE,CAAC;SACjB;QAED,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;SAC3B;KACF,CAAH;;;;;;;IAGU,uBAAV,CAAA,SAAA,CAAA,6BAAuC;;;;;IAArC,YAAF;QAAE,IAAF,KAAA,GAAA,IAAA,CAOG;QANC,IAAI,CAAC,2BAA2B,sBAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAe,CAAC;;QAG/E,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE;YACxC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI;;;YAAC,YAA7B,EAAmC,OAAA,KAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE,CAAzE,EAAyE,EAAC,CAAC;SACtE;KACF,CAAH;;QA1LA,EAAA,IAAA,EAAC,SAAS,EAAV,IAAA,EAAA,CAAW,CAAX,QAAA,EAAA,4BAAA;oBACE,QAAQ,EAAE,6CAAZ;oBACE,MAAF,EAAU,CAAV,6mBAAA,CAAA;oBACE,eAAF,EAAA,uBAAA,CAAA,MAAA;oBACE,aAAF,EAAA,iBAAA,CAAA,IAAA;oBACE,UAAF,EAAA,CAAA,wBAAA,CAAA,gBAAA,CAAA;oBACE,IAAF,EAAA;wBACA,OAAA,EAAe,4BAAf;wBACM,UAAN,EAAA,IAAA;wBACI,MAAJ,EAAA,QAAA;wBACI,YAAY,EAAhB,MAAA;wBACI,mBAAJ,EAAA,8BAAA;wBACI,UAAJ,EAAgB,iBAAhB;wBACI,gBAAJ,EAAA,2BAAA;wBACI,eAAJ,EAAA,0BAAA;qBACA;iBACA,EAAA,EAAA;KACA,CAAA;;;;;QA7CA,EAAA,IAAA,EAAE,gBAAF,EAAA;QAGA,EAAA,IAAA,EAAE,kBAAF,EAAA;QAiBA,EAAA,IAAA,EAAmB,SAAnB,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,QAAA,EAAA,EAAA,CAAA,EAAA;QALA,EAAA,IAAA,EAAQ,oBAAR,EAAA;KA6DA,CAAA,EAAA,CAAA;IA5DA,uBAAA,CAAA,cAAA,GAAA;;;IAmCA,OAAA,uBAAA,CAAA;;;;;;;ADjDA,IAAA,oBAAA,kBAAA,YAAA;IAAA,SAAA,oBAAA,GAAA;KAWoC;;QAXpC,EAAA,IAAA,EAAC,QAAQ,EAAT,IAAA,EAAA,CAAU;oBACR,OAAO,EAAE;wBACP,YAAY;wBACZ,aAAa;wBACb,eAAe;wBACf,YAAY;qBACb;oBACD,OAAO,EAAE,CAAC,uBAAuB,EAAE,eAAe,CAAC;oBACnD,YAAY,EAAE,CAAC,uBAAuB,CAAC;oBACvC,eAAe,EAAE,CAAC,uBAAuB,CAAC;iBAC3C,EAAD,EAAA;;IACmC,OAAnC,oBAAoC,CAApC;CAAoC,EAApC,CAAA;;;;;;;;;;ADRA,AAAA,IAAA;;;;;IAyBE,SAAF,iBAAA,CACI,iBAA0C,EAClC,WAAuB;;IAE/B,SAAoB,EAAxB;QAJE,IAAF,KAAA,GAAA,IAAA,CAyCG;QAvCS,IAAZ,CAAA,WAAuB,GAAX,WAAW,CAAY;;;;QAbhB,IAAnB,CAAA,eAAkC,GAAG,IAAI,OAAO,EAAiB,CAAC;;;;QAG/C,IAAnB,CAAA,YAA+B,GAAG,IAAI,OAAO,EAAQ,CAAC;QAalD,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC3C,IAAI,CAAC,YAAY,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,YAAY,CAAC;;QAGrE,iBAAiB,CAAC,sBAAsB,CAAC,IAAI,CAC3C,MAAM;;;;QAAC,UAAA,KAAK,EAAlB,EAAsB,OAAA,KAAK,CAAC,SAAS,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,CAA/E,EAA+E,EAAC,EAC1E,IAAI,CAAC,CAAC,CAAC,CACR;aACA,SAAS;;;QAAC,YAAf;YACM,KAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;YACzB,KAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;SAC9B,EAAC,CAAC;;QAGH,iBAAiB,CAAC,sBAAsB;aACnC,IAAI,CAAC,MAAM;;;;QAAC,UAAA,KAAK,EAA1B,EAA8B,OAAA,KAAK,CAAC,SAAS,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAtF,EAAsF,EAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;aACxF,SAAS;;;QAAC,YAAnB;YACU,YAAY,CAAC,KAAI,CAAC,qBAAqB,CAAC,CAAC;YACzC,WAAW,CAAC,OAAO,EAAE,CAAC;SACvB,EAAC,CAAC;QAEP,WAAW,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;;;QAAC,YAAtD;YACM,KAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAI,CAAC,OAAO,CAAC,CAAC;YACxC,KAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;SACjC,EAAC,CAAC;QAEH,KAAK,CACH,WAAW,CAAC,aAAa,EAAE,EAC3B,WAAW,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,MAAM;;;;QAAC,UAAA,KAAK,EAAnD,EAAuD,OAAA,KAAK,CAAC,OAAO,KAAK,MAAM,CAA/E,EAA+E,EAAC,CAAC,CAC5E,CAAC,SAAS;;;;QAAC,UAAA,KAAK,EAArB;YACM,IAAI,CAAC,KAAI,CAAC,YAAY;iBACnB,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,cAAc,oBAAC,KAAK,GAAkB,CAAC,EAAE;gBACvE,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,KAAI,CAAC,OAAO,EAAE,CAAC;aAChB;SACF,EAAC,CAAC;KACJ;;;;;;;;;;IAMD,iBAAF,CAAA,SAAA,CAAA,OAAS;;;;;IAAP,UAAQ,MAAU,EAApB;QAAE,IAAF,KAAA,GAAA,IAAA,CAsBG;QArBC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE;;YAEhC,IAAI,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,IAAI,CAChD,MAAM;;;;YAAC,UAAA,KAAK,EAApB,EAAwB,OAAA,KAAK,CAAC,SAAS,KAAK,OAAO,CAAnD,EAAmD,EAAC,EAC5C,IAAI,CAAC,CAAC,CAAC,CACR,CAAC,SAAS;;;;YAAC,UAAA,KAAK,EAAvB;;;;;;gBAMQ,KAAI,CAAC,qBAAqB,GAAG,UAAU;;;gBAAC,YAAhD;oBACU,KAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;iBAC5B,GAAE,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC;gBAE1B,KAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;aACnC,EAAC,CAAC;YAEH,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;YACtB,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;SAC/B;KACF,CAAH;;;;;;IAGE,iBAAF,CAAA,SAAA,CAAA,cAAgB;;;;IAAd,YAAF;QACI,OAAO,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;KAC5C,CAAH;;;;;;IAGE,iBAAF,CAAA,SAAA,CAAA,WAAa;;;;IAAX,YAAF;QACI,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;KACzC,CAAH;;;;;;;;IAKE,iBAAF,CAAA,SAAA,CAAA,aAAe;;;;IAAb,YAAF;QACI,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;KACzC,CAAH;;;;;;;;IAKE,iBAAF,CAAA,SAAA,CAAA,aAAe;;;;IAAb,YAAF;QACI,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;KACzC,CAAH;IACA,OAAA,iBAAC,CAAD;CAAC,EAAD,CAAA;;;;;;;;;;AD3GA,AAAA,IAAa,gCAAgC,GACzC,IAAI,cAAc,CAAuB,kCAAkC,CAAC,CADhF;;;;AAMA,AAAA,IAAA,cAAA,kBAAA,YAAA;IAkBE,SAAF,cAAA,CACc,QAAiB,EACjB,SAAmB,EACK,kBAAkC,EAC9C,SAAoB,EAE5B,eAAsC,EANxD;QACc,IAAd,CAAA,QAAsB,GAAR,QAAQ,CAAS;QACjB,IAAd,CAAA,SAAuB,GAAT,SAAS,CAAU;QACK,IAAtC,CAAA,kBAAwD,GAAlB,kBAAkB,CAAgB;QAC9C,IAA1B,CAAA,SAAmC,GAAT,SAAS,CAAW;QAE5B,IAAlB,CAAA,eAAiC,GAAf,eAAe,CAAuB;QAtB9C,IAAV,CAAA,0BAAoC,GAAkC,IAAI,CAAC;KAsBf;IAnB1D,MAAF,CAAA,cAAA,CAAM,cAAN,CAAA,SAAA,EAAA,uBAA2B,EAA3B;;;;;;QAAE,YAAF;;YACA,IAAU,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAA1C;YACI,OAAO,MAAM,GAAG,MAAM,CAAC,qBAAqB,GAAG,IAAI,CAAC,0BAA0B,CAAC;SAChF;;;;;QAED,UAA0B,KAAoC,EAAhE;YACI,IAAI,IAAI,CAAC,kBAAkB,EAAE;gBAC3B,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,GAAG,KAAK,CAAC;aACvD;iBAAM;gBACL,IAAI,CAAC,0BAA0B,GAAG,KAAK,CAAC;aACzC;SACF;;;KARH,CAAA,CAAG;;;;;;;IAuBD,cAAF,CAAA,SAAA,CAAA,IAAM;;;;;;IAAJ,UAA0B,sBAAyD,EAClE,MAAgC,EADnD;QAAE,IAAF,KAAA,GAAA,IAAA,CA0CG;;QAvCH,IAAU,OAAO,GACT,oBAAoB,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,oBAAoB,EAAE,EAAE,MAAM,CAAC,CADxF;;QAEA,IAAU,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAnD;;QACA,IAAU,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAhE;;QACA,IAAU,GAAG,GAAG,IAAI,iBAAiB,CAAO,SAAS,EAAE,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAlF;QAEI,IAAI,sBAAsB,YAAY,WAAW,EAAE;YACjD,SAAS,CAAC,oBAAoB,CAAC,IAAI,cAAc,CAAI,sBAAsB,qBAAE,IAAI,uBAAG;gBAClF,SAAS,EAAE,OAAO,CAAC,IAAI;gBACvB,cAAc,EAAE,GAAG;aACpB,GAAQ,CAAC,CAAC;SACZ;aAAM;;YACX,IAAY,MAAM,GAAG,IAAI,eAAe,CAAC,sBAAsB,EAAE,SAAS,EAC9D,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAD/C;;YAEA,IAAY,UAAU,GAAG,SAAS,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAhE;YACM,GAAG,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;SACpC;;QAGD,GAAG,CAAC,cAAc,EAAE,CAAC,SAAS;;;QAAC,YAAnC;;YAEM,IAAI,KAAI,CAAC,qBAAqB,IAAI,GAAG,EAAE;gBACrC,KAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;aACnC;SACF,EAAC,CAAC;QAEH,IAAI,IAAI,CAAC,qBAAqB,EAAE;;;YAG9B,IAAI,CAAC,qBAAqB,CAAC,cAAc,EAAE,CAAC,SAAS;;;YAAC,YAA5D,EAAkE,OAAA,GAAG,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAA/F,EAA+F,EAAC,CAAC;YAC3F,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,CAAC;SACtC;aAAM;;YAEL,GAAG,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;SAC/B;QAED,IAAI,CAAC,qBAAqB,GAAG,GAAG,CAAC;QAEjC,OAAO,GAAG,CAAC;KACZ,CAAH;;;;;;;;IAKE,cAAF,CAAA,SAAA,CAAA,OAAS;;;;IAAP,YAAF;QACI,IAAI,IAAI,CAAC,qBAAqB,EAAE;YAC9B,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,CAAC;SACtC;KACF,CAAH;;;;IAEE,cAAF,CAAA,SAAA,CAAA,WAAa;;;IAAX,YAAF;QACI,IAAI,IAAI,CAAC,0BAA0B,EAAE;YACnC,IAAI,CAAC,0BAA0B,CAAC,OAAO,EAAE,CAAC;SAC3C;KACF,CAAH;;;;;;;;;;;IAKU,cAAV,CAAA,SAAA,CAAA,gBAA0B;;;;;;;IAAxB,UAAyB,UAAsB,EACtB,MAA4B,EADvD;;QAGA,IAAU,YAAY,GAAG,MAAM,IAAI,MAAM,CAAC,gBAAgB,IAAI,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAA9F;;QACA,IAAU,QAAQ,GAAG,IAAI,cAAc,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,OAAO,CAAC;YAC9E,CAAC,oBAAoB,EAAE,MAAM,CAAC;SAC/B,CAAC,CAAC,CAAP;;QAEA,IAAU,eAAe,GACjB,IAAI,eAAe,CAAC,uBAAuB,EAAE,MAAM,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CADvF;;QAEA,IAAU,YAAY,GAA0C,UAAU,CAAC,MAAM,CAAC,eAAe,CAAC,CAAlG;QACI,OAAO,YAAY,CAAC,QAAQ,CAAC;KAC9B,CAAH;;;;;;;;;;;IAMU,cAAV,CAAA,SAAA,CAAA,cAAwB;;;;;;IAAtB,UAAuB,MAA4B,EAArD;;QACA,IAAU,aAAa,GAAG,IAAI,aAAa,CAAC;YACtC,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,mBAAmB,EAAE,MAAM,CAAC,iBAAiB;YAC7C,QAAQ,EAAE,MAAM;YAChB,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,EAAE;YAC/E,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,CAAC,kBAAkB,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC;SACrF,CAAC,CAAN;QAEI,IAAI,MAAM,CAAC,aAAa,EAAE;YACxB,aAAa,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;SACpD;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;KAC5C,CAAH;;;;;;;;;;;;;;IAOU,cAAV,CAAA,SAAA,CAAA,eAAyB;;;;;;;;IAAvB,UAA2B,MAA4B,EAC5B,cAAoC,EADjE;;QAGA,IAAU,YAAY,GAAG,MAAM,IAAI,MAAM,CAAC,gBAAgB,IAAI,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAA9F;;QACA,IAAU,eAAe,GAAG,IAAI,OAAO,CAAW;YAC5C,CAAC,iBAAiB,EAAE,cAAc,CAAC;YACnC,CAAC,qBAAqB,EAAE,MAAM,CAAC,IAAI,CAAC;SACrC,CAAC,CAAN;QAEI,IAAI,MAAM,CAAC,SAAS;aACf,CAAC,YAAY,IAAI,CAAC,YAAY,CAAC,GAAG,CAAwB,cAAc,EAAE,IAAI,CAAC,CAAC,EAAE;YACrF,eAAe,CAAC,GAAG,CAAC,cAAc,EAAE;gBAClC,KAAK,EAAE,MAAM,CAAC,SAAS;gBACvB,MAAM,EAAED,EAAY,EAAE;aACvB,CAAC,CAAC;SACJ;QAED,OAAO,IAAI,cAAc,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;KAC5E,CAAH;;QAvJA,EAAA,IAAA,EAAC,UAAU,EAAX,IAAA,EAAA,CAAY,EAAC,UAAU,EAAE,oBAAoB,EAAC,EAA9C,EAAA;;;;QA5BA,EAAA,IAAA,EAAQ,OAAO,EAAf;QAKA,EAAA,IAAA,EAAE,QAAQ,EAAV;QA4CA,EAAA,IAAA,EAA0D,cAAc,EAAxE,UAAA,EAAA,CAAA,EAAA,IAAA,EAAO,QAAQ,EAAf,EAAA,EAAA,IAAA,EAAmB,QAAQ,EAA3B,CAAA,EAAA;QApCA,EAAA,IAAA,EAAQ,QAAQ,EAAhB,UAAA,EAAA,CAAA,EAAA,IAAA,EAqCO,QAAQ,EArCf,CAAA,EAAA;QAEA,EAAA,IAAA,EAA+B,oBAAoB,EAAnD,UAAA,EAAA,CAAA,EAAA,IAAA,EAoCO,QAAQ,EApCf,EAAA,EAAA,IAAA,EAoCmB,MAAM,EApCzB,IAAA,EAAA,CAoC0B,gCAAgC,EApC1D,EAAA,CAAA,EAAA;;;IAxBA,OAAA,cAAA,CAAA;CA6LC,EAAD,CAAA,CAAC;AAvJD;;;;;;AA+JA,SAAS,oBAAoB,CAAC,QAA8B,EAC9B,MAA6B,EAD3D;IAEE,OAAFD,QAAA,CAAA,EAAA,EAAa,QAAQ,EAAK,MAAM,CAAhC,CAAkC;CACjC;;;;;;;;;;;;;;"}
@@ -185,7 +185,7 @@ var MatButtonToggleGroup = /** @class */ (function () {
185
185
  */
186
186
  function () {
187
187
  /** @type {?} */
188
- var selected = this._selectionModel.selected;
188
+ var selected = this._selectionModel ? this._selectionModel.selected : [];
189
189
  return this.multiple ? selected : (selected[0] || null);
190
190
  },
191
191
  enumerable: true,
@@ -368,11 +368,16 @@ var MatButtonToggleGroup = /** @class */ (function () {
368
368
  if (!this.multiple && this.selected && !toggle.checked) {
369
369
  ((/** @type {?} */ (this.selected))).checked = false;
370
370
  }
371
- if (select) {
372
- this._selectionModel.select(toggle);
371
+ if (this._selectionModel) {
372
+ if (select) {
373
+ this._selectionModel.select(toggle);
374
+ }
375
+ else {
376
+ this._selectionModel.deselect(toggle);
377
+ }
373
378
  }
374
379
  else {
375
- this._selectionModel.deselect(toggle);
380
+ deferEvents = true;
376
381
  }
377
382
  // We need to defer in some cases in order to avoid "changed after checked errors", however
378
383
  // the side-effect is that we may end up updating the model value out of sequence in others
@@ -395,7 +400,7 @@ var MatButtonToggleGroup = /** @class */ (function () {
395
400
  * @return {?}
396
401
  */
397
402
  function (toggle) {
398
- return this._selectionModel.isSelected(toggle);
403
+ return this._selectionModel && this._selectionModel.isSelected(toggle);
399
404
  };
400
405
  /** Determines whether a button toggle should be checked on init. */
401
406
  /**