@angular/material 7.0.4 → 7.2.1

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 (488) hide show
  1. package/LICENSE +1 -1
  2. package/_theming.scss +61 -44
  3. package/autocomplete/typings/index.d.ts +1 -1
  4. package/autocomplete/typings/index.metadata.json +1 -1
  5. package/badge/typings/index.metadata.json +1 -1
  6. package/bottom-sheet/typings/bottom-sheet-config.d.ts +5 -0
  7. package/bottom-sheet/typings/bottom-sheet-container.d.ts +1 -1
  8. package/bottom-sheet/typings/index.metadata.json +1 -1
  9. package/bundles/material-autocomplete.umd.js +126 -32
  10. package/bundles/material-autocomplete.umd.js.map +1 -1
  11. package/bundles/material-autocomplete.umd.min.js +1 -1
  12. package/bundles/material-autocomplete.umd.min.js.map +1 -1
  13. package/bundles/material-badge.umd.js +38 -5
  14. package/bundles/material-badge.umd.js.map +1 -1
  15. package/bundles/material-badge.umd.min.js +1 -1
  16. package/bundles/material-badge.umd.min.js.map +1 -1
  17. package/bundles/material-bottom-sheet.umd.js +68 -21
  18. package/bundles/material-bottom-sheet.umd.js.map +1 -1
  19. package/bundles/material-bottom-sheet.umd.min.js +1 -1
  20. package/bundles/material-bottom-sheet.umd.min.js.map +1 -1
  21. package/bundles/material-button-toggle.umd.js +36 -13
  22. package/bundles/material-button-toggle.umd.js.map +1 -1
  23. package/bundles/material-button-toggle.umd.min.js +1 -1
  24. package/bundles/material-button-toggle.umd.min.js.map +1 -1
  25. package/bundles/material-button.umd.js +21 -14
  26. package/bundles/material-button.umd.js.map +1 -1
  27. package/bundles/material-button.umd.min.js +1 -1
  28. package/bundles/material-button.umd.min.js.map +1 -1
  29. package/bundles/material-card.umd.js +3 -3
  30. package/bundles/material-card.umd.js.map +1 -1
  31. package/bundles/material-card.umd.min.js +1 -1
  32. package/bundles/material-card.umd.min.js.map +1 -1
  33. package/bundles/material-checkbox.umd.js +56 -15
  34. package/bundles/material-checkbox.umd.js.map +1 -1
  35. package/bundles/material-checkbox.umd.min.js +1 -1
  36. package/bundles/material-checkbox.umd.min.js.map +1 -1
  37. package/bundles/material-chips.umd.js +124 -34
  38. package/bundles/material-chips.umd.js.map +1 -1
  39. package/bundles/material-chips.umd.min.js +1 -1
  40. package/bundles/material-chips.umd.min.js.map +1 -1
  41. package/bundles/material-core.umd.js +189 -126
  42. package/bundles/material-core.umd.js.map +1 -1
  43. package/bundles/material-core.umd.min.js +1 -1
  44. package/bundles/material-core.umd.min.js.map +1 -1
  45. package/bundles/material-datepicker.umd.js +231 -53
  46. package/bundles/material-datepicker.umd.js.map +1 -1
  47. package/bundles/material-datepicker.umd.min.js +2 -2
  48. package/bundles/material-datepicker.umd.min.js.map +1 -1
  49. package/bundles/material-dialog.umd.js +138 -40
  50. package/bundles/material-dialog.umd.js.map +1 -1
  51. package/bundles/material-dialog.umd.min.js +1 -1
  52. package/bundles/material-dialog.umd.min.js.map +1 -1
  53. package/bundles/material-divider.umd.js +2 -2
  54. package/bundles/material-divider.umd.js.map +1 -1
  55. package/bundles/material-divider.umd.min.js.map +1 -1
  56. package/bundles/material-expansion.umd.js +53 -27
  57. package/bundles/material-expansion.umd.js.map +1 -1
  58. package/bundles/material-expansion.umd.min.js +1 -1
  59. package/bundles/material-expansion.umd.min.js.map +1 -1
  60. package/bundles/material-form-field.umd.js +121 -32
  61. package/bundles/material-form-field.umd.js.map +1 -1
  62. package/bundles/material-form-field.umd.min.js +1 -1
  63. package/bundles/material-form-field.umd.min.js.map +1 -1
  64. package/bundles/material-grid-list.umd.js +66 -15
  65. package/bundles/material-grid-list.umd.js.map +1 -1
  66. package/bundles/material-grid-list.umd.min.js +1 -1
  67. package/bundles/material-grid-list.umd.min.js.map +1 -1
  68. package/bundles/material-icon.umd.js +277 -78
  69. package/bundles/material-icon.umd.js.map +1 -1
  70. package/bundles/material-icon.umd.min.js +1 -1
  71. package/bundles/material-icon.umd.min.js.map +1 -1
  72. package/bundles/material-input.umd.js +50 -22
  73. package/bundles/material-input.umd.js.map +1 -1
  74. package/bundles/material-input.umd.min.js +1 -1
  75. package/bundles/material-input.umd.min.js.map +1 -1
  76. package/bundles/material-list.umd.js +69 -21
  77. package/bundles/material-list.umd.js.map +1 -1
  78. package/bundles/material-list.umd.min.js +2 -6
  79. package/bundles/material-list.umd.min.js.map +1 -1
  80. package/bundles/material-menu.umd.js +171 -66
  81. package/bundles/material-menu.umd.js.map +1 -1
  82. package/bundles/material-menu.umd.min.js +1 -1
  83. package/bundles/material-menu.umd.min.js.map +1 -1
  84. package/bundles/material-paginator.umd.js +52 -10
  85. package/bundles/material-paginator.umd.js.map +1 -1
  86. package/bundles/material-paginator.umd.min.js +1 -1
  87. package/bundles/material-paginator.umd.min.js.map +1 -1
  88. package/bundles/material-progress-bar.umd.js +31 -12
  89. package/bundles/material-progress-bar.umd.js.map +1 -1
  90. package/bundles/material-progress-bar.umd.min.js +1 -1
  91. package/bundles/material-progress-bar.umd.min.js.map +1 -1
  92. package/bundles/material-progress-spinner.umd.js +29 -13
  93. package/bundles/material-progress-spinner.umd.js.map +1 -1
  94. package/bundles/material-progress-spinner.umd.min.js.map +1 -1
  95. package/bundles/material-radio.umd.js +38 -40
  96. package/bundles/material-radio.umd.js.map +1 -1
  97. package/bundles/material-radio.umd.min.js +1 -1
  98. package/bundles/material-radio.umd.min.js.map +1 -1
  99. package/bundles/material-select.umd.js +189 -51
  100. package/bundles/material-select.umd.js.map +1 -1
  101. package/bundles/material-select.umd.min.js +1 -1
  102. package/bundles/material-select.umd.min.js.map +1 -1
  103. package/bundles/material-sidenav.umd.js +104 -25
  104. package/bundles/material-sidenav.umd.js.map +1 -1
  105. package/bundles/material-sidenav.umd.min.js +1 -1
  106. package/bundles/material-sidenav.umd.min.js.map +1 -1
  107. package/bundles/material-slide-toggle.umd.js +30 -14
  108. package/bundles/material-slide-toggle.umd.js.map +1 -1
  109. package/bundles/material-slide-toggle.umd.min.js +1 -1
  110. package/bundles/material-slide-toggle.umd.min.js.map +1 -1
  111. package/bundles/material-slider.umd.js +91 -21
  112. package/bundles/material-slider.umd.js.map +1 -1
  113. package/bundles/material-slider.umd.min.js +1 -1
  114. package/bundles/material-slider.umd.min.js.map +1 -1
  115. package/bundles/material-snack-bar.umd.js +71 -19
  116. package/bundles/material-snack-bar.umd.js.map +1 -1
  117. package/bundles/material-snack-bar.umd.min.js +1 -1
  118. package/bundles/material-snack-bar.umd.min.js.map +1 -1
  119. package/bundles/material-sort.umd.js +46 -24
  120. package/bundles/material-sort.umd.js.map +1 -1
  121. package/bundles/material-sort.umd.min.js +1 -1
  122. package/bundles/material-sort.umd.min.js.map +1 -1
  123. package/bundles/material-stepper.umd.js +37 -35
  124. package/bundles/material-stepper.umd.js.map +1 -1
  125. package/bundles/material-stepper.umd.min.js +1 -1
  126. package/bundles/material-stepper.umd.min.js.map +1 -1
  127. package/bundles/material-table.umd.js +29 -9
  128. package/bundles/material-table.umd.js.map +1 -1
  129. package/bundles/material-table.umd.min.js.map +1 -1
  130. package/bundles/material-tabs.umd.js +170 -68
  131. package/bundles/material-tabs.umd.js.map +1 -1
  132. package/bundles/material-tabs.umd.min.js +2 -2
  133. package/bundles/material-tabs.umd.min.js.map +1 -1
  134. package/bundles/material-toolbar.umd.js +14 -4
  135. package/bundles/material-toolbar.umd.js.map +1 -1
  136. package/bundles/material-toolbar.umd.min.js +1 -1
  137. package/bundles/material-toolbar.umd.min.js.map +1 -1
  138. package/bundles/material-tooltip.umd.js +53 -26
  139. package/bundles/material-tooltip.umd.js.map +1 -1
  140. package/bundles/material-tooltip.umd.min.js +1 -1
  141. package/bundles/material-tooltip.umd.min.js.map +1 -1
  142. package/bundles/material-tree.umd.js +25 -16
  143. package/bundles/material-tree.umd.js.map +1 -1
  144. package/bundles/material-tree.umd.min.js +1 -1
  145. package/bundles/material-tree.umd.min.js.map +1 -1
  146. package/bundles/material.umd.js +2853 -1010
  147. package/bundles/material.umd.js.map +1 -1
  148. package/bundles/material.umd.min.js +19 -21
  149. package/bundles/material.umd.min.js.map +1 -1
  150. package/button/typings/button.d.ts +0 -5
  151. package/button/typings/index.metadata.json +1 -1
  152. package/button-toggle/typings/index.metadata.json +1 -1
  153. package/card/typings/index.metadata.json +1 -1
  154. package/checkbox/typings/index.metadata.json +1 -1
  155. package/chips/typings/chip-list.d.ts +1 -1
  156. package/chips/typings/chip.d.ts +2 -2
  157. package/chips/typings/index.metadata.json +1 -1
  158. package/core/typings/index.metadata.json +1 -1
  159. package/core/typings/{testing/month-constants.d.ts → month-constants.d.ts} +2 -0
  160. package/core/typings/public-api.d.ts +1 -1
  161. package/datepicker/typings/calendar-body.d.ts +21 -5
  162. package/datepicker/typings/calendar.d.ts +4 -1
  163. package/datepicker/typings/datepicker.d.ts +3 -0
  164. package/datepicker/typings/index.metadata.json +1 -1
  165. package/datepicker/typings/month-view.d.ts +4 -2
  166. package/dialog/typings/index.metadata.json +1 -1
  167. package/esm2015/autocomplete.js +60 -29
  168. package/esm2015/autocomplete.js.map +1 -1
  169. package/esm2015/badge.js +29 -6
  170. package/esm2015/badge.js.map +1 -1
  171. package/esm2015/bottom-sheet.js +45 -22
  172. package/esm2015/bottom-sheet.js.map +1 -1
  173. package/esm2015/button-toggle.js +20 -11
  174. package/esm2015/button-toggle.js.map +1 -1
  175. package/esm2015/button.js +20 -15
  176. package/esm2015/button.js.map +1 -1
  177. package/esm2015/card.js +5 -5
  178. package/esm2015/card.js.map +1 -1
  179. package/esm2015/checkbox.js +30 -12
  180. package/esm2015/checkbox.js.map +1 -1
  181. package/esm2015/chips.js +64 -28
  182. package/esm2015/chips.js.map +1 -1
  183. package/esm2015/core.js +148 -129
  184. package/esm2015/core.js.map +1 -1
  185. package/esm2015/datepicker.js +124 -41
  186. package/esm2015/datepicker.js.map +1 -1
  187. package/esm2015/dialog.js +77 -40
  188. package/esm2015/dialog.js.map +1 -1
  189. package/esm2015/divider.js +4 -4
  190. package/esm2015/divider.js.map +1 -1
  191. package/esm2015/expansion.js +58 -31
  192. package/esm2015/expansion.js.map +1 -1
  193. package/esm2015/form-field.js +94 -34
  194. package/esm2015/form-field.js.map +1 -1
  195. package/esm2015/grid-list.js +45 -17
  196. package/esm2015/grid-list.js.map +1 -1
  197. package/esm2015/icon.js +136 -67
  198. package/esm2015/icon.js.map +1 -1
  199. package/esm2015/input.js +44 -23
  200. package/esm2015/input.js.map +1 -1
  201. package/esm2015/list.js +47 -22
  202. package/esm2015/list.js.map +1 -1
  203. package/esm2015/material.js +13 -12
  204. package/esm2015/material.js.map +1 -1
  205. package/esm2015/menu.js +109 -63
  206. package/esm2015/menu.js.map +1 -1
  207. package/esm2015/paginator.js +35 -12
  208. package/esm2015/paginator.js.map +1 -1
  209. package/esm2015/progress-bar.js +26 -13
  210. package/esm2015/progress-bar.js.map +1 -1
  211. package/esm2015/progress-spinner.js +24 -14
  212. package/esm2015/progress-spinner.js.map +1 -1
  213. package/esm2015/radio.js +22 -21
  214. package/esm2015/radio.js.map +1 -1
  215. package/esm2015/select.js +116 -53
  216. package/esm2015/select.js.map +1 -1
  217. package/esm2015/sidenav.js +75 -28
  218. package/esm2015/sidenav.js.map +1 -1
  219. package/esm2015/slide-toggle.js +23 -15
  220. package/esm2015/slide-toggle.js.map +1 -1
  221. package/esm2015/slider.js +54 -24
  222. package/esm2015/slider.js.map +1 -1
  223. package/esm2015/snack-bar.js +41 -21
  224. package/esm2015/snack-bar.js.map +1 -1
  225. package/esm2015/sort.js +47 -24
  226. package/esm2015/sort.js.map +1 -1
  227. package/esm2015/stepper.js +35 -32
  228. package/esm2015/stepper.js.map +1 -1
  229. package/esm2015/table.js +31 -11
  230. package/esm2015/table.js.map +1 -1
  231. package/esm2015/tabs.js +113 -53
  232. package/esm2015/tabs.js.map +1 -1
  233. package/esm2015/toolbar.js +9 -5
  234. package/esm2015/toolbar.js.map +1 -1
  235. package/esm2015/tooltip.js +43 -28
  236. package/esm2015/tooltip.js.map +1 -1
  237. package/esm2015/tree.js +22 -17
  238. package/esm2015/tree.js.map +1 -1
  239. package/esm5/autocomplete.es5.js +128 -34
  240. package/esm5/autocomplete.es5.js.map +1 -1
  241. package/esm5/badge.es5.js +40 -7
  242. package/esm5/badge.es5.js.map +1 -1
  243. package/esm5/bottom-sheet.es5.js +70 -23
  244. package/esm5/bottom-sheet.es5.js.map +1 -1
  245. package/esm5/button-toggle.es5.js +38 -15
  246. package/esm5/button-toggle.es5.js.map +1 -1
  247. package/esm5/button.es5.js +23 -16
  248. package/esm5/button.es5.js.map +1 -1
  249. package/esm5/card.es5.js +5 -5
  250. package/esm5/card.es5.js.map +1 -1
  251. package/esm5/checkbox.es5.js +58 -17
  252. package/esm5/checkbox.es5.js.map +1 -1
  253. package/esm5/chips.es5.js +127 -37
  254. package/esm5/chips.es5.js.map +1 -1
  255. package/esm5/core.es5.js +192 -129
  256. package/esm5/core.es5.js.map +1 -1
  257. package/esm5/datepicker.es5.js +233 -55
  258. package/esm5/datepicker.es5.js.map +1 -1
  259. package/esm5/dialog.es5.js +140 -42
  260. package/esm5/dialog.es5.js.map +1 -1
  261. package/esm5/divider.es5.js +4 -4
  262. package/esm5/divider.es5.js.map +1 -1
  263. package/esm5/expansion.es5.js +56 -31
  264. package/esm5/expansion.es5.js.map +1 -1
  265. package/esm5/form-field.es5.js +125 -36
  266. package/esm5/form-field.es5.js.map +1 -1
  267. package/esm5/grid-list.es5.js +68 -17
  268. package/esm5/grid-list.es5.js.map +1 -1
  269. package/esm5/icon.es5.js +279 -80
  270. package/esm5/icon.es5.js.map +1 -1
  271. package/esm5/input.es5.js +52 -24
  272. package/esm5/input.es5.js.map +1 -1
  273. package/esm5/list.es5.js +72 -24
  274. package/esm5/list.es5.js.map +1 -1
  275. package/esm5/material.es5.js +13 -12
  276. package/esm5/material.es5.js.map +1 -1
  277. package/esm5/menu.es5.js +170 -65
  278. package/esm5/menu.es5.js.map +1 -1
  279. package/esm5/paginator.es5.js +55 -13
  280. package/esm5/paginator.es5.js.map +1 -1
  281. package/esm5/progress-bar.es5.js +33 -14
  282. package/esm5/progress-bar.es5.js.map +1 -1
  283. package/esm5/progress-spinner.es5.js +31 -15
  284. package/esm5/progress-spinner.es5.js.map +1 -1
  285. package/esm5/radio.es5.js +42 -42
  286. package/esm5/radio.es5.js.map +1 -1
  287. package/esm5/select.es5.js +193 -55
  288. package/esm5/select.es5.js.map +1 -1
  289. package/esm5/sidenav.es5.js +107 -28
  290. package/esm5/sidenav.es5.js.map +1 -1
  291. package/esm5/slide-toggle.es5.js +32 -16
  292. package/esm5/slide-toggle.es5.js.map +1 -1
  293. package/esm5/slider.es5.js +94 -24
  294. package/esm5/slider.es5.js.map +1 -1
  295. package/esm5/snack-bar.es5.js +73 -21
  296. package/esm5/snack-bar.es5.js.map +1 -1
  297. package/esm5/sort.es5.js +53 -26
  298. package/esm5/sort.es5.js.map +1 -1
  299. package/esm5/stepper.es5.js +40 -38
  300. package/esm5/stepper.es5.js.map +1 -1
  301. package/esm5/table.es5.js +31 -11
  302. package/esm5/table.es5.js.map +1 -1
  303. package/esm5/tabs.es5.js +162 -61
  304. package/esm5/tabs.es5.js.map +1 -1
  305. package/esm5/toolbar.es5.js +16 -6
  306. package/esm5/toolbar.es5.js.map +1 -1
  307. package/esm5/tooltip.es5.js +55 -28
  308. package/esm5/tooltip.es5.js.map +1 -1
  309. package/esm5/tree.es5.js +27 -18
  310. package/esm5/tree.es5.js.map +1 -1
  311. package/expansion/typings/expansion-panel-header.d.ts +2 -2
  312. package/expansion/typings/expansion-panel.d.ts +19 -2
  313. package/expansion/typings/index.metadata.json +1 -1
  314. package/form-field/typings/form-field.d.ts +15 -4
  315. package/form-field/typings/index.metadata.json +1 -1
  316. package/grid-list/typings/index.d.ts +1 -1
  317. package/grid-list/typings/index.metadata.json +1 -1
  318. package/icon/typings/index.metadata.json +1 -1
  319. package/list/typings/index.metadata.json +1 -1
  320. package/material.d.ts +1 -1
  321. package/material.metadata.json +3 -3
  322. package/menu/typings/index.d.ts +4 -4
  323. package/menu/typings/index.metadata.json +1 -1
  324. package/menu/typings/menu-directive.d.ts +1 -0
  325. package/menu/typings/menu-item.d.ts +2 -0
  326. package/package.json +5 -5
  327. package/paginator/typings/index.metadata.json +1 -1
  328. package/paginator/typings/paginator.d.ts +7 -3
  329. package/prebuilt-themes/deeppurple-amber.css +1 -1
  330. package/prebuilt-themes/indigo-pink.css +1 -1
  331. package/prebuilt-themes/pink-bluegrey.css +1 -1
  332. package/prebuilt-themes/purple-green.css +1 -1
  333. package/progress-bar/typings/index.metadata.json +1 -1
  334. package/radio/typings/index.metadata.json +1 -1
  335. package/radio/typings/radio.d.ts +2 -6
  336. package/schematics/ng-add/theming/{custom-theme.d.ts → create-custom-theme.d.ts} +0 -0
  337. package/schematics/ng-add/theming/{custom-theme.js → create-custom-theme.js} +1 -1
  338. package/schematics/ng-add/theming/create-custom-theme.js.map +1 -0
  339. package/schematics/ng-add/theming/theming.js +35 -19
  340. package/schematics/ng-add/theming/theming.js.map +1 -1
  341. package/schematics/ng-generate/address-form/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.ts +2 -2
  342. package/schematics/ng-generate/dashboard/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.ts +2 -2
  343. package/schematics/ng-generate/nav/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.ts +2 -2
  344. package/schematics/ng-generate/table/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.ts +2 -2
  345. package/schematics/ng-generate/tree/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.ts +2 -2
  346. package/select/typings/index.metadata.json +1 -1
  347. package/select/typings/select.d.ts +12 -2
  348. package/sidenav/typings/drawer.d.ts +9 -2
  349. package/sidenav/typings/index.metadata.json +1 -1
  350. package/slide-toggle/typings/index.metadata.json +1 -1
  351. package/slider/typings/index.metadata.json +1 -1
  352. package/snack-bar/typings/index.metadata.json +1 -1
  353. package/sort/typings/index.metadata.json +1 -1
  354. package/stepper/typings/index.metadata.json +1 -1
  355. package/stepper/typings/step-header.d.ts +3 -5
  356. package/tabs/typings/index.d.ts +5 -5
  357. package/tabs/typings/index.metadata.json +1 -1
  358. package/tabs/typings/tab-body.d.ts +2 -0
  359. package/tabs/typings/tab-group.d.ts +11 -2
  360. package/tabs/typings/tab-header.d.ts +9 -3
  361. package/toolbar/typings/index.metadata.json +1 -1
  362. package/tooltip/typings/index.metadata.json +1 -1
  363. package/tree/typings/data-source/flat-data-source.d.ts +2 -2
  364. package/tree/typings/index.metadata.json +1 -1
  365. package/typings/autocomplete/index.d.ts +1 -1
  366. package/typings/autocomplete/index.metadata.json +1 -1
  367. package/typings/badge/index.metadata.json +1 -1
  368. package/typings/bottom-sheet/bottom-sheet-config.d.ts +5 -0
  369. package/typings/bottom-sheet/bottom-sheet-container.d.ts +1 -1
  370. package/typings/bottom-sheet/index.metadata.json +1 -1
  371. package/typings/button/button.d.ts +0 -5
  372. package/typings/button/index.metadata.json +1 -1
  373. package/typings/button-toggle/index.metadata.json +1 -1
  374. package/typings/card/index.metadata.json +1 -1
  375. package/typings/checkbox/index.metadata.json +1 -1
  376. package/typings/chips/chip-list.d.ts +1 -1
  377. package/typings/chips/chip.d.ts +2 -2
  378. package/typings/chips/index.metadata.json +1 -1
  379. package/typings/core/index.metadata.json +1 -1
  380. package/typings/core/{testing/month-constants.d.ts → month-constants.d.ts} +2 -0
  381. package/typings/core/public-api.d.ts +1 -1
  382. package/typings/datepicker/calendar-body.d.ts +21 -5
  383. package/typings/datepicker/calendar.d.ts +4 -1
  384. package/typings/datepicker/datepicker.d.ts +3 -0
  385. package/typings/datepicker/index.metadata.json +1 -1
  386. package/typings/datepicker/month-view.d.ts +4 -2
  387. package/typings/dialog/index.metadata.json +1 -1
  388. package/typings/esm5/autocomplete/index.d.ts +1 -1
  389. package/typings/esm5/autocomplete/index.metadata.json +1 -1
  390. package/typings/esm5/badge/index.metadata.json +1 -1
  391. package/typings/esm5/bottom-sheet/bottom-sheet-config.d.ts +5 -0
  392. package/typings/esm5/bottom-sheet/bottom-sheet-container.d.ts +1 -1
  393. package/typings/esm5/bottom-sheet/index.metadata.json +1 -1
  394. package/typings/esm5/button/button.d.ts +0 -5
  395. package/typings/esm5/button/index.metadata.json +1 -1
  396. package/typings/esm5/button-toggle/index.metadata.json +1 -1
  397. package/typings/esm5/card/index.metadata.json +1 -1
  398. package/typings/esm5/checkbox/index.metadata.json +1 -1
  399. package/typings/esm5/chips/chip-list.d.ts +1 -1
  400. package/typings/esm5/chips/chip.d.ts +2 -2
  401. package/typings/esm5/chips/index.metadata.json +1 -1
  402. package/typings/esm5/core/index.metadata.json +1 -1
  403. package/typings/esm5/core/{testing/month-constants.d.ts → month-constants.d.ts} +2 -0
  404. package/typings/esm5/core/public-api.d.ts +1 -1
  405. package/typings/esm5/datepicker/calendar-body.d.ts +21 -5
  406. package/typings/esm5/datepicker/calendar.d.ts +4 -1
  407. package/typings/esm5/datepicker/datepicker.d.ts +3 -0
  408. package/typings/esm5/datepicker/index.metadata.json +1 -1
  409. package/typings/esm5/datepicker/month-view.d.ts +4 -2
  410. package/typings/esm5/dialog/index.metadata.json +1 -1
  411. package/typings/esm5/expansion/expansion-panel-header.d.ts +2 -2
  412. package/typings/esm5/expansion/expansion-panel.d.ts +19 -2
  413. package/typings/esm5/expansion/index.metadata.json +1 -1
  414. package/typings/esm5/form-field/form-field.d.ts +15 -4
  415. package/typings/esm5/form-field/index.metadata.json +1 -1
  416. package/typings/esm5/grid-list/index.d.ts +1 -1
  417. package/typings/esm5/grid-list/index.metadata.json +1 -1
  418. package/typings/esm5/icon/index.metadata.json +1 -1
  419. package/typings/esm5/index.metadata.json +1 -1
  420. package/typings/esm5/list/index.metadata.json +1 -1
  421. package/typings/esm5/menu/index.d.ts +4 -4
  422. package/typings/esm5/menu/index.metadata.json +1 -1
  423. package/typings/esm5/menu/menu-directive.d.ts +1 -0
  424. package/typings/esm5/menu/menu-item.d.ts +2 -0
  425. package/typings/esm5/paginator/index.metadata.json +1 -1
  426. package/typings/esm5/paginator/paginator.d.ts +7 -3
  427. package/typings/esm5/progress-bar/index.metadata.json +1 -1
  428. package/typings/esm5/radio/index.metadata.json +1 -1
  429. package/typings/esm5/radio/radio.d.ts +2 -6
  430. package/typings/esm5/select/index.metadata.json +1 -1
  431. package/typings/esm5/select/select.d.ts +12 -2
  432. package/typings/esm5/sidenav/drawer.d.ts +9 -2
  433. package/typings/esm5/sidenav/index.metadata.json +1 -1
  434. package/typings/esm5/slide-toggle/index.metadata.json +1 -1
  435. package/typings/esm5/slider/index.metadata.json +1 -1
  436. package/typings/esm5/snack-bar/index.metadata.json +1 -1
  437. package/typings/esm5/sort/index.metadata.json +1 -1
  438. package/typings/esm5/stepper/index.metadata.json +1 -1
  439. package/typings/esm5/stepper/step-header.d.ts +3 -5
  440. package/typings/esm5/tabs/index.d.ts +5 -5
  441. package/typings/esm5/tabs/index.metadata.json +1 -1
  442. package/typings/esm5/tabs/tab-body.d.ts +2 -0
  443. package/typings/esm5/tabs/tab-group.d.ts +11 -2
  444. package/typings/esm5/tabs/tab-header.d.ts +9 -3
  445. package/typings/esm5/toolbar/index.metadata.json +1 -1
  446. package/typings/esm5/tooltip/index.metadata.json +1 -1
  447. package/typings/esm5/tree/data-source/flat-data-source.d.ts +2 -2
  448. package/typings/esm5/tree/index.metadata.json +1 -1
  449. package/typings/expansion/expansion-panel-header.d.ts +2 -2
  450. package/typings/expansion/expansion-panel.d.ts +19 -2
  451. package/typings/expansion/index.metadata.json +1 -1
  452. package/typings/form-field/form-field.d.ts +15 -4
  453. package/typings/form-field/index.metadata.json +1 -1
  454. package/typings/grid-list/index.d.ts +1 -1
  455. package/typings/grid-list/index.metadata.json +1 -1
  456. package/typings/icon/index.metadata.json +1 -1
  457. package/typings/index.metadata.json +1 -1
  458. package/typings/list/index.metadata.json +1 -1
  459. package/typings/menu/index.d.ts +4 -4
  460. package/typings/menu/index.metadata.json +1 -1
  461. package/typings/menu/menu-directive.d.ts +1 -0
  462. package/typings/menu/menu-item.d.ts +2 -0
  463. package/typings/paginator/index.metadata.json +1 -1
  464. package/typings/paginator/paginator.d.ts +7 -3
  465. package/typings/progress-bar/index.metadata.json +1 -1
  466. package/typings/radio/index.metadata.json +1 -1
  467. package/typings/radio/radio.d.ts +2 -6
  468. package/typings/schematics/ng-add/theming/{custom-theme.d.ts → create-custom-theme.d.ts} +0 -0
  469. package/typings/select/index.metadata.json +1 -1
  470. package/typings/select/select.d.ts +12 -2
  471. package/typings/sidenav/drawer.d.ts +9 -2
  472. package/typings/sidenav/index.metadata.json +1 -1
  473. package/typings/slide-toggle/index.metadata.json +1 -1
  474. package/typings/slider/index.metadata.json +1 -1
  475. package/typings/snack-bar/index.metadata.json +1 -1
  476. package/typings/sort/index.metadata.json +1 -1
  477. package/typings/stepper/index.metadata.json +1 -1
  478. package/typings/stepper/step-header.d.ts +3 -5
  479. package/typings/tabs/index.d.ts +5 -5
  480. package/typings/tabs/index.metadata.json +1 -1
  481. package/typings/tabs/tab-body.d.ts +2 -0
  482. package/typings/tabs/tab-group.d.ts +11 -2
  483. package/typings/tabs/tab-header.d.ts +9 -3
  484. package/typings/toolbar/index.metadata.json +1 -1
  485. package/typings/tooltip/index.metadata.json +1 -1
  486. package/typings/tree/data-source/flat-data-source.d.ts +2 -2
  487. package/typings/tree/index.metadata.json +1 -1
  488. package/schematics/ng-add/theming/custom-theme.js.map +0 -1
