@ng-matero/extensions 12.5.3 → 13.0.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 (559) hide show
  1. package/README.md +2 -16
  2. package/_all-color.scss +1 -1
  3. package/_all-theme.scss +2 -0
  4. package/_index.scss +3 -1
  5. package/_theming.scss +3 -1
  6. package/alert/_alert-theme.scss +2 -2
  7. package/alert/alert.component.d.ts +3 -0
  8. package/alert/alert.module.d.ts +6 -0
  9. package/alert/mtxAlert.d.ts +1 -0
  10. package/alert/package.json +5 -6
  11. package/button/button-loading.directive.d.ts +3 -0
  12. package/button/button.module.d.ts +8 -0
  13. package/button/mtxButton.d.ts +1 -0
  14. package/button/package.json +5 -6
  15. package/checkbox-group/checkbox-group.component.d.ts +3 -0
  16. package/checkbox-group/checkbox-group.module.d.ts +9 -0
  17. package/checkbox-group/mtxCheckboxGroup.d.ts +1 -0
  18. package/checkbox-group/package.json +5 -6
  19. package/colorpicker/_colorpicker-theme.import.scss +2 -0
  20. package/colorpicker/_colorpicker-theme.scss +43 -0
  21. package/colorpicker/colorpicker-animations.d.ts +8 -0
  22. package/colorpicker/colorpicker-content.scss +4 -0
  23. package/colorpicker/colorpicker-input.d.ts +92 -0
  24. package/colorpicker/colorpicker-module.d.ts +15 -0
  25. package/colorpicker/colorpicker-toggle.d.ts +38 -0
  26. package/colorpicker/colorpicker-toggle.scss +23 -0
  27. package/colorpicker/colorpicker.d.ts +131 -0
  28. package/{extensions.d.ts → colorpicker/mtxColorpicker.d.ts} +1 -0
  29. package/colorpicker/package.json +10 -0
  30. package/colorpicker/public-api.d.ts +5 -0
  31. package/column-resize/column-resize-directives/column-resize-flex.d.ts +3 -0
  32. package/column-resize/column-resize-directives/column-resize.d.ts +3 -0
  33. package/column-resize/column-resize-module.d.ts +6 -7
  34. package/column-resize/column-resize-notifier.d.ts +5 -7
  35. package/column-resize/column-resize.d.ts +3 -0
  36. package/column-resize/column-size-store.d.ts +3 -7
  37. package/column-resize/event-dispatcher.d.ts +3 -0
  38. package/column-resize/mtxColumnResize.d.ts +1 -0
  39. package/column-resize/overlay-handle.d.ts +3 -0
  40. package/column-resize/package.json +5 -6
  41. package/column-resize/resizable.d.ts +3 -0
  42. package/column-resize/resize-strategy.d.ts +7 -0
  43. package/core/datetime/datetime.module.d.ts +8 -0
  44. package/core/datetime/native-datetime-adapter.d.ts +3 -0
  45. package/core/density/private/_compatibility.scss +74 -0
  46. package/core/mtxCore.d.ts +1 -0
  47. package/core/package.json +5 -6
  48. package/{pipes/public-api.d.ts → core/pipes/index.d.ts} +0 -0
  49. package/core/pipes/pipes.module.d.ts +8 -0
  50. package/{pipes → core/pipes}/to-observable.pipe.d.ts +3 -0
  51. package/core/public-api.d.ts +1 -0
  52. package/core/style/_elevation.scss +197 -0
  53. package/core/style/_private.scss +41 -0
  54. package/core/style/_variables.scss +44 -0
  55. package/core/style/_vendor-prefixes.scss +60 -0
  56. package/core/theming/_palette.scss +746 -0
  57. package/core/theming/_theming.scss +430 -0
  58. package/core/typography/_typography-utils.scss +101 -0
  59. package/core/typography/_typography.scss +273 -0
  60. package/datetimepicker/_datetimepicker-theme.scss +17 -5
  61. package/datetimepicker/calendar-body.d.ts +3 -0
  62. package/datetimepicker/calendar-body.scss +5 -4
  63. package/datetimepicker/calendar.d.ts +6 -11
  64. package/datetimepicker/clock.d.ts +13 -9
  65. package/datetimepicker/datetimepicker-animations.d.ts +7 -5
  66. package/datetimepicker/datetimepicker-input.d.ts +7 -2
  67. package/datetimepicker/datetimepicker-module.d.ts +20 -0
  68. package/datetimepicker/datetimepicker-toggle.d.ts +20 -2
  69. package/datetimepicker/datetimepicker-toggle.scss +23 -0
  70. package/datetimepicker/datetimepicker-types.d.ts +1 -0
  71. package/datetimepicker/datetimepicker.d.ts +73 -25
  72. package/datetimepicker/month-view.d.ts +7 -4
  73. package/datetimepicker/mtxDatetimepicker.d.ts +1 -2
  74. package/datetimepicker/multi-year-view.d.ts +7 -4
  75. package/datetimepicker/package.json +5 -6
  76. package/datetimepicker/public-api.d.ts +4 -1
  77. package/datetimepicker/year-view.d.ts +7 -4
  78. package/dialog/{dialog.config.d.ts → dialog-config.d.ts} +0 -0
  79. package/dialog/dialog.component.d.ts +4 -1
  80. package/dialog/dialog.d.ts +4 -1
  81. package/dialog/dialog.module.d.ts +10 -0
  82. package/dialog/mtxDialog.d.ts +1 -0
  83. package/dialog/package.json +5 -6
  84. package/dialog/public-api.d.ts +2 -2
  85. package/esm2020/alert/alert.component.mjs +52 -0
  86. package/esm2020/alert/alert.module.mjs +18 -0
  87. package/{esm2015/alert/mtxAlert.js → esm2020/alert/mtxAlert.mjs} +0 -0
  88. package/{esm2015/alert/public-api.js → esm2020/alert/public-api.mjs} +0 -0
  89. package/esm2020/button/button-loading.directive.mjs +79 -0
  90. package/esm2020/button/button.module.mjs +20 -0
  91. package/{esm2015/button/mtxButton.js → esm2020/button/mtxButton.mjs} +0 -0
  92. package/{esm2015/button/public-api.js → esm2020/button/public-api.mjs} +0 -0
  93. package/esm2020/checkbox-group/checkbox-group.component.mjs +234 -0
  94. package/{esm2015/checkbox-group/checkbox-group.interface.js → esm2020/checkbox-group/checkbox-group.interface.mjs} +0 -0
  95. package/esm2020/checkbox-group/checkbox-group.module.mjs +21 -0
  96. package/{esm2015/checkbox-group/mtxCheckboxGroup.js → esm2020/checkbox-group/mtxCheckboxGroup.mjs} +0 -0
  97. package/{esm2015/checkbox-group/public-api.js → esm2020/checkbox-group/public-api.mjs} +0 -0
  98. package/esm2020/colorpicker/colorpicker-animations.mjs +16 -0
  99. package/esm2020/colorpicker/colorpicker-input.mjs +228 -0
  100. package/esm2020/colorpicker/colorpicker-module.mjs +65 -0
  101. package/esm2020/colorpicker/colorpicker-toggle.mjs +90 -0
  102. package/esm2020/colorpicker/colorpicker.mjs +363 -0
  103. package/esm2020/colorpicker/mtxColorpicker.mjs +5 -0
  104. package/esm2020/colorpicker/public-api.mjs +6 -0
  105. package/esm2020/column-resize/column-resize-directives/column-resize-flex.mjs +45 -0
  106. package/esm2020/column-resize/column-resize-directives/column-resize.mjs +45 -0
  107. package/{esm2015/column-resize/column-resize-directives/constants.js → esm2020/column-resize/column-resize-directives/constants.mjs} +0 -0
  108. package/esm2020/column-resize/column-resize-module.mjs +28 -0
  109. package/esm2020/column-resize/column-resize-notifier.mjs +47 -0
  110. package/esm2020/column-resize/column-resize.mjs +82 -0
  111. package/esm2020/column-resize/column-size-store.mjs +20 -0
  112. package/esm2020/column-resize/event-dispatcher.mjs +67 -0
  113. package/{esm2015/column-resize/mtxColumnResize.js → esm2020/column-resize/mtxColumnResize.mjs} +0 -0
  114. package/esm2020/column-resize/overlay-handle.mjs +146 -0
  115. package/{esm2015/column-resize/polyfill.js → esm2020/column-resize/polyfill.mjs} +0 -0
  116. package/{esm2015/column-resize/public-api.js → esm2020/column-resize/public-api.mjs} +0 -0
  117. package/esm2020/column-resize/resizable.mjs +199 -0
  118. package/{esm2015/column-resize/resize-ref.js → esm2020/column-resize/resize-ref.mjs} +0 -0
  119. package/esm2020/column-resize/resize-strategy.mjs +232 -0
  120. package/{esm2015/column-resize/selectors.js → esm2020/column-resize/selectors.mjs} +0 -0
  121. package/{esm2015/core/datetime/datetime-adapter.js → esm2020/core/datetime/datetime-adapter.mjs} +0 -0
  122. package/{esm2015/core/datetime/datetime-formats.js → esm2020/core/datetime/datetime-formats.mjs} +0 -0
  123. package/esm2020/core/datetime/datetime.module.mjs +42 -0
  124. package/{esm2015/core/datetime/index.js → esm2020/core/datetime/index.mjs} +0 -0
  125. package/esm2020/core/datetime/native-datetime-adapter.mjs +138 -0
  126. package/{esm2015/core/datetime/native-datetime-formats.js → esm2020/core/datetime/native-datetime-formats.mjs} +0 -0
  127. package/{esm2015/core/mtxCore.js → esm2020/core/mtxCore.mjs} +0 -0
  128. package/esm2020/core/pipes/index.mjs +3 -0
  129. package/esm2020/core/pipes/pipes.module.mjs +18 -0
  130. package/esm2020/core/pipes/to-observable.pipe.mjs +15 -0
  131. package/{esm2015/core/public-api.js → esm2020/core/public-api.mjs} +2 -1
  132. package/esm2020/datetimepicker/calendar-body.mjs +78 -0
  133. package/esm2020/datetimepicker/calendar.mjs +618 -0
  134. package/esm2020/datetimepicker/clock.mjs +277 -0
  135. package/esm2020/datetimepicker/datetimepicker-animations.mjs +44 -0
  136. package/{esm2015/datetimepicker/datetimepicker-errors.js → esm2020/datetimepicker/datetimepicker-errors.mjs} +0 -0
  137. package/{esm2015/datetimepicker/datetimepicker-filtertype.js → esm2020/datetimepicker/datetimepicker-filtertype.mjs} +0 -0
  138. package/esm2020/datetimepicker/datetimepicker-input.mjs +344 -0
  139. package/esm2020/datetimepicker/datetimepicker-module.mjs +75 -0
  140. package/esm2020/datetimepicker/datetimepicker-toggle.mjs +94 -0
  141. package/esm2020/datetimepicker/datetimepicker-types.mjs +2 -0
  142. package/esm2020/datetimepicker/datetimepicker.mjs +492 -0
  143. package/esm2020/datetimepicker/month-view.mjs +148 -0
  144. package/esm2020/datetimepicker/mtxDatetimepicker.mjs +5 -0
  145. package/esm2020/datetimepicker/multi-year-view.mjs +214 -0
  146. package/esm2020/datetimepicker/public-api.mjs +14 -0
  147. package/esm2020/datetimepicker/year-view.mjs +138 -0
  148. package/{esm2015/dialog/dialog.config.js → esm2020/dialog/dialog-config.mjs} +1 -1
  149. package/esm2020/dialog/dialog.component.mjs +33 -0
  150. package/esm2020/dialog/dialog.mjs +74 -0
  151. package/esm2020/dialog/dialog.module.mjs +24 -0
  152. package/{esm2015/dialog/mtxDialog.js → esm2020/dialog/mtxDialog.mjs} +0 -0
  153. package/esm2020/dialog/public-api.mjs +5 -0
  154. package/esm2020/form-group/form-group.component.mjs +37 -0
  155. package/esm2020/form-group/form-group.module.mjs +18 -0
  156. package/{esm2015/form-group/mtxFormGroup.js → esm2020/form-group/mtxFormGroup.mjs} +0 -0
  157. package/{esm2015/form-group/public-api.js → esm2020/form-group/public-api.mjs} +0 -0
  158. package/esm2020/grid/cell.component.mjs +108 -0
  159. package/esm2020/grid/column-menu.component.mjs +95 -0
  160. package/esm2020/grid/column-resize/column-resize-directives/column-resize-flex.mjs +37 -0
  161. package/esm2020/grid/column-resize/column-resize-directives/column-resize.mjs +37 -0
  162. package/{esm2015/grid/column-resize/column-resize-directives/common.js → esm2020/grid/column-resize/column-resize-directives/common.mjs} +0 -0
  163. package/esm2020/grid/column-resize/column-resize-module.mjs +42 -0
  164. package/esm2020/grid/column-resize/overlay-handle.mjs +60 -0
  165. package/{esm2015/grid/column-resize/resizable-directives/common.js → esm2020/grid/column-resize/resizable-directives/common.mjs} +0 -0
  166. package/esm2020/grid/column-resize/resizable-directives/resizable.mjs +62 -0
  167. package/esm2020/grid/column-resize/resize-strategy.mjs +42 -0
  168. package/esm2020/grid/expansion-toggle.directive.mjs +64 -0
  169. package/esm2020/grid/grid.component.mjs +556 -0
  170. package/{esm2015/grid/grid.interface.js → esm2020/grid/grid.interface.mjs} +0 -0
  171. package/esm2020/grid/grid.module.mjs +117 -0
  172. package/esm2020/grid/grid.service.mjs +44 -0
  173. package/{esm2015/grid/mtxGrid.js → esm2020/grid/mtxGrid.mjs} +0 -0
  174. package/esm2020/grid/public-api.mjs +16 -0
  175. package/esm2020/loader/loader.component.mjs +63 -0
  176. package/esm2020/loader/loader.module.mjs +20 -0
  177. package/{esm2015/loader/mtxLoader.js → esm2020/loader/mtxLoader.mjs} +0 -0
  178. package/{esm2015/loader/public-api.js → esm2020/loader/public-api.mjs} +0 -0
  179. package/esm2020/ng-matero-extensions.mjs +5 -0
  180. package/{esm2015/popover/mtxPopover.js → esm2020/popover/mtxPopover.mjs} +0 -0
  181. package/{esm2015/popover/popover-animations.js → esm2020/popover/popover-animations.mjs} +0 -0
  182. package/{esm2015/popover/popover-errors.js → esm2020/popover/popover-errors.mjs} +0 -0
  183. package/{esm2015/popover/popover-interfaces.js → esm2020/popover/popover-interfaces.mjs} +0 -0
  184. package/esm2020/popover/popover-module.mjs +22 -0
  185. package/esm2020/popover/popover-target.mjs +17 -0
  186. package/esm2020/popover/popover-trigger.mjs +441 -0
  187. package/{esm2015/popover/popover-types.js → esm2020/popover/popover-types.mjs} +0 -0
  188. package/esm2020/popover/popover.mjs +334 -0
  189. package/{esm2015/popover/public-api.js → esm2020/popover/public-api.mjs} +0 -0
  190. package/{esm2015/progress/mtxProgress.js → esm2020/progress/mtxProgress.mjs} +0 -0
  191. package/esm2020/progress/progress.component.mjs +55 -0
  192. package/esm2020/progress/progress.module.mjs +18 -0
  193. package/{esm2015/progress/public-api.js → esm2020/progress/public-api.mjs} +0 -0
  194. package/esm2020/public-api.mjs +5 -0
  195. package/{esm2015/select/mtxSelect.js → esm2020/select/mtxSelect.mjs} +0 -0
  196. package/{esm2015/select/option.component.js → esm2020/select/option.component.mjs} +18 -26
  197. package/{esm2015/select/public-api.js → esm2020/select/public-api.mjs} +0 -0
  198. package/esm2020/select/select.component.mjs +458 -0
  199. package/esm2020/select/select.module.mjs +74 -0
  200. package/esm2020/select/templates.directive.mjs +124 -0
  201. package/{esm2015/slider/mtxSlider.js → esm2020/slider/mtxSlider.mjs} +0 -0
  202. package/{esm2015/slider/public-api.js → esm2020/slider/public-api.mjs} +0 -0
  203. package/esm2020/slider/slider-module.mjs +19 -0
  204. package/esm2020/slider/slider.mjs +1115 -0
  205. package/{esm2015/split/interface.js → esm2020/split/interface.mjs} +0 -0
  206. package/{esm2015/split/mtxSplit.js → esm2020/split/mtxSplit.mjs} +0 -0
  207. package/{esm2015/split/public-api.js → esm2020/split/public-api.mjs} +0 -0
  208. package/esm2020/split/split-pane.directive.mjs +149 -0
  209. package/esm2020/split/split.component.mjs +619 -0
  210. package/esm2020/split/split.module.mjs +19 -0
  211. package/esm2020/split/utils.mjs +222 -0
  212. package/{esm2015/text3d/mtxText3d.js → esm2020/text3d/mtxText3d.mjs} +0 -0
  213. package/{esm2015/text3d/public-api.js → esm2020/text3d/public-api.mjs} +0 -0
  214. package/esm2020/text3d/text3d.component.mjs +45 -0
  215. package/esm2020/text3d/text3d.module.mjs +18 -0
  216. package/{esm2015/tooltip/mtxTooltip.js → esm2020/tooltip/mtxTooltip.mjs} +0 -0
  217. package/{esm2015/tooltip/public-api.js → esm2020/tooltip/public-api.mjs} +0 -0
  218. package/{esm2015/tooltip/tooltip-animations.js → esm2020/tooltip/tooltip-animations.mjs} +0 -0
  219. package/esm2020/tooltip/tooltip-module.mjs +23 -0
  220. package/esm2020/tooltip/tooltip.mjs +674 -0
  221. package/fesm2015/mtxAlert.mjs +74 -0
  222. package/fesm2015/mtxAlert.mjs.map +1 -0
  223. package/fesm2015/mtxButton.mjs +102 -0
  224. package/fesm2015/mtxButton.mjs.map +1 -0
  225. package/fesm2015/mtxCheckboxGroup.mjs +257 -0
  226. package/fesm2015/mtxCheckboxGroup.mjs.map +1 -0
  227. package/fesm2015/mtxColorpicker.mjs +754 -0
  228. package/fesm2015/mtxColorpicker.mjs.map +1 -0
  229. package/fesm2015/{mtxColumnResize.js → mtxColumnResize.mjs} +108 -145
  230. package/fesm2015/mtxColumnResize.mjs.map +1 -0
  231. package/fesm2015/mtxCore.mjs +362 -0
  232. package/fesm2015/mtxCore.mjs.map +1 -0
  233. package/fesm2015/mtxDatetimepicker.mjs +2474 -0
  234. package/fesm2015/mtxDatetimepicker.mjs.map +1 -0
  235. package/fesm2015/mtxDialog.mjs +128 -0
  236. package/fesm2015/mtxDialog.mjs.map +1 -0
  237. package/fesm2015/mtxFormGroup.mjs +59 -0
  238. package/fesm2015/mtxFormGroup.mjs.map +1 -0
  239. package/fesm2015/mtxGrid.mjs +1271 -0
  240. package/fesm2015/mtxGrid.mjs.map +1 -0
  241. package/fesm2015/mtxLoader.mjs +87 -0
  242. package/fesm2015/mtxLoader.mjs.map +1 -0
  243. package/fesm2015/mtxPopover.mjs +865 -0
  244. package/fesm2015/mtxPopover.mjs.map +1 -0
  245. package/fesm2015/mtxProgress.mjs +77 -0
  246. package/fesm2015/mtxProgress.mjs.map +1 -0
  247. package/fesm2015/mtxSelect.mjs +712 -0
  248. package/fesm2015/mtxSelect.mjs.map +1 -0
  249. package/fesm2015/mtxSlider.mjs +1139 -0
  250. package/fesm2015/mtxSlider.mjs.map +1 -0
  251. package/fesm2015/{mtxSplit.js → mtxSplit.mjs} +85 -98
  252. package/fesm2015/mtxSplit.mjs.map +1 -0
  253. package/fesm2015/mtxText3d.mjs +67 -0
  254. package/fesm2015/mtxText3d.mjs.map +1 -0
  255. package/fesm2015/{mtxTooltip.js → mtxTooltip.mjs} +85 -86
  256. package/fesm2015/mtxTooltip.mjs.map +1 -0
  257. package/fesm2015/ng-matero-extensions.mjs +9 -0
  258. package/fesm2015/ng-matero-extensions.mjs.map +1 -0
  259. package/fesm2020/mtxAlert.mjs +74 -0
  260. package/fesm2020/mtxAlert.mjs.map +1 -0
  261. package/fesm2020/mtxButton.mjs +102 -0
  262. package/fesm2020/mtxButton.mjs.map +1 -0
  263. package/fesm2020/mtxCheckboxGroup.mjs +257 -0
  264. package/fesm2020/mtxCheckboxGroup.mjs.map +1 -0
  265. package/fesm2020/mtxColorpicker.mjs +750 -0
  266. package/fesm2020/mtxColorpicker.mjs.map +1 -0
  267. package/fesm2020/mtxColumnResize.mjs +953 -0
  268. package/fesm2020/mtxColumnResize.mjs.map +1 -0
  269. package/{fesm2015/mtxCore.js → fesm2020/mtxCore.mjs} +75 -42
  270. package/fesm2020/mtxCore.mjs.map +1 -0
  271. package/fesm2020/mtxDatetimepicker.mjs +2462 -0
  272. package/fesm2020/mtxDatetimepicker.mjs.map +1 -0
  273. package/fesm2020/mtxDialog.mjs +129 -0
  274. package/fesm2020/mtxDialog.mjs.map +1 -0
  275. package/fesm2020/mtxFormGroup.mjs +59 -0
  276. package/fesm2020/mtxFormGroup.mjs.map +1 -0
  277. package/fesm2020/mtxGrid.mjs +1259 -0
  278. package/fesm2020/mtxGrid.mjs.map +1 -0
  279. package/fesm2020/mtxLoader.mjs +87 -0
  280. package/fesm2020/mtxLoader.mjs.map +1 -0
  281. package/{fesm2015/mtxPopover.js → fesm2020/mtxPopover.mjs} +120 -111
  282. package/fesm2020/mtxPopover.mjs.map +1 -0
  283. package/fesm2020/mtxProgress.mjs +77 -0
  284. package/fesm2020/mtxProgress.mjs.map +1 -0
  285. package/fesm2020/mtxSelect.mjs +709 -0
  286. package/fesm2020/mtxSelect.mjs.map +1 -0
  287. package/{fesm2015/mtxSlider.js → fesm2020/mtxSlider.mjs} +97 -94
  288. package/fesm2020/mtxSlider.mjs.map +1 -0
  289. package/fesm2020/mtxSplit.mjs +1007 -0
  290. package/fesm2020/mtxSplit.mjs.map +1 -0
  291. package/fesm2020/mtxText3d.mjs +67 -0
  292. package/fesm2020/mtxText3d.mjs.map +1 -0
  293. package/fesm2020/mtxTooltip.mjs +718 -0
  294. package/fesm2020/mtxTooltip.mjs.map +1 -0
  295. package/fesm2020/ng-matero-extensions.mjs +9 -0
  296. package/fesm2020/ng-matero-extensions.mjs.map +1 -0
  297. package/form-group/_form-group-theme.scss +1 -1
  298. package/form-group/form-group.component.d.ts +5 -4
  299. package/form-group/form-group.module.d.ts +6 -0
  300. package/form-group/mtxFormGroup.d.ts +1 -0
  301. package/form-group/package.json +5 -6
  302. package/grid/_grid-theme.scss +1 -1
  303. package/grid/cell.component.d.ts +3 -0
  304. package/grid/column-menu.component.d.ts +3 -0
  305. package/grid/column-menu.component.scss +1 -1
  306. package/grid/column-resize/_column-resize.scss +3 -3
  307. package/grid/column-resize/column-resize-directives/column-resize-flex.d.ts +3 -0
  308. package/grid/column-resize/column-resize-directives/column-resize.d.ts +3 -0
  309. package/grid/column-resize/column-resize-module.d.ts +12 -7
  310. package/grid/column-resize/overlay-handle.d.ts +3 -0
  311. package/grid/column-resize/resizable-directives/resizable.d.ts +3 -0
  312. package/grid/column-resize/resize-strategy.d.ts +3 -0
  313. package/grid/expansion-toggle.directive.d.ts +3 -0
  314. package/grid/grid.component.d.ts +20 -1
  315. package/grid/grid.module.d.ts +26 -0
  316. package/grid/grid.service.d.ts +3 -0
  317. package/grid/mtxGrid.d.ts +1 -0
  318. package/grid/package.json +5 -6
  319. package/grid/public-api.d.ts +0 -1
  320. package/loader/_loader-theme.scss +1 -1
  321. package/loader/loader.component.d.ts +7 -1
  322. package/loader/loader.module.d.ts +8 -0
  323. package/loader/mtxLoader.d.ts +1 -0
  324. package/loader/package.json +5 -6
  325. package/{color-picker/mtxColorPicker.d.ts → ng-matero-extensions.d.ts} +1 -0
  326. package/package.json +178 -15
  327. package/popover/_popover-theme.scss +1 -1
  328. package/popover/mtxPopover.d.ts +1 -0
  329. package/popover/package.json +5 -6
  330. package/popover/popover-module.d.ts +10 -0
  331. package/popover/popover-target.d.ts +3 -0
  332. package/popover/popover-trigger.d.ts +3 -0
  333. package/popover/popover.d.ts +3 -0
  334. package/progress/_progress-theme.scss +2 -2
  335. package/progress/mtxProgress.d.ts +1 -0
  336. package/progress/package.json +5 -6
  337. package/progress/progress.component.d.ts +3 -0
  338. package/progress/progress.module.d.ts +6 -0
  339. package/public-api.d.ts +2 -19
  340. package/select/_select-theme.scss +1 -1
  341. package/select/mtxSelect.d.ts +1 -0
  342. package/select/option.component.d.ts +3 -0
  343. package/select/package.json +5 -6
  344. package/select/select.component.d.ts +3 -0
  345. package/select/select.component.scss +1 -1
  346. package/select/select.module.d.ts +10 -0
  347. package/select/templates.directive.d.ts +23 -0
  348. package/slider/_slider-theme.scss +4 -4
  349. package/slider/mtxSlider.d.ts +1 -0
  350. package/slider/package.json +5 -6
  351. package/slider/slider-module.d.ts +7 -0
  352. package/slider/slider.d.ts +4 -1
  353. package/slider/slider.scss +7 -7
  354. package/split/_split-theme.scss +10 -3
  355. package/split/mtxSplit.d.ts +1 -0
  356. package/split/package.json +5 -6
  357. package/split/split-pane.directive.d.ts +3 -0
  358. package/split/split.component.d.ts +12 -1
  359. package/split/split.module.d.ts +7 -0
  360. package/text3d/_text3d-theme.scss +2 -2
  361. package/text3d/mtxText3d.d.ts +1 -0
  362. package/text3d/package.json +5 -6
  363. package/text3d/text3d.component.d.ts +3 -1
  364. package/text3d/text3d.module.d.ts +6 -0
  365. package/tooltip/_tooltip-theme.scss +3 -3
  366. package/tooltip/mtxTooltip.d.ts +1 -0
  367. package/tooltip/package.json +5 -6
  368. package/tooltip/tooltip-module.d.ts +10 -0
  369. package/tooltip/tooltip.d.ts +5 -0
  370. package/tooltip/tooltip.scss +1 -1
  371. package/alert/mtxAlert.metadata.json +0 -1
  372. package/bundles/extensions.umd.js +0 -164
  373. package/bundles/extensions.umd.js.map +0 -1
  374. package/bundles/mtxAlert.umd.js +0 -101
  375. package/bundles/mtxAlert.umd.js.map +0 -1
  376. package/bundles/mtxButton.umd.js +0 -119
  377. package/bundles/mtxButton.umd.js.map +0 -1
  378. package/bundles/mtxCheckboxGroup.umd.js +0 -284
  379. package/bundles/mtxCheckboxGroup.umd.js.map +0 -1
  380. package/bundles/mtxColorPicker.umd.js +0 -337
  381. package/bundles/mtxColorPicker.umd.js.map +0 -1
  382. package/bundles/mtxColumnResize.umd.js +0 -1339
  383. package/bundles/mtxColumnResize.umd.js.map +0 -1
  384. package/bundles/mtxCore.umd.js +0 -670
  385. package/bundles/mtxCore.umd.js.map +0 -1
  386. package/bundles/mtxDatetimepicker.umd.js +0 -2590
  387. package/bundles/mtxDatetimepicker.umd.js.map +0 -1
  388. package/bundles/mtxDialog.umd.js +0 -160
  389. package/bundles/mtxDialog.umd.js.map +0 -1
  390. package/bundles/mtxFormGroup.umd.js +0 -80
  391. package/bundles/mtxFormGroup.umd.js.map +0 -1
  392. package/bundles/mtxGrid.umd.js +0 -1581
  393. package/bundles/mtxGrid.umd.js.map +0 -1
  394. package/bundles/mtxLoader.umd.js +0 -104
  395. package/bundles/mtxLoader.umd.js.map +0 -1
  396. package/bundles/mtxPipes.umd.js +0 -44
  397. package/bundles/mtxPipes.umd.js.map +0 -1
  398. package/bundles/mtxPopover.umd.js +0 -1260
  399. package/bundles/mtxPopover.umd.js.map +0 -1
  400. package/bundles/mtxProgress.umd.js +0 -92
  401. package/bundles/mtxProgress.umd.js.map +0 -1
  402. package/bundles/mtxSelect.umd.js +0 -1097
  403. package/bundles/mtxSelect.umd.js.map +0 -1
  404. package/bundles/mtxSlider.umd.js +0 -1551
  405. package/bundles/mtxSlider.umd.js.map +0 -1
  406. package/bundles/mtxSplit.umd.js +0 -1432
  407. package/bundles/mtxSplit.umd.js.map +0 -1
  408. package/bundles/mtxText3d.umd.js +0 -92
  409. package/bundles/mtxText3d.umd.js.map +0 -1
  410. package/bundles/mtxTooltip.umd.js +0 -1081
  411. package/bundles/mtxTooltip.umd.js.map +0 -1
  412. package/button/mtxButton.metadata.json +0 -1
  413. package/checkbox-group/mtxCheckboxGroup.metadata.json +0 -1
  414. package/color-picker/color-picker.component.d.ts +0 -120
  415. package/color-picker/color-picker.module.d.ts +0 -2
  416. package/color-picker/mtxColorPicker.metadata.json +0 -1
  417. package/color-picker/package.json +0 -11
  418. package/color-picker/public-api.d.ts +0 -2
  419. package/column-resize/mtxColumnResize.metadata.json +0 -1
  420. package/core/mtxCore.metadata.json +0 -1
  421. package/datetimepicker/datetimepicker.module.d.ts +0 -2
  422. package/datetimepicker/mtxDatetimepicker.metadata.json +0 -1
  423. package/dialog/mtxDialog.metadata.json +0 -1
  424. package/esm2015/alert/alert.component.js +0 -63
  425. package/esm2015/alert/alert.module.js +0 -14
  426. package/esm2015/button/button-loading.directive.js +0 -89
  427. package/esm2015/button/button.module.js +0 -16
  428. package/esm2015/checkbox-group/checkbox-group.component.js +0 -235
  429. package/esm2015/checkbox-group/checkbox-group.module.js +0 -17
  430. package/esm2015/color-picker/color-picker.component.js +0 -268
  431. package/esm2015/color-picker/color-picker.module.js +0 -26
  432. package/esm2015/color-picker/mtxColorPicker.js +0 -5
  433. package/esm2015/color-picker/public-api.js +0 -3
  434. package/esm2015/column-resize/column-resize-directives/column-resize-flex.js +0 -54
  435. package/esm2015/column-resize/column-resize-directives/column-resize.js +0 -54
  436. package/esm2015/column-resize/column-resize-module.js +0 -24
  437. package/esm2015/column-resize/column-resize-notifier.js +0 -54
  438. package/esm2015/column-resize/column-resize.js +0 -80
  439. package/esm2015/column-resize/column-size-store.js +0 -18
  440. package/esm2015/column-resize/event-dispatcher.js +0 -75
  441. package/esm2015/column-resize/overlay-handle.js +0 -144
  442. package/esm2015/column-resize/resizable.js +0 -197
  443. package/esm2015/column-resize/resize-strategy.js +0 -245
  444. package/esm2015/core/datetime/datetime.module.js +0 -32
  445. package/esm2015/core/datetime/native-datetime-adapter.js +0 -144
  446. package/esm2015/datetimepicker/calendar-body.js +0 -75
  447. package/esm2015/datetimepicker/calendar.js +0 -629
  448. package/esm2015/datetimepicker/clock.js +0 -283
  449. package/esm2015/datetimepicker/datetimepicker-animations.js +0 -30
  450. package/esm2015/datetimepicker/datetimepicker-input.js +0 -333
  451. package/esm2015/datetimepicker/datetimepicker-toggle.js +0 -81
  452. package/esm2015/datetimepicker/datetimepicker.js +0 -411
  453. package/esm2015/datetimepicker/datetimepicker.module.js +0 -49
  454. package/esm2015/datetimepicker/month-view.js +0 -149
  455. package/esm2015/datetimepicker/mtxDatetimepicker.js +0 -7
  456. package/esm2015/datetimepicker/multi-year-view.js +0 -214
  457. package/esm2015/datetimepicker/public-api.js +0 -11
  458. package/esm2015/datetimepicker/year-view.js +0 -140
  459. package/esm2015/dialog/dialog.component.js +0 -40
  460. package/esm2015/dialog/dialog.js +0 -81
  461. package/esm2015/dialog/dialog.module.js +0 -21
  462. package/esm2015/dialog/public-api.js +0 -5
  463. package/esm2015/extensions-experimental.module.js +0 -13
  464. package/esm2015/extensions.js +0 -5
  465. package/esm2015/extensions.module.js +0 -40
  466. package/esm2015/form-group/form-group.component.js +0 -47
  467. package/esm2015/form-group/form-group.module.js +0 -14
  468. package/esm2015/grid/cell-selection.directive.js +0 -62
  469. package/esm2015/grid/cell.component.js +0 -115
  470. package/esm2015/grid/column-menu.component.js +0 -72
  471. package/esm2015/grid/column-resize/column-resize-directives/column-resize-flex.js +0 -47
  472. package/esm2015/grid/column-resize/column-resize-directives/column-resize.js +0 -47
  473. package/esm2015/grid/column-resize/column-resize-module.js +0 -36
  474. package/esm2015/grid/column-resize/overlay-handle.js +0 -68
  475. package/esm2015/grid/column-resize/resizable-directives/resizable.js +0 -75
  476. package/esm2015/grid/column-resize/resize-strategy.js +0 -45
  477. package/esm2015/grid/expansion-toggle.directive.js +0 -62
  478. package/esm2015/grid/grid.component.js +0 -418
  479. package/esm2015/grid/grid.module.js +0 -69
  480. package/esm2015/grid/grid.service.js +0 -50
  481. package/esm2015/grid/public-api.js +0 -17
  482. package/esm2015/loader/loader.component.js +0 -66
  483. package/esm2015/loader/loader.module.js +0 -16
  484. package/esm2015/pipes/mtxPipes.js +0 -5
  485. package/esm2015/pipes/pipes.module.js +0 -14
  486. package/esm2015/pipes/public-api.js +0 -3
  487. package/esm2015/pipes/to-observable.pipe.js +0 -12
  488. package/esm2015/popover/popover-module.js +0 -18
  489. package/esm2015/popover/popover-target.js +0 -24
  490. package/esm2015/popover/popover-trigger.js +0 -434
  491. package/esm2015/popover/popover.js +0 -326
  492. package/esm2015/progress/progress.component.js +0 -54
  493. package/esm2015/progress/progress.module.js +0 -14
  494. package/esm2015/public-api.js +0 -23
  495. package/esm2015/select/select.component.js +0 -380
  496. package/esm2015/select/select.module.js +0 -46
  497. package/esm2015/select/templates.directive.js +0 -211
  498. package/esm2015/slider/slider-module.js +0 -15
  499. package/esm2015/slider/slider.js +0 -1115
  500. package/esm2015/split/split-pane.directive.js +0 -156
  501. package/esm2015/split/split.component.js +0 -622
  502. package/esm2015/split/split.module.js +0 -15
  503. package/esm2015/split/utils.js +0 -227
  504. package/esm2015/text3d/text3d.component.js +0 -53
  505. package/esm2015/text3d/text3d.module.js +0 -14
  506. package/esm2015/tooltip/tooltip-module.js +0 -20
  507. package/esm2015/tooltip/tooltip.js +0 -681
  508. package/extensions-experimental.module.d.ts +0 -2
  509. package/extensions.metadata.json +0 -1
  510. package/extensions.module.d.ts +0 -2
  511. package/fesm2015/extensions.js +0 -80
  512. package/fesm2015/extensions.js.map +0 -1
  513. package/fesm2015/mtxAlert.js +0 -82
  514. package/fesm2015/mtxAlert.js.map +0 -1
  515. package/fesm2015/mtxButton.js +0 -108
  516. package/fesm2015/mtxButton.js.map +0 -1
  517. package/fesm2015/mtxCheckboxGroup.js +0 -255
  518. package/fesm2015/mtxCheckboxGroup.js.map +0 -1
  519. package/fesm2015/mtxColorPicker.js +0 -295
  520. package/fesm2015/mtxColorPicker.js.map +0 -1
  521. package/fesm2015/mtxColumnResize.js.map +0 -1
  522. package/fesm2015/mtxCore.js.map +0 -1
  523. package/fesm2015/mtxDatetimepicker.js +0 -2355
  524. package/fesm2015/mtxDatetimepicker.js.map +0 -1
  525. package/fesm2015/mtxDialog.js +0 -141
  526. package/fesm2015/mtxDialog.js.map +0 -1
  527. package/fesm2015/mtxFormGroup.js +0 -66
  528. package/fesm2015/mtxFormGroup.js.map +0 -1
  529. package/fesm2015/mtxGrid.js +0 -1186
  530. package/fesm2015/mtxGrid.js.map +0 -1
  531. package/fesm2015/mtxLoader.js +0 -87
  532. package/fesm2015/mtxLoader.js.map +0 -1
  533. package/fesm2015/mtxPipes.js +0 -31
  534. package/fesm2015/mtxPipes.js.map +0 -1
  535. package/fesm2015/mtxPopover.js.map +0 -1
  536. package/fesm2015/mtxProgress.js +0 -73
  537. package/fesm2015/mtxProgress.js.map +0 -1
  538. package/fesm2015/mtxSelect.js +0 -700
  539. package/fesm2015/mtxSelect.js.map +0 -1
  540. package/fesm2015/mtxSlider.js.map +0 -1
  541. package/fesm2015/mtxSplit.js.map +0 -1
  542. package/fesm2015/mtxText3d.js +0 -72
  543. package/fesm2015/mtxText3d.js.map +0 -1
  544. package/fesm2015/mtxTooltip.js.map +0 -1
  545. package/form-group/mtxFormGroup.metadata.json +0 -1
  546. package/grid/cell-selection.directive.d.ts +0 -17
  547. package/grid/mtxGrid.metadata.json +0 -1
  548. package/loader/mtxLoader.metadata.json +0 -1
  549. package/pipes/mtxPipes.d.ts +0 -4
  550. package/pipes/mtxPipes.metadata.json +0 -1
  551. package/pipes/package.json +0 -11
  552. package/pipes/pipes.module.d.ts +0 -2
  553. package/popover/mtxPopover.metadata.json +0 -1
  554. package/progress/mtxProgress.metadata.json +0 -1
  555. package/select/mtxSelect.metadata.json +0 -1
  556. package/slider/mtxSlider.metadata.json +0 -1
  557. package/split/mtxSplit.metadata.json +0 -1
  558. package/text3d/mtxText3d.metadata.json +0 -1
  559. package/tooltip/mtxTooltip.metadata.json +0 -1
