@ng-matero/extensions 12.7.0 → 13.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (537) hide show
  1. package/README.md +2 -16
  2. package/_all-color.scss +1 -1
  3. package/_index.scss +1 -1
  4. package/_theming.scss +1 -1
  5. package/alert/_alert-theme.scss +2 -2
  6. package/alert/alert.component.d.ts +3 -0
  7. package/alert/alert.module.d.ts +6 -0
  8. package/alert/mtxAlert.d.ts +1 -0
  9. package/alert/package.json +5 -6
  10. package/button/button-loading.directive.d.ts +3 -0
  11. package/button/button.module.d.ts +8 -0
  12. package/button/mtxButton.d.ts +1 -0
  13. package/button/package.json +5 -6
  14. package/checkbox-group/checkbox-group.component.d.ts +3 -0
  15. package/checkbox-group/checkbox-group.module.d.ts +9 -0
  16. package/checkbox-group/mtxCheckboxGroup.d.ts +1 -0
  17. package/checkbox-group/package.json +5 -6
  18. package/colorpicker/_colorpicker-theme.scss +2 -2
  19. package/colorpicker/colorpicker-input.d.ts +3 -0
  20. package/colorpicker/colorpicker-module.d.ts +13 -0
  21. package/colorpicker/colorpicker-toggle.d.ts +5 -0
  22. package/colorpicker/colorpicker.d.ts +6 -1
  23. package/colorpicker/mtxColorpicker.d.ts +1 -0
  24. package/colorpicker/package.json +5 -6
  25. package/column-resize/column-resize-directives/column-resize-flex.d.ts +3 -0
  26. package/column-resize/column-resize-directives/column-resize.d.ts +3 -0
  27. package/column-resize/column-resize-module.d.ts +6 -7
  28. package/column-resize/column-resize-notifier.d.ts +5 -7
  29. package/column-resize/column-resize.d.ts +3 -0
  30. package/column-resize/column-size-store.d.ts +3 -7
  31. package/column-resize/event-dispatcher.d.ts +3 -0
  32. package/column-resize/mtxColumnResize.d.ts +1 -0
  33. package/column-resize/overlay-handle.d.ts +3 -0
  34. package/column-resize/package.json +5 -6
  35. package/column-resize/resizable.d.ts +3 -0
  36. package/column-resize/resize-strategy.d.ts +7 -0
  37. package/core/datetime/datetime.module.d.ts +8 -0
  38. package/core/datetime/native-datetime-adapter.d.ts +3 -0
  39. package/core/density/private/_compatibility.scss +74 -0
  40. package/core/mtxCore.d.ts +1 -0
  41. package/core/package.json +5 -6
  42. package/{pipes/public-api.d.ts → core/pipes/index.d.ts} +0 -0
  43. package/core/pipes/pipes.module.d.ts +8 -0
  44. package/{pipes → core/pipes}/to-observable.pipe.d.ts +3 -0
  45. package/core/public-api.d.ts +1 -0
  46. package/core/style/_elevation.scss +197 -0
  47. package/core/style/_private.scss +41 -0
  48. package/core/style/_variables.scss +44 -0
  49. package/core/style/_vendor-prefixes.scss +60 -0
  50. package/core/theming/_palette.scss +746 -0
  51. package/core/theming/_theming.scss +430 -0
  52. package/core/typography/_typography-utils.scss +101 -0
  53. package/core/typography/_typography.scss +273 -0
  54. package/datetimepicker/_datetimepicker-theme.scss +5 -5
  55. package/datetimepicker/calendar-body.d.ts +3 -0
  56. package/datetimepicker/calendar-body.scss +5 -4
  57. package/datetimepicker/calendar.d.ts +4 -1
  58. package/datetimepicker/clock.d.ts +3 -0
  59. package/datetimepicker/datetimepicker-input.d.ts +3 -0
  60. package/datetimepicker/datetimepicker-module.d.ts +18 -0
  61. package/datetimepicker/datetimepicker-toggle.d.ts +5 -0
  62. package/datetimepicker/datetimepicker-types.d.ts +1 -0
  63. package/datetimepicker/datetimepicker.d.ts +7 -2
  64. package/datetimepicker/month-view.d.ts +4 -1
  65. package/datetimepicker/mtxDatetimepicker.d.ts +1 -0
  66. package/datetimepicker/multi-year-view.d.ts +4 -1
  67. package/datetimepicker/package.json +5 -6
  68. package/datetimepicker/public-api.d.ts +1 -0
  69. package/datetimepicker/year-view.d.ts +4 -1
  70. package/dialog/dialog.component.d.ts +3 -0
  71. package/dialog/dialog.d.ts +3 -0
  72. package/dialog/dialog.module.d.ts +10 -0
  73. package/dialog/mtxDialog.d.ts +1 -0
  74. package/dialog/package.json +5 -6
  75. package/esm2020/alert/alert.component.mjs +52 -0
  76. package/esm2020/alert/alert.module.mjs +18 -0
  77. package/{esm2015/alert/mtxAlert.js → esm2020/alert/mtxAlert.mjs} +0 -0
  78. package/{esm2015/alert/public-api.js → esm2020/alert/public-api.mjs} +0 -0
  79. package/esm2020/button/button-loading.directive.mjs +79 -0
  80. package/esm2020/button/button.module.mjs +20 -0
  81. package/{esm2015/button/mtxButton.js → esm2020/button/mtxButton.mjs} +0 -0
  82. package/{esm2015/button/public-api.js → esm2020/button/public-api.mjs} +0 -0
  83. package/esm2020/checkbox-group/checkbox-group.component.mjs +234 -0
  84. package/{esm2015/checkbox-group/checkbox-group.interface.js → esm2020/checkbox-group/checkbox-group.interface.mjs} +0 -0
  85. package/esm2020/checkbox-group/checkbox-group.module.mjs +21 -0
  86. package/{esm2015/checkbox-group/mtxCheckboxGroup.js → esm2020/checkbox-group/mtxCheckboxGroup.mjs} +0 -0
  87. package/{esm2015/checkbox-group/public-api.js → esm2020/checkbox-group/public-api.mjs} +0 -0
  88. package/{esm2015/colorpicker/colorpicker-animations.js → esm2020/colorpicker/colorpicker-animations.mjs} +0 -0
  89. package/esm2020/colorpicker/colorpicker-input.mjs +228 -0
  90. package/esm2020/colorpicker/colorpicker-module.mjs +65 -0
  91. package/esm2020/colorpicker/colorpicker-toggle.mjs +90 -0
  92. package/esm2020/colorpicker/colorpicker.mjs +363 -0
  93. package/{esm2015/colorpicker/mtxColorpicker.js → esm2020/colorpicker/mtxColorpicker.mjs} +0 -0
  94. package/{esm2015/colorpicker/public-api.js → esm2020/colorpicker/public-api.mjs} +0 -0
  95. package/esm2020/column-resize/column-resize-directives/column-resize-flex.mjs +45 -0
  96. package/esm2020/column-resize/column-resize-directives/column-resize.mjs +45 -0
  97. package/{esm2015/column-resize/column-resize-directives/constants.js → esm2020/column-resize/column-resize-directives/constants.mjs} +0 -0
  98. package/esm2020/column-resize/column-resize-module.mjs +28 -0
  99. package/esm2020/column-resize/column-resize-notifier.mjs +47 -0
  100. package/esm2020/column-resize/column-resize.mjs +82 -0
  101. package/esm2020/column-resize/column-size-store.mjs +20 -0
  102. package/esm2020/column-resize/event-dispatcher.mjs +67 -0
  103. package/{esm2015/column-resize/mtxColumnResize.js → esm2020/column-resize/mtxColumnResize.mjs} +0 -0
  104. package/esm2020/column-resize/overlay-handle.mjs +146 -0
  105. package/{esm2015/column-resize/polyfill.js → esm2020/column-resize/polyfill.mjs} +0 -0
  106. package/{esm2015/column-resize/public-api.js → esm2020/column-resize/public-api.mjs} +0 -0
  107. package/esm2020/column-resize/resizable.mjs +199 -0
  108. package/{esm2015/column-resize/resize-ref.js → esm2020/column-resize/resize-ref.mjs} +0 -0
  109. package/esm2020/column-resize/resize-strategy.mjs +232 -0
  110. package/{esm2015/column-resize/selectors.js → esm2020/column-resize/selectors.mjs} +0 -0
  111. package/{esm2015/core/datetime/datetime-adapter.js → esm2020/core/datetime/datetime-adapter.mjs} +0 -0
  112. package/{esm2015/core/datetime/datetime-formats.js → esm2020/core/datetime/datetime-formats.mjs} +0 -0
  113. package/esm2020/core/datetime/datetime.module.mjs +42 -0
  114. package/{esm2015/core/datetime/index.js → esm2020/core/datetime/index.mjs} +0 -0
  115. package/esm2020/core/datetime/native-datetime-adapter.mjs +138 -0
  116. package/{esm2015/core/datetime/native-datetime-formats.js → esm2020/core/datetime/native-datetime-formats.mjs} +0 -0
  117. package/{esm2015/core/mtxCore.js → esm2020/core/mtxCore.mjs} +0 -0
  118. package/esm2020/core/pipes/index.mjs +3 -0
  119. package/esm2020/core/pipes/pipes.module.mjs +18 -0
  120. package/esm2020/core/pipes/to-observable.pipe.mjs +15 -0
  121. package/{esm2015/core/public-api.js → esm2020/core/public-api.mjs} +2 -1
  122. package/esm2020/datetimepicker/calendar-body.mjs +78 -0
  123. package/esm2020/datetimepicker/calendar.mjs +618 -0
  124. package/esm2020/datetimepicker/clock.mjs +277 -0
  125. package/{esm2015/datetimepicker/datetimepicker-animations.js → esm2020/datetimepicker/datetimepicker-animations.mjs} +0 -0
  126. package/{esm2015/datetimepicker/datetimepicker-errors.js → esm2020/datetimepicker/datetimepicker-errors.mjs} +0 -0
  127. package/{esm2015/datetimepicker/datetimepicker-filtertype.js → esm2020/datetimepicker/datetimepicker-filtertype.mjs} +0 -0
  128. package/esm2020/datetimepicker/datetimepicker-input.mjs +344 -0
  129. package/esm2020/datetimepicker/datetimepicker-module.mjs +75 -0
  130. package/esm2020/datetimepicker/datetimepicker-toggle.mjs +94 -0
  131. package/esm2020/datetimepicker/datetimepicker-types.mjs +2 -0
  132. package/esm2020/datetimepicker/datetimepicker.mjs +492 -0
  133. package/esm2020/datetimepicker/month-view.mjs +148 -0
  134. package/{esm2015/datetimepicker/mtxDatetimepicker.js → esm2020/datetimepicker/mtxDatetimepicker.mjs} +0 -0
  135. package/esm2020/datetimepicker/multi-year-view.mjs +214 -0
  136. package/{esm2015/datetimepicker/public-api.js → esm2020/datetimepicker/public-api.mjs} +2 -1
  137. package/esm2020/datetimepicker/year-view.mjs +138 -0
  138. package/{esm2015/dialog/dialog-config.js → esm2020/dialog/dialog-config.mjs} +0 -0
  139. package/esm2020/dialog/dialog.component.mjs +33 -0
  140. package/esm2020/dialog/dialog.mjs +74 -0
  141. package/esm2020/dialog/dialog.module.mjs +24 -0
  142. package/{esm2015/dialog/mtxDialog.js → esm2020/dialog/mtxDialog.mjs} +0 -0
  143. package/{esm2015/dialog/public-api.js → esm2020/dialog/public-api.mjs} +0 -0
  144. package/esm2020/form-group/form-group.component.mjs +37 -0
  145. package/esm2020/form-group/form-group.module.mjs +18 -0
  146. package/{esm2015/form-group/mtxFormGroup.js → esm2020/form-group/mtxFormGroup.mjs} +0 -0
  147. package/{esm2015/form-group/public-api.js → esm2020/form-group/public-api.mjs} +0 -0
  148. package/esm2020/grid/cell.component.mjs +108 -0
  149. package/esm2020/grid/column-menu.component.mjs +95 -0
  150. package/esm2020/grid/column-resize/column-resize-directives/column-resize-flex.mjs +37 -0
  151. package/esm2020/grid/column-resize/column-resize-directives/column-resize.mjs +37 -0
  152. package/{esm2015/grid/column-resize/column-resize-directives/common.js → esm2020/grid/column-resize/column-resize-directives/common.mjs} +0 -0
  153. package/esm2020/grid/column-resize/column-resize-module.mjs +42 -0
  154. package/esm2020/grid/column-resize/overlay-handle.mjs +60 -0
  155. package/{esm2015/grid/column-resize/resizable-directives/common.js → esm2020/grid/column-resize/resizable-directives/common.mjs} +0 -0
  156. package/esm2020/grid/column-resize/resizable-directives/resizable.mjs +62 -0
  157. package/esm2020/grid/column-resize/resize-strategy.mjs +42 -0
  158. package/esm2020/grid/expansion-toggle.directive.mjs +64 -0
  159. package/esm2020/grid/grid.component.mjs +556 -0
  160. package/{esm2015/grid/grid.interface.js → esm2020/grid/grid.interface.mjs} +0 -0
  161. package/esm2020/grid/grid.module.mjs +117 -0
  162. package/esm2020/grid/grid.service.mjs +44 -0
  163. package/{esm2015/grid/mtxGrid.js → esm2020/grid/mtxGrid.mjs} +0 -0
  164. package/esm2020/grid/public-api.mjs +16 -0
  165. package/esm2020/loader/loader.component.mjs +63 -0
  166. package/esm2020/loader/loader.module.mjs +20 -0
  167. package/{esm2015/loader/mtxLoader.js → esm2020/loader/mtxLoader.mjs} +0 -0
  168. package/{esm2015/loader/public-api.js → esm2020/loader/public-api.mjs} +0 -0
  169. package/esm2020/ng-matero-extensions.mjs +5 -0
  170. package/{esm2015/popover/mtxPopover.js → esm2020/popover/mtxPopover.mjs} +0 -0
  171. package/{esm2015/popover/popover-animations.js → esm2020/popover/popover-animations.mjs} +0 -0
  172. package/{esm2015/popover/popover-errors.js → esm2020/popover/popover-errors.mjs} +0 -0
  173. package/{esm2015/popover/popover-interfaces.js → esm2020/popover/popover-interfaces.mjs} +0 -0
  174. package/esm2020/popover/popover-module.mjs +22 -0
  175. package/esm2020/popover/popover-target.mjs +17 -0
  176. package/esm2020/popover/popover-trigger.mjs +441 -0
  177. package/{esm2015/popover/popover-types.js → esm2020/popover/popover-types.mjs} +0 -0
  178. package/esm2020/popover/popover.mjs +334 -0
  179. package/{esm2015/popover/public-api.js → esm2020/popover/public-api.mjs} +0 -0
  180. package/{esm2015/progress/mtxProgress.js → esm2020/progress/mtxProgress.mjs} +0 -0
  181. package/esm2020/progress/progress.component.mjs +55 -0
  182. package/esm2020/progress/progress.module.mjs +18 -0
  183. package/{esm2015/progress/public-api.js → esm2020/progress/public-api.mjs} +0 -0
  184. package/esm2020/public-api.mjs +5 -0
  185. package/{esm2015/select/mtxSelect.js → esm2020/select/mtxSelect.mjs} +0 -0
  186. package/{esm2015/select/option.component.js → esm2020/select/option.component.mjs} +18 -26
  187. package/{esm2015/select/public-api.js → esm2020/select/public-api.mjs} +0 -0
  188. package/esm2020/select/select.component.mjs +458 -0
  189. package/esm2020/select/select.module.mjs +74 -0
  190. package/esm2020/select/templates.directive.mjs +124 -0
  191. package/{esm2015/slider/mtxSlider.js → esm2020/slider/mtxSlider.mjs} +0 -0
  192. package/{esm2015/slider/public-api.js → esm2020/slider/public-api.mjs} +0 -0
  193. package/esm2020/slider/slider-module.mjs +19 -0
  194. package/esm2020/slider/slider.mjs +1115 -0
  195. package/{esm2015/split/interface.js → esm2020/split/interface.mjs} +0 -0
  196. package/{esm2015/split/mtxSplit.js → esm2020/split/mtxSplit.mjs} +0 -0
  197. package/{esm2015/split/public-api.js → esm2020/split/public-api.mjs} +0 -0
  198. package/esm2020/split/split-pane.directive.mjs +149 -0
  199. package/esm2020/split/split.component.mjs +619 -0
  200. package/esm2020/split/split.module.mjs +19 -0
  201. package/{esm2015/split/utils.js → esm2020/split/utils.mjs} +0 -0
  202. package/{esm2015/text3d/mtxText3d.js → esm2020/text3d/mtxText3d.mjs} +0 -0
  203. package/{esm2015/text3d/public-api.js → esm2020/text3d/public-api.mjs} +0 -0
  204. package/esm2020/text3d/text3d.component.mjs +45 -0
  205. package/esm2020/text3d/text3d.module.mjs +18 -0
  206. package/{esm2015/tooltip/mtxTooltip.js → esm2020/tooltip/mtxTooltip.mjs} +0 -0
  207. package/{esm2015/tooltip/public-api.js → esm2020/tooltip/public-api.mjs} +0 -0
  208. package/{esm2015/tooltip/tooltip-animations.js → esm2020/tooltip/tooltip-animations.mjs} +0 -0
  209. package/esm2020/tooltip/tooltip-module.mjs +23 -0
  210. package/esm2020/tooltip/tooltip.mjs +674 -0
  211. package/fesm2015/mtxAlert.mjs +74 -0
  212. package/fesm2015/mtxAlert.mjs.map +1 -0
  213. package/fesm2015/mtxButton.mjs +102 -0
  214. package/fesm2015/mtxButton.mjs.map +1 -0
  215. package/fesm2015/mtxCheckboxGroup.mjs +257 -0
  216. package/fesm2015/mtxCheckboxGroup.mjs.map +1 -0
  217. package/fesm2015/mtxColorpicker.mjs +754 -0
  218. package/fesm2015/mtxColorpicker.mjs.map +1 -0
  219. package/fesm2015/{mtxColumnResize.js → mtxColumnResize.mjs} +108 -145
  220. package/fesm2015/mtxColumnResize.mjs.map +1 -0
  221. package/fesm2015/mtxCore.mjs +362 -0
  222. package/fesm2015/mtxCore.mjs.map +1 -0
  223. package/fesm2015/mtxDatetimepicker.mjs +2474 -0
  224. package/fesm2015/mtxDatetimepicker.mjs.map +1 -0
  225. package/fesm2015/mtxDialog.mjs +128 -0
  226. package/fesm2015/mtxDialog.mjs.map +1 -0
  227. package/fesm2015/mtxFormGroup.mjs +59 -0
  228. package/fesm2015/mtxFormGroup.mjs.map +1 -0
  229. package/fesm2015/mtxGrid.mjs +1271 -0
  230. package/fesm2015/mtxGrid.mjs.map +1 -0
  231. package/fesm2015/mtxLoader.mjs +87 -0
  232. package/fesm2015/mtxLoader.mjs.map +1 -0
  233. package/fesm2015/mtxPopover.mjs +865 -0
  234. package/fesm2015/mtxPopover.mjs.map +1 -0
  235. package/fesm2015/mtxProgress.mjs +77 -0
  236. package/fesm2015/mtxProgress.mjs.map +1 -0
  237. package/fesm2015/mtxSelect.mjs +712 -0
  238. package/fesm2015/mtxSelect.mjs.map +1 -0
  239. package/fesm2015/mtxSlider.mjs +1139 -0
  240. package/fesm2015/mtxSlider.mjs.map +1 -0
  241. package/fesm2015/{mtxSplit.js → mtxSplit.mjs} +75 -85
  242. package/fesm2015/mtxSplit.mjs.map +1 -0
  243. package/fesm2015/mtxText3d.mjs +67 -0
  244. package/fesm2015/mtxText3d.mjs.map +1 -0
  245. package/fesm2015/{mtxTooltip.js → mtxTooltip.mjs} +83 -86
  246. package/fesm2015/mtxTooltip.mjs.map +1 -0
  247. package/fesm2015/ng-matero-extensions.mjs +9 -0
  248. package/fesm2015/ng-matero-extensions.mjs.map +1 -0
  249. package/fesm2020/mtxAlert.mjs +74 -0
  250. package/fesm2020/mtxAlert.mjs.map +1 -0
  251. package/fesm2020/mtxButton.mjs +102 -0
  252. package/fesm2020/mtxButton.mjs.map +1 -0
  253. package/fesm2020/mtxCheckboxGroup.mjs +257 -0
  254. package/fesm2020/mtxCheckboxGroup.mjs.map +1 -0
  255. package/{fesm2015/mtxColorpicker.js → fesm2020/mtxColorpicker.mjs} +420 -413
  256. package/fesm2020/mtxColorpicker.mjs.map +1 -0
  257. package/fesm2020/mtxColumnResize.mjs +953 -0
  258. package/fesm2020/mtxColumnResize.mjs.map +1 -0
  259. package/{fesm2015/mtxCore.js → fesm2020/mtxCore.mjs} +75 -42
  260. package/fesm2020/mtxCore.mjs.map +1 -0
  261. package/{fesm2015/mtxDatetimepicker.js → fesm2020/mtxDatetimepicker.mjs} +1300 -1306
  262. package/fesm2020/mtxDatetimepicker.mjs.map +1 -0
  263. package/fesm2020/mtxDialog.mjs +129 -0
  264. package/fesm2020/mtxDialog.mjs.map +1 -0
  265. package/fesm2020/mtxFormGroup.mjs +59 -0
  266. package/fesm2020/mtxFormGroup.mjs.map +1 -0
  267. package/fesm2020/mtxGrid.mjs +1259 -0
  268. package/fesm2020/mtxGrid.mjs.map +1 -0
  269. package/fesm2020/mtxLoader.mjs +87 -0
  270. package/fesm2020/mtxLoader.mjs.map +1 -0
  271. package/{fesm2015/mtxPopover.js → fesm2020/mtxPopover.mjs} +120 -111
  272. package/fesm2020/mtxPopover.mjs.map +1 -0
  273. package/fesm2020/mtxProgress.mjs +77 -0
  274. package/fesm2020/mtxProgress.mjs.map +1 -0
  275. package/fesm2020/mtxSelect.mjs +709 -0
  276. package/fesm2020/mtxSelect.mjs.map +1 -0
  277. package/{fesm2015/mtxSlider.js → fesm2020/mtxSlider.mjs} +97 -94
  278. package/fesm2020/mtxSlider.mjs.map +1 -0
  279. package/fesm2020/mtxSplit.mjs +1007 -0
  280. package/fesm2020/mtxSplit.mjs.map +1 -0
  281. package/fesm2020/mtxText3d.mjs +67 -0
  282. package/fesm2020/mtxText3d.mjs.map +1 -0
  283. package/fesm2020/mtxTooltip.mjs +718 -0
  284. package/fesm2020/mtxTooltip.mjs.map +1 -0
  285. package/fesm2020/ng-matero-extensions.mjs +9 -0
  286. package/fesm2020/ng-matero-extensions.mjs.map +1 -0
  287. package/form-group/_form-group-theme.scss +1 -1
  288. package/form-group/form-group.component.d.ts +3 -0
  289. package/form-group/form-group.module.d.ts +6 -0
  290. package/form-group/mtxFormGroup.d.ts +1 -0
  291. package/form-group/package.json +5 -6
  292. package/grid/_grid-theme.scss +1 -1
  293. package/grid/cell.component.d.ts +3 -0
  294. package/grid/column-menu.component.d.ts +3 -0
  295. package/grid/column-menu.component.scss +1 -1
  296. package/grid/column-resize/_column-resize.scss +3 -3
  297. package/grid/column-resize/column-resize-directives/column-resize-flex.d.ts +3 -0
  298. package/grid/column-resize/column-resize-directives/column-resize.d.ts +3 -0
  299. package/grid/column-resize/column-resize-module.d.ts +12 -7
  300. package/grid/column-resize/overlay-handle.d.ts +3 -0
  301. package/grid/column-resize/resizable-directives/resizable.d.ts +3 -0
  302. package/grid/column-resize/resize-strategy.d.ts +3 -0
  303. package/grid/expansion-toggle.directive.d.ts +3 -0
  304. package/grid/grid.component.d.ts +20 -1
  305. package/grid/grid.module.d.ts +26 -0
  306. package/grid/grid.service.d.ts +3 -0
  307. package/grid/mtxGrid.d.ts +1 -0
  308. package/grid/package.json +5 -6
  309. package/grid/public-api.d.ts +0 -1
  310. package/loader/_loader-theme.scss +1 -1
  311. package/loader/loader.component.d.ts +3 -0
  312. package/loader/loader.module.d.ts +8 -0
  313. package/loader/mtxLoader.d.ts +1 -0
  314. package/loader/package.json +5 -6
  315. package/{extensions.d.ts → ng-matero-extensions.d.ts} +1 -0
  316. package/package.json +171 -15
  317. package/popover/_popover-theme.scss +1 -1
  318. package/popover/mtxPopover.d.ts +1 -0
  319. package/popover/package.json +5 -6
  320. package/popover/popover-module.d.ts +10 -0
  321. package/popover/popover-target.d.ts +3 -0
  322. package/popover/popover-trigger.d.ts +3 -0
  323. package/popover/popover.d.ts +3 -0
  324. package/progress/_progress-theme.scss +2 -2
  325. package/progress/mtxProgress.d.ts +1 -0
  326. package/progress/package.json +5 -6
  327. package/progress/progress.component.d.ts +3 -0
  328. package/progress/progress.module.d.ts +6 -0
  329. package/public-api.d.ts +2 -19
  330. package/select/_select-theme.scss +1 -1
  331. package/select/mtxSelect.d.ts +1 -0
  332. package/select/option.component.d.ts +3 -0
  333. package/select/package.json +5 -6
  334. package/select/select.component.d.ts +3 -0
  335. package/select/select.component.scss +1 -1
  336. package/select/select.module.d.ts +10 -0
  337. package/select/templates.directive.d.ts +23 -0
  338. package/slider/_slider-theme.scss +4 -4
  339. package/slider/mtxSlider.d.ts +1 -0
  340. package/slider/package.json +5 -6
  341. package/slider/slider-module.d.ts +7 -0
  342. package/slider/slider.d.ts +4 -1
  343. package/slider/slider.scss +7 -7
  344. package/split/_split-theme.scss +1 -1
  345. package/split/mtxSplit.d.ts +1 -0
  346. package/split/package.json +5 -6
  347. package/split/split-pane.directive.d.ts +3 -0
  348. package/split/split.component.d.ts +4 -1
  349. package/split/split.module.d.ts +7 -0
  350. package/text3d/_text3d-theme.scss +2 -2
  351. package/text3d/mtxText3d.d.ts +1 -0
  352. package/text3d/package.json +5 -6
  353. package/text3d/text3d.component.d.ts +3 -0
  354. package/text3d/text3d.module.d.ts +6 -0
  355. package/tooltip/_tooltip-theme.scss +3 -3
  356. package/tooltip/mtxTooltip.d.ts +1 -0
  357. package/tooltip/package.json +5 -6
  358. package/tooltip/tooltip-module.d.ts +10 -0
  359. package/tooltip/tooltip.d.ts +5 -0
  360. package/tooltip/tooltip.scss +1 -1
  361. package/alert/mtxAlert.metadata.json +0 -1
  362. package/bundles/extensions.umd.js +0 -164
  363. package/bundles/extensions.umd.js.map +0 -1
  364. package/bundles/mtxAlert.umd.js +0 -101
  365. package/bundles/mtxAlert.umd.js.map +0 -1
  366. package/bundles/mtxButton.umd.js +0 -119
  367. package/bundles/mtxButton.umd.js.map +0 -1
  368. package/bundles/mtxCheckboxGroup.umd.js +0 -284
  369. package/bundles/mtxCheckboxGroup.umd.js.map +0 -1
  370. package/bundles/mtxColorpicker.umd.js +0 -1123
  371. package/bundles/mtxColorpicker.umd.js.map +0 -1
  372. package/bundles/mtxColumnResize.umd.js +0 -1339
  373. package/bundles/mtxColumnResize.umd.js.map +0 -1
  374. package/bundles/mtxCore.umd.js +0 -670
  375. package/bundles/mtxCore.umd.js.map +0 -1
  376. package/bundles/mtxDatetimepicker.umd.js +0 -3045
  377. package/bundles/mtxDatetimepicker.umd.js.map +0 -1
  378. package/bundles/mtxDialog.umd.js +0 -158
  379. package/bundles/mtxDialog.umd.js.map +0 -1
  380. package/bundles/mtxFormGroup.umd.js +0 -73
  381. package/bundles/mtxFormGroup.umd.js.map +0 -1
  382. package/bundles/mtxGrid.umd.js +0 -1581
  383. package/bundles/mtxGrid.umd.js.map +0 -1
  384. package/bundles/mtxLoader.umd.js +0 -107
  385. package/bundles/mtxLoader.umd.js.map +0 -1
  386. package/bundles/mtxPipes.umd.js +0 -44
  387. package/bundles/mtxPipes.umd.js.map +0 -1
  388. package/bundles/mtxPopover.umd.js +0 -1260
  389. package/bundles/mtxPopover.umd.js.map +0 -1
  390. package/bundles/mtxProgress.umd.js +0 -92
  391. package/bundles/mtxProgress.umd.js.map +0 -1
  392. package/bundles/mtxSelect.umd.js +0 -1097
  393. package/bundles/mtxSelect.umd.js.map +0 -1
  394. package/bundles/mtxSlider.umd.js +0 -1551
  395. package/bundles/mtxSlider.umd.js.map +0 -1
  396. package/bundles/mtxSplit.umd.js +0 -1431
  397. package/bundles/mtxSplit.umd.js.map +0 -1
  398. package/bundles/mtxText3d.umd.js +0 -84
  399. package/bundles/mtxText3d.umd.js.map +0 -1
  400. package/bundles/mtxTooltip.umd.js +0 -1083
  401. package/bundles/mtxTooltip.umd.js.map +0 -1
  402. package/button/mtxButton.metadata.json +0 -1
  403. package/checkbox-group/mtxCheckboxGroup.metadata.json +0 -1
  404. package/colorpicker/mtxColorpicker.metadata.json +0 -1
  405. package/column-resize/mtxColumnResize.metadata.json +0 -1
  406. package/core/mtxCore.metadata.json +0 -1
  407. package/datetimepicker/mtxDatetimepicker.metadata.json +0 -1
  408. package/dialog/mtxDialog.metadata.json +0 -1
  409. package/esm2015/alert/alert.component.js +0 -63
  410. package/esm2015/alert/alert.module.js +0 -14
  411. package/esm2015/button/button-loading.directive.js +0 -89
  412. package/esm2015/button/button.module.js +0 -16
  413. package/esm2015/checkbox-group/checkbox-group.component.js +0 -235
  414. package/esm2015/checkbox-group/checkbox-group.module.js +0 -17
  415. package/esm2015/colorpicker/colorpicker-input.js +0 -228
  416. package/esm2015/colorpicker/colorpicker-module.js +0 -41
  417. package/esm2015/colorpicker/colorpicker-toggle.js +0 -97
  418. package/esm2015/colorpicker/colorpicker.js +0 -372
  419. package/esm2015/column-resize/column-resize-directives/column-resize-flex.js +0 -54
  420. package/esm2015/column-resize/column-resize-directives/column-resize.js +0 -54
  421. package/esm2015/column-resize/column-resize-module.js +0 -24
  422. package/esm2015/column-resize/column-resize-notifier.js +0 -54
  423. package/esm2015/column-resize/column-resize.js +0 -80
  424. package/esm2015/column-resize/column-size-store.js +0 -18
  425. package/esm2015/column-resize/event-dispatcher.js +0 -75
  426. package/esm2015/column-resize/overlay-handle.js +0 -144
  427. package/esm2015/column-resize/resizable.js +0 -197
  428. package/esm2015/column-resize/resize-strategy.js +0 -245
  429. package/esm2015/core/datetime/datetime.module.js +0 -32
  430. package/esm2015/core/datetime/native-datetime-adapter.js +0 -144
  431. package/esm2015/datetimepicker/calendar-body.js +0 -76
  432. package/esm2015/datetimepicker/calendar.js +0 -614
  433. package/esm2015/datetimepicker/clock.js +0 -283
  434. package/esm2015/datetimepicker/datetimepicker-input.js +0 -336
  435. package/esm2015/datetimepicker/datetimepicker-module.js +0 -52
  436. package/esm2015/datetimepicker/datetimepicker-toggle.js +0 -103
  437. package/esm2015/datetimepicker/datetimepicker.js +0 -490
  438. package/esm2015/datetimepicker/month-view.js +0 -150
  439. package/esm2015/datetimepicker/multi-year-view.js +0 -215
  440. package/esm2015/datetimepicker/year-view.js +0 -141
  441. package/esm2015/dialog/dialog.component.js +0 -40
  442. package/esm2015/dialog/dialog.js +0 -81
  443. package/esm2015/dialog/dialog.module.js +0 -21
  444. package/esm2015/extensions-experimental.module.js +0 -13
  445. package/esm2015/extensions.js +0 -5
  446. package/esm2015/extensions.module.js +0 -40
  447. package/esm2015/form-group/form-group.component.js +0 -40
  448. package/esm2015/form-group/form-group.module.js +0 -14
  449. package/esm2015/grid/cell-selection.directive.js +0 -62
  450. package/esm2015/grid/cell.component.js +0 -115
  451. package/esm2015/grid/column-menu.component.js +0 -72
  452. package/esm2015/grid/column-resize/column-resize-directives/column-resize-flex.js +0 -47
  453. package/esm2015/grid/column-resize/column-resize-directives/column-resize.js +0 -47
  454. package/esm2015/grid/column-resize/column-resize-module.js +0 -36
  455. package/esm2015/grid/column-resize/overlay-handle.js +0 -68
  456. package/esm2015/grid/column-resize/resizable-directives/resizable.js +0 -75
  457. package/esm2015/grid/column-resize/resize-strategy.js +0 -45
  458. package/esm2015/grid/expansion-toggle.directive.js +0 -62
  459. package/esm2015/grid/grid.component.js +0 -418
  460. package/esm2015/grid/grid.module.js +0 -69
  461. package/esm2015/grid/grid.service.js +0 -50
  462. package/esm2015/grid/public-api.js +0 -17
  463. package/esm2015/loader/loader.component.js +0 -69
  464. package/esm2015/loader/loader.module.js +0 -16
  465. package/esm2015/pipes/mtxPipes.js +0 -5
  466. package/esm2015/pipes/pipes.module.js +0 -14
  467. package/esm2015/pipes/public-api.js +0 -3
  468. package/esm2015/pipes/to-observable.pipe.js +0 -12
  469. package/esm2015/popover/popover-module.js +0 -18
  470. package/esm2015/popover/popover-target.js +0 -24
  471. package/esm2015/popover/popover-trigger.js +0 -434
  472. package/esm2015/popover/popover.js +0 -326
  473. package/esm2015/progress/progress.component.js +0 -54
  474. package/esm2015/progress/progress.module.js +0 -14
  475. package/esm2015/public-api.js +0 -23
  476. package/esm2015/select/select.component.js +0 -380
  477. package/esm2015/select/select.module.js +0 -46
  478. package/esm2015/select/templates.directive.js +0 -211
  479. package/esm2015/slider/slider-module.js +0 -15
  480. package/esm2015/slider/slider.js +0 -1115
  481. package/esm2015/split/split-pane.directive.js +0 -156
  482. package/esm2015/split/split.component.js +0 -624
  483. package/esm2015/split/split.module.js +0 -15
  484. package/esm2015/text3d/text3d.component.js +0 -45
  485. package/esm2015/text3d/text3d.module.js +0 -14
  486. package/esm2015/tooltip/tooltip-module.js +0 -20
  487. package/esm2015/tooltip/tooltip.js +0 -683
  488. package/extensions-experimental.module.d.ts +0 -2
  489. package/extensions.metadata.json +0 -1
  490. package/extensions.module.d.ts +0 -2
  491. package/fesm2015/extensions.js +0 -80
  492. package/fesm2015/extensions.js.map +0 -1
  493. package/fesm2015/mtxAlert.js +0 -82
  494. package/fesm2015/mtxAlert.js.map +0 -1
  495. package/fesm2015/mtxButton.js +0 -108
  496. package/fesm2015/mtxButton.js.map +0 -1
  497. package/fesm2015/mtxCheckboxGroup.js +0 -255
  498. package/fesm2015/mtxCheckboxGroup.js.map +0 -1
  499. package/fesm2015/mtxColorpicker.js.map +0 -1
  500. package/fesm2015/mtxColumnResize.js.map +0 -1
  501. package/fesm2015/mtxCore.js.map +0 -1
  502. package/fesm2015/mtxDatetimepicker.js.map +0 -1
  503. package/fesm2015/mtxDialog.js +0 -141
  504. package/fesm2015/mtxDialog.js.map +0 -1
  505. package/fesm2015/mtxFormGroup.js +0 -59
  506. package/fesm2015/mtxFormGroup.js.map +0 -1
  507. package/fesm2015/mtxGrid.js +0 -1186
  508. package/fesm2015/mtxGrid.js.map +0 -1
  509. package/fesm2015/mtxLoader.js +0 -90
  510. package/fesm2015/mtxLoader.js.map +0 -1
  511. package/fesm2015/mtxPipes.js +0 -31
  512. package/fesm2015/mtxPipes.js.map +0 -1
  513. package/fesm2015/mtxPopover.js.map +0 -1
  514. package/fesm2015/mtxProgress.js +0 -73
  515. package/fesm2015/mtxProgress.js.map +0 -1
  516. package/fesm2015/mtxSelect.js +0 -700
  517. package/fesm2015/mtxSelect.js.map +0 -1
  518. package/fesm2015/mtxSlider.js.map +0 -1
  519. package/fesm2015/mtxSplit.js.map +0 -1
  520. package/fesm2015/mtxText3d.js +0 -64
  521. package/fesm2015/mtxText3d.js.map +0 -1
  522. package/fesm2015/mtxTooltip.js.map +0 -1
  523. package/form-group/mtxFormGroup.metadata.json +0 -1
  524. package/grid/cell-selection.directive.d.ts +0 -17
  525. package/grid/mtxGrid.metadata.json +0 -1
  526. package/loader/mtxLoader.metadata.json +0 -1
  527. package/pipes/mtxPipes.d.ts +0 -4
  528. package/pipes/mtxPipes.metadata.json +0 -1
  529. package/pipes/package.json +0 -11
  530. package/pipes/pipes.module.d.ts +0 -2
  531. package/popover/mtxPopover.metadata.json +0 -1
  532. package/progress/mtxProgress.metadata.json +0 -1
  533. package/select/mtxSelect.metadata.json +0 -1
  534. package/slider/mtxSlider.metadata.json +0 -1
  535. package/split/mtxSplit.metadata.json +0 -1
  536. package/text3d/mtxText3d.metadata.json +0 -1
  537. package/tooltip/mtxTooltip.metadata.json +0 -1