@@ -11,7 +11,7 @@ import { Directionality } from '@angular/cdk/bidi';
11
11
  import { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';
12
12
  import { ESCAPE } from '@angular/cdk/keycodes';
13
13
  import { Platform, PlatformModule } from '@angular/cdk/platform';
14
- import { CdkScrollable, ScrollDispatcher, ScrollingModule } from '@angular/cdk/scrolling';
14
+ import { CdkScrollable, ScrollDispatcher, ViewportRuler, ScrollingModule } from '@angular/cdk/scrolling';
15
15
  import { DOCUMENT, CommonModule } from '@angular/common';
16
16
  import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ContentChildren, ElementRef, EventEmitter, forwardRef, Inject, InjectionToken, Input, NgZone, Optional, Output, ViewChild, ViewEncapsulation, NgModule } from '@angular/core';
17
17
  import { fromEvent, merge, Subject } from 'rxjs';
@@ -21,14 +21,17 @@ import { MatCommonModule } from '@angular/material/core';
21
21
 
22
22
  /**
23
23
  * @fileoverview added by tsickle
24
- * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
24
+ * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
25
25
  */
26
- /** *
26
+ /**
27
27
  * Animations used by the Material drawers.
28
28
  * \@docs-private
29
- @type {?} */
29
+ * @type {?}
30
+ */
30
31
  const matDrawerAnimations = {
31
- /** Animation that slides a drawer in and out. */
32
+ /**
33
+ * Animation that slides a drawer in and out.
34
+ */
32
35
  transformDrawer: trigger('transform', [
33
36
  // We remove the `transform` here completely, rather than setting it to zero, because:
34
37
  // 1. Having a transform can cause elements with ripples or an animated
@@ -50,7 +53,7 @@ const matDrawerAnimations = {
50
53
 
51
54
  /**
52
55
  * @fileoverview added by tsickle
53
- * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
56
+ * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
54
57
  */
55
58
  /**
56
59
  * Throws an exception when two MatDrawer are matching the same position.
@@ -61,9 +64,10 @@ const matDrawerAnimations = {
61
64
  function throwMatDuplicatedDrawerError(position) {
62
65
  throw Error(`A drawer was already declared for 'position="${position}"'`);
63
66
  }
64
- /** *
67
+ /**
65
68
  * Configures whether drawers should use auto sizing by default.
66
- @type {?} */
69
+ * @type {?}
70
+ */
67
71
  const MAT_DRAWER_DEFAULT_AUTOSIZE = new InjectionToken('MAT_DRAWER_DEFAULT_AUTOSIZE', {
68
72
  providedIn: 'root',
69
73
  factory: MAT_DRAWER_DEFAULT_AUTOSIZE_FACTORY,
@@ -162,10 +166,15 @@ class MatDrawer {
162
166
  */
163
167
  this.openedChange =
164
168
  // Note this has to be async in order to avoid some issues with two-bindings (see #8872).
165
- new EventEmitter(/* isAsync */ /* isAsync */ true);
169
+ new EventEmitter(/* isAsync */ true);
170
+ /**
171
+ * Emits when the component is destroyed.
172
+ */
173
+ this._destroyed = new Subject();
166
174
  /**
167
175
  * Event emitted when the drawer's position changes.
168
176
  */
177
+ // tslint:disable-next-line:no-output-on-prefix
169
178
  this.onPositionChanged = new EventEmitter();
170
179
  /**
171
180
  * An observable that emits when the drawer mode changes. This is used by the drawer container to
@@ -176,7 +185,7 @@ class MatDrawer {
176
185
  this.openedChange.subscribe((opened) => {
177
186
  if (opened) {
178
187
  if (this._doc) {
179
- this._elementFocusedBeforeDrawerWasOpened = /** @type {?} */ (this._doc.activeElement);
188
+ this._elementFocusedBeforeDrawerWasOpened = (/** @type {?} */ (this._doc.activeElement));
180
189
  }
181
190
  if (this._isFocusTrapEnabled && this._focusTrap) {
182
191
  this._trapFocus();
@@ -187,12 +196,12 @@ class MatDrawer {
187
196
  }
188
197
  });
189
198
  /**
190
- * Listen to `keydown` events outside the zone so that change detection is not run every
191
- * time a key is pressed. Instead we re-enter the zone only if the `ESC` key is pressed
192
- * and we don't have close disabled.
193
- */
199
+ * Listen to `keydown` events outside the zone so that change detection is not run every
200
+ * time a key is pressed. Instead we re-enter the zone only if the `ESC` key is pressed
201
+ * and we don't have close disabled.
202
+ */
194
203
  this._ngZone.runOutsideAngular(() => {
195
- fromEvent(this._elementRef.nativeElement, 'keydown').pipe(filter(event => event.keyCode === ESCAPE && !this.disableClose)).subscribe(event => this._ngZone.run(() => {
204
+ fromEvent(this._elementRef.nativeElement, 'keydown').pipe(filter(event => event.keyCode === ESCAPE && !this.disableClose), takeUntil(this._destroyed)).subscribe(event => this._ngZone.run(() => {
196
205
  this.close();
197
206
  event.stopPropagation();
198
207
  }));
@@ -296,6 +305,7 @@ class MatDrawer {
296
305
  }
297
306
  /**
298
307
  * Traps focus inside the drawer.
308
+ * @private
299
309
  * @return {?}
300
310
  */
301
311
  _trapFocus() {
@@ -313,6 +323,7 @@ class MatDrawer {
313
323
  /**
314
324
  * If focus is currently inside the drawer, restores it to where it was before the drawer
315
325
  * opened.
326
+ * @private
316
327
  * @return {?}
317
328
  */
318
329
  _restoreFocus() {
@@ -360,6 +371,8 @@ class MatDrawer {
360
371
  }
361
372
  this._animationStarted.complete();
362
373
  this._animationEnd.complete();
374
+ this._destroyed.next();
375
+ this._destroyed.complete();
363
376
  }
364
377
  /**
365
378
  * Whether the drawer is opened. We overload this because we trigger an event when it
@@ -477,8 +490,14 @@ class MatDrawerContainer {
477
490
  * @param {?} _changeDetectorRef
478
491
  * @param {?=} defaultAutosize
479
492
  * @param {?=} _animationMode
493
+ * @param {?=} viewportRuler
494
+ */
495
+ constructor(_dir, _element, _ngZone, _changeDetectorRef, defaultAutosize = false, _animationMode,
496
+ /**
497
+ * @deprecated viewportRuler to become a required parameter.
498
+ * @breaking-change 8.0.0
480
499
  */
481
- constructor(_dir, _element, _ngZone, _changeDetectorRef, defaultAutosize = false, _animationMode) {
500
+ viewportRuler) {
482
501
  this._dir = _dir;
483
502
  this._element = _element;
484
503
  this._ngZone = _ngZone;
@@ -511,6 +530,13 @@ class MatDrawerContainer {
511
530
  this._updateContentMargins();
512
531
  });
513
532
  }
533
+ // Since the minimum width of the sidenav depends on the viewport width,
534
+ // we need to recompute the margins if the viewport changes.
535
+ if (viewportRuler) {
536
+ viewportRuler.change()
537
+ .pipe(takeUntil(this._destroyed))
538
+ .subscribe(() => this._updateContentMargins());
539
+ }
514
540
  this._autosize = defaultAutosize;
515
541
  }
516
542
  /**
@@ -583,7 +609,6 @@ class MatDrawerContainer {
583
609
  this._changeDetectorRef.markForCheck();
584
610
  });
585
611
  this._doCheckSubject.pipe(debounceTime(10), // Arbitrary debounce time, less than a frame at 60fps
586
- // Arbitrary debounce time, less than a frame at 60fps
587
612
  takeUntil(this._destroyed)).subscribe(() => this._updateContentMargins());
588
613
  }
589
614
  /**
@@ -622,11 +647,12 @@ class MatDrawerContainer {
622
647
  * Subscribes to drawer events in order to set a class on the main container element when the
623
648
  * drawer is open and the backdrop is visible. This ensures any overflow on the container element
624
649
  * is properly hidden.
650
+ * @private
625
651
  * @param {?} drawer
626
652
  * @return {?}
627
653
  */
628
654
  _watchDrawerToggle(drawer) {
629
- drawer._animationStarted.pipe(takeUntil(this._drawers.changes), filter((event) => event.fromState !== event.toState))
655
+ drawer._animationStarted.pipe(filter((event) => event.fromState !== event.toState), takeUntil(this._drawers.changes))
630
656
  .subscribe((event) => {
631
657
  // Set the transition class on the container so that the animations occur. This should not
632
658
  // be set initially because animations should only be triggered via a change in state.
@@ -643,6 +669,7 @@ class MatDrawerContainer {
643
669
  /**
644
670
  * Subscribes to drawer onPositionChanged event in order to
645
671
  * re-validate drawers when the position changes.
672
+ * @private
646
673
  * @param {?} drawer
647
674
  * @return {?}
648
675
  */
@@ -660,6 +687,7 @@ class MatDrawerContainer {
660
687
  }
661
688
  /**
662
689
  * Subscribes to changes in drawer mode so we can run change detection.
690
+ * @private
663
691
  * @param {?} drawer
664
692
  * @return {?}
665
693
  */
@@ -674,6 +702,7 @@ class MatDrawerContainer {
674
702
  }
675
703
  /**
676
704
  * Toggles the 'mat-drawer-opened' class on the main 'mat-drawer-container' element.
705
+ * @private
677
706
  * @param {?} isAdd
678
707
  * @return {?}
679
708
  */
@@ -687,6 +716,7 @@ class MatDrawerContainer {
687
716
  }
688
717
  /**
689
718
  * Validate the state of the drawer children components.
719
+ * @private
690
720
  * @return {?}
691
721
  */
692
722
  _validateDrawers() {
@@ -719,6 +749,7 @@ class MatDrawerContainer {
719
749
  }
720
750
  /**
721
751
  * Whether the container is being pushed to the side by one of the drawers.
752
+ * @private
722
753
  * @return {?}
723
754
  */
724
755
  _isPushed() {
@@ -739,7 +770,7 @@ class MatDrawerContainer {
739
770
  // Close all open drawers where closing is not disabled and the mode is not `side`.
740
771
  [this._start, this._end]
741
772
  .filter(drawer => drawer && !drawer.disableClose && this._canHaveBackdrop(drawer))
742
- .forEach(drawer => /** @type {?} */ ((drawer)).close());
773
+ .forEach(drawer => (/** @type {?} */ (drawer)).close());
743
774
  }
744
775
  /**
745
776
  * @return {?}
@@ -749,6 +780,7 @@ class MatDrawerContainer {
749
780
  (this._isDrawerOpen(this._end) && this._canHaveBackdrop(this._end));
750
781
  }
751
782
  /**
783
+ * @private
752
784
  * @param {?} drawer
753
785
  * @return {?}
754
786
  */
@@ -756,6 +788,7 @@ class MatDrawerContainer {
756
788
  return drawer.mode !== 'side' || !!this._backdropOverride;
757
789
  }
758
790
  /**
791
+ * @private
759
792
  * @param {?} drawer
760
793
  * @return {?}
761
794
  */
@@ -765,9 +798,22 @@ class MatDrawerContainer {
765
798
  /**
766
799
  * Recalculates and updates the inline styles for the content. Note that this should be used
767
800
  * sparingly, because it causes a reflow.
801
+ * @private
768
802
  * @return {?}
769
803
  */
770
804
  _updateContentMargins() {
805
+ // 1. For drawers in `over` mode, they don't affect the content.
806
+ // 2. For drawers in `side` mode they should shrink the content. We do this by adding to the
807
+ // left margin (for left drawer) or right margin (for right the drawer).
808
+ // 3. For drawers in `push` mode the should shift the content without resizing it. We do this by
809
+ // adding to the left or right margin and simultaneously subtracting the same amount of
810
+ // margin from the other side.
811
+ // 1. For drawers in `over` mode, they don't affect the content.
812
+ // 2. For drawers in `side` mode they should shrink the content. We do this by adding to the
813
+ // left margin (for left drawer) or right margin (for right the drawer).
814
+ // 3. For drawers in `push` mode the should shift the content without resizing it. We do this by
815
+ // adding to the left or right margin and simultaneously subtracting the same amount of
816
+ // margin from the other side.
771
817
  /** @type {?} */
772
818
  let left = 0;
773
819
  /** @type {?} */
@@ -798,8 +844,8 @@ class MatDrawerContainer {
798
844
  // allows users to specify a custom size via CSS class in SSR scenarios where the
799
845
  // measured widths will always be zero. Note that we reset to `null` here, rather
800
846
  // than below, in order to ensure that the types in the `if` below are consistent.
801
- left = left || /** @type {?} */ ((null));
802
- right = right || /** @type {?} */ ((null));
847
+ left = left || (/** @type {?} */ (null));
848
+ right = right || (/** @type {?} */ (null));
803
849
  if (left !== this._contentMargins.left || right !== this._contentMargins.right) {
804
850
  this._contentMargins = { left, right };
805
851
  // Pull back into the NgZone since in some cases we could be outside. We need to be careful
@@ -812,7 +858,7 @@ MatDrawerContainer.decorators = [
812
858
  { type: Component, args: [{selector: 'mat-drawer-container',
813
859
  exportAs: 'matDrawerContainer',
814
860
  template: "<div class=\"mat-drawer-backdrop\" (click)=\"_onBackdropClicked()\" *ngIf=\"hasBackdrop\" [class.mat-drawer-shown]=\"_isShowingBackdrop()\"></div><ng-content select=\"mat-drawer\"></ng-content><ng-content select=\"mat-drawer-content\"></ng-content><mat-drawer-content *ngIf=\"!_content\"><ng-content></ng-content></mat-drawer-content>",
815
- styles: [".mat-drawer-container{position:relative;z-index:1;box-sizing:border-box;-webkit-overflow-scrolling:touch;display:block;overflow:hidden}.mat-drawer-container[fullscreen]{top:0;left:0;right:0;bottom:0;position:absolute}.mat-drawer-container[fullscreen].mat-drawer-opened{overflow:hidden}.mat-drawer-container.mat-drawer-container-explicit-backdrop .mat-drawer-side{z-index:3}.mat-drawer-container.ng-animate-disabled .mat-drawer-backdrop,.mat-drawer-container.ng-animate-disabled .mat-drawer-content,.ng-animate-disabled .mat-drawer-container .mat-drawer-backdrop,.ng-animate-disabled .mat-drawer-container .mat-drawer-content{transition:none}.mat-drawer-backdrop{top:0;left:0;right:0;bottom:0;position:absolute;display:block;z-index:3;visibility:hidden}.mat-drawer-backdrop.mat-drawer-shown{visibility:visible}.mat-drawer-transition .mat-drawer-backdrop{transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.8,.25,1);transition-property:background-color,visibility}@media screen and (-ms-high-contrast:active){.mat-drawer-backdrop{opacity:.5}}.mat-drawer-content{position:relative;z-index:1;display:block;height:100%;overflow:auto}.mat-drawer-transition .mat-drawer-content{transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.8,.25,1);transition-property:transform,margin-left,margin-right}.mat-drawer{position:relative;z-index:4;display:block;position:absolute;top:0;bottom:0;z-index:3;outline:0;box-sizing:border-box;overflow-y:auto;transform:translate3d(-100%,0,0)}@media screen and (-ms-high-contrast:active){.mat-drawer,[dir=rtl] .mat-drawer.mat-drawer-end{border-right:solid 1px currentColor}}@media screen and (-ms-high-contrast:active){.mat-drawer.mat-drawer-end,[dir=rtl] .mat-drawer{border-left:solid 1px currentColor;border-right:none}}.mat-drawer.mat-drawer-side{z-index:2}.mat-drawer.mat-drawer-end{right:0;transform:translate3d(100%,0,0)}[dir=rtl] .mat-drawer{transform:translate3d(100%,0,0)}[dir=rtl] .mat-drawer.mat-drawer-end{left:0;right:auto;transform:translate3d(-100%,0,0)}.mat-drawer-inner-container{width:100%;height:100%;overflow:auto;-webkit-overflow-scrolling:touch}.mat-sidenav-fixed{position:fixed}"],
861
+ styles: [".mat-drawer-container{position:relative;z-index:1;box-sizing:border-box;-webkit-overflow-scrolling:touch;display:block;overflow:hidden}.mat-drawer-container[fullscreen]{top:0;left:0;right:0;bottom:0;position:absolute}.mat-drawer-container[fullscreen].mat-drawer-opened{overflow:hidden}.mat-drawer-container.mat-drawer-container-explicit-backdrop .mat-drawer-side{z-index:3}.mat-drawer-container.ng-animate-disabled .mat-drawer-backdrop,.mat-drawer-container.ng-animate-disabled .mat-drawer-content,.ng-animate-disabled .mat-drawer-container .mat-drawer-backdrop,.ng-animate-disabled .mat-drawer-container .mat-drawer-content{transition:none}.mat-drawer-backdrop{top:0;left:0;right:0;bottom:0;position:absolute;display:block;z-index:3;visibility:hidden}.mat-drawer-backdrop.mat-drawer-shown{visibility:visible}.mat-drawer-transition .mat-drawer-backdrop{transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.8,.25,1);transition-property:background-color,visibility}@media (-ms-high-contrast:active){.mat-drawer-backdrop{opacity:.5}}.mat-drawer-content{position:relative;z-index:1;display:block;height:100%;overflow:auto}.mat-drawer-transition .mat-drawer-content{transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.8,.25,1);transition-property:transform,margin-left,margin-right}.mat-drawer{position:relative;z-index:4;display:block;position:absolute;top:0;bottom:0;z-index:3;outline:0;box-sizing:border-box;overflow-y:auto;transform:translate3d(-100%,0,0)}@media (-ms-high-contrast:active){.mat-drawer,[dir=rtl] .mat-drawer.mat-drawer-end{border-right:solid 1px currentColor}}@media (-ms-high-contrast:active){.mat-drawer.mat-drawer-end,[dir=rtl] .mat-drawer{border-left:solid 1px currentColor;border-right:none}}.mat-drawer.mat-drawer-side{z-index:2}.mat-drawer.mat-drawer-end{right:0;transform:translate3d(100%,0,0)}[dir=rtl] .mat-drawer{transform:translate3d(100%,0,0)}[dir=rtl] .mat-drawer.mat-drawer-end{left:0;right:auto;transform:translate3d(-100%,0,0)}.mat-drawer-inner-container{width:100%;height:100%;overflow:auto;-webkit-overflow-scrolling:touch}.mat-sidenav-fixed{position:fixed}"],
816
862
  host: {
817
863
  'class': 'mat-drawer-container',
818
864
  '[class.mat-drawer-container-explicit-backdrop]': '_backdropOverride',
@@ -828,7 +874,8 @@ MatDrawerContainer.ctorParameters = () => [
828
874
  { type: NgZone },
829
875
  { type: ChangeDetectorRef },
830
876
  { type: undefined, decorators: [{ type: Inject, args: [MAT_DRAWER_DEFAULT_AUTOSIZE,] }] },
831
- { type: String, decorators: [{ type: Optional }, { type: Inject, args: [ANIMATION_MODULE_TYPE,] }] }
877
+ { type: String, decorators: [{ type: Optional }, { type: Inject, args: [ANIMATION_MODULE_TYPE,] }] },
878
+ { type: ViewportRuler, decorators: [{ type: Optional }] }
832
879
  ];
833
880
  MatDrawerContainer.propDecorators = {
834
881
  _drawers: [{ type: ContentChildren, args: [MatDrawer,] }],
@@ -841,7 +888,7 @@ MatDrawerContainer.propDecorators = {
841
888
 
842
889
  /**
843
890
  * @fileoverview added by tsickle
844
- * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
891
+ * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
845
892
  */
846
893
  class MatSidenavContent extends MatDrawerContent {
847
894
  /**
@@ -951,7 +998,7 @@ MatSidenavContainer.decorators = [
951
998
  { type: Component, args: [{selector: 'mat-sidenav-container',
952
999
  exportAs: 'matSidenavContainer',
953
1000
  template: "<div class=\"mat-drawer-backdrop\" (click)=\"_onBackdropClicked()\" *ngIf=\"hasBackdrop\" [class.mat-drawer-shown]=\"_isShowingBackdrop()\"></div><ng-content select=\"mat-sidenav\"></ng-content><ng-content select=\"mat-sidenav-content\"></ng-content><mat-sidenav-content *ngIf=\"!_content\" cdkScrollable><ng-content></ng-content></mat-sidenav-content>",
954
- styles: [".mat-drawer-container{position:relative;z-index:1;box-sizing:border-box;-webkit-overflow-scrolling:touch;display:block;overflow:hidden}.mat-drawer-container[fullscreen]{top:0;left:0;right:0;bottom:0;position:absolute}.mat-drawer-container[fullscreen].mat-drawer-opened{overflow:hidden}.mat-drawer-container.mat-drawer-container-explicit-backdrop .mat-drawer-side{z-index:3}.mat-drawer-container.ng-animate-disabled .mat-drawer-backdrop,.mat-drawer-container.ng-animate-disabled .mat-drawer-content,.ng-animate-disabled .mat-drawer-container .mat-drawer-backdrop,.ng-animate-disabled .mat-drawer-container .mat-drawer-content{transition:none}.mat-drawer-backdrop{top:0;left:0;right:0;bottom:0;position:absolute;display:block;z-index:3;visibility:hidden}.mat-drawer-backdrop.mat-drawer-shown{visibility:visible}.mat-drawer-transition .mat-drawer-backdrop{transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.8,.25,1);transition-property:background-color,visibility}@media screen and (-ms-high-contrast:active){.mat-drawer-backdrop{opacity:.5}}.mat-drawer-content{position:relative;z-index:1;display:block;height:100%;overflow:auto}.mat-drawer-transition .mat-drawer-content{transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.8,.25,1);transition-property:transform,margin-left,margin-right}.mat-drawer{position:relative;z-index:4;display:block;position:absolute;top:0;bottom:0;z-index:3;outline:0;box-sizing:border-box;overflow-y:auto;transform:translate3d(-100%,0,0)}@media screen and (-ms-high-contrast:active){.mat-drawer,[dir=rtl] .mat-drawer.mat-drawer-end{border-right:solid 1px currentColor}}@media screen and (-ms-high-contrast:active){.mat-drawer.mat-drawer-end,[dir=rtl] .mat-drawer{border-left:solid 1px currentColor;border-right:none}}.mat-drawer.mat-drawer-side{z-index:2}.mat-drawer.mat-drawer-end{right:0;transform:translate3d(100%,0,0)}[dir=rtl] .mat-drawer{transform:translate3d(100%,0,0)}[dir=rtl] .mat-drawer.mat-drawer-end{left:0;right:auto;transform:translate3d(-100%,0,0)}.mat-drawer-inner-container{width:100%;height:100%;overflow:auto;-webkit-overflow-scrolling:touch}.mat-sidenav-fixed{position:fixed}"],
1001
+ styles: [".mat-drawer-container{position:relative;z-index:1;box-sizing:border-box;-webkit-overflow-scrolling:touch;display:block;overflow:hidden}.mat-drawer-container[fullscreen]{top:0;left:0;right:0;bottom:0;position:absolute}.mat-drawer-container[fullscreen].mat-drawer-opened{overflow:hidden}.mat-drawer-container.mat-drawer-container-explicit-backdrop .mat-drawer-side{z-index:3}.mat-drawer-container.ng-animate-disabled .mat-drawer-backdrop,.mat-drawer-container.ng-animate-disabled .mat-drawer-content,.ng-animate-disabled .mat-drawer-container .mat-drawer-backdrop,.ng-animate-disabled .mat-drawer-container .mat-drawer-content{transition:none}.mat-drawer-backdrop{top:0;left:0;right:0;bottom:0;position:absolute;display:block;z-index:3;visibility:hidden}.mat-drawer-backdrop.mat-drawer-shown{visibility:visible}.mat-drawer-transition .mat-drawer-backdrop{transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.8,.25,1);transition-property:background-color,visibility}@media (-ms-high-contrast:active){.mat-drawer-backdrop{opacity:.5}}.mat-drawer-content{position:relative;z-index:1;display:block;height:100%;overflow:auto}.mat-drawer-transition .mat-drawer-content{transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.8,.25,1);transition-property:transform,margin-left,margin-right}.mat-drawer{position:relative;z-index:4;display:block;position:absolute;top:0;bottom:0;z-index:3;outline:0;box-sizing:border-box;overflow-y:auto;transform:translate3d(-100%,0,0)}@media (-ms-high-contrast:active){.mat-drawer,[dir=rtl] .mat-drawer.mat-drawer-end{border-right:solid 1px currentColor}}@media (-ms-high-contrast:active){.mat-drawer.mat-drawer-end,[dir=rtl] .mat-drawer{border-left:solid 1px currentColor;border-right:none}}.mat-drawer.mat-drawer-side{z-index:2}.mat-drawer.mat-drawer-end{right:0;transform:translate3d(100%,0,0)}[dir=rtl] .mat-drawer{transform:translate3d(100%,0,0)}[dir=rtl] .mat-drawer.mat-drawer-end{left:0;right:auto;transform:translate3d(-100%,0,0)}.mat-drawer-inner-container{width:100%;height:100%;overflow:auto;-webkit-overflow-scrolling:touch}.mat-sidenav-fixed{position:fixed}"],
955
1002
  host: {
956
1003
  'class': 'mat-drawer-container mat-sidenav-container',
957
1004
  '[class.mat-drawer-container-explicit-backdrop]': '_backdropOverride',
@@ -967,7 +1014,7 @@ MatSidenavContainer.propDecorators = {
967
1014
 
968
1015
  /**
969
1016
  * @fileoverview added by tsickle
970
- * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
1017
+ * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
971
1018
  */
972
1019
  class MatSidenavModule {
973
1020
  }
@@ -1001,12 +1048,12 @@ MatSidenavModule.decorators = [
1001
1048
 
1002
1049
  /**
1003
1050
  * @fileoverview added by tsickle
1004
- * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
1051
+ * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
1005
1052
  */
1006
1053
 
1007
1054
  /**
1008
1055
  * @fileoverview added by tsickle
1009
- * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
1056
+ * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
1010
1057
  */
1011
1058
 
1012
1059
  export { MatSidenavModule, throwMatDuplicatedDrawerError, MAT_DRAWER_DEFAULT_AUTOSIZE_FACTORY, MAT_DRAWER_DEFAULT_AUTOSIZE, MatDrawerContent, MatDrawer, MatDrawerContainer, MatSidenavContent, MatSidenav, MatSidenavContainer, matDrawerAnimations };
@@ -1 +1 @@
1
- {"version":3,"file":"sidenav.js","sources":["../../../src/lib/sidenav/sidenav-module.ts","../../../src/lib/sidenav/sidenav.ts","../../../src/lib/sidenav/drawer.ts","../../../src/lib/sidenav/drawer-animations.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 */\nimport {PlatformModule} from '@angular/cdk/platform';\nimport {ScrollingModule} from '@angular/cdk/scrolling';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {MatCommonModule} from '@angular/material/core';\nimport {MatDrawer, MatDrawerContainer, MatDrawerContent} from './drawer';\nimport {MatSidenav, MatSidenavContainer, MatSidenavContent} from './sidenav';\n\n\n@NgModule({\n imports: [\n CommonModule,\n MatCommonModule,\n ScrollingModule,\n PlatformModule,\n ],\n exports: [\n MatCommonModule,\n MatDrawer,\n MatDrawerContainer,\n MatDrawerContent,\n MatSidenav,\n MatSidenavContainer,\n MatSidenavContent,\n ],\n declarations: [\n MatDrawer,\n MatDrawerContainer,\n MatDrawerContent,\n MatSidenav,\n MatSidenavContainer,\n MatSidenavContent,\n ],\n})\nexport class MatSidenavModule {}\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 ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n forwardRef,\n Inject,\n Input,\n ViewEncapsulation,\n QueryList,\n ElementRef,\n NgZone,\n} from '@angular/core';\nimport {MatDrawer, MatDrawerContainer, MatDrawerContent} from './drawer';\nimport {matDrawerAnimations} from './drawer-animations';\nimport {coerceBooleanProperty, coerceNumberProperty} from '@angular/cdk/coercion';\nimport {ScrollDispatcher} from '@angular/cdk/scrolling';\n\n\n@Component({\n moduleId: module.id,\n selector: 'mat-sidenav-content',\n template: '<ng-content></ng-content>',\n host: {\n 'class': 'mat-drawer-content mat-sidenav-content',\n '[style.margin-left.px]': '_container._contentMargins.left',\n '[style.margin-right.px]': '_container._contentMargins.right',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatSidenavContent extends MatDrawerContent {\n constructor(\n changeDetectorRef: ChangeDetectorRef,\n @Inject(forwardRef(() => MatSidenavContainer)) container: MatSidenavContainer,\n elementRef: ElementRef<HTMLElement>,\n scrollDispatcher: ScrollDispatcher,\n ngZone: NgZone) {\n super(changeDetectorRef, container, elementRef, scrollDispatcher, ngZone);\n }\n}\n\n\n@Component({\n moduleId: module.id,\n selector: 'mat-sidenav',\n exportAs: 'matSidenav',\n templateUrl: 'drawer.html',\n animations: [matDrawerAnimations.transformDrawer],\n host: {\n 'class': 'mat-drawer mat-sidenav',\n 'tabIndex': '-1',\n '[@transform]': '_animationState',\n '(@transform.start)': '_animationStarted.next($event)',\n '(@transform.done)': '_animationEnd.next($event)',\n // must prevent the browser from aligning text based on value\n '[attr.align]': 'null',\n '[class.mat-drawer-end]': 'position === \"end\"',\n '[class.mat-drawer-over]': 'mode === \"over\"',\n '[class.mat-drawer-push]': 'mode === \"push\"',\n '[class.mat-drawer-side]': 'mode === \"side\"',\n '[class.mat-sidenav-fixed]': 'fixedInViewport',\n '[style.top.px]': 'fixedInViewport ? fixedTopGap : null',\n '[style.bottom.px]': 'fixedInViewport ? fixedBottomGap : null',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatSidenav extends MatDrawer {\n /** Whether the sidenav is fixed in the viewport. */\n @Input()\n get fixedInViewport(): boolean { return this._fixedInViewport; }\n set fixedInViewport(value) { this._fixedInViewport = coerceBooleanProperty(value); }\n private _fixedInViewport = false;\n\n /**\n * The gap between the top of the sidenav and the top of the viewport when the sidenav is in fixed\n * mode.\n */\n @Input()\n get fixedTopGap(): number { return this._fixedTopGap; }\n set fixedTopGap(value) { this._fixedTopGap = coerceNumberProperty(value); }\n private _fixedTopGap = 0;\n\n /**\n * The gap between the bottom of the sidenav and the bottom of the viewport when the sidenav is in\n * fixed mode.\n */\n @Input()\n get fixedBottomGap(): number { return this._fixedBottomGap; }\n set fixedBottomGap(value) { this._fixedBottomGap = coerceNumberProperty(value); }\n private _fixedBottomGap = 0;\n}\n\n\n@Component({\n moduleId: module.id,\n selector: 'mat-sidenav-container',\n exportAs: 'matSidenavContainer',\n templateUrl: 'sidenav-container.html',\n styleUrls: ['drawer.css'],\n host: {\n 'class': 'mat-drawer-container mat-sidenav-container',\n '[class.mat-drawer-container-explicit-backdrop]': '_backdropOverride',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatSidenavContainer extends MatDrawerContainer {\n @ContentChildren(MatSidenav) _drawers: QueryList<MatSidenav>;\n @ContentChild(MatSidenavContent) _content: MatSidenavContent;\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 {AnimationEvent} from '@angular/animations';\nimport {FocusMonitor, FocusOrigin, FocusTrap, FocusTrapFactory} from '@angular/cdk/a11y';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {ESCAPE} from '@angular/cdk/keycodes';\nimport {Platform} from '@angular/cdk/platform';\nimport {CdkScrollable, ScrollDispatcher} from '@angular/cdk/scrolling';\nimport {DOCUMENT} from '@angular/common';\nimport {\n AfterContentChecked,\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n DoCheck,\n ElementRef,\n EventEmitter,\n forwardRef,\n Inject,\n InjectionToken,\n Input,\n NgZone,\n OnDestroy,\n Optional,\n Output,\n QueryList,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {fromEvent, merge, Observable, Subject} from 'rxjs';\nimport {\n debounceTime,\n filter,\n map,\n startWith,\n take,\n takeUntil,\n distinctUntilChanged,\n} from 'rxjs/operators';\nimport {matDrawerAnimations} from './drawer-animations';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\n\n\n/**\n * Throws an exception when two MatDrawer are matching the same position.\n * @docs-private\n */\nexport function throwMatDuplicatedDrawerError(position: string) {\n throw Error(`A drawer was already declared for 'position=\"${position}\"'`);\n}\n\n\n/** Result of the toggle promise that indicates the state of the drawer. */\nexport type MatDrawerToggleResult = 'open' | 'close';\n\n/** Configures whether drawers should use auto sizing by default. */\nexport const MAT_DRAWER_DEFAULT_AUTOSIZE =\n new InjectionToken<boolean>('MAT_DRAWER_DEFAULT_AUTOSIZE', {\n providedIn: 'root',\n factory: MAT_DRAWER_DEFAULT_AUTOSIZE_FACTORY,\n });\n\n/** @docs-private */\nexport function MAT_DRAWER_DEFAULT_AUTOSIZE_FACTORY(): boolean {\n return false;\n}\n\n@Component({\n moduleId: module.id,\n selector: 'mat-drawer-content',\n template: '<ng-content></ng-content>',\n host: {\n 'class': 'mat-drawer-content',\n '[style.margin-left.px]': '_container._contentMargins.left',\n '[style.margin-right.px]': '_container._contentMargins.right',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatDrawerContent extends CdkScrollable implements AfterContentInit {\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n @Inject(forwardRef(() => MatDrawerContainer)) public _container: MatDrawerContainer,\n elementRef: ElementRef<HTMLElement>,\n scrollDispatcher: ScrollDispatcher,\n ngZone: NgZone) {\n super(elementRef, scrollDispatcher, ngZone);\n }\n\n ngAfterContentInit() {\n this._container._contentMarginChanges.subscribe(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\n}\n\n\n/**\n * This component corresponds to a drawer that can be opened on the drawer container.\n */\n@Component({\n moduleId: module.id,\n selector: 'mat-drawer',\n exportAs: 'matDrawer',\n templateUrl: 'drawer.html',\n animations: [matDrawerAnimations.transformDrawer],\n host: {\n 'class': 'mat-drawer',\n '[@transform]': '_animationState',\n '(@transform.start)': '_animationStarted.next($event)',\n '(@transform.done)': '_animationEnd.next($event)',\n // must prevent the browser from aligning text based on value\n '[attr.align]': 'null',\n '[class.mat-drawer-end]': 'position === \"end\"',\n '[class.mat-drawer-over]': 'mode === \"over\"',\n '[class.mat-drawer-push]': 'mode === \"push\"',\n '[class.mat-drawer-side]': 'mode === \"side\"',\n 'tabIndex': '-1',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatDrawer implements AfterContentInit, AfterContentChecked, OnDestroy {\n private _focusTrap: FocusTrap;\n private _elementFocusedBeforeDrawerWasOpened: HTMLElement | null = null;\n\n /** Whether the drawer is initialized. Used for disabling the initial animation. */\n private _enableAnimations = false;\n\n /** The side that the drawer is attached to. */\n @Input()\n get position(): 'start' | 'end' { return this._position; }\n set position(value: 'start' | 'end') {\n // Make sure we have a valid value.\n value = value === 'end' ? 'end' : 'start';\n if (value != this._position) {\n this._position = value;\n this.onPositionChanged.emit();\n }\n }\n private _position: 'start' | 'end' = 'start';\n\n /** Mode of the drawer; one of 'over', 'push' or 'side'. */\n @Input()\n get mode(): 'over' | 'push' | 'side' { return this._mode; }\n set mode(value: 'over' | 'push' | 'side') {\n this._mode = value;\n this._modeChanged.next();\n }\n private _mode: 'over' | 'push' | 'side' = 'over';\n\n /** Whether the drawer can be closed with the escape key or by clicking on the backdrop. */\n @Input()\n get disableClose(): boolean { return this._disableClose; }\n set disableClose(value: boolean) { this._disableClose = coerceBooleanProperty(value); }\n private _disableClose: boolean = false;\n\n /** Whether the drawer should focus the first focusable element automatically when opened. */\n @Input()\n get autoFocus(): boolean { return this._autoFocus; }\n set autoFocus(value: boolean) { this._autoFocus = coerceBooleanProperty(value); }\n private _autoFocus: boolean = true;\n\n /** How the sidenav was opened (keypress, mouse click etc.) */\n private _openedVia: FocusOrigin | null;\n\n /** Emits whenever the drawer has started animating. */\n _animationStarted = new Subject<AnimationEvent>();\n\n /** Emits whenever the drawer is done animating. */\n _animationEnd = new Subject<AnimationEvent>();\n\n /** Current state of the sidenav animation. */\n _animationState: 'open-instant' | 'open' | 'void' = 'void';\n\n /** Event emitted when the drawer open state is changed. */\n @Output() readonly openedChange: EventEmitter<boolean> =\n // Note this has to be async in order to avoid some issues with two-bindings (see #8872).\n new EventEmitter<boolean>(/* isAsync */true);\n\n /** Event emitted when the drawer has been opened. */\n @Output('opened')\n get _openedStream(): Observable<void> {\n return this.openedChange.pipe(filter(o => o), map(() => {}));\n }\n\n /** Event emitted when the drawer has started opening. */\n @Output()\n get openedStart(): Observable<void> {\n return this._animationStarted.pipe(\n filter(e => e.fromState !== e.toState && e.toState.indexOf('open') === 0),\n map(() => {})\n );\n }\n\n /** Event emitted when the drawer has been closed. */\n @Output('closed')\n get _closedStream(): Observable<void> {\n return this.openedChange.pipe(filter(o => !o), map(() => {}));\n }\n\n /** Event emitted when the drawer has started closing. */\n @Output()\n get closedStart(): Observable<void> {\n return this._animationStarted.pipe(\n filter(e => e.fromState !== e.toState && e.toState === 'void'),\n map(() => {})\n );\n }\n\n /** Event emitted when the drawer's position changes. */\n // tslint:disable-next-line:no-output-on-prefix\n @Output('positionChanged') onPositionChanged: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * An observable that emits when the drawer mode changes. This is used by the drawer container to\n * to know when to when the mode changes so it can adapt the margins on the content.\n */\n readonly _modeChanged = new Subject();\n\n get _isFocusTrapEnabled(): boolean {\n // The focus trap is only enabled when the drawer is open in any mode other than side.\n return this.opened && this.mode !== 'side';\n }\n\n constructor(private _elementRef: ElementRef<HTMLElement>,\n private _focusTrapFactory: FocusTrapFactory,\n private _focusMonitor: FocusMonitor,\n private _platform: Platform,\n private _ngZone: NgZone,\n @Optional() @Inject(DOCUMENT) private _doc: any) {\n\n this.openedChange.subscribe((opened: boolean) => {\n if (opened) {\n if (this._doc) {\n this._elementFocusedBeforeDrawerWasOpened = this._doc.activeElement as HTMLElement;\n }\n\n if (this._isFocusTrapEnabled && this._focusTrap) {\n this._trapFocus();\n }\n } else {\n this._restoreFocus();\n }\n });\n\n /**\n * Listen to `keydown` events outside the zone so that change detection is not run every\n * time a key is pressed. Instead we re-enter the zone only if the `ESC` key is pressed\n * and we don't have close disabled.\n */\n this._ngZone.runOutsideAngular(() => {\n fromEvent<KeyboardEvent>(this._elementRef.nativeElement, 'keydown').pipe(\n filter(event => event.keyCode === ESCAPE && !this.disableClose)\n ).subscribe(event => this._ngZone.run(() => {\n this.close();\n event.stopPropagation();\n }));\n });\n\n // We need a Subject with distinctUntilChanged, because the `done` event\n // fires twice on some browsers. See https://github.com/angular/angular/issues/24084\n this._animationEnd.pipe(distinctUntilChanged((x, y) => {\n return x.fromState === y.fromState && x.toState === y.toState;\n })).subscribe((event: AnimationEvent) => {\n const {fromState, toState} = event;\n\n if ((toState.indexOf('open') === 0 && fromState === 'void') ||\n (toState === 'void' && fromState.indexOf('open') === 0)) {\n this.openedChange.emit(this._opened);\n }\n });\n }\n\n /** Traps focus inside the drawer. */\n private _trapFocus() {\n if (!this.autoFocus) {\n return;\n }\n\n this._focusTrap.focusInitialElementWhenReady().then(hasMovedFocus => {\n // If there were no focusable elements, focus the sidenav itself so the keyboard navigation\n // still works. We need to check that `focus` is a function due to Universal.\n if (!hasMovedFocus && typeof this._elementRef.nativeElement.focus === 'function') {\n this._elementRef.nativeElement.focus();\n }\n });\n }\n\n /**\n * If focus is currently inside the drawer, restores it to where it was before the drawer\n * opened.\n */\n private _restoreFocus() {\n if (!this.autoFocus) {\n return;\n }\n\n const activeEl = this._doc && this._doc.activeElement;\n\n if (activeEl && this._elementRef.nativeElement.contains(activeEl)) {\n if (this._elementFocusedBeforeDrawerWasOpened instanceof HTMLElement) {\n this._focusMonitor.focusVia(this._elementFocusedBeforeDrawerWasOpened, this._openedVia);\n } else {\n this._elementRef.nativeElement.blur();\n }\n }\n\n this._elementFocusedBeforeDrawerWasOpened = null;\n this._openedVia = null;\n }\n\n ngAfterContentInit() {\n this._focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement);\n this._focusTrap.enabled = this._isFocusTrapEnabled;\n }\n\n ngAfterContentChecked() {\n // Enable the animations after the lifecycle hooks have run, in order to avoid animating\n // drawers that are open by default. When we're on the server, we shouldn't enable the\n // animations, because we don't want the drawer to animate the first time the user sees\n // the page.\n if (this._platform.isBrowser) {\n this._enableAnimations = true;\n }\n }\n\n ngOnDestroy() {\n if (this._focusTrap) {\n this._focusTrap.destroy();\n }\n\n this._animationStarted.complete();\n this._animationEnd.complete();\n }\n\n /**\n * Whether the drawer is opened. We overload this because we trigger an event when it\n * starts or end.\n */\n @Input()\n get opened(): boolean { return this._opened; }\n set opened(value: boolean) { this.toggle(coerceBooleanProperty(value)); }\n private _opened: boolean = false;\n\n /**\n * Open the drawer.\n * @param openedVia Whether the drawer was opened by a key press, mouse click or programmatically.\n * Used for focus management after the sidenav is closed.\n */\n open(openedVia?: FocusOrigin): Promise<MatDrawerToggleResult> {\n return this.toggle(true, openedVia);\n }\n\n /** Close the drawer. */\n close(): Promise<MatDrawerToggleResult> {\n return this.toggle(false);\n }\n\n /**\n * Toggle this drawer.\n * @param isOpen Whether the drawer should be open.\n * @param openedVia Whether the drawer was opened by a key press, mouse click or programmatically.\n * Used for focus management after the sidenav is closed.\n */\n toggle(isOpen: boolean = !this.opened, openedVia: FocusOrigin = 'program'):\n Promise<MatDrawerToggleResult> {\n\n this._opened = isOpen;\n\n if (isOpen) {\n this._animationState = this._enableAnimations ? 'open' : 'open-instant';\n this._openedVia = openedVia;\n } else {\n this._animationState = 'void';\n this._restoreFocus();\n }\n\n if (this._focusTrap) {\n this._focusTrap.enabled = this._isFocusTrapEnabled;\n }\n\n return new Promise<MatDrawerToggleResult>(resolve => {\n this.openedChange.pipe(take(1)).subscribe(open => resolve(open ? 'open' : 'close'));\n });\n }\n\n get _width(): number {\n return this._elementRef.nativeElement ? (this._elementRef.nativeElement.offsetWidth || 0) : 0;\n }\n}\n\n\n/**\n * `<mat-drawer-container>` component.\n *\n * This is the parent component to one or two `<mat-drawer>`s that validates the state internally\n * and coordinates the backdrop and content styling.\n */\n@Component({\n moduleId: module.id,\n selector: 'mat-drawer-container',\n exportAs: 'matDrawerContainer',\n templateUrl: 'drawer-container.html',\n styleUrls: ['drawer.css'],\n host: {\n 'class': 'mat-drawer-container',\n '[class.mat-drawer-container-explicit-backdrop]': '_backdropOverride',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatDrawerContainer implements AfterContentInit, DoCheck, OnDestroy {\n @ContentChildren(MatDrawer) _drawers: QueryList<MatDrawer>;\n @ContentChild(MatDrawerContent) _content: MatDrawerContent;\n @ViewChild(MatDrawerContent) _userContent: MatDrawerContent;\n\n /** The drawer child with the `start` position. */\n get start(): MatDrawer | null { return this._start; }\n\n /** The drawer child with the `end` position. */\n get end(): MatDrawer | null { return this._end; }\n\n /**\n * Whether to automatically resize the container whenever\n * the size of any of its drawers changes.\n *\n * **Use at your own risk!** Enabling this option can cause layout thrashing by measuring\n * the drawers on every change detection cycle. Can be configured globally via the\n * `MAT_DRAWER_DEFAULT_AUTOSIZE` token.\n */\n @Input()\n get autosize(): boolean { return this._autosize; }\n set autosize(value: boolean) { this._autosize = coerceBooleanProperty(value); }\n private _autosize: boolean;\n\n /**\n * Whether the drawer container should have a backdrop while one of the sidenavs is open.\n * If explicitly set to `true`, the backdrop will be enabled for drawers in the `side`\n * mode as well.\n */\n @Input()\n get hasBackdrop() {\n if (this._backdropOverride == null) {\n return !this._start || this._start.mode !== 'side' || !this._end || this._end.mode !== 'side';\n }\n\n return this._backdropOverride;\n }\n set hasBackdrop(value: any) {\n this._backdropOverride = value == null ? null : coerceBooleanProperty(value);\n }\n _backdropOverride: boolean | null;\n\n /** Event emitted when the drawer backdrop is clicked. */\n @Output() readonly backdropClick: EventEmitter<void> = new EventEmitter<void>();\n\n /** The drawer at the start/end position, independent of direction. */\n private _start: MatDrawer | null;\n private _end: MatDrawer | null;\n\n /**\n * The drawer at the left/right. When direction changes, these will change as well.\n * They're used as aliases for the above to set the left/right style properly.\n * In LTR, _left == _start and _right == _end.\n * In RTL, _left == _end and _right == _start.\n */\n private _left: MatDrawer | null;\n private _right: MatDrawer | null;\n\n /** Emits when the component is destroyed. */\n private readonly _destroyed = new Subject<void>();\n\n /** Emits on every ngDoCheck. Used for debouncing reflows. */\n private readonly _doCheckSubject = new Subject<void>();\n\n /**\n * Margins to be applied to the content. These are used to push / shrink the drawer content when a\n * drawer is open. We use margin rather than transform even for push mode because transform breaks\n * fixed position elements inside of the transformed element.\n */\n _contentMargins: {left: number|null, right: number|null} = {left: null, right: null};\n\n readonly _contentMarginChanges = new Subject<{left: number|null, right: number|null}>();\n\n /** Reference to the CdkScrollable instance that wraps the scrollable content. */\n get scrollable(): CdkScrollable {\n return this._userContent || this._content;\n }\n\n constructor(@Optional() private _dir: Directionality,\n private _element: ElementRef<HTMLElement>,\n private _ngZone: NgZone,\n private _changeDetectorRef: ChangeDetectorRef,\n @Inject(MAT_DRAWER_DEFAULT_AUTOSIZE) defaultAutosize = false,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) private _animationMode?: string) {\n\n // If a `Dir` directive exists up the tree, listen direction changes\n // and update the left/right properties to point to the proper start/end.\n if (_dir) {\n _dir.change.pipe(takeUntil(this._destroyed)).subscribe(() => {\n this._validateDrawers();\n this._updateContentMargins();\n });\n }\n\n this._autosize = defaultAutosize;\n }\n\n ngAfterContentInit() {\n this._drawers.changes.pipe(startWith(null)).subscribe(() => {\n this._validateDrawers();\n\n this._drawers.forEach((drawer: MatDrawer) => {\n this._watchDrawerToggle(drawer);\n this._watchDrawerPosition(drawer);\n this._watchDrawerMode(drawer);\n });\n\n if (!this._drawers.length ||\n this._isDrawerOpen(this._start) ||\n this._isDrawerOpen(this._end)) {\n this._updateContentMargins();\n }\n\n this._changeDetectorRef.markForCheck();\n });\n\n this._doCheckSubject.pipe(\n debounceTime(10), // Arbitrary debounce time, less than a frame at 60fps\n takeUntil(this._destroyed)\n ).subscribe(() => this._updateContentMargins());\n }\n\n ngOnDestroy() {\n this._doCheckSubject.complete();\n this._destroyed.next();\n this._destroyed.complete();\n }\n\n /** Calls `open` of both start and end drawers */\n open(): void {\n this._drawers.forEach(drawer => drawer.open());\n }\n\n /** Calls `close` of both start and end drawers */\n close(): void {\n this._drawers.forEach(drawer => drawer.close());\n }\n\n ngDoCheck() {\n // If users opted into autosizing, do a check every change detection cycle.\n if (this._autosize && this._isPushed()) {\n // Run outside the NgZone, otherwise the debouncer will throw us into an infinite loop.\n this._ngZone.runOutsideAngular(() => this._doCheckSubject.next());\n }\n }\n\n /**\n * Subscribes to drawer events in order to set a class on the main container element when the\n * drawer is open and the backdrop is visible. This ensures any overflow on the container element\n * is properly hidden.\n */\n private _watchDrawerToggle(drawer: MatDrawer): void {\n drawer._animationStarted.pipe(\n takeUntil(this._drawers.changes),\n filter((event: AnimationEvent) => event.fromState !== event.toState)\n )\n .subscribe((event: AnimationEvent) => {\n // Set the transition class on the container so that the animations occur. This should not\n // be set initially because animations should only be triggered via a change in state.\n if (event.toState !== 'open-instant' && this._animationMode !== 'NoopAnimations') {\n this._element.nativeElement.classList.add('mat-drawer-transition');\n }\n\n this._updateContentMargins();\n this._changeDetectorRef.markForCheck();\n });\n\n if (drawer.mode !== 'side') {\n drawer.openedChange.pipe(takeUntil(this._drawers.changes)).subscribe(() =>\n this._setContainerClass(drawer.opened));\n }\n }\n\n /**\n * Subscribes to drawer onPositionChanged event in order to\n * re-validate drawers when the position changes.\n */\n private _watchDrawerPosition(drawer: MatDrawer): void {\n if (!drawer) {\n return;\n }\n // NOTE: We need to wait for the microtask queue to be empty before validating,\n // since both drawers may be swapping positions at the same time.\n drawer.onPositionChanged.pipe(takeUntil(this._drawers.changes)).subscribe(() => {\n this._ngZone.onMicrotaskEmpty.asObservable().pipe(take(1)).subscribe(() => {\n this._validateDrawers();\n });\n });\n }\n\n /** Subscribes to changes in drawer mode so we can run change detection. */\n private _watchDrawerMode(drawer: MatDrawer): void {\n if (drawer) {\n drawer._modeChanged.pipe(takeUntil(merge(this._drawers.changes, this._destroyed)))\n .subscribe(() => {\n this._updateContentMargins();\n this._changeDetectorRef.markForCheck();\n });\n }\n }\n\n /** Toggles the 'mat-drawer-opened' class on the main 'mat-drawer-container' element. */\n private _setContainerClass(isAdd: boolean): void {\n if (isAdd) {\n this._element.nativeElement.classList.add('mat-drawer-opened');\n } else {\n this._element.nativeElement.classList.remove('mat-drawer-opened');\n }\n }\n\n /** Validate the state of the drawer children components. */\n private _validateDrawers() {\n this._start = this._end = null;\n\n // Ensure that we have at most one start and one end drawer.\n this._drawers.forEach(drawer => {\n if (drawer.position == 'end') {\n if (this._end != null) {\n throwMatDuplicatedDrawerError('end');\n }\n this._end = drawer;\n } else {\n if (this._start != null) {\n throwMatDuplicatedDrawerError('start');\n }\n this._start = drawer;\n }\n });\n\n this._right = this._left = null;\n\n // Detect if we're LTR or RTL.\n if (this._dir && this._dir.value === 'rtl') {\n this._left = this._end;\n this._right = this._start;\n } else {\n this._left = this._start;\n this._right = this._end;\n }\n }\n\n /** Whether the container is being pushed to the side by one of the drawers. */\n private _isPushed() {\n return (this._isDrawerOpen(this._start) && this._start.mode != 'over') ||\n (this._isDrawerOpen(this._end) && this._end.mode != 'over');\n }\n\n _onBackdropClicked() {\n this.backdropClick.emit();\n this._closeModalDrawer();\n }\n\n _closeModalDrawer() {\n // Close all open drawers where closing is not disabled and the mode is not `side`.\n [this._start, this._end]\n .filter(drawer => drawer && !drawer.disableClose && this._canHaveBackdrop(drawer))\n .forEach(drawer => drawer!.close());\n }\n\n _isShowingBackdrop(): boolean {\n return (this._isDrawerOpen(this._start) && this._canHaveBackdrop(this._start)) ||\n (this._isDrawerOpen(this._end) && this._canHaveBackdrop(this._end));\n }\n\n private _canHaveBackdrop(drawer: MatDrawer): boolean {\n return drawer.mode !== 'side' || !!this._backdropOverride;\n }\n\n private _isDrawerOpen(drawer: MatDrawer | null): drawer is MatDrawer {\n return drawer != null && drawer.opened;\n }\n\n /**\n * Recalculates and updates the inline styles for the content. Note that this should be used\n * sparingly, because it causes a reflow.\n */\n private _updateContentMargins() {\n // 1. For drawers in `over` mode, they don't affect the content.\n // 2. For drawers in `side` mode they should shrink the content. We do this by adding to the\n // left margin (for left drawer) or right margin (for right the drawer).\n // 3. For drawers in `push` mode the should shift the content without resizing it. We do this by\n // adding to the left or right margin and simultaneously subtracting the same amount of\n // margin from the other side.\n\n let left = 0;\n let right = 0;\n\n if (this._left && this._left.opened) {\n if (this._left.mode == 'side') {\n left += this._left._width;\n } else if (this._left.mode == 'push') {\n let width = this._left._width;\n left += width;\n right -= width;\n }\n }\n\n if (this._right && this._right.opened) {\n if (this._right.mode == 'side') {\n right += this._right._width;\n } else if (this._right.mode == 'push') {\n let width = this._right._width;\n right += width;\n left -= width;\n }\n }\n\n // If either `right` or `left` is zero, don't set a style to the element. This\n // allows users to specify a custom size via CSS class in SSR scenarios where the\n // measured widths will always be zero. Note that we reset to `null` here, rather\n // than below, in order to ensure that the types in the `if` below are consistent.\n left = left || null!;\n right = right || null!;\n\n if (left !== this._contentMargins.left || right !== this._contentMargins.right) {\n this._contentMargins = {left, right};\n\n // Pull back into the NgZone since in some cases we could be outside. We need to be careful\n // to do it only when something changed, otherwise we can end up hitting the zone too often.\n this._ngZone.run(() => this._contentMarginChanges.next(this._contentMargins));\n }\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';\n\n/**\n * Animations used by the Material drawers.\n * @docs-private\n */\nexport const matDrawerAnimations: {\n readonly transformDrawer: AnimationTriggerMetadata;\n} = {\n /** Animation that slides a drawer in and out. */\n transformDrawer: trigger('transform', [\n // We remove the `transform` here completely, rather than setting it to zero, because:\n // 1. Having a transform can cause elements with ripples or an animated\n // transform to shift around in Chrome with an RTL layout (see #10023).\n // 2. 3d transforms causes text to appear blurry on IE and Edge.\n state('open, open-instant', style({\n 'transform': 'none',\n 'visibility': 'visible',\n })),\n state('void', style({\n // Avoids the shadow showing up when closed in SSR.\n 'box-shadow': 'none',\n 'visibility': 'hidden',\n })),\n transition('void => open-instant', animate('0ms')),\n transition('void <=> open, open-instant => void',\n animate('400ms cubic-bezier(0.25, 0.8, 0.25, 1)'))\n ])\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sidenav.js","sources":["../../../src/lib/sidenav/sidenav-module.ts","../../../src/lib/sidenav/sidenav.ts","../../../src/lib/sidenav/drawer.ts","../../../src/lib/sidenav/drawer-animations.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 */\nimport {PlatformModule} from '@angular/cdk/platform';\nimport {ScrollingModule} from '@angular/cdk/scrolling';\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {MatCommonModule} from '@angular/material/core';\nimport {MatDrawer, MatDrawerContainer, MatDrawerContent} from './drawer';\nimport {MatSidenav, MatSidenavContainer, MatSidenavContent} from './sidenav';\n\n\n@NgModule({\n imports: [\n CommonModule,\n MatCommonModule,\n ScrollingModule,\n PlatformModule,\n ],\n exports: [\n MatCommonModule,\n MatDrawer,\n MatDrawerContainer,\n MatDrawerContent,\n MatSidenav,\n MatSidenavContainer,\n MatSidenavContent,\n ],\n declarations: [\n MatDrawer,\n MatDrawerContainer,\n MatDrawerContent,\n MatSidenav,\n MatSidenavContainer,\n MatSidenavContent,\n ],\n})\nexport class MatSidenavModule {}\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 ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n forwardRef,\n Inject,\n Input,\n ViewEncapsulation,\n QueryList,\n ElementRef,\n NgZone,\n} from '@angular/core';\nimport {MatDrawer, MatDrawerContainer, MatDrawerContent} from './drawer';\nimport {matDrawerAnimations} from './drawer-animations';\nimport {coerceBooleanProperty, coerceNumberProperty} from '@angular/cdk/coercion';\nimport {ScrollDispatcher} from '@angular/cdk/scrolling';\n\n\n@Component({\n moduleId: module.id,\n selector: 'mat-sidenav-content',\n template: '<ng-content></ng-content>',\n host: {\n 'class': 'mat-drawer-content mat-sidenav-content',\n '[style.margin-left.px]': '_container._contentMargins.left',\n '[style.margin-right.px]': '_container._contentMargins.right',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatSidenavContent extends MatDrawerContent {\n constructor(\n changeDetectorRef: ChangeDetectorRef,\n @Inject(forwardRef(() => MatSidenavContainer)) container: MatSidenavContainer,\n elementRef: ElementRef<HTMLElement>,\n scrollDispatcher: ScrollDispatcher,\n ngZone: NgZone) {\n super(changeDetectorRef, container, elementRef, scrollDispatcher, ngZone);\n }\n}\n\n\n@Component({\n moduleId: module.id,\n selector: 'mat-sidenav',\n exportAs: 'matSidenav',\n templateUrl: 'drawer.html',\n animations: [matDrawerAnimations.transformDrawer],\n host: {\n 'class': 'mat-drawer mat-sidenav',\n 'tabIndex': '-1',\n '[@transform]': '_animationState',\n '(@transform.start)': '_animationStarted.next($event)',\n '(@transform.done)': '_animationEnd.next($event)',\n // must prevent the browser from aligning text based on value\n '[attr.align]': 'null',\n '[class.mat-drawer-end]': 'position === \"end\"',\n '[class.mat-drawer-over]': 'mode === \"over\"',\n '[class.mat-drawer-push]': 'mode === \"push\"',\n '[class.mat-drawer-side]': 'mode === \"side\"',\n '[class.mat-sidenav-fixed]': 'fixedInViewport',\n '[style.top.px]': 'fixedInViewport ? fixedTopGap : null',\n '[style.bottom.px]': 'fixedInViewport ? fixedBottomGap : null',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatSidenav extends MatDrawer {\n /** Whether the sidenav is fixed in the viewport. */\n @Input()\n get fixedInViewport(): boolean { return this._fixedInViewport; }\n set fixedInViewport(value) { this._fixedInViewport = coerceBooleanProperty(value); }\n private _fixedInViewport = false;\n\n /**\n * The gap between the top of the sidenav and the top of the viewport when the sidenav is in fixed\n * mode.\n */\n @Input()\n get fixedTopGap(): number { return this._fixedTopGap; }\n set fixedTopGap(value) { this._fixedTopGap = coerceNumberProperty(value); }\n private _fixedTopGap = 0;\n\n /**\n * The gap between the bottom of the sidenav and the bottom of the viewport when the sidenav is in\n * fixed mode.\n */\n @Input()\n get fixedBottomGap(): number { return this._fixedBottomGap; }\n set fixedBottomGap(value) { this._fixedBottomGap = coerceNumberProperty(value); }\n private _fixedBottomGap = 0;\n}\n\n\n@Component({\n moduleId: module.id,\n selector: 'mat-sidenav-container',\n exportAs: 'matSidenavContainer',\n templateUrl: 'sidenav-container.html',\n styleUrls: ['drawer.css'],\n host: {\n 'class': 'mat-drawer-container mat-sidenav-container',\n '[class.mat-drawer-container-explicit-backdrop]': '_backdropOverride',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatSidenavContainer extends MatDrawerContainer {\n @ContentChildren(MatSidenav) _drawers: QueryList<MatSidenav>;\n @ContentChild(MatSidenavContent) _content: MatSidenavContent;\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 {AnimationEvent} from '@angular/animations';\nimport {FocusMonitor, FocusOrigin, FocusTrap, FocusTrapFactory} from '@angular/cdk/a11y';\nimport {Directionality} from '@angular/cdk/bidi';\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {ESCAPE} from '@angular/cdk/keycodes';\nimport {Platform} from '@angular/cdk/platform';\nimport {CdkScrollable, ScrollDispatcher, ViewportRuler} from '@angular/cdk/scrolling';\nimport {DOCUMENT} from '@angular/common';\nimport {\n AfterContentChecked,\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n DoCheck,\n ElementRef,\n EventEmitter,\n forwardRef,\n Inject,\n InjectionToken,\n Input,\n NgZone,\n OnDestroy,\n Optional,\n Output,\n QueryList,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {fromEvent, merge, Observable, Subject} from 'rxjs';\nimport {\n debounceTime,\n filter,\n map,\n startWith,\n take,\n takeUntil,\n distinctUntilChanged,\n} from 'rxjs/operators';\nimport {matDrawerAnimations} from './drawer-animations';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\n\n\n/**\n * Throws an exception when two MatDrawer are matching the same position.\n * @docs-private\n */\nexport function throwMatDuplicatedDrawerError(position: string) {\n throw Error(`A drawer was already declared for 'position=\"${position}\"'`);\n}\n\n\n/** Result of the toggle promise that indicates the state of the drawer. */\nexport type MatDrawerToggleResult = 'open' | 'close';\n\n/** Configures whether drawers should use auto sizing by default. */\nexport const MAT_DRAWER_DEFAULT_AUTOSIZE =\n new InjectionToken<boolean>('MAT_DRAWER_DEFAULT_AUTOSIZE', {\n providedIn: 'root',\n factory: MAT_DRAWER_DEFAULT_AUTOSIZE_FACTORY,\n });\n\n/** @docs-private */\nexport function MAT_DRAWER_DEFAULT_AUTOSIZE_FACTORY(): boolean {\n return false;\n}\n\n@Component({\n moduleId: module.id,\n selector: 'mat-drawer-content',\n template: '<ng-content></ng-content>',\n host: {\n 'class': 'mat-drawer-content',\n '[style.margin-left.px]': '_container._contentMargins.left',\n '[style.margin-right.px]': '_container._contentMargins.right',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatDrawerContent extends CdkScrollable implements AfterContentInit {\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n @Inject(forwardRef(() => MatDrawerContainer)) public _container: MatDrawerContainer,\n elementRef: ElementRef<HTMLElement>,\n scrollDispatcher: ScrollDispatcher,\n ngZone: NgZone) {\n super(elementRef, scrollDispatcher, ngZone);\n }\n\n ngAfterContentInit() {\n this._container._contentMarginChanges.subscribe(() => {\n this._changeDetectorRef.markForCheck();\n });\n }\n}\n\n\n/**\n * This component corresponds to a drawer that can be opened on the drawer container.\n */\n@Component({\n moduleId: module.id,\n selector: 'mat-drawer',\n exportAs: 'matDrawer',\n templateUrl: 'drawer.html',\n animations: [matDrawerAnimations.transformDrawer],\n host: {\n 'class': 'mat-drawer',\n '[@transform]': '_animationState',\n '(@transform.start)': '_animationStarted.next($event)',\n '(@transform.done)': '_animationEnd.next($event)',\n // must prevent the browser from aligning text based on value\n '[attr.align]': 'null',\n '[class.mat-drawer-end]': 'position === \"end\"',\n '[class.mat-drawer-over]': 'mode === \"over\"',\n '[class.mat-drawer-push]': 'mode === \"push\"',\n '[class.mat-drawer-side]': 'mode === \"side\"',\n 'tabIndex': '-1',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatDrawer implements AfterContentInit, AfterContentChecked, OnDestroy {\n private _focusTrap: FocusTrap;\n private _elementFocusedBeforeDrawerWasOpened: HTMLElement | null = null;\n\n /** Whether the drawer is initialized. Used for disabling the initial animation. */\n private _enableAnimations = false;\n\n /** The side that the drawer is attached to. */\n @Input()\n get position(): 'start' | 'end' { return this._position; }\n set position(value: 'start' | 'end') {\n // Make sure we have a valid value.\n value = value === 'end' ? 'end' : 'start';\n if (value != this._position) {\n this._position = value;\n this.onPositionChanged.emit();\n }\n }\n private _position: 'start' | 'end' = 'start';\n\n /** Mode of the drawer; one of 'over', 'push' or 'side'. */\n @Input()\n get mode(): 'over' | 'push' | 'side' { return this._mode; }\n set mode(value: 'over' | 'push' | 'side') {\n this._mode = value;\n this._modeChanged.next();\n }\n private _mode: 'over' | 'push' | 'side' = 'over';\n\n /** Whether the drawer can be closed with the escape key or by clicking on the backdrop. */\n @Input()\n get disableClose(): boolean { return this._disableClose; }\n set disableClose(value: boolean) { this._disableClose = coerceBooleanProperty(value); }\n private _disableClose: boolean = false;\n\n /** Whether the drawer should focus the first focusable element automatically when opened. */\n @Input()\n get autoFocus(): boolean { return this._autoFocus; }\n set autoFocus(value: boolean) { this._autoFocus = coerceBooleanProperty(value); }\n private _autoFocus: boolean = true;\n\n /** How the sidenav was opened (keypress, mouse click etc.) */\n private _openedVia: FocusOrigin | null;\n\n /** Emits whenever the drawer has started animating. */\n _animationStarted = new Subject<AnimationEvent>();\n\n /** Emits whenever the drawer is done animating. */\n _animationEnd = new Subject<AnimationEvent>();\n\n /** Current state of the sidenav animation. */\n _animationState: 'open-instant' | 'open' | 'void' = 'void';\n\n /** Event emitted when the drawer open state is changed. */\n @Output() readonly openedChange: EventEmitter<boolean> =\n // Note this has to be async in order to avoid some issues with two-bindings (see #8872).\n new EventEmitter<boolean>(/* isAsync */true);\n\n /** Event emitted when the drawer has been opened. */\n @Output('opened')\n get _openedStream(): Observable<void> {\n return this.openedChange.pipe(filter(o => o), map(() => {}));\n }\n\n /** Event emitted when the drawer has started opening. */\n @Output()\n get openedStart(): Observable<void> {\n return this._animationStarted.pipe(\n filter(e => e.fromState !== e.toState && e.toState.indexOf('open') === 0),\n map(() => {})\n );\n }\n\n /** Event emitted when the drawer has been closed. */\n @Output('closed')\n get _closedStream(): Observable<void> {\n return this.openedChange.pipe(filter(o => !o), map(() => {}));\n }\n\n /** Event emitted when the drawer has started closing. */\n @Output()\n get closedStart(): Observable<void> {\n return this._animationStarted.pipe(\n filter(e => e.fromState !== e.toState && e.toState === 'void'),\n map(() => {})\n );\n }\n\n /** Emits when the component is destroyed. */\n private readonly _destroyed = new Subject<void>();\n\n /** Event emitted when the drawer's position changes. */\n // tslint:disable-next-line:no-output-on-prefix\n @Output('positionChanged') onPositionChanged: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * An observable that emits when the drawer mode changes. This is used by the drawer container to\n * to know when to when the mode changes so it can adapt the margins on the content.\n */\n readonly _modeChanged = new Subject();\n\n get _isFocusTrapEnabled(): boolean {\n // The focus trap is only enabled when the drawer is open in any mode other than side.\n return this.opened && this.mode !== 'side';\n }\n\n constructor(private _elementRef: ElementRef<HTMLElement>,\n private _focusTrapFactory: FocusTrapFactory,\n private _focusMonitor: FocusMonitor,\n private _platform: Platform,\n private _ngZone: NgZone,\n @Optional() @Inject(DOCUMENT) private _doc: any) {\n\n this.openedChange.subscribe((opened: boolean) => {\n if (opened) {\n if (this._doc) {\n this._elementFocusedBeforeDrawerWasOpened = this._doc.activeElement as HTMLElement;\n }\n\n if (this._isFocusTrapEnabled && this._focusTrap) {\n this._trapFocus();\n }\n } else {\n this._restoreFocus();\n }\n });\n\n /**\n * Listen to `keydown` events outside the zone so that change detection is not run every\n * time a key is pressed. Instead we re-enter the zone only if the `ESC` key is pressed\n * and we don't have close disabled.\n */\n this._ngZone.runOutsideAngular(() => {\n fromEvent<KeyboardEvent>(this._elementRef.nativeElement, 'keydown').pipe(\n filter(event => event.keyCode === ESCAPE && !this.disableClose),\n takeUntil(this._destroyed)\n ).subscribe(event => this._ngZone.run(() => {\n this.close();\n event.stopPropagation();\n }));\n });\n\n // We need a Subject with distinctUntilChanged, because the `done` event\n // fires twice on some browsers. See https://github.com/angular/angular/issues/24084\n this._animationEnd.pipe(distinctUntilChanged((x, y) => {\n return x.fromState === y.fromState && x.toState === y.toState;\n })).subscribe((event: AnimationEvent) => {\n const {fromState, toState} = event;\n\n if ((toState.indexOf('open') === 0 && fromState === 'void') ||\n (toState === 'void' && fromState.indexOf('open') === 0)) {\n this.openedChange.emit(this._opened);\n }\n });\n }\n\n /** Traps focus inside the drawer. */\n private _trapFocus() {\n if (!this.autoFocus) {\n return;\n }\n\n this._focusTrap.focusInitialElementWhenReady().then(hasMovedFocus => {\n // If there were no focusable elements, focus the sidenav itself so the keyboard navigation\n // still works. We need to check that `focus` is a function due to Universal.\n if (!hasMovedFocus && typeof this._elementRef.nativeElement.focus === 'function') {\n this._elementRef.nativeElement.focus();\n }\n });\n }\n\n /**\n * If focus is currently inside the drawer, restores it to where it was before the drawer\n * opened.\n */\n private _restoreFocus() {\n if (!this.autoFocus) {\n return;\n }\n\n const activeEl = this._doc && this._doc.activeElement;\n\n if (activeEl && this._elementRef.nativeElement.contains(activeEl)) {\n if (this._elementFocusedBeforeDrawerWasOpened instanceof HTMLElement) {\n this._focusMonitor.focusVia(this._elementFocusedBeforeDrawerWasOpened, this._openedVia);\n } else {\n this._elementRef.nativeElement.blur();\n }\n }\n\n this._elementFocusedBeforeDrawerWasOpened = null;\n this._openedVia = null;\n }\n\n ngAfterContentInit() {\n this._focusTrap = this._focusTrapFactory.create(this._elementRef.nativeElement);\n this._focusTrap.enabled = this._isFocusTrapEnabled;\n }\n\n ngAfterContentChecked() {\n // Enable the animations after the lifecycle hooks have run, in order to avoid animating\n // drawers that are open by default. When we're on the server, we shouldn't enable the\n // animations, because we don't want the drawer to animate the first time the user sees\n // the page.\n if (this._platform.isBrowser) {\n this._enableAnimations = true;\n }\n }\n\n ngOnDestroy() {\n if (this._focusTrap) {\n this._focusTrap.destroy();\n }\n\n this._animationStarted.complete();\n this._animationEnd.complete();\n this._destroyed.next();\n this._destroyed.complete();\n }\n\n /**\n * Whether the drawer is opened. We overload this because we trigger an event when it\n * starts or end.\n */\n @Input()\n get opened(): boolean { return this._opened; }\n set opened(value: boolean) { this.toggle(coerceBooleanProperty(value)); }\n private _opened: boolean = false;\n\n /**\n * Open the drawer.\n * @param openedVia Whether the drawer was opened by a key press, mouse click or programmatically.\n * Used for focus management after the sidenav is closed.\n */\n open(openedVia?: FocusOrigin): Promise<MatDrawerToggleResult> {\n return this.toggle(true, openedVia);\n }\n\n /** Close the drawer. */\n close(): Promise<MatDrawerToggleResult> {\n return this.toggle(false);\n }\n\n /**\n * Toggle this drawer.\n * @param isOpen Whether the drawer should be open.\n * @param openedVia Whether the drawer was opened by a key press, mouse click or programmatically.\n * Used for focus management after the sidenav is closed.\n */\n toggle(isOpen: boolean = !this.opened, openedVia: FocusOrigin = 'program'):\n Promise<MatDrawerToggleResult> {\n\n this._opened = isOpen;\n\n if (isOpen) {\n this._animationState = this._enableAnimations ? 'open' : 'open-instant';\n this._openedVia = openedVia;\n } else {\n this._animationState = 'void';\n this._restoreFocus();\n }\n\n if (this._focusTrap) {\n this._focusTrap.enabled = this._isFocusTrapEnabled;\n }\n\n return new Promise<MatDrawerToggleResult>(resolve => {\n this.openedChange.pipe(take(1)).subscribe(open => resolve(open ? 'open' : 'close'));\n });\n }\n\n get _width(): number {\n return this._elementRef.nativeElement ? (this._elementRef.nativeElement.offsetWidth || 0) : 0;\n }\n}\n\n\n/**\n * `<mat-drawer-container>` component.\n *\n * This is the parent component to one or two `<mat-drawer>`s that validates the state internally\n * and coordinates the backdrop and content styling.\n */\n@Component({\n moduleId: module.id,\n selector: 'mat-drawer-container',\n exportAs: 'matDrawerContainer',\n templateUrl: 'drawer-container.html',\n styleUrls: ['drawer.css'],\n host: {\n 'class': 'mat-drawer-container',\n '[class.mat-drawer-container-explicit-backdrop]': '_backdropOverride',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatDrawerContainer implements AfterContentInit, DoCheck, OnDestroy {\n @ContentChildren(MatDrawer) _drawers: QueryList<MatDrawer>;\n @ContentChild(MatDrawerContent) _content: MatDrawerContent;\n @ViewChild(MatDrawerContent) _userContent: MatDrawerContent;\n\n /** The drawer child with the `start` position. */\n get start(): MatDrawer | null { return this._start; }\n\n /** The drawer child with the `end` position. */\n get end(): MatDrawer | null { return this._end; }\n\n /**\n * Whether to automatically resize the container whenever\n * the size of any of its drawers changes.\n *\n * **Use at your own risk!** Enabling this option can cause layout thrashing by measuring\n * the drawers on every change detection cycle. Can be configured globally via the\n * `MAT_DRAWER_DEFAULT_AUTOSIZE` token.\n */\n @Input()\n get autosize(): boolean { return this._autosize; }\n set autosize(value: boolean) { this._autosize = coerceBooleanProperty(value); }\n private _autosize: boolean;\n\n /**\n * Whether the drawer container should have a backdrop while one of the sidenavs is open.\n * If explicitly set to `true`, the backdrop will be enabled for drawers in the `side`\n * mode as well.\n */\n @Input()\n get hasBackdrop() {\n if (this._backdropOverride == null) {\n return !this._start || this._start.mode !== 'side' || !this._end || this._end.mode !== 'side';\n }\n\n return this._backdropOverride;\n }\n set hasBackdrop(value: any) {\n this._backdropOverride = value == null ? null : coerceBooleanProperty(value);\n }\n _backdropOverride: boolean | null;\n\n /** Event emitted when the drawer backdrop is clicked. */\n @Output() readonly backdropClick: EventEmitter<void> = new EventEmitter<void>();\n\n /** The drawer at the start/end position, independent of direction. */\n private _start: MatDrawer | null;\n private _end: MatDrawer | null;\n\n /**\n * The drawer at the left/right. When direction changes, these will change as well.\n * They're used as aliases for the above to set the left/right style properly.\n * In LTR, _left == _start and _right == _end.\n * In RTL, _left == _end and _right == _start.\n */\n private _left: MatDrawer | null;\n private _right: MatDrawer | null;\n\n /** Emits when the component is destroyed. */\n private readonly _destroyed = new Subject<void>();\n\n /** Emits on every ngDoCheck. Used for debouncing reflows. */\n private readonly _doCheckSubject = new Subject<void>();\n\n /**\n * Margins to be applied to the content. These are used to push / shrink the drawer content when a\n * drawer is open. We use margin rather than transform even for push mode because transform breaks\n * fixed position elements inside of the transformed element.\n */\n _contentMargins: {left: number|null, right: number|null} = {left: null, right: null};\n\n readonly _contentMarginChanges = new Subject<{left: number|null, right: number|null}>();\n\n /** Reference to the CdkScrollable instance that wraps the scrollable content. */\n get scrollable(): CdkScrollable {\n return this._userContent || this._content;\n }\n\n constructor(@Optional() private _dir: Directionality,\n private _element: ElementRef<HTMLElement>,\n private _ngZone: NgZone,\n private _changeDetectorRef: ChangeDetectorRef,\n @Inject(MAT_DRAWER_DEFAULT_AUTOSIZE) defaultAutosize = false,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) private _animationMode?: string,\n /**\n * @deprecated viewportRuler to become a required parameter.\n * @breaking-change 8.0.0\n */\n @Optional() viewportRuler?: ViewportRuler) {\n\n // If a `Dir` directive exists up the tree, listen direction changes\n // and update the left/right properties to point to the proper start/end.\n if (_dir) {\n _dir.change.pipe(takeUntil(this._destroyed)).subscribe(() => {\n this._validateDrawers();\n this._updateContentMargins();\n });\n }\n\n // Since the minimum width of the sidenav depends on the viewport width,\n // we need to recompute the margins if the viewport changes.\n if (viewportRuler) {\n viewportRuler.change()\n .pipe(takeUntil(this._destroyed))\n .subscribe(() => this._updateContentMargins());\n }\n\n this._autosize = defaultAutosize;\n }\n\n ngAfterContentInit() {\n this._drawers.changes.pipe(startWith(null)).subscribe(() => {\n this._validateDrawers();\n\n this._drawers.forEach((drawer: MatDrawer) => {\n this._watchDrawerToggle(drawer);\n this._watchDrawerPosition(drawer);\n this._watchDrawerMode(drawer);\n });\n\n if (!this._drawers.length ||\n this._isDrawerOpen(this._start) ||\n this._isDrawerOpen(this._end)) {\n this._updateContentMargins();\n }\n\n this._changeDetectorRef.markForCheck();\n });\n\n this._doCheckSubject.pipe(\n debounceTime(10), // Arbitrary debounce time, less than a frame at 60fps\n takeUntil(this._destroyed)\n ).subscribe(() => this._updateContentMargins());\n }\n\n ngOnDestroy() {\n this._doCheckSubject.complete();\n this._destroyed.next();\n this._destroyed.complete();\n }\n\n /** Calls `open` of both start and end drawers */\n open(): void {\n this._drawers.forEach(drawer => drawer.open());\n }\n\n /** Calls `close` of both start and end drawers */\n close(): void {\n this._drawers.forEach(drawer => drawer.close());\n }\n\n ngDoCheck() {\n // If users opted into autosizing, do a check every change detection cycle.\n if (this._autosize && this._isPushed()) {\n // Run outside the NgZone, otherwise the debouncer will throw us into an infinite loop.\n this._ngZone.runOutsideAngular(() => this._doCheckSubject.next());\n }\n }\n\n /**\n * Subscribes to drawer events in order to set a class on the main container element when the\n * drawer is open and the backdrop is visible. This ensures any overflow on the container element\n * is properly hidden.\n */\n private _watchDrawerToggle(drawer: MatDrawer): void {\n drawer._animationStarted.pipe(\n filter((event: AnimationEvent) => event.fromState !== event.toState),\n takeUntil(this._drawers.changes),\n )\n .subscribe((event: AnimationEvent) => {\n // Set the transition class on the container so that the animations occur. This should not\n // be set initially because animations should only be triggered via a change in state.\n if (event.toState !== 'open-instant' && this._animationMode !== 'NoopAnimations') {\n this._element.nativeElement.classList.add('mat-drawer-transition');\n }\n\n this._updateContentMargins();\n this._changeDetectorRef.markForCheck();\n });\n\n if (drawer.mode !== 'side') {\n drawer.openedChange.pipe(takeUntil(this._drawers.changes)).subscribe(() =>\n this._setContainerClass(drawer.opened));\n }\n }\n\n /**\n * Subscribes to drawer onPositionChanged event in order to\n * re-validate drawers when the position changes.\n */\n private _watchDrawerPosition(drawer: MatDrawer): void {\n if (!drawer) {\n return;\n }\n // NOTE: We need to wait for the microtask queue to be empty before validating,\n // since both drawers may be swapping positions at the same time.\n drawer.onPositionChanged.pipe(takeUntil(this._drawers.changes)).subscribe(() => {\n this._ngZone.onMicrotaskEmpty.asObservable().pipe(take(1)).subscribe(() => {\n this._validateDrawers();\n });\n });\n }\n\n /** Subscribes to changes in drawer mode so we can run change detection. */\n private _watchDrawerMode(drawer: MatDrawer): void {\n if (drawer) {\n drawer._modeChanged.pipe(takeUntil(merge(this._drawers.changes, this._destroyed)))\n .subscribe(() => {\n this._updateContentMargins();\n this._changeDetectorRef.markForCheck();\n });\n }\n }\n\n /** Toggles the 'mat-drawer-opened' class on the main 'mat-drawer-container' element. */\n private _setContainerClass(isAdd: boolean): void {\n if (isAdd) {\n this._element.nativeElement.classList.add('mat-drawer-opened');\n } else {\n this._element.nativeElement.classList.remove('mat-drawer-opened');\n }\n }\n\n /** Validate the state of the drawer children components. */\n private _validateDrawers() {\n this._start = this._end = null;\n\n // Ensure that we have at most one start and one end drawer.\n this._drawers.forEach(drawer => {\n if (drawer.position == 'end') {\n if (this._end != null) {\n throwMatDuplicatedDrawerError('end');\n }\n this._end = drawer;\n } else {\n if (this._start != null) {\n throwMatDuplicatedDrawerError('start');\n }\n this._start = drawer;\n }\n });\n\n this._right = this._left = null;\n\n // Detect if we're LTR or RTL.\n if (this._dir && this._dir.value === 'rtl') {\n this._left = this._end;\n this._right = this._start;\n } else {\n this._left = this._start;\n this._right = this._end;\n }\n }\n\n /** Whether the container is being pushed to the side by one of the drawers. */\n private _isPushed() {\n return (this._isDrawerOpen(this._start) && this._start.mode != 'over') ||\n (this._isDrawerOpen(this._end) && this._end.mode != 'over');\n }\n\n _onBackdropClicked() {\n this.backdropClick.emit();\n this._closeModalDrawer();\n }\n\n _closeModalDrawer() {\n // Close all open drawers where closing is not disabled and the mode is not `side`.\n [this._start, this._end]\n .filter(drawer => drawer && !drawer.disableClose && this._canHaveBackdrop(drawer))\n .forEach(drawer => drawer!.close());\n }\n\n _isShowingBackdrop(): boolean {\n return (this._isDrawerOpen(this._start) && this._canHaveBackdrop(this._start)) ||\n (this._isDrawerOpen(this._end) && this._canHaveBackdrop(this._end));\n }\n\n private _canHaveBackdrop(drawer: MatDrawer): boolean {\n return drawer.mode !== 'side' || !!this._backdropOverride;\n }\n\n private _isDrawerOpen(drawer: MatDrawer | null): drawer is MatDrawer {\n return drawer != null && drawer.opened;\n }\n\n /**\n * Recalculates and updates the inline styles for the content. Note that this should be used\n * sparingly, because it causes a reflow.\n */\n private _updateContentMargins() {\n // 1. For drawers in `over` mode, they don't affect the content.\n // 2. For drawers in `side` mode they should shrink the content. We do this by adding to the\n // left margin (for left drawer) or right margin (for right the drawer).\n // 3. For drawers in `push` mode the should shift the content without resizing it. We do this by\n // adding to the left or right margin and simultaneously subtracting the same amount of\n // margin from the other side.\n\n let left = 0;\n let right = 0;\n\n if (this._left && this._left.opened) {\n if (this._left.mode == 'side') {\n left += this._left._width;\n } else if (this._left.mode == 'push') {\n let width = this._left._width;\n left += width;\n right -= width;\n }\n }\n\n if (this._right && this._right.opened) {\n if (this._right.mode == 'side') {\n right += this._right._width;\n } else if (this._right.mode == 'push') {\n let width = this._right._width;\n right += width;\n left -= width;\n }\n }\n\n // If either `right` or `left` is zero, don't set a style to the element. This\n // allows users to specify a custom size via CSS class in SSR scenarios where the\n // measured widths will always be zero. Note that we reset to `null` here, rather\n // than below, in order to ensure that the types in the `if` below are consistent.\n left = left || null!;\n right = right || null!;\n\n if (left !== this._contentMargins.left || right !== this._contentMargins.right) {\n this._contentMargins = {left, right};\n\n // Pull back into the NgZone since in some cases we could be outside. We need to be careful\n // to do it only when something changed, otherwise we can end up hitting the zone too often.\n this._ngZone.run(() => this._contentMarginChanges.next(this._contentMargins));\n }\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';\n\n/**\n * Animations used by the Material drawers.\n * @docs-private\n */\nexport const matDrawerAnimations: {\n readonly transformDrawer: AnimationTriggerMetadata;\n} = {\n /** Animation that slides a drawer in and out. */\n transformDrawer: trigger('transform', [\n // We remove the `transform` here completely, rather than setting it to zero, because:\n // 1. Having a transform can cause elements with ripples or an animated\n // transform to shift around in Chrome with an RTL layout (see #10023).\n // 2. 3d transforms causes text to appear blurry on IE and Edge.\n state('open, open-instant', style({\n 'transform': 'none',\n 'visibility': 'visible',\n })),\n state('void', style({\n // Avoids the shadow showing up when closed in SSR.\n 'box-shadow': 'none',\n 'visibility': 'hidden',\n })),\n transition('void => open-instant', animate('0ms')),\n transition('void <=> open, open-instant => void',\n animate('400ms cubic-bezier(0.25, 0.8, 0.25, 1)'))\n ])\n};\n"],"names":[],"mappings":"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"}