@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,750 @@
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 () { return [{ type: i0.ElementRef }, { type: i1.MatFormField, decorators: [{
230
+ type: Optional
231
+ }] }]; }, propDecorators: { mtxColorpicker: [{
232
+ type: Input
233
+ }], disabled: [{
234
+ type: Input
235
+ }], value: [{
236
+ type: Input
237
+ }], format: [{
238
+ type: Input
239
+ }], colorChange: [{
240
+ type: Output
241
+ }], colorInput: [{
242
+ type: Output
243
+ }] } });
244
+
245
+ /** Can be used to override the icon of a `mtxColorpickerToggle`. */
246
+ class MtxColorpickerToggleIcon {
247
+ }
248
+ /** @nocollapse */ /** @nocollapse */ MtxColorpickerToggleIcon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MtxColorpickerToggleIcon, deps: [], target: i0.ɵɵFactoryTarget.Directive });
249
+ /** @nocollapse */ /** @nocollapse */ MtxColorpickerToggleIcon.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.0", type: MtxColorpickerToggleIcon, selector: "[mtxColorpickerToggleIcon]", ngImport: i0 });
250
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MtxColorpickerToggleIcon, decorators: [{
251
+ type: Directive,
252
+ args: [{
253
+ selector: '[mtxColorpickerToggleIcon]',
254
+ }]
255
+ }] });
256
+ class MtxColorpickerToggle {
257
+ constructor(_changeDetectorRef) {
258
+ this._changeDetectorRef = _changeDetectorRef;
259
+ this._stateChanges = Subscription.EMPTY;
260
+ }
261
+ /** Whether the toggle button is disabled. */
262
+ get disabled() {
263
+ if (this._disabled == null && this.picker) {
264
+ return this.picker.disabled;
265
+ }
266
+ return !!this._disabled;
267
+ }
268
+ set disabled(value) {
269
+ this._disabled = coerceBooleanProperty(value);
270
+ }
271
+ ngOnChanges(changes) {
272
+ if (changes.picker) {
273
+ this._watchStateChanges();
274
+ }
275
+ }
276
+ ngOnDestroy() {
277
+ this._stateChanges.unsubscribe();
278
+ }
279
+ ngAfterContentInit() {
280
+ this._watchStateChanges();
281
+ }
282
+ open(event) {
283
+ if (this.picker && !this.disabled) {
284
+ this.picker.open();
285
+ event.stopPropagation();
286
+ }
287
+ }
288
+ _watchStateChanges() {
289
+ const pickerDisabled = this.picker ? this.picker._disabledChange : of();
290
+ const inputDisabled = this.picker && this.picker.pickerInput ? this.picker.pickerInput._disabledChange : of();
291
+ const datepickerToggled = this.picker
292
+ ? merge(this.picker.openedStream, this.picker.closedStream)
293
+ : of();
294
+ this._stateChanges.unsubscribe();
295
+ this._stateChanges = merge([pickerDisabled, inputDisabled, datepickerToggled]).subscribe(() => this._changeDetectorRef.markForCheck());
296
+ }
297
+ }
298
+ /** @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 });
299
+ /** @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 });
300
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MtxColorpickerToggle, decorators: [{
301
+ type: Component,
302
+ args: [{ selector: 'mtx-colorpicker-toggle', host: {
303
+ 'class': 'mtx-colorpicker-toggle',
304
+ // Always set the tabindex to -1 so that it doesn't overlap with any custom tabindex the
305
+ // consumer may have provided, while still being able to receive focus.
306
+ '[attr.tabindex]': 'disabled ? null : -1',
307
+ '[class.mtx-colorpicker-toggle-active]': 'picker && picker.opened',
308
+ '[class.mat-accent]': 'picker && picker.color === "accent"',
309
+ '[class.mat-warn]': 'picker && picker.color === "warn"',
310
+ '(focus)': '_button.focus()',
311
+ }, 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"] }]
312
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { picker: [{
313
+ type: Input,
314
+ args: ['for']
315
+ }], tabIndex: [{
316
+ type: Input
317
+ }], disabled: [{
318
+ type: Input
319
+ }], disableRipple: [{
320
+ type: Input
321
+ }], _customIcon: [{
322
+ type: ContentChild,
323
+ args: [MtxColorpickerToggleIcon]
324
+ }], _button: [{
325
+ type: ViewChild,
326
+ args: ['button']
327
+ }] } });
328
+
329
+ /**
330
+ * Animations used by the colorpicker.
331
+ * @docs-private
332
+ */
333
+ const mtxColorpickerAnimations = {
334
+ /** Transforms the height of the colorpicker's panel. */
335
+ transformPanel: trigger('transformPanel', [
336
+ transition('void => enter-dropdown', animate('120ms cubic-bezier(0, 0, 0.2, 1)', keyframes([
337
+ style({ opacity: 0, transform: 'scale(1, 0.8)' }),
338
+ style({ opacity: 1, transform: 'scale(1, 1)' }),
339
+ ]))),
340
+ transition('* => void', animate('100ms linear', style({ opacity: 0 }))),
341
+ ]),
342
+ };
343
+
344
+ /** Used to generate a unique ID for each colorpicker instance. */
345
+ let colorpickerUid = 0;
346
+ /** Injection token that determines the scroll handling while the panel is open. */
347
+ const MTX_COLORPICKER_SCROLL_STRATEGY = new InjectionToken('mtx-colorpicker-scroll-strategy');
348
+ function MTX_COLORPICKER_SCROLL_STRATEGY_FACTORY(overlay) {
349
+ return () => overlay.scrollStrategies.reposition();
350
+ }
351
+ const MTX_COLORPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER = {
352
+ provide: MTX_COLORPICKER_SCROLL_STRATEGY,
353
+ deps: [Overlay],
354
+ useFactory: MTX_COLORPICKER_SCROLL_STRATEGY_FACTORY,
355
+ };
356
+ // Boilerplate for applying mixins to MtxColorpickerContent.
357
+ /** @docs-private */
358
+ const _MtxColorpickerContentBase = mixinColor(class {
359
+ constructor(_elementRef) {
360
+ this._elementRef = _elementRef;
361
+ }
362
+ });
363
+ class MtxColorpickerContent extends _MtxColorpickerContentBase {
364
+ constructor(elementRef, _changeDetectorRef) {
365
+ super(elementRef);
366
+ this._changeDetectorRef = _changeDetectorRef;
367
+ /** Current state of the animation. */
368
+ this._animationState = 'enter-dropdown';
369
+ /** Emits when an animation has finished. */
370
+ this._animationDone = new Subject();
371
+ }
372
+ _startExitAnimation() {
373
+ this._animationState = 'void';
374
+ this._changeDetectorRef.markForCheck();
375
+ }
376
+ ngOnDestroy() {
377
+ this._animationDone.complete();
378
+ }
379
+ getColorString(e) {
380
+ return {
381
+ hex: e.color.rgb.a === 1 ? e.color.hex : new TinyColor(e.color.rgb).toHex8String(),
382
+ rgb: new TinyColor(e.color.rgb).toRgbString(),
383
+ hsl: new TinyColor(e.color.hsl).toHslString(),
384
+ hsv: new TinyColor(e.color.hsv).toHsvString(),
385
+ }[this.picker.format];
386
+ }
387
+ }
388
+ /** @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 });
389
+ /** @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 });
390
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MtxColorpickerContent, decorators: [{
391
+ type: Component,
392
+ args: [{ selector: 'mtx-colorpicker-content', host: {
393
+ 'class': 'mtx-colorpicker-content',
394
+ '[@transformPanel]': '_animationState',
395
+ '(@transformPanel.done)': '_animationDone.next()',
396
+ }, 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"] }]
397
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; } });
398
+ class MtxColorpicker {
399
+ constructor(_overlay, _ngZone, _viewContainerRef, scrollStrategy, _dir, _document) {
400
+ this._overlay = _overlay;
401
+ this._ngZone = _ngZone;
402
+ this._viewContainerRef = _viewContainerRef;
403
+ this._dir = _dir;
404
+ this._document = _document;
405
+ this._inputStateChanges = Subscription.EMPTY;
406
+ /** Emits when the colorpicker has been opened. */
407
+ this.openedStream = new EventEmitter();
408
+ /** Emits when the colorpicker has been closed. */
409
+ this.closedStream = new EventEmitter();
410
+ /** Preferred position of the colorpicker in the X axis. */
411
+ this.xPosition = 'start';
412
+ /** Preferred position of the colorpicker in the Y axis. */
413
+ this.yPosition = 'below';
414
+ this._restoreFocus = true;
415
+ this._opened = false;
416
+ /** The id for the colorpicker panel. */
417
+ this.id = `mtx-colorpicker-${colorpickerUid++}`;
418
+ this._validSelected = '';
419
+ /** The element that was focused before the colorpicker was opened. */
420
+ this._focusedElementBeforeOpen = null;
421
+ /** Unique class that will be added to the backdrop so that the test harnesses can look it up. */
422
+ this._backdropHarnessClass = `${this.id}-backdrop`;
423
+ /** Emits when the datepicker is disabled. */
424
+ this._disabledChange = new Subject();
425
+ /** Emits new selected color when selected color changes. */
426
+ this._selectedChanged = new Subject();
427
+ this._scrollStrategy = scrollStrategy;
428
+ }
429
+ get disabled() {
430
+ return this._disabled === undefined && this.pickerInput
431
+ ? this.pickerInput.disabled
432
+ : !!this._disabled;
433
+ }
434
+ set disabled(value) {
435
+ const newValue = coerceBooleanProperty(value);
436
+ if (newValue !== this._disabled) {
437
+ this._disabled = newValue;
438
+ this._disabledChange.next(newValue);
439
+ }
440
+ }
441
+ /**
442
+ * Whether to restore focus to the previously-focused element when the panel is closed.
443
+ * Note that automatic focus restoration is an accessibility feature and it is recommended that
444
+ * you provide your own equivalent, if you decide to turn it off.
445
+ */
446
+ get restoreFocus() {
447
+ return this._restoreFocus;
448
+ }
449
+ set restoreFocus(value) {
450
+ this._restoreFocus = coerceBooleanProperty(value);
451
+ }
452
+ /** Whether the panel is open. */
453
+ get opened() {
454
+ return this._opened;
455
+ }
456
+ set opened(value) {
457
+ coerceBooleanProperty(value) ? this.open() : this.close();
458
+ }
459
+ /** Color palette to use on the colorpicker's panel. */
460
+ get color() {
461
+ return this._color || (this.pickerInput ? this.pickerInput.getThemePalette() : undefined);
462
+ }
463
+ set color(value) {
464
+ this._color = value;
465
+ }
466
+ /** The input and output color format. */
467
+ get format() {
468
+ return this._format || this.pickerInput.format;
469
+ }
470
+ set format(value) {
471
+ this._format = value;
472
+ }
473
+ /** The currently selected color. */
474
+ get selected() {
475
+ return this._validSelected;
476
+ }
477
+ set selected(value) {
478
+ this._validSelected = value;
479
+ }
480
+ ngOnChanges() { }
481
+ ngOnDestroy() {
482
+ this._destroyOverlay();
483
+ this.close();
484
+ this._inputStateChanges.unsubscribe();
485
+ this._disabledChange.complete();
486
+ }
487
+ /** Selects the given color */
488
+ select(nextVal) {
489
+ const oldValue = this.selected;
490
+ this.selected = nextVal;
491
+ // TODO: `nextVal` should compare with `oldValue`
492
+ this._selectedChanged.next(nextVal);
493
+ }
494
+ /**
495
+ * Register an input with this colorpicker.
496
+ * @param input The colorpicker input to register with this colorpicker.
497
+ */
498
+ registerInput(input) {
499
+ if (this.pickerInput) {
500
+ throw Error('A Colorpicker can only be associated with a single input.');
501
+ }
502
+ this.pickerInput = input;
503
+ this._inputStateChanges = input._valueChange.subscribe((value) => (this.selected = value));
504
+ }
505
+ open() {
506
+ if (this._opened || this.disabled) {
507
+ return;
508
+ }
509
+ if (!this.pickerInput) {
510
+ throw Error('Attempted to open an Colorpicker with no associated input.');
511
+ }
512
+ if (this._document) {
513
+ this._focusedElementBeforeOpen = this._document.activeElement;
514
+ }
515
+ this._openOverlay();
516
+ this._opened = true;
517
+ this.openedStream.emit();
518
+ }
519
+ /** Close the panel. */
520
+ close() {
521
+ if (!this._opened) {
522
+ return;
523
+ }
524
+ if (this._componentRef) {
525
+ const instance = this._componentRef.instance;
526
+ instance._startExitAnimation();
527
+ instance._animationDone.pipe(take(1)).subscribe(() => this._destroyOverlay());
528
+ }
529
+ const completeClose = () => {
530
+ // The `_opened` could've been reset already if
531
+ // we got two events in quick succession.
532
+ if (this._opened) {
533
+ this._opened = false;
534
+ this.closedStream.emit();
535
+ this._focusedElementBeforeOpen = null;
536
+ }
537
+ };
538
+ if (this._restoreFocus &&
539
+ this._focusedElementBeforeOpen &&
540
+ typeof this._focusedElementBeforeOpen.focus === 'function') {
541
+ // Because IE moves focus asynchronously, we can't count on it being restored before we've
542
+ // marked the colorpicker as closed. If the event fires out of sequence and the element that
543
+ // we're refocusing opens the colorpicker on focus, the user could be stuck with not being
544
+ // able to close the panel at all. We work around it by making the logic, that marks
545
+ // the colorpicker as closed, async as well.
546
+ this._focusedElementBeforeOpen.focus();
547
+ setTimeout(completeClose);
548
+ }
549
+ else {
550
+ completeClose();
551
+ }
552
+ }
553
+ /** Forwards relevant values from the colorpicker to the colorpicker content inside the overlay. */
554
+ _forwardContentValues(instance) {
555
+ instance.picker = this;
556
+ instance.color = this.color;
557
+ }
558
+ /** Open the colopicker as a popup. */
559
+ _openOverlay() {
560
+ this._destroyOverlay();
561
+ const labelId = this.pickerInput.getOverlayLabelId();
562
+ const portal = new ComponentPortal(MtxColorpickerContent, this._viewContainerRef);
563
+ const overlayRef = (this._overlayRef = this._overlay.create(new OverlayConfig({
564
+ positionStrategy: this._getDropdownStrategy(),
565
+ hasBackdrop: true,
566
+ backdropClass: ['mat-overlay-transparent-backdrop', this._backdropHarnessClass],
567
+ direction: this._dir,
568
+ scrollStrategy: this._scrollStrategy(),
569
+ panelClass: `mtx-colorpicker-popup`,
570
+ })));
571
+ const overlayElement = overlayRef.overlayElement;
572
+ overlayElement.setAttribute('role', 'dialog');
573
+ if (labelId) {
574
+ overlayElement.setAttribute('aria-labelledby', labelId);
575
+ }
576
+ this._getCloseStream(overlayRef).subscribe(event => {
577
+ if (event) {
578
+ event.preventDefault();
579
+ }
580
+ this.close();
581
+ });
582
+ this._componentRef = overlayRef.attach(portal);
583
+ this._forwardContentValues(this._componentRef.instance);
584
+ // Update the position once the panel has rendered. Only relevant in dropdown mode.
585
+ this._ngZone.onStable.pipe(take(1)).subscribe(() => overlayRef.updatePosition());
586
+ }
587
+ _destroyOverlay() {
588
+ if (this._overlayRef) {
589
+ this._overlayRef.dispose();
590
+ this._overlayRef = this._componentRef = null;
591
+ }
592
+ }
593
+ /** Gets a position strategy that will open the panel as a dropdown. */
594
+ _getDropdownStrategy() {
595
+ const strategy = this._overlay
596
+ .position()
597
+ .flexibleConnectedTo(this.pickerInput.getConnectedOverlayOrigin())
598
+ .withTransformOriginOn('.mtx-colorpicker-content')
599
+ .withFlexibleDimensions(false)
600
+ .withViewportMargin(8)
601
+ .withLockedPosition();
602
+ return this._setConnectedPositions(strategy);
603
+ }
604
+ /** Sets the positions of the colorpicker in dropdown mode based on the current configuration. */
605
+ _setConnectedPositions(strategy) {
606
+ const primaryX = this.xPosition === 'end' ? 'end' : 'start';
607
+ const secondaryX = primaryX === 'start' ? 'end' : 'start';
608
+ const primaryY = this.yPosition === 'above' ? 'bottom' : 'top';
609
+ const secondaryY = primaryY === 'top' ? 'bottom' : 'top';
610
+ return strategy.withPositions([
611
+ {
612
+ originX: primaryX,
613
+ originY: secondaryY,
614
+ overlayX: primaryX,
615
+ overlayY: primaryY,
616
+ },
617
+ {
618
+ originX: primaryX,
619
+ originY: primaryY,
620
+ overlayX: primaryX,
621
+ overlayY: secondaryY,
622
+ },
623
+ {
624
+ originX: secondaryX,
625
+ originY: secondaryY,
626
+ overlayX: secondaryX,
627
+ overlayY: primaryY,
628
+ },
629
+ {
630
+ originX: secondaryX,
631
+ originY: primaryY,
632
+ overlayX: secondaryX,
633
+ overlayY: secondaryY,
634
+ },
635
+ ]);
636
+ }
637
+ /** Gets an observable that will emit when the overlay is supposed to be closed. */
638
+ _getCloseStream(overlayRef) {
639
+ return merge(overlayRef.backdropClick(), overlayRef.detachments(), overlayRef.keydownEvents().pipe(filter(event => {
640
+ // Closing on alt + up is only valid when there's an input associated with the colorpicker.
641
+ return ((event.keyCode === ESCAPE && !hasModifierKey(event)) ||
642
+ (this.pickerInput && hasModifierKey(event, 'altKey') && event.keyCode === UP_ARROW));
643
+ })));
644
+ }
645
+ }
646
+ /** @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 });
647
+ /** @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 });
648
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MtxColorpicker, decorators: [{
649
+ type: Component,
650
+ args: [{
651
+ selector: 'mtx-colorpicker',
652
+ template: '',
653
+ exportAs: 'mtxColorpicker',
654
+ changeDetection: ChangeDetectionStrategy.OnPush,
655
+ encapsulation: ViewEncapsulation.None,
656
+ }]
657
+ }], ctorParameters: function () { return [{ type: i3.Overlay }, { type: i0.NgZone }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{
658
+ type: Inject,
659
+ args: [MTX_COLORPICKER_SCROLL_STRATEGY]
660
+ }] }, { type: i4.Directionality, decorators: [{
661
+ type: Optional
662
+ }] }, { type: undefined, decorators: [{
663
+ type: Optional
664
+ }, {
665
+ type: Inject,
666
+ args: [DOCUMENT]
667
+ }] }]; }, propDecorators: { content: [{
668
+ type: Input
669
+ }], openedStream: [{
670
+ type: Output,
671
+ args: ['opened']
672
+ }], closedStream: [{
673
+ type: Output,
674
+ args: ['closed']
675
+ }], disabled: [{
676
+ type: Input
677
+ }], xPosition: [{
678
+ type: Input
679
+ }], yPosition: [{
680
+ type: Input
681
+ }], restoreFocus: [{
682
+ type: Input
683
+ }], opened: [{
684
+ type: Input
685
+ }], color: [{
686
+ type: Input
687
+ }], format: [{
688
+ type: Input
689
+ }] } });
690
+
691
+ class MtxColorpickerModule {
692
+ }
693
+ /** @nocollapse */ /** @nocollapse */ MtxColorpickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MtxColorpickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
694
+ /** @nocollapse */ /** @nocollapse */ MtxColorpickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MtxColorpickerModule, declarations: [MtxColorpicker,
695
+ MtxColorpickerContent,
696
+ MtxColorpickerInput,
697
+ MtxColorpickerToggle,
698
+ MtxColorpickerToggleIcon], imports: [CommonModule,
699
+ OverlayModule,
700
+ A11yModule,
701
+ PortalModule,
702
+ MatButtonModule,
703
+ ColorChromeModule], exports: [MtxColorpicker,
704
+ MtxColorpickerContent,
705
+ MtxColorpickerInput,
706
+ MtxColorpickerToggle,
707
+ MtxColorpickerToggleIcon] });
708
+ /** @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: [[
709
+ CommonModule,
710
+ OverlayModule,
711
+ A11yModule,
712
+ PortalModule,
713
+ MatButtonModule,
714
+ ColorChromeModule,
715
+ ]] });
716
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MtxColorpickerModule, decorators: [{
717
+ type: NgModule,
718
+ args: [{
719
+ imports: [
720
+ CommonModule,
721
+ OverlayModule,
722
+ A11yModule,
723
+ PortalModule,
724
+ MatButtonModule,
725
+ ColorChromeModule,
726
+ ],
727
+ exports: [
728
+ MtxColorpicker,
729
+ MtxColorpickerContent,
730
+ MtxColorpickerInput,
731
+ MtxColorpickerToggle,
732
+ MtxColorpickerToggleIcon,
733
+ ],
734
+ declarations: [
735
+ MtxColorpicker,
736
+ MtxColorpickerContent,
737
+ MtxColorpickerInput,
738
+ MtxColorpickerToggle,
739
+ MtxColorpickerToggleIcon,
740
+ ],
741
+ providers: [MTX_COLORPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER],
742
+ }]
743
+ }] });
744
+
745
+ /**
746
+ * Generated bundle index. Do not edit.
747
+ */
748
+
749
+ 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 };
750
+ //# sourceMappingURL=mtxColorpicker.mjs.map