@@ -0,0 +1,754 @@
1
+ import * as i2 from '@angular/common';
2
+ import { DOCUMENT, CommonModule } from '@angular/common';
3
+ import * as i0 from '@angular/core';
4
+ import { forwardRef, EventEmitter, Directive, Optional, Input, Output, Component, ViewEncapsulation, ChangeDetectionStrategy, ContentChild, ViewChild, InjectionToken, Inject, NgModule } from '@angular/core';
5
+ import * as i3 from '@angular/cdk/overlay';
6
+ import { Overlay, OverlayConfig, OverlayModule } from '@angular/cdk/overlay';
7
+ import { A11yModule } from '@angular/cdk/a11y';
8
+ import { ComponentPortal, PortalModule } from '@angular/cdk/portal';
9
+ import * as i1$1 from '@angular/material/button';
10
+ import { MatButtonModule } from '@angular/material/button';
11
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
12
+ import { DOWN_ARROW, ESCAPE, hasModifierKey, UP_ARROW } from '@angular/cdk/keycodes';
13
+ import { NG_VALUE_ACCESSOR, NG_VALIDATORS, Validators } from '@angular/forms';
14
+ import { MAT_INPUT_VALUE_ACCESSOR } from '@angular/material/input';
15
+ import { Subscription, of, merge, Subject } from 'rxjs';
16
+ import * as i1 from '@angular/material/form-field';
17
+ import { mixinColor } from '@angular/material/core';
18
+ import { take, filter } from 'rxjs/operators';
19
+ import { trigger, transition, animate, keyframes, style } from '@angular/animations';
20
+ import { TinyColor } from '@ctrl/tinycolor';
21
+ import * as i1$2 from 'ngx-color/chrome';
22
+ import { ColorChromeModule } from 'ngx-color/chrome';
23
+ import * as i4 from '@angular/cdk/bidi';
24
+
25
+ class MtxColorPickerInputEvent {
26
+ constructor(
27
+ /** Reference to the colorpicker input component that emitted the event. */
28
+ target,
29
+ /** Reference to the native input element associated with the colorpicker input. */
30
+ targetElement) {
31
+ this.target = target;
32
+ this.targetElement = targetElement;
33
+ this.value = this.target.value;
34
+ }
35
+ }
36
+ const MTX_COLORPICKER_VALUE_ACCESSOR = {
37
+ provide: NG_VALUE_ACCESSOR,
38
+ useExisting: forwardRef(() => MtxColorpickerInput),
39
+ multi: true,
40
+ };
41
+ const MTX_COLORPICKER_VALIDATORS = {
42
+ provide: NG_VALIDATORS,
43
+ useExisting: forwardRef(() => MtxColorpickerInput),
44
+ multi: true,
45
+ };
46
+ class MtxColorpickerInput {
47
+ constructor(_elementRef, _formField) {
48
+ this._elementRef = _elementRef;
49
+ this._formField = _formField;
50
+ /** The input and output color format. */
51
+ this.format = 'hex';
52
+ /** Emits when a `change` event is fired on this `<input>`. */
53
+ this.colorChange = new EventEmitter();
54
+ /** Emits when an `input` event is fired on this `<input>`. */
55
+ this.colorInput = new EventEmitter();
56
+ /** Emits when the disabled state has changed */
57
+ this._disabledChange = new EventEmitter();
58
+ /** Emits when the value changes (either due to user input or programmatic change). */
59
+ this._valueChange = new EventEmitter();
60
+ this._onTouched = () => { };
61
+ this._validatorOnChange = () => { };
62
+ this._cvaOnChange = () => { };
63
+ this._pickerSubscription = Subscription.EMPTY;
64
+ /** The combined form control validator for this input. */
65
+ this._validator = Validators.compose([]);
66
+ /** Whether the last value set on the input was valid. */
67
+ this._lastValueValid = false;
68
+ }
69
+ set mtxColorpicker(value) {
70
+ if (!value) {
71
+ return;
72
+ }
73
+ this._picker = value;
74
+ this._picker.registerInput(this);
75
+ this._pickerSubscription.unsubscribe();
76
+ this._pickerSubscription = this._picker._selectedChanged.subscribe((selected) => {
77
+ this.value = selected;
78
+ this._cvaOnChange(selected);
79
+ this._onTouched();
80
+ this.colorInput.emit(new MtxColorPickerInputEvent(this, this._elementRef.nativeElement));
81
+ this.colorChange.emit(new MtxColorPickerInputEvent(this, this._elementRef.nativeElement));
82
+ });
83
+ }
84
+ /** Whether the colorpicker-input is disabled. */
85
+ get disabled() {
86
+ return !!this._disabled;
87
+ }
88
+ set disabled(value) {
89
+ const newValue = coerceBooleanProperty(value);
90
+ const element = this._elementRef.nativeElement;
91
+ if (this._disabled !== newValue) {
92
+ this._disabled = newValue;
93
+ this._disabledChange.emit(newValue);
94
+ }
95
+ // We need to null check the `blur` method, because it's undefined during SSR.
96
+ // In Ivy static bindings are invoked earlier, before the element is attached to the DOM.
97
+ // This can cause an error to be thrown in some browsers (IE/Edge) which assert that the
98
+ // element has been inserted.
99
+ if (newValue && this._isInitialized && element.blur) {
100
+ // Normally, native input elements automatically blur if they turn disabled. This behavior
101
+ // is problematic, because it would mean that it triggers another change detection cycle,
102
+ // which then causes a changed after checked error if the input element was focused before.
103
+ element.blur();
104
+ }
105
+ }
106
+ /** The value of the input. */
107
+ get value() {
108
+ return this._value;
109
+ }
110
+ set value(value) {
111
+ const oldValue = this.value;
112
+ this._value = value;
113
+ this._formatValue(value);
114
+ this._valueChange.emit(value);
115
+ }
116
+ ngAfterViewInit() {
117
+ this._isInitialized = true;
118
+ }
119
+ ngOnDestroy() {
120
+ this._pickerSubscription.unsubscribe();
121
+ this._valueChange.complete();
122
+ this._disabledChange.complete();
123
+ }
124
+ registerOnValidatorChange(fn) {
125
+ this._validatorOnChange = fn;
126
+ }
127
+ /** @docs-private */
128
+ validate(c) {
129
+ return this._validator ? this._validator(c) : null;
130
+ }
131
+ /**
132
+ * @deprecated
133
+ * @breaking-change 8.0.0 Use `getConnectedOverlayOrigin` instead
134
+ */
135
+ getPopupConnectionElementRef() {
136
+ return this.getConnectedOverlayOrigin();
137
+ }
138
+ /**
139
+ * Gets the element that the colorpicker popup should be connected to.
140
+ * @return The element to connect the popup to.
141
+ */
142
+ getConnectedOverlayOrigin() {
143
+ return this._formField ? this._formField.getConnectedOverlayOrigin() : this._elementRef;
144
+ }
145
+ /** Gets the ID of an element that should be used a description for the overlay. */
146
+ getOverlayLabelId() {
147
+ if (this._formField) {
148
+ return this._formField.getLabelId();
149
+ }
150
+ return this._elementRef.nativeElement.getAttribute('aria-labelledby');
151
+ }
152
+ // Implemented as part of ControlValueAccessor.
153
+ writeValue(value) {
154
+ this.value = value;
155
+ }
156
+ // Implemented as part of ControlValueAccessor.
157
+ registerOnChange(fn) {
158
+ this._cvaOnChange = fn;
159
+ }
160
+ // Implemented as part of ControlValueAccessor.
161
+ registerOnTouched(fn) {
162
+ this._onTouched = fn;
163
+ }
164
+ // Implemented as part of ControlValueAccessor.
165
+ setDisabledState(isDisabled) {
166
+ this.disabled = isDisabled;
167
+ }
168
+ _onKeydown(event) {
169
+ const isAltDownArrow = event.altKey && event.keyCode === DOWN_ARROW;
170
+ if (this._picker && isAltDownArrow && !this._elementRef.nativeElement.readOnly) {
171
+ this._picker.open();
172
+ event.preventDefault();
173
+ }
174
+ }
175
+ /** Handles blur events on the input. */
176
+ _onBlur() {
177
+ // Reformat the input only if we have a valid value.
178
+ if (this.value) {
179
+ this._formatValue(this.value);
180
+ }
181
+ this._onTouched();
182
+ }
183
+ _onInput(value) {
184
+ const nextValue = value;
185
+ this._value = nextValue;
186
+ this._cvaOnChange(nextValue);
187
+ this._valueChange.emit(nextValue);
188
+ this.colorInput.emit(new MtxColorPickerInputEvent(this, this._elementRef.nativeElement));
189
+ }
190
+ _onChange() {
191
+ this.colorChange.emit(new MtxColorPickerInputEvent(this, this._elementRef.nativeElement));
192
+ }
193
+ /** Returns the palette used by the input's form field, if any. */
194
+ getThemePalette() {
195
+ return this._formField ? this._formField.color : undefined;
196
+ }
197
+ /** TODO: Formats a value and sets it on the input element. */
198
+ _formatValue(value) {
199
+ this._elementRef.nativeElement.value = value ? value : '';
200
+ }
201
+ }
202
+ /** @nocollapse */ /** @nocollapse */ MtxColorpickerInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MtxColorpickerInput, deps: [{ token: i0.ElementRef }, { token: i1.MatFormField, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
203
+ /** @nocollapse */ /** @nocollapse */ MtxColorpickerInput.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.0", type: MtxColorpickerInput, selector: "input[mtxColorpicker]", inputs: { mtxColorpicker: "mtxColorpicker", disabled: "disabled", value: "value", format: "format" }, outputs: { colorChange: "colorChange", colorInput: "colorInput" }, host: { listeners: { "input": "_onInput($event.target.value)", "change": "_onChange()", "blur": "_onBlur()", "keydown": "_onKeydown($event)" }, properties: { "attr.aria-haspopup": "_picker ? \"dialog\" : null", "attr.aria-owns": "(_picker?.opened && _picker.id) || null", "disabled": "disabled" }, classAttribute: "mtx-colorpicker-input" }, providers: [
204
+ MTX_COLORPICKER_VALUE_ACCESSOR,
205
+ MTX_COLORPICKER_VALIDATORS,
206
+ { provide: MAT_INPUT_VALUE_ACCESSOR, useExisting: MtxColorpickerInput },
207
+ ], exportAs: ["mtxColorpickerInput"], ngImport: i0 });
208
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MtxColorpickerInput, decorators: [{
209
+ type: Directive,
210
+ args: [{
211
+ selector: 'input[mtxColorpicker]',
212
+ providers: [
213
+ MTX_COLORPICKER_VALUE_ACCESSOR,
214
+ MTX_COLORPICKER_VALIDATORS,
215
+ { provide: MAT_INPUT_VALUE_ACCESSOR, useExisting: MtxColorpickerInput },
216
+ ],
217
+ host: {
218
+ 'class': 'mtx-colorpicker-input',
219
+ '[attr.aria-haspopup]': '_picker ? "dialog" : null',
220
+ '[attr.aria-owns]': '(_picker?.opened && _picker.id) || null',
221
+ '[disabled]': 'disabled',
222
+ '(input)': '_onInput($event.target.value)',
223
+ '(change)': '_onChange()',
224
+ '(blur)': '_onBlur()',
225
+ '(keydown)': '_onKeydown($event)',
226
+ },
227
+ exportAs: 'mtxColorpickerInput',
228
+ }]
229
+ }], ctorParameters: function () {
230
+ return [{ type: i0.ElementRef }, { type: i1.MatFormField, decorators: [{
231
+ type: Optional
232
+ }] }];
233
+ }, propDecorators: { mtxColorpicker: [{
234
+ type: Input
235
+ }], disabled: [{
236
+ type: Input
237
+ }], value: [{
238
+ type: Input
239
+ }], format: [{
240
+ type: Input
241
+ }], colorChange: [{
242
+ type: Output
243
+ }], colorInput: [{
244
+ type: Output
245
+ }] } });
246
+
247
+ /** Can be used to override the icon of a `mtxColorpickerToggle`. */
248
+ class MtxColorpickerToggleIcon {
249
+ }
250
+ /** @nocollapse */ /** @nocollapse */ MtxColorpickerToggleIcon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MtxColorpickerToggleIcon, deps: [], target: i0.ɵɵFactoryTarget.Directive });
251
+ /** @nocollapse */ /** @nocollapse */ MtxColorpickerToggleIcon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.0", type: MtxColorpickerToggleIcon, selector: "[mtxColorpickerToggleIcon]", ngImport: i0 });
252
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MtxColorpickerToggleIcon, decorators: [{
253
+ type: Directive,
254
+ args: [{
255
+ selector: '[mtxColorpickerToggleIcon]',
256
+ }]
257
+ }] });
258
+ class MtxColorpickerToggle {
259
+ constructor(_changeDetectorRef) {
260
+ this._changeDetectorRef = _changeDetectorRef;
261
+ this._stateChanges = Subscription.EMPTY;
262
+ }
263
+ /** Whether the toggle button is disabled. */
264
+ get disabled() {
265
+ if (this._disabled == null && this.picker) {
266
+ return this.picker.disabled;
267
+ }
268
+ return !!this._disabled;
269
+ }
270
+ set disabled(value) {
271
+ this._disabled = coerceBooleanProperty(value);
272
+ }
273
+ ngOnChanges(changes) {
274
+ if (changes.picker) {
275
+ this._watchStateChanges();
276
+ }
277
+ }
278
+ ngOnDestroy() {
279
+ this._stateChanges.unsubscribe();
280
+ }
281
+ ngAfterContentInit() {
282
+ this._watchStateChanges();
283
+ }
284
+ open(event) {
285
+ if (this.picker && !this.disabled) {
286
+ this.picker.open();
287
+ event.stopPropagation();
288
+ }
289
+ }
290
+ _watchStateChanges() {
291
+ const pickerDisabled = this.picker ? this.picker._disabledChange : of();
292
+ const inputDisabled = this.picker && this.picker.pickerInput ? this.picker.pickerInput._disabledChange : of();
293
+ const datepickerToggled = this.picker
294
+ ? merge(this.picker.openedStream, this.picker.closedStream)
295
+ : of();
296
+ this._stateChanges.unsubscribe();
297
+ this._stateChanges = merge([pickerDisabled, inputDisabled, datepickerToggled]).subscribe(() => this._changeDetectorRef.markForCheck());
298
+ }
299
+ }
300
+ /** @nocollapse */ /** @nocollapse */ MtxColorpickerToggle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MtxColorpickerToggle, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
301
+ /** @nocollapse */ /** @nocollapse */ MtxColorpickerToggle.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.0", type: MtxColorpickerToggle, selector: "mtx-colorpicker-toggle", inputs: { picker: ["for", "picker"], tabIndex: "tabIndex", disabled: "disabled", disableRipple: "disableRipple" }, host: { listeners: { "focus": "_button.focus()" }, properties: { "attr.tabindex": "disabled ? null : -1", "class.mtx-colorpicker-toggle-active": "picker && picker.opened", "class.mat-accent": "picker && picker.color === \"accent\"", "class.mat-warn": "picker && picker.color === \"warn\"" }, classAttribute: "mtx-colorpicker-toggle" }, queries: [{ propertyName: "_customIcon", first: true, predicate: MtxColorpickerToggleIcon, descendants: true }], viewQueries: [{ propertyName: "_button", first: true, predicate: ["button"], descendants: true }], exportAs: ["mtxColorpickerToggle"], usesOnChanges: true, ngImport: i0, template: "<button #button\n mat-icon-button\n type=\"button\"\n [attr.aria-haspopup]=\"picker ? 'dialog' : null\"\n [attr.tabindex]=\"disabled ? -1 : tabIndex\"\n [disabled]=\"disabled\"\n [disableRipple]=\"disableRipple\"\n (click)=\"open($event)\">\n\n <svg *ngIf=\"!_customIcon\"\n class=\"mtx-colorpicker-toggle-default-icon\"\n viewBox=\"0 0 24 24\"\n width=\"24px\"\n height=\"24px\"\n fill=\"currentColor\"\n focusable=\"false\">\n <path\n d=\"M17.5,12A1.5,1.5 0 0,1 16,10.5A1.5,1.5 0 0,1 17.5,9A1.5,1.5 0 0,1 19,10.5A1.5,1.5 0 0,1 17.5,12M14.5,8A1.5,1.5 0 0,1 13,6.5A1.5,1.5 0 0,1 14.5,5A1.5,1.5 0 0,1 16,6.5A1.5,1.5 0 0,1 14.5,8M9.5,8A1.5,1.5 0 0,1 8,6.5A1.5,1.5 0 0,1 9.5,5A1.5,1.5 0 0,1 11,6.5A1.5,1.5 0 0,1 9.5,8M6.5,12A1.5,1.5 0 0,1 5,10.5A1.5,1.5 0 0,1 6.5,9A1.5,1.5 0 0,1 8,10.5A1.5,1.5 0 0,1 6.5,12M12,3A9,9 0 0,0 3,12A9,9 0 0,0 12,21A1.5,1.5 0 0,0 13.5,19.5C13.5,19.11 13.35,18.76 13.11,18.5C12.88,18.23 12.73,17.88 12.73,17.5A1.5,1.5 0 0,1 14.23,16H16A5,5 0 0,0 21,11C21,6.58 16.97,3 12,3Z\" />\n </svg>\n\n <ng-content select=\"[mtxColorpickerToggleIcon]\"></ng-content>\n</button>\n", styles: [".mat-form-field-appearance-legacy .mat-form-field-prefix .mtx-colorpicker-toggle-default-icon,.mat-form-field-appearance-legacy .mat-form-field-suffix .mtx-colorpicker-toggle-default-icon{width:1em}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mtx-colorpicker-toggle-default-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mtx-colorpicker-toggle-default-icon{display:block;width:1.5em;height:1.5em}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button .mtx-colorpicker-toggle-default-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button .mtx-colorpicker-toggle-default-icon{margin:auto}\n"], components: [{ type: i1$1.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
302
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MtxColorpickerToggle, decorators: [{
303
+ type: Component,
304
+ args: [{ selector: 'mtx-colorpicker-toggle', host: {
305
+ 'class': 'mtx-colorpicker-toggle',
306
+ // Always set the tabindex to -1 so that it doesn't overlap with any custom tabindex the
307
+ // consumer may have provided, while still being able to receive focus.
308
+ '[attr.tabindex]': 'disabled ? null : -1',
309
+ '[class.mtx-colorpicker-toggle-active]': 'picker && picker.opened',
310
+ '[class.mat-accent]': 'picker && picker.color === "accent"',
311
+ '[class.mat-warn]': 'picker && picker.color === "warn"',
312
+ '(focus)': '_button.focus()',
313
+ }, exportAs: 'mtxColorpickerToggle', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<button #button\n mat-icon-button\n type=\"button\"\n [attr.aria-haspopup]=\"picker ? 'dialog' : null\"\n [attr.tabindex]=\"disabled ? -1 : tabIndex\"\n [disabled]=\"disabled\"\n [disableRipple]=\"disableRipple\"\n (click)=\"open($event)\">\n\n <svg *ngIf=\"!_customIcon\"\n class=\"mtx-colorpicker-toggle-default-icon\"\n viewBox=\"0 0 24 24\"\n width=\"24px\"\n height=\"24px\"\n fill=\"currentColor\"\n focusable=\"false\">\n <path\n d=\"M17.5,12A1.5,1.5 0 0,1 16,10.5A1.5,1.5 0 0,1 17.5,9A1.5,1.5 0 0,1 19,10.5A1.5,1.5 0 0,1 17.5,12M14.5,8A1.5,1.5 0 0,1 13,6.5A1.5,1.5 0 0,1 14.5,5A1.5,1.5 0 0,1 16,6.5A1.5,1.5 0 0,1 14.5,8M9.5,8A1.5,1.5 0 0,1 8,6.5A1.5,1.5 0 0,1 9.5,5A1.5,1.5 0 0,1 11,6.5A1.5,1.5 0 0,1 9.5,8M6.5,12A1.5,1.5 0 0,1 5,10.5A1.5,1.5 0 0,1 6.5,9A1.5,1.5 0 0,1 8,10.5A1.5,1.5 0 0,1 6.5,12M12,3A9,9 0 0,0 3,12A9,9 0 0,0 12,21A1.5,1.5 0 0,0 13.5,19.5C13.5,19.11 13.35,18.76 13.11,18.5C12.88,18.23 12.73,17.88 12.73,17.5A1.5,1.5 0 0,1 14.23,16H16A5,5 0 0,0 21,11C21,6.58 16.97,3 12,3Z\" />\n </svg>\n\n <ng-content select=\"[mtxColorpickerToggleIcon]\"></ng-content>\n</button>\n", styles: [".mat-form-field-appearance-legacy .mat-form-field-prefix .mtx-colorpicker-toggle-default-icon,.mat-form-field-appearance-legacy .mat-form-field-suffix .mtx-colorpicker-toggle-default-icon{width:1em}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mtx-colorpicker-toggle-default-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mtx-colorpicker-toggle-default-icon{display:block;width:1.5em;height:1.5em}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button .mtx-colorpicker-toggle-default-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button .mtx-colorpicker-toggle-default-icon{margin:auto}\n"] }]
314
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { picker: [{
315
+ type: Input,
316
+ args: ['for']
317
+ }], tabIndex: [{
318
+ type: Input
319
+ }], disabled: [{
320
+ type: Input
321
+ }], disableRipple: [{
322
+ type: Input
323
+ }], _customIcon: [{
324
+ type: ContentChild,
325
+ args: [MtxColorpickerToggleIcon]
326
+ }], _button: [{
327
+ type: ViewChild,
328
+ args: ['button']
329
+ }] } });
330
+
331
+ /**
332
+ * Animations used by the colorpicker.
333
+ * @docs-private
334
+ */
335
+ const mtxColorpickerAnimations = {
336
+ /** Transforms the height of the colorpicker's panel. */
337
+ transformPanel: trigger('transformPanel', [
338
+ transition('void => enter-dropdown', animate('120ms cubic-bezier(0, 0, 0.2, 1)', keyframes([
339
+ style({ opacity: 0, transform: 'scale(1, 0.8)' }),
340
+ style({ opacity: 1, transform: 'scale(1, 1)' }),
341
+ ]))),
342
+ transition('* => void', animate('100ms linear', style({ opacity: 0 }))),
343
+ ]),
344
+ };
345
+
346
+ /** Used to generate a unique ID for each colorpicker instance. */
347
+ let colorpickerUid = 0;
348
+ /** Injection token that determines the scroll handling while the panel is open. */
349
+ const MTX_COLORPICKER_SCROLL_STRATEGY = new InjectionToken('mtx-colorpicker-scroll-strategy');
350
+ function MTX_COLORPICKER_SCROLL_STRATEGY_FACTORY(overlay) {
351
+ return () => overlay.scrollStrategies.reposition();
352
+ }
353
+ const MTX_COLORPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER = {
354
+ provide: MTX_COLORPICKER_SCROLL_STRATEGY,
355
+ deps: [Overlay],
356
+ useFactory: MTX_COLORPICKER_SCROLL_STRATEGY_FACTORY,
357
+ };
358
+ // Boilerplate for applying mixins to MtxColorpickerContent.
359
+ /** @docs-private */
360
+ const _MtxColorpickerContentBase = mixinColor(class {
361
+ constructor(_elementRef) {
362
+ this._elementRef = _elementRef;
363
+ }
364
+ });
365
+ class MtxColorpickerContent extends _MtxColorpickerContentBase {
366
+ constructor(elementRef, _changeDetectorRef) {
367
+ super(elementRef);
368
+ this._changeDetectorRef = _changeDetectorRef;
369
+ /** Current state of the animation. */
370
+ this._animationState = 'enter-dropdown';
371
+ /** Emits when an animation has finished. */
372
+ this._animationDone = new Subject();
373
+ }
374
+ _startExitAnimation() {
375
+ this._animationState = 'void';
376
+ this._changeDetectorRef.markForCheck();
377
+ }
378
+ ngOnDestroy() {
379
+ this._animationDone.complete();
380
+ }
381
+ getColorString(e) {
382
+ return {
383
+ hex: e.color.rgb.a === 1 ? e.color.hex : new TinyColor(e.color.rgb).toHex8String(),
384
+ rgb: new TinyColor(e.color.rgb).toRgbString(),
385
+ hsl: new TinyColor(e.color.hsl).toHslString(),
386
+ hsv: new TinyColor(e.color.hsv).toHsvString(),
387
+ }[this.picker.format];
388
+ }
389
+ }
390
+ /** @nocollapse */ /** @nocollapse */ MtxColorpickerContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MtxColorpickerContent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
391
+ /** @nocollapse */ /** @nocollapse */ MtxColorpickerContent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.0", type: MtxColorpickerContent, selector: "mtx-colorpicker-content", inputs: { color: "color" }, host: { listeners: { "@transformPanel.done": "_animationDone.next()" }, properties: { "@transformPanel": "_animationState" }, classAttribute: "mtx-colorpicker-content" }, exportAs: ["mtxColorpickerContent"], usesInheritance: true, ngImport: i0, template: "<ng-template [ngIf]=\"picker.content\" [ngIfElse]=\"default\"\n [ngTemplateOutlet]=\"picker.content\">\n</ng-template>\n<ng-template #default>\n <color-chrome [color]=\"picker.selected\"\n (onChangeComplete)=\"picker.select(getColorString($event))\">\n </color-chrome>\n</ng-template>\n", styles: [".mtx-colorpicker-content{display:block;border-radius:4px}\n"], components: [{ type: i1$2.ChromeComponent, selector: "color-chrome", inputs: ["disableAlpha"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], animations: [mtxColorpickerAnimations.transformPanel], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
392
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MtxColorpickerContent, decorators: [{
393
+ type: Component,
394
+ args: [{ selector: 'mtx-colorpicker-content', host: {
395
+ 'class': 'mtx-colorpicker-content',
396
+ '[@transformPanel]': '_animationState',
397
+ '(@transformPanel.done)': '_animationDone.next()',
398
+ }, animations: [mtxColorpickerAnimations.transformPanel], exportAs: 'mtxColorpickerContent', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, inputs: ['color'], template: "<ng-template [ngIf]=\"picker.content\" [ngIfElse]=\"default\"\n [ngTemplateOutlet]=\"picker.content\">\n</ng-template>\n<ng-template #default>\n <color-chrome [color]=\"picker.selected\"\n (onChangeComplete)=\"picker.select(getColorString($event))\">\n </color-chrome>\n</ng-template>\n", styles: [".mtx-colorpicker-content{display:block;border-radius:4px}\n"] }]
399
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; } });
400
+ class MtxColorpicker {
401
+ constructor(_overlay, _ngZone, _viewContainerRef, scrollStrategy, _dir, _document) {
402
+ this._overlay = _overlay;
403
+ this._ngZone = _ngZone;
404
+ this._viewContainerRef = _viewContainerRef;
405
+ this._dir = _dir;
406
+ this._document = _document;
407
+ this._inputStateChanges = Subscription.EMPTY;
408
+ /** Emits when the colorpicker has been opened. */
409
+ this.openedStream = new EventEmitter();
410
+ /** Emits when the colorpicker has been closed. */
411
+ this.closedStream = new EventEmitter();
412
+ /** Preferred position of the colorpicker in the X axis. */
413
+ this.xPosition = 'start';
414
+ /** Preferred position of the colorpicker in the Y axis. */
415
+ this.yPosition = 'below';
416
+ this._restoreFocus = true;
417
+ this._opened = false;
418
+ /** The id for the colorpicker panel. */
419
+ this.id = `mtx-colorpicker-${colorpickerUid++}`;
420
+ this._validSelected = '';
421
+ /** The element that was focused before the colorpicker was opened. */
422
+ this._focusedElementBeforeOpen = null;
423
+ /** Unique class that will be added to the backdrop so that the test harnesses can look it up. */
424
+ this._backdropHarnessClass = `${this.id}-backdrop`;
425
+ /** Emits when the datepicker is disabled. */
426
+ this._disabledChange = new Subject();
427
+ /** Emits new selected color when selected color changes. */
428
+ this._selectedChanged = new Subject();
429
+ this._scrollStrategy = scrollStrategy;
430
+ }
431
+ get disabled() {
432
+ return this._disabled === undefined && this.pickerInput
433
+ ? this.pickerInput.disabled
434
+ : !!this._disabled;
435
+ }
436
+ set disabled(value) {
437
+ const newValue = coerceBooleanProperty(value);
438
+ if (newValue !== this._disabled) {
439
+ this._disabled = newValue;
440
+ this._disabledChange.next(newValue);
441
+ }
442
+ }
443
+ /**
444
+ * Whether to restore focus to the previously-focused element when the panel is closed.
445
+ * Note that automatic focus restoration is an accessibility feature and it is recommended that
446
+ * you provide your own equivalent, if you decide to turn it off.
447
+ */
448
+ get restoreFocus() {
449
+ return this._restoreFocus;
450
+ }
451
+ set restoreFocus(value) {
452
+ this._restoreFocus = coerceBooleanProperty(value);
453
+ }
454
+ /** Whether the panel is open. */
455
+ get opened() {
456
+ return this._opened;
457
+ }
458
+ set opened(value) {
459
+ coerceBooleanProperty(value) ? this.open() : this.close();
460
+ }
461
+ /** Color palette to use on the colorpicker's panel. */
462
+ get color() {
463
+ return this._color || (this.pickerInput ? this.pickerInput.getThemePalette() : undefined);
464
+ }
465
+ set color(value) {
466
+ this._color = value;
467
+ }
468
+ /** The input and output color format. */
469
+ get format() {
470
+ return this._format || this.pickerInput.format;
471
+ }
472
+ set format(value) {
473
+ this._format = value;
474
+ }
475
+ /** The currently selected color. */
476
+ get selected() {
477
+ return this._validSelected;
478
+ }
479
+ set selected(value) {
480
+ this._validSelected = value;
481
+ }
482
+ ngOnChanges() { }
483
+ ngOnDestroy() {
484
+ this._destroyOverlay();
485
+ this.close();
486
+ this._inputStateChanges.unsubscribe();
487
+ this._disabledChange.complete();
488
+ }
489
+ /** Selects the given color */
490
+ select(nextVal) {
491
+ const oldValue = this.selected;
492
+ this.selected = nextVal;
493
+ // TODO: `nextVal` should compare with `oldValue`
494
+ this._selectedChanged.next(nextVal);
495
+ }
496
+ /**
497
+ * Register an input with this colorpicker.
498
+ * @param input The colorpicker input to register with this colorpicker.
499
+ */
500
+ registerInput(input) {
501
+ if (this.pickerInput) {
502
+ throw Error('A Colorpicker can only be associated with a single input.');
503
+ }
504
+ this.pickerInput = input;
505
+ this._inputStateChanges = input._valueChange.subscribe((value) => (this.selected = value));
506
+ }
507
+ open() {
508
+ if (this._opened || this.disabled) {
509
+ return;
510
+ }
511
+ if (!this.pickerInput) {
512
+ throw Error('Attempted to open an Colorpicker with no associated input.');
513
+ }
514
+ if (this._document) {
515
+ this._focusedElementBeforeOpen = this._document.activeElement;
516
+ }
517
+ this._openOverlay();
518
+ this._opened = true;
519
+ this.openedStream.emit();
520
+ }
521
+ /** Close the panel. */
522
+ close() {
523
+ if (!this._opened) {
524
+ return;
525
+ }
526
+ if (this._componentRef) {
527
+ const instance = this._componentRef.instance;
528
+ instance._startExitAnimation();
529
+ instance._animationDone.pipe(take(1)).subscribe(() => this._destroyOverlay());
530
+ }
531
+ const completeClose = () => {
532
+ // The `_opened` could've been reset already if
533
+ // we got two events in quick succession.
534
+ if (this._opened) {
535
+ this._opened = false;
536
+ this.closedStream.emit();
537
+ this._focusedElementBeforeOpen = null;
538
+ }
539
+ };
540
+ if (this._restoreFocus &&
541
+ this._focusedElementBeforeOpen &&
542
+ typeof this._focusedElementBeforeOpen.focus === 'function') {
543
+ // Because IE moves focus asynchronously, we can't count on it being restored before we've
544
+ // marked the colorpicker as closed. If the event fires out of sequence and the element that
545
+ // we're refocusing opens the colorpicker on focus, the user could be stuck with not being
546
+ // able to close the panel at all. We work around it by making the logic, that marks
547
+ // the colorpicker as closed, async as well.
548
+ this._focusedElementBeforeOpen.focus();
549
+ setTimeout(completeClose);
550
+ }
551
+ else {
552
+ completeClose();
553
+ }
554
+ }
555
+ /** Forwards relevant values from the colorpicker to the colorpicker content inside the overlay. */
556
+ _forwardContentValues(instance) {
557
+ instance.picker = this;
558
+ instance.color = this.color;
559
+ }
560
+ /** Open the colopicker as a popup. */
561
+ _openOverlay() {
562
+ this._destroyOverlay();
563
+ const labelId = this.pickerInput.getOverlayLabelId();
564
+ const portal = new ComponentPortal(MtxColorpickerContent, this._viewContainerRef);
565
+ const overlayRef = (this._overlayRef = this._overlay.create(new OverlayConfig({
566
+ positionStrategy: this._getDropdownStrategy(),
567
+ hasBackdrop: true,
568
+ backdropClass: ['mat-overlay-transparent-backdrop', this._backdropHarnessClass],
569
+ direction: this._dir,
570
+ scrollStrategy: this._scrollStrategy(),
571
+ panelClass: `mtx-colorpicker-popup`,
572
+ })));
573
+ const overlayElement = overlayRef.overlayElement;
574
+ overlayElement.setAttribute('role', 'dialog');
575
+ if (labelId) {
576
+ overlayElement.setAttribute('aria-labelledby', labelId);
577
+ }
578
+ this._getCloseStream(overlayRef).subscribe(event => {
579
+ if (event) {
580
+ event.preventDefault();
581
+ }
582
+ this.close();
583
+ });
584
+ this._componentRef = overlayRef.attach(portal);
585
+ this._forwardContentValues(this._componentRef.instance);
586
+ // Update the position once the panel has rendered. Only relevant in dropdown mode.
587
+ this._ngZone.onStable.pipe(take(1)).subscribe(() => overlayRef.updatePosition());
588
+ }
589
+ _destroyOverlay() {
590
+ if (this._overlayRef) {
591
+ this._overlayRef.dispose();
592
+ this._overlayRef = this._componentRef = null;
593
+ }
594
+ }
595
+ /** Gets a position strategy that will open the panel as a dropdown. */
596
+ _getDropdownStrategy() {
597
+ const strategy = this._overlay
598
+ .position()
599
+ .flexibleConnectedTo(this.pickerInput.getConnectedOverlayOrigin())
600
+ .withTransformOriginOn('.mtx-colorpicker-content')
601
+ .withFlexibleDimensions(false)
602
+ .withViewportMargin(8)
603
+ .withLockedPosition();
604
+ return this._setConnectedPositions(strategy);
605
+ }
606
+ /** Sets the positions of the colorpicker in dropdown mode based on the current configuration. */
607
+ _setConnectedPositions(strategy) {
608
+ const primaryX = this.xPosition === 'end' ? 'end' : 'start';
609
+ const secondaryX = primaryX === 'start' ? 'end' : 'start';
610
+ const primaryY = this.yPosition === 'above' ? 'bottom' : 'top';
611
+ const secondaryY = primaryY === 'top' ? 'bottom' : 'top';
612
+ return strategy.withPositions([
613
+ {
614
+ originX: primaryX,
615
+ originY: secondaryY,
616
+ overlayX: primaryX,
617
+ overlayY: primaryY,
618
+ },
619
+ {
620
+ originX: primaryX,
621
+ originY: primaryY,
622
+ overlayX: primaryX,
623
+ overlayY: secondaryY,
624
+ },
625
+ {
626
+ originX: secondaryX,
627
+ originY: secondaryY,
628
+ overlayX: secondaryX,
629
+ overlayY: primaryY,
630
+ },
631
+ {
632
+ originX: secondaryX,
633
+ originY: primaryY,
634
+ overlayX: secondaryX,
635
+ overlayY: secondaryY,
636
+ },
637
+ ]);
638
+ }
639
+ /** Gets an observable that will emit when the overlay is supposed to be closed. */
640
+ _getCloseStream(overlayRef) {
641
+ return merge(overlayRef.backdropClick(), overlayRef.detachments(), overlayRef.keydownEvents().pipe(filter(event => {
642
+ // Closing on alt + up is only valid when there's an input associated with the colorpicker.
643
+ return ((event.keyCode === ESCAPE && !hasModifierKey(event)) ||
644
+ (this.pickerInput && hasModifierKey(event, 'altKey') && event.keyCode === UP_ARROW));
645
+ })));
646
+ }
647
+ }
648
+ /** @nocollapse */ /** @nocollapse */ MtxColorpicker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MtxColorpicker, deps: [{ token: i3.Overlay }, { token: i0.NgZone }, { token: i0.ViewContainerRef }, { token: MTX_COLORPICKER_SCROLL_STRATEGY }, { token: i4.Directionality, optional: true }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Component });
649
+ /** @nocollapse */ /** @nocollapse */ MtxColorpicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.0", type: MtxColorpicker, selector: "mtx-colorpicker", inputs: { content: "content", disabled: "disabled", xPosition: "xPosition", yPosition: "yPosition", restoreFocus: "restoreFocus", opened: "opened", color: "color", format: "format" }, outputs: { openedStream: "opened", closedStream: "closed" }, exportAs: ["mtxColorpicker"], usesOnChanges: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
650
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MtxColorpicker, decorators: [{
651
+ type: Component,
652
+ args: [{
653
+ selector: 'mtx-colorpicker',
654
+ template: '',
655
+ exportAs: 'mtxColorpicker',
656
+ changeDetection: ChangeDetectionStrategy.OnPush,
657
+ encapsulation: ViewEncapsulation.None,
658
+ }]
659
+ }], ctorParameters: function () {
660
+ return [{ type: i3.Overlay }, { type: i0.NgZone }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{
661
+ type: Inject,
662
+ args: [MTX_COLORPICKER_SCROLL_STRATEGY]
663
+ }] }, { type: i4.Directionality, decorators: [{
664
+ type: Optional
665
+ }] }, { type: undefined, decorators: [{
666
+ type: Optional
667
+ }, {
668
+ type: Inject,
669
+ args: [DOCUMENT]
670
+ }] }];
671
+ }, propDecorators: { content: [{
672
+ type: Input
673
+ }], openedStream: [{
674
+ type: Output,
675
+ args: ['opened']
676
+ }], closedStream: [{
677
+ type: Output,
678
+ args: ['closed']
679
+ }], disabled: [{
680
+ type: Input
681
+ }], xPosition: [{
682
+ type: Input
683
+ }], yPosition: [{
684
+ type: Input
685
+ }], restoreFocus: [{
686
+ type: Input
687
+ }], opened: [{
688
+ type: Input
689
+ }], color: [{
690
+ type: Input
691
+ }], format: [{
692
+ type: Input
693
+ }] } });
694
+
695
+ class MtxColorpickerModule {
696
+ }
697
+ /** @nocollapse */ /** @nocollapse */ MtxColorpickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MtxColorpickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
698
+ /** @nocollapse */ /** @nocollapse */ MtxColorpickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MtxColorpickerModule, declarations: [MtxColorpicker,
699
+ MtxColorpickerContent,
700
+ MtxColorpickerInput,
701
+ MtxColorpickerToggle,
702
+ MtxColorpickerToggleIcon], imports: [CommonModule,
703
+ OverlayModule,
704
+ A11yModule,
705
+ PortalModule,
706
+ MatButtonModule,
707
+ ColorChromeModule], exports: [MtxColorpicker,
708
+ MtxColorpickerContent,
709
+ MtxColorpickerInput,
710
+ MtxColorpickerToggle,
711
+ MtxColorpickerToggleIcon] });
712
+ /** @nocollapse */ /** @nocollapse */ MtxColorpickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MtxColorpickerModule, providers: [MTX_COLORPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER], imports: [[
713
+ CommonModule,
714
+ OverlayModule,
715
+ A11yModule,
716
+ PortalModule,
717
+ MatButtonModule,
718
+ ColorChromeModule,
719
+ ]] });
720
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MtxColorpickerModule, decorators: [{
721
+ type: NgModule,
722
+ args: [{
723
+ imports: [
724
+ CommonModule,
725
+ OverlayModule,
726
+ A11yModule,
727
+ PortalModule,
728
+ MatButtonModule,
729
+ ColorChromeModule,
730
+ ],
731
+ exports: [
732
+ MtxColorpicker,
733
+ MtxColorpickerContent,
734
+ MtxColorpickerInput,
735
+ MtxColorpickerToggle,
736
+ MtxColorpickerToggleIcon,
737
+ ],
738
+ declarations: [
739
+ MtxColorpicker,
740
+ MtxColorpickerContent,
741
+ MtxColorpickerInput,
742
+ MtxColorpickerToggle,
743
+ MtxColorpickerToggleIcon,
744
+ ],
745
+ providers: [MTX_COLORPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER],
746
+ }]
747
+ }] });
748
+
749
+ /**
750
+ * Generated bundle index. Do not edit.
751
+ */
752
+
753
+ export { MTX_COLORPICKER_SCROLL_STRATEGY, MTX_COLORPICKER_SCROLL_STRATEGY_FACTORY, MTX_COLORPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER, MTX_COLORPICKER_VALIDATORS, MTX_COLORPICKER_VALUE_ACCESSOR, MtxColorpicker, MtxColorpickerContent, MtxColorpickerInput, MtxColorpickerModule, MtxColorpickerToggle, MtxColorpickerToggleIcon, mtxColorpickerAnimations };
754
+ //# sourceMappingURL=mtxColorpicker.mjs.map