@@ -0,0 +1,865 @@
1
+ import * as i0 from '@angular/core';
2
+ import { EventEmitter, TemplateRef, Component, ChangeDetectionStrategy, ViewEncapsulation, Optional, HostBinding, Input, Output, ViewChild, Directive, HostListener, NgModule } from '@angular/core';
3
+ import * as i2 from '@angular/common';
4
+ import { CommonModule } from '@angular/common';
5
+ import * as i1$1 from '@angular/cdk/overlay';
6
+ import { OverlayConfig, OverlayModule } from '@angular/cdk/overlay';
7
+ import * as i3 from '@angular/cdk/a11y';
8
+ import { isFakeMousedownFromScreenReader, A11yModule } from '@angular/cdk/a11y';
9
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
10
+ import { ESCAPE } from '@angular/cdk/keycodes';
11
+ import { trigger, state, style, transition, animate } from '@angular/animations';
12
+ import * as i1 from '@angular/cdk/bidi';
13
+ import { TemplatePortal } from '@angular/cdk/portal';
14
+ import { Subject } from 'rxjs';
15
+ import { takeUntil } from 'rxjs/operators';
16
+
17
+ /**
18
+ * Throws an exception for the case when popover trigger doesn't have a valid mtx-popover instance
19
+ */
20
+ function throwMtxPopoverMissingError() {
21
+ throw Error(`mtx-popover-trigger: must pass in an mtx-popover instance.
22
+
23
+ Example:
24
+ <mtx-popover #popover="mtxPopover"></mtx-popover>
25
+ <button [mtxPopoverTriggerFor]="popover"></button>`);
26
+ }
27
+ /**
28
+ * Throws an exception for the case when popover's mtxPopoverPosition[0] value isn't valid.
29
+ * In other words, it doesn't match 'above', 'below', 'before' or 'after'.
30
+ */
31
+ function throwMtxPopoverInvalidPositionStart() {
32
+ throw Error(`mtxPopoverPosition[0] value must be either 'above', 'below', 'before' or 'after'.
33
+ Example: <mtx-popover [position]="['below', 'after']" #popover="mtxPopover"></mtx-popover>`);
34
+ }
35
+ /**
36
+ * Throws an exception for the case when popover's mtxPopoverPosition[1] value isn't valid.
37
+ * In other words, it doesn't match 'above', 'below', 'before', 'after' or 'center'.
38
+ */
39
+ function throwMtxPopoverInvalidPositionEnd() {
40
+ throw Error(`mtxPopoverPosition[1] value must be either 'above', 'below', 'before', 'after' or 'center'.
41
+ Example: <mtx-popover [position]="['below', 'after']" #popover="mtxPopover"></mtx-popover>`);
42
+ }
43
+
44
+ /**
45
+ * Below are all the animations for the md-popover component.
46
+ * Animation duration and timing values are based on AngularJS Material.
47
+ */
48
+ /**
49
+ * This animation controls the popover panel's entry and exit from the page.
50
+ *
51
+ * When the popover panel is added to the DOM, it scales in and fades in its border.
52
+ *
53
+ * When the popover panel is removed from the DOM, it simply fades out after a brief
54
+ * delay to display the ripple.
55
+ */
56
+ const transformPopover = trigger('transformPopover', [
57
+ state('enter', style({
58
+ opacity: 1,
59
+ transform: `scale(1)`,
60
+ })),
61
+ transition('void => *', [
62
+ style({
63
+ opacity: 0,
64
+ transform: `scale(0)`,
65
+ }),
66
+ animate(`200ms cubic-bezier(0.25, 0.8, 0.25, 1)`),
67
+ ]),
68
+ transition('* => void', [animate('50ms 100ms linear', style({ opacity: 0 }))]),
69
+ ]);
70
+
71
+ class MtxPopover {
72
+ constructor(_dir, _elementRef, zone) {
73
+ this._dir = _dir;
74
+ this._elementRef = _elementRef;
75
+ this.zone = zone;
76
+ this.role = 'dialog';
77
+ /** Settings for popover, view setters and getters for more detail */
78
+ this._position = ['below', 'after'];
79
+ this._triggerEvent = 'hover';
80
+ this._scrollStrategy = 'reposition';
81
+ this._enterDelay = 100;
82
+ this._leaveDelay = 100;
83
+ this._panelOffsetX = 0;
84
+ this._panelOffsetY = 0;
85
+ this._closeOnPanelClick = false;
86
+ this._closeOnBackdropClick = true;
87
+ this._disableAnimation = false;
88
+ this._focusTrapEnabled = true;
89
+ this._focusTrapAutoCaptureEnabled = true;
90
+ this._arrowOffsetX = 20;
91
+ this._arrowOffsetY = 20;
92
+ this._arrowWidth = 16;
93
+ this._arrowHeight = 16;
94
+ /** Config object to be passed into the popover's ngClass */
95
+ this._classList = {};
96
+ /** Whether popover's `targetElement` is defined */
97
+ this.containerPositioning = false;
98
+ /** Closing disabled on popover */
99
+ this.closeDisabled = false;
100
+ /** Emits the current animation state whenever it changes. */
101
+ this._onAnimationStateChange = new EventEmitter();
102
+ /** Event emitted when the popover is closed. */
103
+ this.closed = new EventEmitter();
104
+ this.setPositionClasses();
105
+ }
106
+ /** Position of the popover. */
107
+ get position() {
108
+ return this._position;
109
+ }
110
+ set position(value) {
111
+ if (!['before', 'after', 'above', 'below'].includes(value[0])) {
112
+ throwMtxPopoverInvalidPositionStart();
113
+ }
114
+ if (!['before', 'after', 'above', 'below', 'center'].includes(value[1])) {
115
+ throwMtxPopoverInvalidPositionEnd();
116
+ }
117
+ this._position = value;
118
+ this.setPositionClasses();
119
+ }
120
+ /** Popover trigger event */
121
+ get triggerEvent() {
122
+ return this._triggerEvent;
123
+ }
124
+ set triggerEvent(value) {
125
+ this._triggerEvent = value;
126
+ }
127
+ /** Popover scroll strategy */
128
+ get scrollStrategy() {
129
+ return this._scrollStrategy;
130
+ }
131
+ set scrollStrategy(value) {
132
+ this._scrollStrategy = value;
133
+ }
134
+ /** Popover enter delay */
135
+ get enterDelay() {
136
+ return this._enterDelay;
137
+ }
138
+ set enterDelay(value) {
139
+ this._enterDelay = value;
140
+ }
141
+ /** Popover leave delay */
142
+ get leaveDelay() {
143
+ return this._leaveDelay;
144
+ }
145
+ set leaveDelay(value) {
146
+ this._leaveDelay = value;
147
+ }
148
+ /** Popover target offset x */
149
+ get xOffset() {
150
+ return this._panelOffsetX;
151
+ }
152
+ set xOffset(value) {
153
+ this._panelOffsetX = value;
154
+ }
155
+ /** Popover target offset y */
156
+ get yOffset() {
157
+ return this._panelOffsetY;
158
+ }
159
+ set yOffset(value) {
160
+ this._panelOffsetY = value;
161
+ }
162
+ /** Popover arrow offset x */
163
+ get arrowOffsetX() {
164
+ return this._arrowOffsetX;
165
+ }
166
+ set arrowOffsetX(value) {
167
+ this._arrowOffsetX = value;
168
+ }
169
+ /** Popover arrow offset y */
170
+ get arrowOffsetY() {
171
+ return this._arrowOffsetY;
172
+ }
173
+ set arrowOffsetY(value) {
174
+ this._arrowOffsetY = value;
175
+ }
176
+ /** Popover arrow width */
177
+ get arrowWidth() {
178
+ return this._arrowWidth;
179
+ }
180
+ set arrowWidth(value) {
181
+ this._arrowWidth = value;
182
+ }
183
+ /** Popover arrow height */
184
+ get arrowHeight() {
185
+ return this._arrowHeight;
186
+ }
187
+ set arrowHeight(value) {
188
+ this._arrowHeight = value;
189
+ }
190
+ /** Popover close on container click */
191
+ get closeOnPanelClick() {
192
+ return this._closeOnPanelClick;
193
+ }
194
+ set closeOnPanelClick(value) {
195
+ this._closeOnPanelClick = coerceBooleanProperty(value);
196
+ }
197
+ /** Popover close on backdrop click */
198
+ get closeOnBackdropClick() {
199
+ return this._closeOnBackdropClick;
200
+ }
201
+ set closeOnBackdropClick(value) {
202
+ this._closeOnBackdropClick = coerceBooleanProperty(value);
203
+ }
204
+ /** Disable animations of popover and all child elements */
205
+ get disableAnimation() {
206
+ return this._disableAnimation;
207
+ }
208
+ set disableAnimation(value) {
209
+ this._disableAnimation = coerceBooleanProperty(value);
210
+ }
211
+ /** Popover focus trap using cdkTrapFocus */
212
+ get focusTrapEnabled() {
213
+ return this._focusTrapEnabled;
214
+ }
215
+ set focusTrapEnabled(value) {
216
+ this._focusTrapEnabled = coerceBooleanProperty(value);
217
+ }
218
+ /** Popover focus trap auto capture using cdkTrapFocusAutoCapture */
219
+ get focusTrapAutoCaptureEnabled() {
220
+ return this._focusTrapAutoCaptureEnabled;
221
+ }
222
+ set focusTrapAutoCaptureEnabled(value) {
223
+ this._focusTrapAutoCaptureEnabled = coerceBooleanProperty(value);
224
+ }
225
+ /**
226
+ * This method takes classes set on the host md-popover element and applies them on the
227
+ * popover template that displays in the overlay container. Otherwise, it's difficult
228
+ * to style the containing popover from outside the component.
229
+ * @param classes list of class names
230
+ */
231
+ set panelClass(classes) {
232
+ if (classes && classes.length) {
233
+ this._classList = classes.split(' ').reduce((obj, className) => {
234
+ obj[className] = true;
235
+ return obj;
236
+ }, {});
237
+ this._elementRef.nativeElement.className = '';
238
+ this.setPositionClasses();
239
+ }
240
+ }
241
+ /**
242
+ * This method takes classes set on the host md-popover element and applies them on the
243
+ * popover template that displays in the overlay container. Otherwise, it's difficult
244
+ * to style the containing popover from outside the component.
245
+ * @deprecated Use `panelClass` instead.
246
+ * @breaking-change 8.0.0
247
+ */
248
+ get classList() {
249
+ return this.panelClass;
250
+ }
251
+ set classList(classes) {
252
+ this.panelClass = classes;
253
+ }
254
+ ngOnDestroy() {
255
+ this._emitCloseEvent();
256
+ this.closed.complete();
257
+ }
258
+ /** Handle a keyboard event from the popover, delegating to the appropriate action. */
259
+ _handleKeydown(event) {
260
+ switch (event.keyCode) {
261
+ case ESCAPE:
262
+ this._emitCloseEvent();
263
+ return;
264
+ }
265
+ }
266
+ /**
267
+ * This emits a close event to which the trigger is subscribed. When emitted, the
268
+ * trigger will close the popover.
269
+ */
270
+ _emitCloseEvent() {
271
+ this.closed.emit();
272
+ }
273
+ /** Close popover on click if closeOnPanelClick is true */
274
+ onClick() {
275
+ if (this.closeOnPanelClick) {
276
+ this._emitCloseEvent();
277
+ }
278
+ }
279
+ /**
280
+ * TODO: Refactor when @angular/cdk includes feature I mentioned on github see link below.
281
+ * https://github.com/angular/material2/pull/5493#issuecomment-313085323
282
+ */
283
+ /** Disables close of popover when leaving trigger element and mouse over the popover */
284
+ onMouseOver() {
285
+ if (this.triggerEvent === 'hover') {
286
+ this.closeDisabled = true;
287
+ }
288
+ }
289
+ /** Enables close of popover when mouse leaving popover element */
290
+ onMouseLeave() {
291
+ if (this.triggerEvent === 'hover') {
292
+ this.closeDisabled = false;
293
+ this._emitCloseEvent();
294
+ }
295
+ }
296
+ // TODO: Refactor how styles are set and updated on the component, use best practices.
297
+ // TODO: If arrow left and right positioning is requested, see if flex direction can be used to work with order.
298
+ /** Sets the current styles for the popover to allow for dynamically changing settings */
299
+ setCurrentStyles(pos = this.position) {
300
+ const left = pos[1] === 'after'
301
+ ? `${this.arrowOffsetX - this.arrowWidth / 2}px`
302
+ : pos[1] === 'center'
303
+ ? `calc(50% - ${this.arrowWidth / 2}px)`
304
+ : '';
305
+ const right = pos[1] === 'before' ? `${this.arrowOffsetX - this.arrowWidth / 2}px` : '';
306
+ const bottom = pos[1] === 'above'
307
+ ? `${this.arrowOffsetY - this.arrowHeight / 2}px`
308
+ : pos[1] === 'center'
309
+ ? `calc(50% - ${this.arrowHeight / 2}px)`
310
+ : '';
311
+ const top = pos[1] === 'below' ? `${this.arrowOffsetY - this.arrowHeight / 2}px` : '';
312
+ this.popoverArrowStyles =
313
+ pos[0] === 'above' || pos[0] === 'below'
314
+ ? {
315
+ left: this._dir.value === 'ltr' ? left : right,
316
+ right: this._dir.value === 'ltr' ? right : left,
317
+ }
318
+ : {
319
+ top,
320
+ bottom,
321
+ };
322
+ }
323
+ /**
324
+ * It's necessary to set position-based classes to ensure the popover panel animation
325
+ * folds out from the correct direction.
326
+ */
327
+ setPositionClasses(pos = this.position) {
328
+ this._classList['mtx-popover-before-above'] = pos[0] === 'before' && pos[1] === 'above';
329
+ this._classList['mtx-popover-before-center'] = pos[0] === 'before' && pos[1] === 'center';
330
+ this._classList['mtx-popover-before-below'] = pos[0] === 'before' && pos[1] === 'below';
331
+ this._classList['mtx-popover-after-above'] = pos[0] === 'after' && pos[1] === 'above';
332
+ this._classList['mtx-popover-after-center'] = pos[0] === 'after' && pos[1] === 'center';
333
+ this._classList['mtx-popover-after-below'] = pos[0] === 'after' && pos[1] === 'below';
334
+ this._classList['mtx-popover-above-before'] = pos[0] === 'above' && pos[1] === 'before';
335
+ this._classList['mtx-popover-above-center'] = pos[0] === 'above' && pos[1] === 'center';
336
+ this._classList['mtx-popover-above-after'] = pos[0] === 'above' && pos[1] === 'after';
337
+ this._classList['mtx-popover-below-before'] = pos[0] === 'below' && pos[1] === 'before';
338
+ this._classList['mtx-popover-below-center'] = pos[0] === 'below' && pos[1] === 'center';
339
+ this._classList['mtx-popover-below-after'] = pos[0] === 'below' && pos[1] === 'after';
340
+ }
341
+ }
342
+ /** @nocollapse */ /** @nocollapse */ MtxPopover.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MtxPopover, deps: [{ token: i1.Directionality, optional: true }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
343
+ /** @nocollapse */ /** @nocollapse */ MtxPopover.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.0", type: MtxPopover, selector: "mtx-popover", inputs: { position: "position", triggerEvent: "triggerEvent", scrollStrategy: "scrollStrategy", enterDelay: "enterDelay", leaveDelay: "leaveDelay", xOffset: "xOffset", yOffset: "yOffset", arrowOffsetX: "arrowOffsetX", arrowOffsetY: "arrowOffsetY", arrowWidth: "arrowWidth", arrowHeight: "arrowHeight", closeOnPanelClick: "closeOnPanelClick", closeOnBackdropClick: "closeOnBackdropClick", disableAnimation: "disableAnimation", focusTrapEnabled: "focusTrapEnabled", focusTrapAutoCaptureEnabled: "focusTrapAutoCaptureEnabled", panelClass: ["class", "panelClass"], classList: "classList" }, outputs: { closed: "closed" }, host: { properties: { "attr.role": "this.role" } }, viewQueries: [{ propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true }], exportAs: ["mtxPopover"], ngImport: i0, template: "<ng-template>\r\n <div class=\"mtx-popover-panel mat-elevation-z8\" role=\"dialog\"\r\n [ngClass]=\"_classList\"\r\n [ngStyle]=\"popoverPanelStyles\"\r\n (keydown)=\"_handleKeydown($event)\"\r\n (click)=\"onClick()\"\r\n (mouseover)=\"onMouseOver()\"\r\n (mouseleave)=\"onMouseLeave()\"\r\n [@.disabled]=\"disableAnimation\"\r\n [@transformPopover]=\"'enter'\">\r\n <div class=\"mtx-popover-direction-arrow\" [ngStyle]=\"popoverArrowStyles\"></div>\r\n <div class=\"mtx-popover-content\"\r\n [ngStyle]=\"popoverContentStyles\"\r\n [cdkTrapFocus]=\"focusTrapEnabled\"\r\n [cdkTrapFocusAutoCapture]=\"focusTrapAutoCaptureEnabled\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</ng-template>\r\n", styles: [".mtx-popover-panel{max-height:calc(100vh - 48px);padding:8px;border-radius:4px;font-size:16px}.mtx-popover-panel[class*=mtx-popover-below]{margin-top:calc(.5em + 2px)}.mtx-popover-panel[class*=mtx-popover-above]{margin-bottom:calc(.5em + 2px)}.mtx-popover-panel[class*=mtx-popover-before]{margin-right:calc(.5em + 2px)}[dir=rtl] .mtx-popover-panel[class*=mtx-popover-before]{margin-right:auto;margin-left:calc(.5em + 2px)}.mtx-popover-panel[class*=mtx-popover-after]{margin-left:calc(.5em + 2px)}[dir=rtl] .mtx-popover-panel[class*=mtx-popover-after]{margin-left:auto;margin-right:calc(.5em + 2px)}.mtx-popover-direction-arrow{position:absolute}.mtx-popover-direction-arrow:before,.mtx-popover-direction-arrow:after{position:absolute;display:inline-block;content:\"\";border-width:.5em;border-style:solid}.mtx-popover-direction-arrow:after{border-width:calc(.5em - 1px)}[class*=mtx-popover-below] .mtx-popover-direction-arrow,[class*=mtx-popover-above] .mtx-popover-direction-arrow{width:1em}[class*=mtx-popover-below] .mtx-popover-direction-arrow:after,[class*=mtx-popover-above] .mtx-popover-direction-arrow:after{left:1px}[dir=rtl] [class*=mtx-popover-below] .mtx-popover-direction-arrow:after,[dir=rtl] [class*=mtx-popover-above] .mtx-popover-direction-arrow:after{right:1px;left:auto}[class*=mtx-popover-below] .mtx-popover-direction-arrow{top:0}[class*=mtx-popover-below] .mtx-popover-direction-arrow:before,[class*=mtx-popover-below] .mtx-popover-direction-arrow:after{bottom:0;border-top-width:0}[class*=mtx-popover-above] .mtx-popover-direction-arrow{bottom:0}[class*=mtx-popover-above] .mtx-popover-direction-arrow:before,[class*=mtx-popover-above] .mtx-popover-direction-arrow:after{top:0;border-bottom-width:0}[class*=mtx-popover-before] .mtx-popover-direction-arrow,[class*=mtx-popover-after] .mtx-popover-direction-arrow{height:1em}[class*=mtx-popover-before] .mtx-popover-direction-arrow:after,[class*=mtx-popover-after] .mtx-popover-direction-arrow:after{top:1px}[class*=mtx-popover-before] .mtx-popover-direction-arrow{right:0}[class*=mtx-popover-before] .mtx-popover-direction-arrow:before,[class*=mtx-popover-before] .mtx-popover-direction-arrow:after{left:0;border-right-width:0}[dir=rtl] [class*=mtx-popover-before] .mtx-popover-direction-arrow{right:auto;left:0}[dir=rtl] [class*=mtx-popover-before] .mtx-popover-direction-arrow:before,[dir=rtl] [class*=mtx-popover-before] .mtx-popover-direction-arrow:after{left:auto;right:0;border-left-width:0}[dir=rtl] [class*=mtx-popover-before] .mtx-popover-direction-arrow:before{border-right-width:.5em}[dir=rtl] [class*=mtx-popover-before] .mtx-popover-direction-arrow:after{border-right-width:calc(.5em - 1px)}[class*=mtx-popover-after] .mtx-popover-direction-arrow{left:0}[class*=mtx-popover-after] .mtx-popover-direction-arrow:before,[class*=mtx-popover-after] .mtx-popover-direction-arrow:after{right:0;border-left-width:0}[dir=rtl] [class*=mtx-popover-after] .mtx-popover-direction-arrow{left:auto;right:0}[dir=rtl] [class*=mtx-popover-after] .mtx-popover-direction-arrow:before,[dir=rtl] [class*=mtx-popover-after] .mtx-popover-direction-arrow:after{right:auto;left:0;border-right-width:0}[dir=rtl] [class*=mtx-popover-after] .mtx-popover-direction-arrow:before{border-left-width:.5em}[dir=rtl] [class*=mtx-popover-after] .mtx-popover-direction-arrow:after{border-left-width:calc(.5em - 1px)}\n"], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }], animations: [transformPopover], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
344
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MtxPopover, decorators: [{
345
+ type: Component,
346
+ args: [{ selector: 'mtx-popover', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, animations: [transformPopover], exportAs: 'mtxPopover', template: "<ng-template>\r\n <div class=\"mtx-popover-panel mat-elevation-z8\" role=\"dialog\"\r\n [ngClass]=\"_classList\"\r\n [ngStyle]=\"popoverPanelStyles\"\r\n (keydown)=\"_handleKeydown($event)\"\r\n (click)=\"onClick()\"\r\n (mouseover)=\"onMouseOver()\"\r\n (mouseleave)=\"onMouseLeave()\"\r\n [@.disabled]=\"disableAnimation\"\r\n [@transformPopover]=\"'enter'\">\r\n <div class=\"mtx-popover-direction-arrow\" [ngStyle]=\"popoverArrowStyles\"></div>\r\n <div class=\"mtx-popover-content\"\r\n [ngStyle]=\"popoverContentStyles\"\r\n [cdkTrapFocus]=\"focusTrapEnabled\"\r\n [cdkTrapFocusAutoCapture]=\"focusTrapAutoCaptureEnabled\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</ng-template>\r\n", styles: [".mtx-popover-panel{max-height:calc(100vh - 48px);padding:8px;border-radius:4px;font-size:16px}.mtx-popover-panel[class*=mtx-popover-below]{margin-top:calc(.5em + 2px)}.mtx-popover-panel[class*=mtx-popover-above]{margin-bottom:calc(.5em + 2px)}.mtx-popover-panel[class*=mtx-popover-before]{margin-right:calc(.5em + 2px)}[dir=rtl] .mtx-popover-panel[class*=mtx-popover-before]{margin-right:auto;margin-left:calc(.5em + 2px)}.mtx-popover-panel[class*=mtx-popover-after]{margin-left:calc(.5em + 2px)}[dir=rtl] .mtx-popover-panel[class*=mtx-popover-after]{margin-left:auto;margin-right:calc(.5em + 2px)}.mtx-popover-direction-arrow{position:absolute}.mtx-popover-direction-arrow:before,.mtx-popover-direction-arrow:after{position:absolute;display:inline-block;content:\"\";border-width:.5em;border-style:solid}.mtx-popover-direction-arrow:after{border-width:calc(.5em - 1px)}[class*=mtx-popover-below] .mtx-popover-direction-arrow,[class*=mtx-popover-above] .mtx-popover-direction-arrow{width:1em}[class*=mtx-popover-below] .mtx-popover-direction-arrow:after,[class*=mtx-popover-above] .mtx-popover-direction-arrow:after{left:1px}[dir=rtl] [class*=mtx-popover-below] .mtx-popover-direction-arrow:after,[dir=rtl] [class*=mtx-popover-above] .mtx-popover-direction-arrow:after{right:1px;left:auto}[class*=mtx-popover-below] .mtx-popover-direction-arrow{top:0}[class*=mtx-popover-below] .mtx-popover-direction-arrow:before,[class*=mtx-popover-below] .mtx-popover-direction-arrow:after{bottom:0;border-top-width:0}[class*=mtx-popover-above] .mtx-popover-direction-arrow{bottom:0}[class*=mtx-popover-above] .mtx-popover-direction-arrow:before,[class*=mtx-popover-above] .mtx-popover-direction-arrow:after{top:0;border-bottom-width:0}[class*=mtx-popover-before] .mtx-popover-direction-arrow,[class*=mtx-popover-after] .mtx-popover-direction-arrow{height:1em}[class*=mtx-popover-before] .mtx-popover-direction-arrow:after,[class*=mtx-popover-after] .mtx-popover-direction-arrow:after{top:1px}[class*=mtx-popover-before] .mtx-popover-direction-arrow{right:0}[class*=mtx-popover-before] .mtx-popover-direction-arrow:before,[class*=mtx-popover-before] .mtx-popover-direction-arrow:after{left:0;border-right-width:0}[dir=rtl] [class*=mtx-popover-before] .mtx-popover-direction-arrow{right:auto;left:0}[dir=rtl] [class*=mtx-popover-before] .mtx-popover-direction-arrow:before,[dir=rtl] [class*=mtx-popover-before] .mtx-popover-direction-arrow:after{left:auto;right:0;border-left-width:0}[dir=rtl] [class*=mtx-popover-before] .mtx-popover-direction-arrow:before{border-right-width:.5em}[dir=rtl] [class*=mtx-popover-before] .mtx-popover-direction-arrow:after{border-right-width:calc(.5em - 1px)}[class*=mtx-popover-after] .mtx-popover-direction-arrow{left:0}[class*=mtx-popover-after] .mtx-popover-direction-arrow:before,[class*=mtx-popover-after] .mtx-popover-direction-arrow:after{right:0;border-left-width:0}[dir=rtl] [class*=mtx-popover-after] .mtx-popover-direction-arrow{left:auto;right:0}[dir=rtl] [class*=mtx-popover-after] .mtx-popover-direction-arrow:before,[dir=rtl] [class*=mtx-popover-after] .mtx-popover-direction-arrow:after{right:auto;left:0;border-right-width:0}[dir=rtl] [class*=mtx-popover-after] .mtx-popover-direction-arrow:before{border-left-width:.5em}[dir=rtl] [class*=mtx-popover-after] .mtx-popover-direction-arrow:after{border-left-width:calc(.5em - 1px)}\n"] }]
347
+ }], ctorParameters: function () {
348
+ return [{ type: i1.Directionality, decorators: [{
349
+ type: Optional
350
+ }] }, { type: i0.ElementRef }, { type: i0.NgZone }];
351
+ }, propDecorators: { role: [{
352
+ type: HostBinding,
353
+ args: ['attr.role']
354
+ }], position: [{
355
+ type: Input
356
+ }], triggerEvent: [{
357
+ type: Input
358
+ }], scrollStrategy: [{
359
+ type: Input
360
+ }], enterDelay: [{
361
+ type: Input
362
+ }], leaveDelay: [{
363
+ type: Input
364
+ }], xOffset: [{
365
+ type: Input
366
+ }], yOffset: [{
367
+ type: Input
368
+ }], arrowOffsetX: [{
369
+ type: Input
370
+ }], arrowOffsetY: [{
371
+ type: Input
372
+ }], arrowWidth: [{
373
+ type: Input
374
+ }], arrowHeight: [{
375
+ type: Input
376
+ }], closeOnPanelClick: [{
377
+ type: Input
378
+ }], closeOnBackdropClick: [{
379
+ type: Input
380
+ }], disableAnimation: [{
381
+ type: Input
382
+ }], focusTrapEnabled: [{
383
+ type: Input
384
+ }], focusTrapAutoCaptureEnabled: [{
385
+ type: Input
386
+ }], panelClass: [{
387
+ type: Input,
388
+ args: ['class']
389
+ }], classList: [{
390
+ type: Input
391
+ }], closed: [{
392
+ type: Output
393
+ }], templateRef: [{
394
+ type: ViewChild,
395
+ args: [TemplateRef]
396
+ }] } });
397
+
398
+ /**
399
+ * This directive is intended to be used in conjunction with an mtx-popover tag. It is
400
+ * responsible for toggling the display of the provided popover instance.
401
+ */
402
+ class MtxPopoverTrigger {
403
+ constructor(_overlay, _elementRef, _viewContainerRef, _dir, _changeDetectorRef) {
404
+ this._overlay = _overlay;
405
+ this._elementRef = _elementRef;
406
+ this._viewContainerRef = _viewContainerRef;
407
+ this._dir = _dir;
408
+ this._changeDetectorRef = _changeDetectorRef;
409
+ this.ariaHaspopup = true;
410
+ this.popoverOpened$ = new Subject();
411
+ this.popoverClosed$ = new Subject();
412
+ this._overlayRef = null;
413
+ this._popoverOpen = false;
414
+ this._halt = false;
415
+ // tracking input type is necessary so it's possible to only auto-focus
416
+ // the first item of the list when the popover is opened via the keyboard
417
+ this._openedByMouse = false;
418
+ this._onDestroy = new Subject();
419
+ /** Event emitted when the associated popover is opened. */
420
+ this.popoverOpened = new EventEmitter();
421
+ /** Event emitted when the associated popover is closed. */
422
+ this.popoverClosed = new EventEmitter();
423
+ }
424
+ ngAfterViewInit() {
425
+ this._checkPopover();
426
+ this._setCurrentConfig();
427
+ this.popover.closed.subscribe(() => this.closePopover());
428
+ }
429
+ ngOnDestroy() {
430
+ this.destroyPopover();
431
+ }
432
+ _setCurrentConfig() {
433
+ if (this.triggerEvent) {
434
+ this.popover.triggerEvent = this.triggerEvent;
435
+ }
436
+ this.popover.setCurrentStyles();
437
+ }
438
+ /** Whether the popover is open. */
439
+ get popoverOpen() {
440
+ return this._popoverOpen;
441
+ }
442
+ onClick(event) {
443
+ if (this.popover.triggerEvent === 'click') {
444
+ this.togglePopover();
445
+ }
446
+ }
447
+ onMouseEnter(event) {
448
+ this._halt = false;
449
+ if (this.popover.triggerEvent === 'hover') {
450
+ this._mouseoverTimer = setTimeout(() => {
451
+ this.openPopover();
452
+ }, this.popover.enterDelay);
453
+ }
454
+ }
455
+ onMouseLeave(event) {
456
+ if (this.popover.triggerEvent === 'hover') {
457
+ if (this._mouseoverTimer) {
458
+ clearTimeout(this._mouseoverTimer);
459
+ this._mouseoverTimer = null;
460
+ }
461
+ if (this._popoverOpen) {
462
+ setTimeout(() => {
463
+ if (!this.popover.closeDisabled) {
464
+ this.closePopover();
465
+ }
466
+ }, this.popover.leaveDelay);
467
+ }
468
+ else {
469
+ this._halt = true;
470
+ }
471
+ }
472
+ }
473
+ /** Toggles the popover between the open and closed states. */
474
+ togglePopover() {
475
+ return this._popoverOpen ? this.closePopover() : this.openPopover();
476
+ }
477
+ /** Opens the popover. */
478
+ openPopover() {
479
+ if (!this._popoverOpen && !this._halt) {
480
+ this._createOverlay().attach(this._portal);
481
+ this._subscribeToBackdrop();
482
+ this._subscribeToDetachments();
483
+ this._initPopover();
484
+ }
485
+ }
486
+ /** Closes the popover. */
487
+ closePopover() {
488
+ if (this._overlayRef) {
489
+ this._overlayRef.detach();
490
+ this._resetPopover();
491
+ }
492
+ this.destroyPopover();
493
+ }
494
+ /** Removes the popover from the DOM. */
495
+ destroyPopover() {
496
+ if (this._mouseoverTimer) {
497
+ clearTimeout(this._mouseoverTimer);
498
+ this._mouseoverTimer = null;
499
+ }
500
+ if (this._overlayRef) {
501
+ this._overlayRef.dispose();
502
+ this._overlayRef = null;
503
+ this._cleanUpSubscriptions();
504
+ }
505
+ this._onDestroy.next();
506
+ this._onDestroy.complete();
507
+ }
508
+ /** Focuses the popover trigger. */
509
+ focus() {
510
+ this._elementRef.nativeElement.focus();
511
+ }
512
+ /** The text direction of the containing app. */
513
+ get dir() {
514
+ return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';
515
+ }
516
+ /**
517
+ * This method ensures that the popover closes when the overlay backdrop is clicked.
518
+ * We do not use first() here because doing so would not catch clicks from within
519
+ * the popover, and it would fail to unsubscribe properly. Instead, we unsubscribe
520
+ * explicitly when the popover is closed or destroyed.
521
+ */
522
+ _subscribeToBackdrop() {
523
+ if (this._overlayRef) {
524
+ /** Only subscribe to backdrop if trigger event is click */
525
+ if (this.triggerEvent === 'click' && this.popover.closeOnBackdropClick === true) {
526
+ this._overlayRef
527
+ .backdropClick()
528
+ .pipe(takeUntil(this.popoverClosed$), takeUntil(this._onDestroy))
529
+ .subscribe(() => {
530
+ this.popover._emitCloseEvent();
531
+ });
532
+ }
533
+ }
534
+ }
535
+ _subscribeToDetachments() {
536
+ if (this._overlayRef) {
537
+ this._overlayRef
538
+ .detachments()
539
+ .pipe(takeUntil(this.popoverClosed$), takeUntil(this._onDestroy))
540
+ .subscribe(() => {
541
+ this._setPopoverClosed();
542
+ });
543
+ }
544
+ }
545
+ /**
546
+ * This method sets the popover state to open and focuses the first item if
547
+ * the popover was opened via the keyboard.
548
+ */
549
+ _initPopover() {
550
+ this._setPopoverOpened();
551
+ }
552
+ /**
553
+ * This method resets the popover when it's closed, most importantly restoring
554
+ * focus to the popover trigger if the popover was opened via the keyboard.
555
+ */
556
+ _resetPopover() {
557
+ this._setPopoverClosed();
558
+ // Focus only needs to be reset to the host element if the popover was opened
559
+ // by the keyboard and manually shifted to the first popover item.
560
+ if (!this._openedByMouse) {
561
+ this.focus();
562
+ }
563
+ this._openedByMouse = false;
564
+ }
565
+ /** set state rather than toggle to support triggers sharing a popover */
566
+ _setPopoverOpened() {
567
+ if (!this._popoverOpen) {
568
+ this._popoverOpen = true;
569
+ this.popoverOpened$.next();
570
+ this.popoverOpened.emit();
571
+ }
572
+ }
573
+ /** set state rather than toggle to support triggers sharing a popover */
574
+ _setPopoverClosed() {
575
+ if (this._popoverOpen) {
576
+ this._popoverOpen = false;
577
+ this.popoverClosed$.next();
578
+ this.popoverClosed.emit();
579
+ }
580
+ }
581
+ /**
582
+ * This method checks that a valid instance of MdPopover has been passed into
583
+ * mdPopoverTriggerFor. If not, an exception is thrown.
584
+ */
585
+ _checkPopover() {
586
+ if (!this.popover) {
587
+ throwMtxPopoverMissingError();
588
+ }
589
+ }
590
+ /**
591
+ * This method creates the overlay from the provided popover's template and saves its
592
+ * OverlayRef so that it can be attached to the DOM when openPopover is called.
593
+ */
594
+ _createOverlay() {
595
+ if (!this._overlayRef) {
596
+ this._portal = new TemplatePortal(this.popover.templateRef, this._viewContainerRef);
597
+ const config = this._getOverlayConfig();
598
+ this._subscribeToPositions(config.positionStrategy);
599
+ this._overlayRef = this._overlay.create(config);
600
+ }
601
+ return this._overlayRef;
602
+ }
603
+ /**
604
+ * This method builds the configuration object needed to create the overlay, the OverlayConfig.
605
+ * @returns OverlayConfig
606
+ */
607
+ _getOverlayConfig() {
608
+ const overlayState = new OverlayConfig();
609
+ overlayState.positionStrategy = this._getPosition();
610
+ /** Display overlay backdrop if trigger event is click */
611
+ if (this.triggerEvent === 'click') {
612
+ overlayState.hasBackdrop = true;
613
+ overlayState.backdropClass = 'cdk-overlay-transparent-backdrop';
614
+ }
615
+ overlayState.direction = this._dir;
616
+ overlayState.scrollStrategy = this._getOverlayScrollStrategy(this.popover.scrollStrategy);
617
+ return overlayState;
618
+ }
619
+ /**
620
+ * This method returns the scroll strategy used by the cdk/overlay.
621
+ */
622
+ _getOverlayScrollStrategy(strategy) {
623
+ switch (strategy) {
624
+ case 'noop':
625
+ return this._overlay.scrollStrategies.noop();
626
+ case 'close':
627
+ return this._overlay.scrollStrategies.close();
628
+ case 'block':
629
+ return this._overlay.scrollStrategies.block();
630
+ case 'reposition':
631
+ default:
632
+ return this._overlay.scrollStrategies.reposition();
633
+ }
634
+ }
635
+ /**
636
+ * Listens to changes in the position of the overlay and sets the correct classes
637
+ * on the popover based on the new position. This ensures the animation origin is always
638
+ * correct, even if a fallback position is used for the overlay.
639
+ */
640
+ _subscribeToPositions(position) {
641
+ this._positionSubscription = position.positionChanges.subscribe(change => {
642
+ const posX = change.connectionPair.overlayX === 'start'
643
+ ? 'after'
644
+ : change.connectionPair.overlayX === 'end'
645
+ ? 'before'
646
+ : 'center';
647
+ const posY = change.connectionPair.overlayY === 'top'
648
+ ? 'below'
649
+ : change.connectionPair.overlayY === 'bottom'
650
+ ? 'above'
651
+ : 'center';
652
+ const pos = this.popover.position[0] === 'above' || this.popover.position[0] === 'below'
653
+ ? [posY, posX]
654
+ : [posX, posY];
655
+ // required for ChangeDetectionStrategy.OnPush
656
+ this._changeDetectorRef.markForCheck();
657
+ this.popover.zone.run(() => {
658
+ this.popover.setCurrentStyles(pos);
659
+ this.popover.setPositionClasses(pos);
660
+ });
661
+ });
662
+ }
663
+ /**
664
+ * This method builds the position strategy for the overlay, so the popover is properly connected
665
+ * to the trigger.
666
+ * @returns ConnectedPositionStrategy
667
+ */
668
+ _getPosition() {
669
+ const [originX, origin2ndX, origin3rdX] = this.popover.position[0] === 'before' || this.popover.position[1] === 'after'
670
+ ? ['start', 'center', 'end']
671
+ : this.popover.position[0] === 'after' || this.popover.position[1] === 'before'
672
+ ? ['end', 'center', 'start']
673
+ : ['center', 'start', 'end'];
674
+ const [originY, origin2ndY, origin3rdY] = this.popover.position[0] === 'above' || this.popover.position[1] === 'below'
675
+ ? ['top', 'center', 'bottom']
676
+ : this.popover.position[0] === 'below' || this.popover.position[1] === 'above'
677
+ ? ['bottom', 'center', 'top']
678
+ : ['center', 'top', 'bottom'];
679
+ const [overlayX, overlayFallbackX] = this.popover.position[0] === 'below' || this.popover.position[0] === 'above'
680
+ ? [originX, originX]
681
+ : this.popover.position[0] === 'before'
682
+ ? ['end', 'start']
683
+ : ['start', 'end'];
684
+ const [overlayY, overlayFallbackY] = this.popover.position[0] === 'before' || this.popover.position[0] === 'after'
685
+ ? [originY, originY]
686
+ : this.popover.position[0] === 'below'
687
+ ? ['top', 'bottom']
688
+ : ['bottom', 'top'];
689
+ const originFallbackX = overlayX;
690
+ const originFallbackY = overlayY;
691
+ const offsetX = this.popover.xOffset && !isNaN(Number(this.popover.xOffset))
692
+ ? Number(this.dir === 'ltr' ? this.popover.xOffset : -this.popover.xOffset)
693
+ : 0;
694
+ const offsetY = this.popover.yOffset && !isNaN(Number(this.popover.yOffset))
695
+ ? Number(this.popover.yOffset)
696
+ : 0;
697
+ /**
698
+ * For overriding position element, when `mtxPopoverTargetAt` has a valid element reference.
699
+ * Useful for sticking popover to parent element and offsetting arrow to trigger element.
700
+ * If undefined defaults to the trigger element reference.
701
+ */
702
+ let element = this._elementRef;
703
+ if (typeof this.targetElement !== 'undefined') {
704
+ this.popover.containerPositioning = true;
705
+ element = this.targetElement._elementRef;
706
+ }
707
+ let positions = [{ originX, originY, overlayX, overlayY }];
708
+ if (this.popover.position[0] === 'above' || this.popover.position[0] === 'below') {
709
+ positions = [
710
+ { originX, originY, overlayX, overlayY, offsetY },
711
+ { originX: origin2ndX, originY, overlayX: origin2ndX, overlayY, offsetY },
712
+ { originX: origin3rdX, originY, overlayX: origin3rdX, overlayY, offsetY },
713
+ {
714
+ originX,
715
+ originY: originFallbackY,
716
+ overlayX,
717
+ overlayY: overlayFallbackY,
718
+ offsetY: -offsetY,
719
+ },
720
+ {
721
+ originX: origin2ndX,
722
+ originY: originFallbackY,
723
+ overlayX: origin2ndX,
724
+ overlayY: overlayFallbackY,
725
+ offsetY: -offsetY,
726
+ },
727
+ {
728
+ originX: origin3rdX,
729
+ originY: originFallbackY,
730
+ overlayX: origin3rdX,
731
+ overlayY: overlayFallbackY,
732
+ offsetY: -offsetY,
733
+ },
734
+ ];
735
+ }
736
+ if (this.popover.position[0] === 'before' || this.popover.position[0] === 'after') {
737
+ positions = [
738
+ { originX, originY, overlayX, overlayY, offsetX },
739
+ { originX, originY: origin2ndY, overlayX, overlayY: origin2ndY, offsetX },
740
+ { originX, originY: origin3rdY, overlayX, overlayY: origin3rdY, offsetX },
741
+ {
742
+ originX: originFallbackX,
743
+ originY,
744
+ overlayX: overlayFallbackX,
745
+ overlayY,
746
+ offsetX: -offsetX,
747
+ },
748
+ {
749
+ originX: originFallbackX,
750
+ originY: origin2ndY,
751
+ overlayX: overlayFallbackX,
752
+ overlayY: origin2ndY,
753
+ offsetX: -offsetX,
754
+ },
755
+ {
756
+ originX: originFallbackX,
757
+ originY: origin3rdY,
758
+ overlayX: overlayFallbackX,
759
+ overlayY: origin3rdY,
760
+ offsetX: -offsetX,
761
+ },
762
+ ];
763
+ }
764
+ return this._overlay
765
+ .position()
766
+ .flexibleConnectedTo(element)
767
+ .withLockedPosition()
768
+ .withPositions(positions)
769
+ .withDefaultOffsetX(offsetX)
770
+ .withDefaultOffsetY(offsetY);
771
+ }
772
+ _cleanUpSubscriptions() {
773
+ if (this._backdropSubscription) {
774
+ this._backdropSubscription.unsubscribe();
775
+ }
776
+ if (this._positionSubscription) {
777
+ this._positionSubscription.unsubscribe();
778
+ }
779
+ if (this._detachmentsSubscription) {
780
+ this._detachmentsSubscription.unsubscribe();
781
+ }
782
+ }
783
+ _handleMousedown(event) {
784
+ if (event && !isFakeMousedownFromScreenReader(event)) {
785
+ this._openedByMouse = true;
786
+ }
787
+ }
788
+ }
789
+ /** @nocollapse */ /** @nocollapse */ MtxPopoverTrigger.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MtxPopoverTrigger, deps: [{ token: i1$1.Overlay }, { token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: i1.Directionality, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive });
790
+ /** @nocollapse */ /** @nocollapse */ MtxPopoverTrigger.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.0", type: MtxPopoverTrigger, selector: "[mtxPopoverTriggerFor]", inputs: { popover: ["mtxPopoverTriggerFor", "popover"], targetElement: ["mtxPopoverTargetAt", "targetElement"], triggerEvent: ["mtxPopoverTriggerOn", "triggerEvent"] }, outputs: { popoverOpened: "popoverOpened", popoverClosed: "popoverClosed" }, host: { listeners: { "click": "onClick($event)", "mouseenter": "onMouseEnter($event)", "mouseleave": "onMouseLeave($event)", "mousedown": "_handleMousedown($event)" }, properties: { "attr.aria-haspopup": "this.ariaHaspopup" } }, exportAs: ["mtxPopoverTrigger"], ngImport: i0 });
791
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MtxPopoverTrigger, decorators: [{
792
+ type: Directive,
793
+ args: [{
794
+ selector: '[mtxPopoverTriggerFor]',
795
+ exportAs: 'mtxPopoverTrigger',
796
+ }]
797
+ }], ctorParameters: function () {
798
+ return [{ type: i1$1.Overlay }, { type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: i1.Directionality, decorators: [{
799
+ type: Optional
800
+ }] }, { type: i0.ChangeDetectorRef }];
801
+ }, propDecorators: { ariaHaspopup: [{
802
+ type: HostBinding,
803
+ args: ['attr.aria-haspopup']
804
+ }], popover: [{
805
+ type: Input,
806
+ args: ['mtxPopoverTriggerFor']
807
+ }], targetElement: [{
808
+ type: Input,
809
+ args: ['mtxPopoverTargetAt']
810
+ }], triggerEvent: [{
811
+ type: Input,
812
+ args: ['mtxPopoverTriggerOn']
813
+ }], popoverOpened: [{
814
+ type: Output
815
+ }], popoverClosed: [{
816
+ type: Output
817
+ }], onClick: [{
818
+ type: HostListener,
819
+ args: ['click', ['$event']]
820
+ }], onMouseEnter: [{
821
+ type: HostListener,
822
+ args: ['mouseenter', ['$event']]
823
+ }], onMouseLeave: [{
824
+ type: HostListener,
825
+ args: ['mouseleave', ['$event']]
826
+ }], _handleMousedown: [{
827
+ type: HostListener,
828
+ args: ['mousedown', ['$event']]
829
+ }] } });
830
+
831
+ class MtxPopoverTarget {
832
+ constructor(_elementRef) {
833
+ this._elementRef = _elementRef;
834
+ }
835
+ }
836
+ /** @nocollapse */ /** @nocollapse */ MtxPopoverTarget.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MtxPopoverTarget, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
837
+ /** @nocollapse */ /** @nocollapse */ MtxPopoverTarget.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.0", type: MtxPopoverTarget, selector: "mtx-popover-target, [mtxPopoverTarget]", exportAs: ["mtxPopoverTarget"], ngImport: i0 });
838
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MtxPopoverTarget, decorators: [{
839
+ type: Directive,
840
+ args: [{
841
+ selector: 'mtx-popover-target, [mtxPopoverTarget]',
842
+ exportAs: 'mtxPopoverTarget',
843
+ }]
844
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });
845
+
846
+ class MtxPopoverModule {
847
+ }
848
+ /** @nocollapse */ /** @nocollapse */ MtxPopoverModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MtxPopoverModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
849
+ /** @nocollapse */ /** @nocollapse */ MtxPopoverModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MtxPopoverModule, declarations: [MtxPopover, MtxPopoverTrigger, MtxPopoverTarget], imports: [OverlayModule, CommonModule, A11yModule], exports: [MtxPopover, MtxPopoverTrigger, MtxPopoverTarget] });
850
+ /** @nocollapse */ /** @nocollapse */ MtxPopoverModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MtxPopoverModule, imports: [[OverlayModule, CommonModule, A11yModule]] });
851
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MtxPopoverModule, decorators: [{
852
+ type: NgModule,
853
+ args: [{
854
+ imports: [OverlayModule, CommonModule, A11yModule],
855
+ exports: [MtxPopover, MtxPopoverTrigger, MtxPopoverTarget],
856
+ declarations: [MtxPopover, MtxPopoverTrigger, MtxPopoverTarget],
857
+ }]
858
+ }] });
859
+
860
+ /**
861
+ * Generated bundle index. Do not edit.
862
+ */
863
+
864
+ export { MtxPopover, MtxPopoverModule, MtxPopoverTarget, MtxPopoverTrigger, transformPopover };
865
+ //# sourceMappingURL=mtxPopover.mjs.map