@ng-matero/extensions 12.3.0 → 12.5.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 (284) hide show
  1. package/README.md +1 -1
  2. package/_all-color.scss +47 -0
  3. package/_all-theme.scss +5 -3
  4. package/_index.scss +4 -2
  5. package/_theming.scss +4 -2
  6. package/alert/_alert-theme.import.scss +2 -2
  7. package/alert/_alert-theme.scss +38 -17
  8. package/alert/alert.component.d.ts +6 -6
  9. package/alert/alert.component.scss +2 -1
  10. package/alert/mtxAlert.metadata.json +1 -1
  11. package/bundles/extensions.umd.js +21 -10
  12. package/bundles/extensions.umd.js.map +1 -1
  13. package/bundles/mtxAlert.umd.js +32 -14
  14. package/bundles/mtxAlert.umd.js.map +1 -1
  15. package/bundles/mtxButton.umd.js +36 -5
  16. package/bundles/mtxButton.umd.js.map +1 -1
  17. package/bundles/mtxCheckboxGroup.umd.js +10 -1
  18. package/bundles/mtxCheckboxGroup.umd.js.map +1 -1
  19. package/bundles/mtxColorPicker.umd.js +10 -1
  20. package/bundles/mtxColorPicker.umd.js.map +1 -1
  21. package/bundles/mtxColumnResize.umd.js +55 -6
  22. package/bundles/mtxColumnResize.umd.js.map +1 -1
  23. package/bundles/mtxCore.umd.js +10 -1
  24. package/bundles/mtxCore.umd.js.map +1 -1
  25. package/bundles/mtxDatetimepicker.umd.js +139 -32
  26. package/bundles/mtxDatetimepicker.umd.js.map +1 -1
  27. package/bundles/mtxDialog.umd.js +17 -2
  28. package/bundles/mtxDialog.umd.js.map +1 -1
  29. package/bundles/mtxFormGroup.umd.js +10 -1
  30. package/bundles/mtxFormGroup.umd.js.map +1 -1
  31. package/bundles/mtxGrid.umd.js +92 -12
  32. package/bundles/mtxGrid.umd.js.map +1 -1
  33. package/bundles/mtxLoader.umd.js +37 -8
  34. package/bundles/mtxLoader.umd.js.map +1 -1
  35. package/bundles/mtxPipes.umd.js +2 -0
  36. package/bundles/mtxPipes.umd.js.map +1 -1
  37. package/bundles/mtxPopover.umd.js +27 -3
  38. package/bundles/mtxPopover.umd.js.map +1 -1
  39. package/bundles/mtxProgress.umd.js +31 -4
  40. package/bundles/mtxProgress.umd.js.map +1 -1
  41. package/bundles/mtxSelect.umd.js +107 -13
  42. package/bundles/mtxSelect.umd.js.map +1 -1
  43. package/bundles/mtxSlider.umd.js +1551 -0
  44. package/bundles/mtxSlider.umd.js.map +1 -0
  45. package/bundles/mtxSplit.umd.js +23 -6
  46. package/bundles/mtxSplit.umd.js.map +1 -1
  47. package/bundles/mtxText3d.umd.js +10 -1
  48. package/bundles/mtxText3d.umd.js.map +1 -1
  49. package/bundles/mtxTooltip.umd.js +18 -2
  50. package/bundles/mtxTooltip.umd.js.map +1 -1
  51. package/button/button-loading.directive.d.ts +9 -2
  52. package/button/mtxButton.metadata.json +1 -1
  53. package/datetimepicker/_datetimepicker-theme.import.scss +4 -2
  54. package/datetimepicker/_datetimepicker-theme.scss +101 -29
  55. package/datetimepicker/calendar-body.scss +0 -3
  56. package/datetimepicker/calendar.d.ts +10 -3
  57. package/datetimepicker/calendar.scss +5 -22
  58. package/datetimepicker/clock.scss +0 -2
  59. package/datetimepicker/datetimepicker-content.scss +2 -2
  60. package/datetimepicker/datetimepicker-input.d.ts +5 -3
  61. package/datetimepicker/datetimepicker-toggle.d.ts +2 -0
  62. package/datetimepicker/datetimepicker.d.ts +13 -3
  63. package/datetimepicker/mtxDatetimepicker.metadata.json +1 -1
  64. package/esm2015/alert/alert.component.js +25 -11
  65. package/esm2015/alert/alert.module.js +2 -1
  66. package/esm2015/button/button-loading.directive.js +31 -8
  67. package/esm2015/button/button.module.js +2 -1
  68. package/esm2015/checkbox-group/checkbox-group.component.js +10 -2
  69. package/esm2015/checkbox-group/checkbox-group.module.js +2 -1
  70. package/esm2015/color-picker/color-picker.component.js +10 -2
  71. package/esm2015/color-picker/color-picker.module.js +2 -1
  72. package/esm2015/column-resize/column-resize-directives/column-resize-flex.js +9 -2
  73. package/esm2015/column-resize/column-resize-directives/column-resize.js +9 -2
  74. package/esm2015/column-resize/column-resize-module.js +2 -1
  75. package/esm2015/column-resize/column-resize-notifier.js +10 -2
  76. package/esm2015/column-resize/column-resize.js +2 -1
  77. package/esm2015/column-resize/column-size-store.js +2 -1
  78. package/esm2015/column-resize/event-dispatcher.js +9 -2
  79. package/esm2015/column-resize/overlay-handle.js +2 -1
  80. package/esm2015/column-resize/resizable.js +2 -1
  81. package/esm2015/column-resize/resize-strategy.js +18 -3
  82. package/esm2015/core/datetime/datetime.module.js +3 -1
  83. package/esm2015/core/datetime/native-datetime-adapter.js +9 -2
  84. package/esm2015/datetimepicker/calendar-body.js +5 -3
  85. package/esm2015/datetimepicker/calendar.js +31 -12
  86. package/esm2015/datetimepicker/clock.js +11 -3
  87. package/esm2015/datetimepicker/datetimepicker-input.js +12 -4
  88. package/esm2015/datetimepicker/datetimepicker-toggle.js +11 -3
  89. package/esm2015/datetimepicker/datetimepicker.js +30 -8
  90. package/esm2015/datetimepicker/datetimepicker.module.js +2 -1
  91. package/esm2015/datetimepicker/month-view.js +11 -3
  92. package/esm2015/datetimepicker/multi-year-view.js +11 -3
  93. package/esm2015/datetimepicker/year-view.js +11 -3
  94. package/esm2015/dialog/dialog.component.js +9 -2
  95. package/esm2015/dialog/dialog.js +9 -2
  96. package/esm2015/dialog/dialog.module.js +2 -1
  97. package/esm2015/extensions-experimental.module.js +2 -1
  98. package/esm2015/extensions.module.js +6 -3
  99. package/esm2015/form-group/form-group.component.js +10 -2
  100. package/esm2015/form-group/form-group.module.js +2 -1
  101. package/esm2015/grid/cell-selection.directive.js +62 -0
  102. package/esm2015/{data-grid → grid}/cell.component.js +10 -2
  103. package/esm2015/{data-grid → grid}/column-menu.component.js +3 -1
  104. package/esm2015/grid/column-resize/column-resize-directives/column-resize-flex.js +47 -0
  105. package/esm2015/grid/column-resize/column-resize-directives/column-resize.js +47 -0
  106. package/esm2015/grid/column-resize/column-resize-directives/common.js +34 -0
  107. package/esm2015/grid/column-resize/column-resize-module.js +36 -0
  108. package/esm2015/grid/column-resize/overlay-handle.js +68 -0
  109. package/esm2015/grid/column-resize/resizable-directives/common.js +29 -0
  110. package/esm2015/grid/column-resize/resizable-directives/resizable.js +75 -0
  111. package/esm2015/grid/column-resize/resize-strategy.js +45 -0
  112. package/esm2015/grid/expansion-toggle.directive.js +62 -0
  113. package/esm2015/{data-grid → grid}/grid.component.js +10 -2
  114. package/esm2015/grid/grid.interface.js +2 -0
  115. package/esm2015/grid/grid.module.js +69 -0
  116. package/esm2015/grid/grid.service.js +50 -0
  117. package/esm2015/grid/mtxGrid.js +5 -0
  118. package/esm2015/grid/public-api.js +17 -0
  119. package/esm2015/loader/loader.component.js +26 -5
  120. package/esm2015/loader/loader.module.js +2 -1
  121. package/esm2015/pipes/pipes.module.js +2 -1
  122. package/esm2015/pipes/to-observable.pipe.js +2 -1
  123. package/esm2015/popover/popover-module.js +2 -1
  124. package/esm2015/popover/popover-target.js +9 -2
  125. package/esm2015/popover/popover-trigger.js +10 -2
  126. package/esm2015/popover/popover.js +10 -2
  127. package/esm2015/progress/progress.component.js +20 -1
  128. package/esm2015/progress/progress.module.js +2 -1
  129. package/esm2015/public-api.js +4 -3
  130. package/esm2015/select/option.component.js +10 -2
  131. package/esm2015/select/select.component.js +10 -2
  132. package/esm2015/select/select.module.js +2 -1
  133. package/esm2015/select/templates.directive.js +89 -12
  134. package/esm2015/slider/mtxSlider.js +5 -0
  135. package/esm2015/slider/public-api.js +3 -0
  136. package/esm2015/slider/slider-module.js +15 -0
  137. package/esm2015/slider/slider.js +1115 -0
  138. package/esm2015/split/interface.js +2 -0
  139. package/esm2015/split/mtxSplit.js +5 -0
  140. package/esm2015/split/public-api.js +6 -0
  141. package/esm2015/split/split-pane.directive.js +156 -0
  142. package/esm2015/split/split.component.js +620 -0
  143. package/esm2015/split/split.module.js +15 -0
  144. package/esm2015/split/utils.js +227 -0
  145. package/esm2015/text3d/text3d.component.js +10 -2
  146. package/esm2015/text3d/text3d.module.js +2 -1
  147. package/esm2015/tooltip/tooltip-module.js +2 -1
  148. package/esm2015/tooltip/tooltip.js +18 -3
  149. package/extensions.metadata.json +1 -1
  150. package/fesm2015/extensions.js +9 -4
  151. package/fesm2015/extensions.js.map +1 -1
  152. package/fesm2015/mtxAlert.js +25 -10
  153. package/fesm2015/mtxAlert.js.map +1 -1
  154. package/fesm2015/mtxButton.js +31 -7
  155. package/fesm2015/mtxButton.js.map +1 -1
  156. package/fesm2015/mtxCheckboxGroup.js +10 -1
  157. package/fesm2015/mtxCheckboxGroup.js.map +1 -1
  158. package/fesm2015/mtxColorPicker.js +10 -1
  159. package/fesm2015/mtxColorPicker.js.map +1 -1
  160. package/fesm2015/mtxColumnResize.js +55 -6
  161. package/fesm2015/mtxColumnResize.js.map +1 -1
  162. package/fesm2015/mtxCore.js +10 -1
  163. package/fesm2015/mtxCore.js.map +1 -1
  164. package/fesm2015/mtxDatetimepicker.js +120 -29
  165. package/fesm2015/mtxDatetimepicker.js.map +1 -1
  166. package/fesm2015/mtxDialog.js +17 -2
  167. package/fesm2015/mtxDialog.js.map +1 -1
  168. package/fesm2015/mtxFormGroup.js +10 -1
  169. package/fesm2015/mtxFormGroup.js.map +1 -1
  170. package/fesm2015/mtxGrid.js +90 -10
  171. package/fesm2015/mtxGrid.js.map +1 -1
  172. package/fesm2015/mtxLoader.js +26 -4
  173. package/fesm2015/mtxLoader.js.map +1 -1
  174. package/fesm2015/mtxPipes.js +2 -0
  175. package/fesm2015/mtxPipes.js.map +1 -1
  176. package/fesm2015/mtxPopover.js +27 -3
  177. package/fesm2015/mtxPopover.js.map +1 -1
  178. package/fesm2015/mtxProgress.js +20 -0
  179. package/fesm2015/mtxProgress.js.map +1 -1
  180. package/fesm2015/mtxSelect.js +107 -13
  181. package/fesm2015/mtxSelect.js.map +1 -1
  182. package/fesm2015/mtxSlider.js +1134 -0
  183. package/fesm2015/mtxSlider.js.map +1 -0
  184. package/fesm2015/mtxSplit.js +21 -4
  185. package/fesm2015/mtxSplit.js.map +1 -1
  186. package/fesm2015/mtxText3d.js +10 -1
  187. package/fesm2015/mtxText3d.js.map +1 -1
  188. package/fesm2015/mtxTooltip.js +18 -2
  189. package/fesm2015/mtxTooltip.js.map +1 -1
  190. package/form-group/_form-group-theme.import.scss +2 -2
  191. package/form-group/_form-group-theme.scss +46 -22
  192. package/form-group/form-group.component.d.ts +2 -0
  193. package/grid/_grid-theme.import.scss +2 -0
  194. package/grid/_grid-theme.scss +114 -0
  195. package/{data-grid → grid}/cell-selection.directive.d.ts +0 -0
  196. package/{data-grid → grid}/cell.component.d.ts +0 -0
  197. package/{data-grid → grid}/cell.component.scss +0 -0
  198. package/{data-grid → grid}/column-menu.component.d.ts +0 -0
  199. package/{data-grid → grid}/column-menu.component.scss +0 -0
  200. package/{data-grid → grid}/column-resize/_column-resize.scss +19 -13
  201. package/{data-grid → grid}/column-resize/column-resize-directives/column-resize-flex.d.ts +0 -0
  202. package/{data-grid → grid}/column-resize/column-resize-directives/column-resize.d.ts +0 -0
  203. package/{data-grid → grid}/column-resize/column-resize-directives/common.d.ts +0 -0
  204. package/{data-grid → grid}/column-resize/column-resize-module.d.ts +0 -0
  205. package/{data-grid → grid}/column-resize/overlay-handle.d.ts +0 -0
  206. package/{data-grid → grid}/column-resize/resizable-directives/common.d.ts +0 -0
  207. package/{data-grid → grid}/column-resize/resizable-directives/resizable.d.ts +0 -0
  208. package/{data-grid → grid}/column-resize/resize-strategy.d.ts +0 -0
  209. package/{data-grid → grid}/expansion-toggle.directive.d.ts +0 -0
  210. package/{data-grid → grid}/grid.component.d.ts +0 -0
  211. package/{data-grid → grid}/grid.component.scss +0 -0
  212. package/{data-grid → grid}/grid.interface.d.ts +0 -0
  213. package/{data-grid → grid}/grid.module.d.ts +0 -0
  214. package/{data-grid → grid}/grid.service.d.ts +0 -0
  215. package/{data-grid → grid}/mtxGrid.d.ts +0 -0
  216. package/{data-grid → grid}/mtxGrid.metadata.json +1 -1
  217. package/{data-grid → grid}/package.json +2 -2
  218. package/{data-grid → grid}/public-api.d.ts +0 -0
  219. package/loader/_loader-theme.import.scss +2 -2
  220. package/loader/_loader-theme.scss +30 -6
  221. package/loader/loader.component.d.ts +9 -2
  222. package/loader/mtxLoader.metadata.json +1 -1
  223. package/package.json +3 -3
  224. package/popover/_popover-theme.import.scss +2 -2
  225. package/popover/_popover-theme.scss +32 -8
  226. package/progress/_progress-theme.import.scss +2 -2
  227. package/progress/_progress-theme.scss +33 -8
  228. package/progress/mtxProgress.metadata.json +1 -1
  229. package/progress/progress.component.d.ts +9 -2
  230. package/public-api.d.ts +3 -2
  231. package/select/_select-theme.import.scss +2 -2
  232. package/select/_select-theme.scss +55 -31
  233. package/slider/_slider-theme.import.scss +2 -0
  234. package/slider/_slider-theme.scss +233 -0
  235. package/{split-pane/mtxSplit.d.ts → slider/mtxSlider.d.ts} +0 -0
  236. package/slider/mtxSlider.metadata.json +1 -0
  237. package/slider/package.json +11 -0
  238. package/slider/public-api.d.ts +2 -0
  239. package/slider/slider-module.d.ts +2 -0
  240. package/slider/slider.d.ts +274 -0
  241. package/slider/slider.scss +513 -0
  242. package/split/_split-theme.import.scss +2 -0
  243. package/split/_split-theme.scss +41 -0
  244. package/{split-pane → split}/interface.d.ts +0 -0
  245. package/split/mtxSplit.d.ts +4 -0
  246. package/split/mtxSplit.metadata.json +1 -0
  247. package/{split-pane → split}/package.json +2 -2
  248. package/{split-pane → split}/public-api.d.ts +0 -0
  249. package/{split-pane → split}/split-pane.directive.d.ts +0 -0
  250. package/{split-pane → split}/split.component.d.ts +0 -0
  251. package/{split-pane → split}/split.component.scss +3 -2
  252. package/{split-pane → split}/split.module.d.ts +0 -0
  253. package/{split-pane → split}/utils.d.ts +0 -0
  254. package/text3d/_text3d-theme.import.scss +2 -2
  255. package/text3d/_text3d-theme.scss +32 -7
  256. package/tooltip/_tooltip-theme.import.scss +2 -2
  257. package/tooltip/_tooltip-theme.scss +32 -15
  258. package/data-grid/_grid-theme.import.scss +0 -2
  259. package/data-grid/_grid-theme.scss +0 -90
  260. package/esm2015/data-grid/cell-selection.directive.js +0 -54
  261. package/esm2015/data-grid/column-resize/column-resize-directives/column-resize-flex.js +0 -40
  262. package/esm2015/data-grid/column-resize/column-resize-directives/column-resize.js +0 -40
  263. package/esm2015/data-grid/column-resize/column-resize-directives/common.js +0 -34
  264. package/esm2015/data-grid/column-resize/column-resize-module.js +0 -34
  265. package/esm2015/data-grid/column-resize/overlay-handle.js +0 -61
  266. package/esm2015/data-grid/column-resize/resizable-directives/common.js +0 -29
  267. package/esm2015/data-grid/column-resize/resizable-directives/resizable.js +0 -67
  268. package/esm2015/data-grid/column-resize/resize-strategy.js +0 -38
  269. package/esm2015/data-grid/expansion-toggle.directive.js +0 -54
  270. package/esm2015/data-grid/grid.interface.js +0 -2
  271. package/esm2015/data-grid/grid.module.js +0 -68
  272. package/esm2015/data-grid/grid.service.js +0 -43
  273. package/esm2015/data-grid/mtxGrid.js +0 -5
  274. package/esm2015/data-grid/public-api.js +0 -17
  275. package/esm2015/split-pane/interface.js +0 -2
  276. package/esm2015/split-pane/mtxSplit.js +0 -5
  277. package/esm2015/split-pane/public-api.js +0 -6
  278. package/esm2015/split-pane/split-pane.directive.js +0 -148
  279. package/esm2015/split-pane/split.component.js +0 -612
  280. package/esm2015/split-pane/split.module.js +0 -14
  281. package/esm2015/split-pane/utils.js +0 -227
  282. package/split-pane/_split-theme.import.scss +0 -2
  283. package/split-pane/_split-theme.scss +0 -17
  284. package/split-pane/mtxSplit.metadata.json +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"mtxButton.js","sources":["../../../projects/extensions/button/button-loading.directive.ts","../../../projects/extensions/button/button.module.ts","../../../projects/extensions/button/mtxButton.ts"],"sourcesContent":["import {\r\n ComponentFactory,\r\n ComponentFactoryResolver,\r\n ComponentRef,\r\n Directive,\r\n Input,\r\n OnChanges,\r\n Renderer2,\r\n SimpleChanges,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { ThemePalette } from '@angular/material/core';\r\nimport { MatButton } from '@angular/material/button';\r\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\r\n\r\n@Directive({\r\n selector: `button[mat-button][loading],\r\n button[mat-raised-button][loading],\r\n button[mat-stroked-button][loading],\r\n button[mat-flat-button][loading],\r\n button[mat-icon-button][loading],\r\n button[mat-fab][loading],\r\n button[mat-mini-fab][loading]`,\r\n})\r\nexport class MatButtonLoadingDirective implements OnChanges {\r\n private spinnerFactory: ComponentFactory<MatProgressSpinner>;\r\n private spinner!: ComponentRef<MatProgressSpinner> | null;\r\n\r\n @Input()\r\n loading!: boolean;\r\n\r\n @Input()\r\n disabled!: boolean;\r\n\r\n @Input()\r\n color: ThemePalette;\r\n\r\n constructor(\r\n private matButton: MatButton,\r\n private componentFactoryResolver: ComponentFactoryResolver,\r\n private viewContainerRef: ViewContainerRef,\r\n private renderer: Renderer2\r\n ) {\r\n this.spinnerFactory = this.componentFactoryResolver.resolveComponentFactory(MatProgressSpinner);\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!changes.loading) {\r\n return;\r\n }\r\n\r\n if (changes.loading.currentValue) {\r\n this.matButton._elementRef.nativeElement.classList.add('mat-button-loading');\r\n this.matButton.disabled = true;\r\n this.createSpinner();\r\n } else if (!changes.loading.firstChange) {\r\n this.matButton._elementRef.nativeElement.classList.remove('mat-button-loading');\r\n this.matButton.disabled = this.disabled;\r\n this.destroySpinner();\r\n }\r\n }\r\n\r\n private createSpinner(): void {\r\n if (!this.spinner) {\r\n this.spinner = this.viewContainerRef.createComponent(this.spinnerFactory);\r\n this.spinner.instance.color = this.color;\r\n this.spinner.instance.diameter = 20;\r\n this.spinner.instance.mode = 'indeterminate';\r\n this.renderer.appendChild(\r\n this.matButton._elementRef.nativeElement,\r\n this.spinner.instance._elementRef.nativeElement\r\n );\r\n }\r\n }\r\n\r\n private destroySpinner(): void {\r\n if (this.spinner) {\r\n this.spinner.destroy();\r\n this.spinner = null;\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonLoadingDirective } from './button-loading.directive';\n\n@NgModule({\n imports: [CommonModule, MatButtonModule, MatProgressSpinnerModule],\n exports: [MatButtonLoadingDirective],\n declarations: [MatButtonLoadingDirective],\n})\nexport class MtxButtonModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;MAwBa,yBAAyB;IAapC,YACU,SAAoB,EACpB,wBAAkD,EAClD,gBAAkC,EAClC,QAAmB;QAHnB,cAAS,GAAT,SAAS,CAAW;QACpB,6BAAwB,GAAxB,wBAAwB,CAA0B;QAClD,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,aAAQ,GAAR,QAAQ,CAAW;QAE3B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,kBAAkB,CAAC,CAAC;KACjG;IAED,WAAW,CAAC,OAAsB;QAChC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;YACpB,OAAO;SACR;QAED,IAAI,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE;YAChC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;YAC7E,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC;YAC/B,IAAI,CAAC,aAAa,EAAE,CAAC;SACtB;aAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE;YACvC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;YAChF,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YACxC,IAAI,CAAC,cAAc,EAAE,CAAC;SACvB;KACF;IAEO,aAAa;QACnB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC1E,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACzC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,GAAG,EAAE,CAAC;YACpC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,GAAG,eAAe,CAAC;YAC7C,IAAI,CAAC,QAAQ,CAAC,WAAW,CACvB,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,aAAa,EACxC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,CAChD,CAAC;SACH;KACF;IAEO,cAAc;QACpB,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACvB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;SACrB;KACF;;;YAjEF,SAAS,SAAC;gBACT,QAAQ,EAAE;;;;;;2CAM+B;aAC1C;;;;YAXQ,SAAS;YAVhB,wBAAwB;YAOxB,gBAAgB;YAFhB,SAAS;;;sBAqBR,KAAK;uBAGL,KAAK;oBAGL,KAAK;;;MCtBK,eAAe;;;YAL3B,QAAQ,SAAC;gBACR,OAAO,EAAE,CAAC,YAAY,EAAE,eAAe,EAAE,wBAAwB,CAAC;gBAClE,OAAO,EAAE,CAAC,yBAAyB,CAAC;gBACpC,YAAY,EAAE,CAAC,yBAAyB,CAAC;aAC1C;;;ACXD;;;;;;"}
1
+ {"version":3,"file":"mtxButton.js","sources":["../../../projects/extensions/button/button-loading.directive.ts","../../../projects/extensions/button/button.module.ts","../../../projects/extensions/button/mtxButton.ts"],"sourcesContent":["import {\n ComponentFactory,\n ComponentFactoryResolver,\n ComponentRef,\n Directive,\n Input,\n OnChanges,\n Renderer2,\n SimpleChanges,\n ViewContainerRef,\n} from '@angular/core';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ThemePalette } from '@angular/material/core';\nimport { MatButton } from '@angular/material/button';\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\n\n@Directive({\n selector: `button[mat-button][loading],\n button[mat-raised-button][loading],\n button[mat-stroked-button][loading],\n button[mat-flat-button][loading],\n button[mat-icon-button][loading],\n button[mat-fab][loading],\n button[mat-mini-fab][loading]`,\n})\nexport class MatButtonLoadingDirective implements OnChanges {\n private spinnerFactory: ComponentFactory<MatProgressSpinner>;\n private spinner!: ComponentRef<MatProgressSpinner> | null;\n\n @Input()\n get loading(): boolean {\n return this._loading;\n }\n set loading(value: boolean) {\n this._loading = coerceBooleanProperty(value);\n }\n private _loading = false;\n\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n }\n private _disabled = false;\n\n @Input()\n color: ThemePalette;\n\n constructor(\n private matButton: MatButton,\n private componentFactoryResolver: ComponentFactoryResolver,\n private viewContainerRef: ViewContainerRef,\n private renderer: Renderer2\n ) {\n this.spinnerFactory = this.componentFactoryResolver.resolveComponentFactory(MatProgressSpinner);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (!changes.loading) {\n return;\n }\n\n if (changes.loading.currentValue) {\n this.matButton._elementRef.nativeElement.classList.add('mat-button-loading');\n this.matButton.disabled = true;\n this.createSpinner();\n } else if (!changes.loading.firstChange) {\n this.matButton._elementRef.nativeElement.classList.remove('mat-button-loading');\n this.matButton.disabled = this.disabled;\n this.destroySpinner();\n }\n }\n\n private createSpinner(): void {\n if (!this.spinner) {\n this.spinner = this.viewContainerRef.createComponent(this.spinnerFactory);\n this.spinner.instance.color = this.color;\n this.spinner.instance.diameter = 20;\n this.spinner.instance.mode = 'indeterminate';\n this.renderer.appendChild(\n this.matButton._elementRef.nativeElement,\n this.spinner.instance._elementRef.nativeElement\n );\n }\n }\n\n private destroySpinner(): void {\n if (this.spinner) {\n this.spinner.destroy();\n this.spinner = null;\n }\n }\n\n static ngAcceptInputType_loading: BooleanInput;\n static ngAcceptInputType_disabled: BooleanInput;\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonLoadingDirective } from './button-loading.directive';\n\n@NgModule({\n imports: [CommonModule, MatButtonModule, MatProgressSpinnerModule],\n exports: [MatButtonLoadingDirective],\n declarations: [MatButtonLoadingDirective],\n})\nexport class MtxButtonModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -191,6 +191,7 @@ class MtxCheckboxGroupComponent {
191
191
  this._getSelectedItems(index);
192
192
  }
193
193
  }
194
+ /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
194
195
  MtxCheckboxGroupComponent.decorators = [
195
196
  { type: Component, args: [{
196
197
  selector: 'mtx-checkbox-group',
@@ -211,12 +212,19 @@ MtxCheckboxGroupComponent.decorators = [
211
212
  styles: [".mtx-checkbox-group{display:block}.mtx-checkbox-group .mat-checkbox{margin-right:16px}[dir=rtl] .mtx-checkbox-group .mat-checkbox{margin-right:auto;margin-left:16px}\n"]
212
213
  },] }
213
214
  ];
214
- /** @nocollapse */
215
+ /**
216
+ * @type {function(): !Array<(null|{
217
+ * type: ?,
218
+ * decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>),
219
+ * })>}
220
+ * @nocollapse
221
+ */
215
222
  MtxCheckboxGroupComponent.ctorParameters = () => [
216
223
  { type: ChangeDetectorRef },
217
224
  { type: FocusMonitor },
218
225
  { type: ElementRef }
219
226
  ];
227
+ /** @type {!Object<string, !Array<{type: !Function, args: (undefined|!Array<?>)}>>} */
220
228
  MtxCheckboxGroupComponent.propDecorators = {
221
229
  _checkboxes: [{ type: ContentChildren, args: [forwardRef(() => MatCheckbox), { descendants: true },] }],
222
230
  items: [{ type: Input }],
@@ -231,6 +239,7 @@ MtxCheckboxGroupComponent.propDecorators = {
231
239
 
232
240
  class MtxCheckboxGroupModule {
233
241
  }
242
+ /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
234
243
  MtxCheckboxGroupModule.decorators = [
235
244
  { type: NgModule, args: [{
236
245
  imports: [CommonModule, FormsModule, MatCheckboxModule, MtxPipesModule],
@@ -1 +1 @@
1
- {"version":3,"file":"mtxCheckboxGroup.js","sources":["../../../projects/extensions/checkbox-group/checkbox-group.component.ts","../../../projects/extensions/checkbox-group/checkbox-group.module.ts","../../../projects/extensions/checkbox-group/mtxCheckboxGroup.ts"],"sourcesContent":["import {\n Component,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n Input,\n Output,\n EventEmitter,\n ChangeDetectorRef,\n forwardRef,\n AfterViewInit,\n ContentChildren,\n QueryList,\n ElementRef,\n OnDestroy,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ThemePalette } from '@angular/material/core';\nimport { MatCheckbox, MatCheckboxChange } from '@angular/material/checkbox';\nimport { MtxCheckboxGroupOption } from './checkbox-group.interface';\nimport { FocusMonitor } from '@angular/cdk/a11y';\n\nexport class MtxCheckboxBase {\n constructor(public label?: any, public value?: any) {}\n}\n\n@Component({\n selector: 'mtx-checkbox-group',\n exportAs: 'mtxCheckboxGroup',\n host: {\n class: 'mtx-checkbox-group',\n },\n templateUrl: './checkbox-group.component.html',\n styleUrls: ['./checkbox-group.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MtxCheckboxGroupComponent),\n multi: true,\n },\n ],\n})\nexport class MtxCheckboxGroupComponent implements AfterViewInit, OnDestroy, ControlValueAccessor {\n @ContentChildren(forwardRef(() => MatCheckbox), { descendants: true })\n _checkboxes!: QueryList<MatCheckbox>;\n\n @Input()\n get items() {\n return this._items;\n }\n set items(value: any[]) {\n // TODO: Deep clone\n this._originalItems = JSON.parse(JSON.stringify(value));\n this._items = value.map(option => {\n return option instanceof Object ? option : new MtxCheckboxBase(option, option);\n });\n }\n private _items: any[] = [];\n private _originalItems: any[] = [];\n\n @Input() bindLabel = 'label';\n\n @Input() bindValue = 'value';\n\n @Input()\n get showSelectAll(): boolean {\n return this._showSelectAll;\n }\n set showSelectAll(value: boolean) {\n this._showSelectAll = coerceBooleanProperty(value);\n }\n private _showSelectAll = false;\n\n @Input() selectAllLabel = 'Select All';\n\n @Input()\n get compareWith() {\n return this._compareWith;\n }\n set compareWith(fn: (o1: any, o2: any) => boolean) {\n if (typeof fn !== 'function') {\n throw Error('`compareWith` must be a function.');\n }\n\n if (fn) {\n this._compareWith = fn;\n }\n }\n private _compareWith!: (o1: any, o2: any) => boolean;\n\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n }\n private _disabled = false;\n\n @Output() change = new EventEmitter<{ model: MtxCheckboxGroupOption[]; index: number }>();\n\n selectAll = false;\n selectAllIndeterminate = false;\n\n color: ThemePalette = 'accent';\n\n selectedItems: MtxCheckboxGroupOption[] = [];\n\n _onChange: (value: MtxCheckboxGroupOption[]) => void = () => null;\n _onTouched: () => void = () => null;\n\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n private _focusMonitor: FocusMonitor,\n private _elementRef: ElementRef<HTMLElement>\n ) {}\n\n ngAfterViewInit() {\n this._focusMonitor.monitor(this._elementRef, true).subscribe(focusOrigin => {\n if (!focusOrigin) {\n // When a focused element becomes disabled, the browser *immediately* fires a blur event.\n // Angular does not expect events to be raised during change detection, so any state change\n // (such as a form control's 'ng-touched') will cause a changed-after-checked error.\n // See https://github.com/angular/angular/issues/17793. To work around this, we defer\n // telling the form control it has been touched until the next tick.\n Promise.resolve().then(() => {\n this._onTouched();\n this._changeDetectorRef.markForCheck();\n });\n }\n });\n }\n\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n\n /**\n * Finds and selects and option based on its value.\n * @returns Option that has the corresponding value.\n */\n private _selectValue(value: MtxCheckboxGroupOption) {\n const correspondingOption = (this.items as MtxCheckboxGroupOption[]).find(option => {\n try {\n const compareValue = option[this.bindValue] === value;\n return this._compareWith ? this._compareWith(option, value) : compareValue;\n } catch (error) {\n console.warn(error);\n return false;\n }\n });\n\n if (correspondingOption) {\n correspondingOption.checked = true;\n }\n\n return correspondingOption;\n }\n\n /**\n * Sets the model value. Implemented as part of ControlValueAccessor.\n * @param value New value to be written to the model.\n */\n writeValue(value: any[]): void {\n if (value) {\n if (!Array.isArray(value)) {\n throw Error('Value must be an array.');\n }\n\n value.forEach((currentValue: any) => this._selectValue(currentValue));\n this.selectedItems = value;\n }\n\n this._checkMasterCheckboxState();\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Registers a callback to be triggered when the model value changes.\n * Implemented as part of ControlValueAccessor.\n * @param fn Callback to be registered.\n */\n registerOnChange(fn: (value: MtxCheckboxGroupOption[]) => {}): void {\n this._onChange = fn;\n }\n\n /**\n * Registers a callback to be triggered when the control is touched.\n * Implemented as part of ControlValueAccessor.\n * @param fn Callback to be registered.\n */\n registerOnTouched(fn: () => {}): void {\n this._onTouched = fn;\n }\n\n /**\n * Sets the disabled state of the control. Implemented as a part of ControlValueAccessor.\n * @param isDisabled Whether the control should be disabled.\n */\n setDisabledState(isDisabled: boolean) {\n this._disabled = isDisabled;\n }\n\n private _checkMasterCheckboxState() {\n if (\n (this.items as MtxCheckboxGroupOption[])\n .filter(option => option.checked || !option.disabled)\n .every(option => !option.checked)\n ) {\n this.selectAll = false;\n this.selectAllIndeterminate = false;\n } else if (\n (this.items as MtxCheckboxGroupOption[])\n .filter(option => option.checked || !option.disabled)\n .every(option => option.checked)\n ) {\n this.selectAll = true;\n this.selectAllIndeterminate = false;\n } else {\n this.selectAllIndeterminate = true;\n }\n }\n\n private _getSelectedItems(index: number) {\n this.selectedItems = (this.items as MtxCheckboxGroupOption[]).filter(option => option.checked);\n\n if (this._compareWith) {\n this.selectedItems = (this._originalItems as MtxCheckboxGroupOption[]).filter(option =>\n this.selectedItems.find(selectedOption => this._compareWith(option, selectedOption))\n );\n } else {\n this.selectedItems = this.selectedItems.map(option => option[this.bindValue]);\n }\n\n this._onChange(this.selectedItems);\n\n this.change.emit({ model: this.selectedItems, index });\n }\n\n /** Handle normal checkbox toggle */\n _updateNormalCheckboxState(e: MatCheckboxChange, index: number): void {\n this._checkMasterCheckboxState();\n this._getSelectedItems(index);\n }\n\n /** Handle master checkbox toggle */\n _updateMasterCheckboxState(e: MatCheckboxChange, index: number): void {\n this.selectAll = !this.selectAll;\n this.selectAllIndeterminate = false;\n\n if (this.selectAll) {\n (this.items as MtxCheckboxGroupOption[])\n .filter(option => option.checked || !option.disabled)\n .forEach(option => (option.checked = true));\n } else {\n (this.items as MtxCheckboxGroupOption[])\n .filter(option => option.checked || !option.disabled)\n .forEach(option => (option.checked = !!option.disabled));\n }\n\n this._getSelectedItems(index);\n }\n\n static ngAcceptInputType_showSelectAll: BooleanInput;\n static ngAcceptInputType_disabled: BooleanInput;\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\n\nimport { MtxPipesModule } from '@ng-matero/extensions/pipes';\nimport { MtxCheckboxGroupComponent } from './checkbox-group.component';\n\n@NgModule({\n imports: [CommonModule, FormsModule, MatCheckboxModule, MtxPipesModule],\n exports: [MtxCheckboxGroupComponent, MtxPipesModule],\n declarations: [MtxCheckboxGroupComponent],\n})\nexport class MtxCheckboxGroupModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mtxCheckboxGroup.js","sources":["../../../projects/extensions/checkbox-group/checkbox-group.component.ts","../../../projects/extensions/checkbox-group/checkbox-group.module.ts","../../../projects/extensions/checkbox-group/mtxCheckboxGroup.ts"],"sourcesContent":["import {\n Component,\n ChangeDetectionStrategy,\n ViewEncapsulation,\n Input,\n Output,\n EventEmitter,\n ChangeDetectorRef,\n forwardRef,\n AfterViewInit,\n ContentChildren,\n QueryList,\n ElementRef,\n OnDestroy,\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ThemePalette } from '@angular/material/core';\nimport { MatCheckbox, MatCheckboxChange } from '@angular/material/checkbox';\nimport { MtxCheckboxGroupOption } from './checkbox-group.interface';\nimport { FocusMonitor } from '@angular/cdk/a11y';\n\nexport class MtxCheckboxBase {\n constructor(public label?: any, public value?: any) {}\n}\n\n@Component({\n selector: 'mtx-checkbox-group',\n exportAs: 'mtxCheckboxGroup',\n host: {\n class: 'mtx-checkbox-group',\n },\n templateUrl: './checkbox-group.component.html',\n styleUrls: ['./checkbox-group.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MtxCheckboxGroupComponent),\n multi: true,\n },\n ],\n})\nexport class MtxCheckboxGroupComponent implements AfterViewInit, OnDestroy, ControlValueAccessor {\n @ContentChildren(forwardRef(() => MatCheckbox), { descendants: true })\n _checkboxes!: QueryList<MatCheckbox>;\n\n @Input()\n get items() {\n return this._items;\n }\n set items(value: any[]) {\n // TODO: Deep clone\n this._originalItems = JSON.parse(JSON.stringify(value));\n this._items = value.map(option => {\n return option instanceof Object ? option : new MtxCheckboxBase(option, option);\n });\n }\n private _items: any[] = [];\n private _originalItems: any[] = [];\n\n @Input() bindLabel = 'label';\n\n @Input() bindValue = 'value';\n\n @Input()\n get showSelectAll(): boolean {\n return this._showSelectAll;\n }\n set showSelectAll(value: boolean) {\n this._showSelectAll = coerceBooleanProperty(value);\n }\n private _showSelectAll = false;\n\n @Input() selectAllLabel = 'Select All';\n\n @Input()\n get compareWith() {\n return this._compareWith;\n }\n set compareWith(fn: (o1: any, o2: any) => boolean) {\n if (typeof fn !== 'function') {\n throw Error('`compareWith` must be a function.');\n }\n\n if (fn) {\n this._compareWith = fn;\n }\n }\n private _compareWith!: (o1: any, o2: any) => boolean;\n\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n }\n private _disabled = false;\n\n @Output() change = new EventEmitter<{ model: MtxCheckboxGroupOption[]; index: number }>();\n\n selectAll = false;\n selectAllIndeterminate = false;\n\n color: ThemePalette = 'accent';\n\n selectedItems: MtxCheckboxGroupOption[] = [];\n\n _onChange: (value: MtxCheckboxGroupOption[]) => void = () => null;\n _onTouched: () => void = () => null;\n\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n private _focusMonitor: FocusMonitor,\n private _elementRef: ElementRef<HTMLElement>\n ) {}\n\n ngAfterViewInit() {\n this._focusMonitor.monitor(this._elementRef, true).subscribe(focusOrigin => {\n if (!focusOrigin) {\n // When a focused element becomes disabled, the browser *immediately* fires a blur event.\n // Angular does not expect events to be raised during change detection, so any state change\n // (such as a form control's 'ng-touched') will cause a changed-after-checked error.\n // See https://github.com/angular/angular/issues/17793. To work around this, we defer\n // telling the form control it has been touched until the next tick.\n Promise.resolve().then(() => {\n this._onTouched();\n this._changeDetectorRef.markForCheck();\n });\n }\n });\n }\n\n ngOnDestroy() {\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n\n /**\n * Finds and selects and option based on its value.\n * @returns Option that has the corresponding value.\n */\n private _selectValue(value: MtxCheckboxGroupOption) {\n const correspondingOption = (this.items as MtxCheckboxGroupOption[]).find(option => {\n try {\n const compareValue = option[this.bindValue] === value;\n return this._compareWith ? this._compareWith(option, value) : compareValue;\n } catch (error) {\n console.warn(error);\n return false;\n }\n });\n\n if (correspondingOption) {\n correspondingOption.checked = true;\n }\n\n return correspondingOption;\n }\n\n /**\n * Sets the model value. Implemented as part of ControlValueAccessor.\n * @param value New value to be written to the model.\n */\n writeValue(value: any[]): void {\n if (value) {\n if (!Array.isArray(value)) {\n throw Error('Value must be an array.');\n }\n\n value.forEach((currentValue: any) => this._selectValue(currentValue));\n this.selectedItems = value;\n }\n\n this._checkMasterCheckboxState();\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Registers a callback to be triggered when the model value changes.\n * Implemented as part of ControlValueAccessor.\n * @param fn Callback to be registered.\n */\n registerOnChange(fn: (value: MtxCheckboxGroupOption[]) => {}): void {\n this._onChange = fn;\n }\n\n /**\n * Registers a callback to be triggered when the control is touched.\n * Implemented as part of ControlValueAccessor.\n * @param fn Callback to be registered.\n */\n registerOnTouched(fn: () => {}): void {\n this._onTouched = fn;\n }\n\n /**\n * Sets the disabled state of the control. Implemented as a part of ControlValueAccessor.\n * @param isDisabled Whether the control should be disabled.\n */\n setDisabledState(isDisabled: boolean) {\n this._disabled = isDisabled;\n }\n\n private _checkMasterCheckboxState() {\n if (\n (this.items as MtxCheckboxGroupOption[])\n .filter(option => option.checked || !option.disabled)\n .every(option => !option.checked)\n ) {\n this.selectAll = false;\n this.selectAllIndeterminate = false;\n } else if (\n (this.items as MtxCheckboxGroupOption[])\n .filter(option => option.checked || !option.disabled)\n .every(option => option.checked)\n ) {\n this.selectAll = true;\n this.selectAllIndeterminate = false;\n } else {\n this.selectAllIndeterminate = true;\n }\n }\n\n private _getSelectedItems(index: number) {\n this.selectedItems = (this.items as MtxCheckboxGroupOption[]).filter(option => option.checked);\n\n if (this._compareWith) {\n this.selectedItems = (this._originalItems as MtxCheckboxGroupOption[]).filter(option =>\n this.selectedItems.find(selectedOption => this._compareWith(option, selectedOption))\n );\n } else {\n this.selectedItems = this.selectedItems.map(option => option[this.bindValue]);\n }\n\n this._onChange(this.selectedItems);\n\n this.change.emit({ model: this.selectedItems, index });\n }\n\n /** Handle normal checkbox toggle */\n _updateNormalCheckboxState(e: MatCheckboxChange, index: number): void {\n this._checkMasterCheckboxState();\n this._getSelectedItems(index);\n }\n\n /** Handle master checkbox toggle */\n _updateMasterCheckboxState(e: MatCheckboxChange, index: number): void {\n this.selectAll = !this.selectAll;\n this.selectAllIndeterminate = false;\n\n if (this.selectAll) {\n (this.items as MtxCheckboxGroupOption[])\n .filter(option => option.checked || !option.disabled)\n .forEach(option => (option.checked = true));\n } else {\n (this.items as MtxCheckboxGroupOption[])\n .filter(option => option.checked || !option.disabled)\n .forEach(option => (option.checked = !!option.disabled));\n }\n\n this._getSelectedItems(index);\n }\n\n static ngAcceptInputType_showSelectAll: BooleanInput;\n static ngAcceptInputType_disabled: BooleanInput;\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\n\nimport { MtxPipesModule } from '@ng-matero/extensions/pipes';\nimport { MtxCheckboxGroupComponent } from './checkbox-group.component';\n\n@NgModule({\n imports: [CommonModule, FormsModule, MatCheckboxModule, MtxPipesModule],\n exports: [MtxCheckboxGroupComponent, MtxPipesModule],\n declarations: [MtxCheckboxGroupComponent],\n})\nexport class MtxCheckboxGroupModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -229,6 +229,7 @@ class MtxColorPickerComponent {
229
229
  }));
230
230
  }
231
231
  }
232
+ /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
232
233
  MtxColorPickerComponent.decorators = [
233
234
  { type: Component, args: [{
234
235
  selector: 'mtx-color-picker',
@@ -240,7 +241,13 @@ MtxColorPickerComponent.decorators = [
240
241
  styles: [".mtx-color-picker-panel .mat-menu-content:not(:empty){padding:0}.mtx-color-picker-panel .mtx-color-picker{padding:8px}.mtx-color-picker-panel .mtx-color-picker .chrome-picker{box-shadow:none;border-radius:0}.mtx-color-picker-panel .mtx-color-picker .chrome-picker .saturation{border-radius:0}\n"]
241
242
  },] }
242
243
  ];
243
- /** @nocollapse */
244
+ /**
245
+ * @type {function(): !Array<(null|{
246
+ * type: ?,
247
+ * decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>),
248
+ * })>}
249
+ * @nocollapse
250
+ */
244
251
  MtxColorPickerComponent.ctorParameters = () => [
245
252
  { type: FocusMonitor },
246
253
  { type: ElementRef },
@@ -250,6 +257,7 @@ MtxColorPickerComponent.ctorParameters = () => [
250
257
  { type: MatFormField, decorators: [{ type: Optional }, { type: Host }] },
251
258
  { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] }] }
252
259
  ];
260
+ /** @type {!Object<string, !Array<{type: !Function, args: (undefined|!Array<?>)}>>} */
253
261
  MtxColorPickerComponent.propDecorators = {
254
262
  value: [{ type: Input }],
255
263
  id: [{ type: Input }],
@@ -263,6 +271,7 @@ MtxColorPickerComponent.propDecorators = {
263
271
 
264
272
  class MtxColorPickerModule {
265
273
  }
274
+ /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
266
275
  MtxColorPickerModule.decorators = [
267
276
  { type: NgModule, args: [{
268
277
  imports: [
@@ -1 +1 @@
1
- {"version":3,"file":"mtxColorPicker.js","sources":["../../../projects/extensions/color-picker/color-picker.component.ts","../../../projects/extensions/color-picker/color-picker.module.ts","../../../projects/extensions/color-picker/mtxColorPicker.ts"],"sourcesContent":["import {\n Component,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n OnDestroy,\n Optional,\n Self,\n ElementRef,\n Input,\n Output,\n EventEmitter,\n Inject,\n DoCheck,\n ViewChild,\n Host,\n AfterViewInit,\n NgZone,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { _supportsShadowDom } from '@angular/cdk/platform';\nimport { MatFormFieldControl, MatFormField } from '@angular/material/form-field';\nimport { MatMenuTrigger } from '@angular/material/menu';\nimport { Subject, Observable, merge, fromEvent, Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { ColorEvent } from 'ngx-color';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'mtx-color-picker',\n exportAs: 'mtxColorPicker',\n templateUrl: './color-picker.component.html',\n styleUrls: ['./color-picker.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: MatFormFieldControl, useExisting: MtxColorPickerComponent }],\n})\nexport class MtxColorPickerComponent\n implements OnDestroy, DoCheck, AfterViewInit, ControlValueAccessor, MatFormFieldControl<any>\n{\n /** Value of the color picker control. */\n @Input()\n get value(): string | null {\n return this._value;\n }\n set value(newValue: string | null) {\n this._value = newValue;\n this._onChange(newValue);\n this.stateChanges.next();\n }\n private _value: string | null = '';\n\n /** Implemented as part of MatFormFieldControl. */\n readonly stateChanges: Subject<void> = new Subject<void>();\n\n /** Unique id for this input. */\n private _uid = `mtx-color-picker-${nextUniqueId++}`;\n\n /** Unique id of the element. */\n @Input()\n get id(): string {\n return this._id;\n }\n set id(value: string) {\n this._id = value || this._uid;\n this.stateChanges.next();\n }\n private _id!: string;\n\n /** Placeholder to be shown if value is empty. */\n @Input()\n get placeholder(): string {\n return this._placeholder;\n }\n set placeholder(value: string) {\n this._placeholder = value;\n this.stateChanges.next();\n }\n private _placeholder!: string;\n\n /** Whether the input is focused. */\n get focused(): boolean {\n return this._focused || this._panelOpen;\n }\n private _focused = false;\n\n get empty(): boolean {\n return !this.value;\n }\n\n get shouldLabelFloat(): boolean {\n return this.focused || !this.empty;\n }\n\n @Input()\n get required(): boolean {\n return this._required;\n }\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n this.stateChanges.next();\n }\n private _required = false;\n\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n this.stateChanges.next();\n }\n private _disabled = false;\n\n /** Whether the element is readonly. */\n @Input()\n get readonly(): boolean {\n return this._readonly;\n }\n set readonly(value: boolean) {\n this._readonly = coerceBooleanProperty(value);\n }\n private _readonly = false;\n\n errorState = false;\n\n /** A name for this control that can be used by `mat-form-field`. */\n controlType = 'mtx-color-picker';\n\n /** The aria-describedby attribute on the color picker for improved a11y. */\n _ariaDescribedby!: string;\n\n /** `View -> model callback called when value changes` */\n _onChange: (value: any) => void = () => {};\n\n /** `View -> model callback called when color picker has been touched` */\n _onTouched = () => {};\n\n /** Event emitted when the color changed */\n @Output() readonly colorChange = new EventEmitter<ColorEvent>();\n\n @ViewChild(MatMenuTrigger, { static: true }) trigger!: MatMenuTrigger;\n\n /** Whether or not the overlay panel is open. */\n _panelOpen = false;\n\n /** The subscription for closing actions (some are bound to document). */\n private _closingActionsSubscription!: Subscription;\n\n /** Whether the element is inside of a ShadowRoot component. */\n private _isInsideShadowRoot!: boolean;\n\n /**\n * Whether the color picker can open the next time it is focused. Used to prevent a focused,\n * closed color picker from being reopened if the user switches to another browser tab and then\n * comes back.\n */\n private _canOpenOnNextFocus = true;\n\n /**\n * Event handler for when the window is blurred. Needs to be an\n * arrow function in order to preserve the context.\n */\n private _windowBlurHandler = () => {\n // If the user blurred the window while the color picker is focused, it means that it'll be\n // refocused when they come back. In this case we want to skip the first focus event, if the\n // pane was closed, in order to avoid reopening it unintentionally.\n this._canOpenOnNextFocus =\n this._document.activeElement !== this._elementRef.nativeElement || this._panelOpen;\n };\n\n constructor(\n private _focusMonitor: FocusMonitor,\n private _elementRef: ElementRef<HTMLElement>,\n private _changeDetectorRef: ChangeDetectorRef,\n private _zone: NgZone,\n @Optional() @Self() public ngControl: NgControl,\n @Optional() @Host() private _formField: MatFormField,\n @Optional() @Inject(DOCUMENT) private _document: any\n ) {\n _focusMonitor.monitor(_elementRef, true).subscribe(origin => {\n if (this._focused && !origin) {\n this._onTouched();\n }\n this._focused = !!origin;\n this.stateChanges.next();\n });\n\n if (this.ngControl != null) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n ngDoCheck(): void {\n if (this.ngControl) {\n this.errorState = (this.ngControl.invalid && this.ngControl.touched) as boolean;\n this.stateChanges.next();\n }\n }\n\n ngAfterViewInit() {\n if (typeof window !== 'undefined') {\n this._zone.runOutsideAngular(() => {\n window.addEventListener('blur', this._windowBlurHandler);\n });\n\n if (_supportsShadowDom()) {\n const element = this._elementRef.nativeElement;\n const rootNode = element.getRootNode ? element.getRootNode() : null;\n\n // We need to take the `ShadowRoot` off of `window`, because the built-in types are\n // incorrect. See https://github.com/Microsoft/TypeScript/issues/27929.\n this._isInsideShadowRoot = rootNode instanceof (window as any).ShadowRoot;\n }\n }\n }\n\n ngOnDestroy() {\n this.stateChanges.complete();\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n\n /** Implemented as part of MatFormFieldControl. */\n setDescribedByIds(ids: string[]) {\n this._ariaDescribedby = ids.join(' ');\n }\n\n /** Implemented as part of MatFormFieldControl. */\n onContainerClick() {\n this._handleFocus();\n }\n\n /**\n * Sets the model value. Implemented as part of ControlValueAccessor.\n * @param value New value to be written to the model.\n */\n writeValue(value: string | null): void {\n this.value = value || '';\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Registers a callback to be triggered when the model value changes.\n * Implemented as part of ControlValueAccessor.\n * @param fn Callback to be registered.\n */\n registerOnChange(fn: any): void {\n this._onChange = fn;\n }\n\n /**\n * Registers a callback to be triggered when the control is touched.\n * Implemented as part of ControlValueAccessor.\n * @param fn Callback to be registered.\n */\n registerOnTouched(fn: any): void {\n this._onTouched = fn;\n }\n\n /**\n * Sets the disabled state of the control. Implemented as a part of ControlValueAccessor.\n * @param isDisabled Whether the control should be disabled.\n */\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n\n /** Open panel with input focus event. */\n _handleFocus() {\n this.trigger.openMenu();\n\n this._closingActionsSubscription = merge(this._getOutsideClickStream())\n .pipe()\n .subscribe(event => {\n this.trigger.closeMenu();\n this._closingActionsSubscription.unsubscribe();\n });\n }\n\n /** Opens the overlay panel. */\n _openPanel() {\n if (this._focused) {\n this._panelOpen = true;\n }\n }\n\n /** Closes the overlay panel and focuses the host element. */\n _closePanel() {\n if (this._panelOpen) {\n this._panelOpen = false;\n this._changeDetectorRef.markForCheck();\n this._onTouched();\n }\n }\n\n /** The callback of color changed. */\n _onColorChanged(model: ColorEvent) {\n this.value = model.color.hex;\n this.colorChange.emit(model);\n }\n\n /** Stream of clicks outside of the color picker panel. */\n private _getOutsideClickStream(): Observable<any> {\n return merge(\n fromEvent(this._document, 'click') as Observable<MouseEvent>,\n fromEvent(this._document, 'touchend') as Observable<TouchEvent>\n ).pipe(\n filter(event => {\n // If we're in the Shadow DOM, the event target will be the shadow root, so we have to\n // fall back to check the first element in the path of the click event.\n const clickTarget = (\n this._isInsideShadowRoot && event.composedPath ? event.composedPath()[0] : event.target\n ) as HTMLElement;\n const formField = this._formField ? this._formField._elementRef.nativeElement : null;\n\n return (\n clickTarget !== this._elementRef.nativeElement &&\n (!formField || !formField.contains(clickTarget))\n );\n })\n );\n }\n\n static ngAcceptInputType_required: BooleanInput;\n static ngAcceptInputType_readonly: BooleanInput;\n static ngAcceptInputType_disabled: BooleanInput;\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { ColorChromeModule } from 'ngx-color/chrome';\n\nimport { MtxColorPickerComponent } from './color-picker.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n MatMenuModule,\n MatFormFieldModule,\n MatInputModule,\n ColorChromeModule,\n ],\n exports: [MtxColorPickerComponent],\n declarations: [MtxColorPickerComponent],\n})\nexport class MtxColorPickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mtxColorPicker.js","sources":["../../../projects/extensions/color-picker/color-picker.component.ts","../../../projects/extensions/color-picker/color-picker.module.ts","../../../projects/extensions/color-picker/mtxColorPicker.ts"],"sourcesContent":["import {\n Component,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n OnDestroy,\n Optional,\n Self,\n ElementRef,\n Input,\n Output,\n EventEmitter,\n Inject,\n DoCheck,\n ViewChild,\n Host,\n AfterViewInit,\n NgZone,\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { _supportsShadowDom } from '@angular/cdk/platform';\nimport { MatFormFieldControl, MatFormField } from '@angular/material/form-field';\nimport { MatMenuTrigger } from '@angular/material/menu';\nimport { Subject, Observable, merge, fromEvent, Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { ColorEvent } from 'ngx-color';\n\nlet nextUniqueId = 0;\n\n@Component({\n selector: 'mtx-color-picker',\n exportAs: 'mtxColorPicker',\n templateUrl: './color-picker.component.html',\n styleUrls: ['./color-picker.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: MatFormFieldControl, useExisting: MtxColorPickerComponent }],\n})\nexport class MtxColorPickerComponent\n implements OnDestroy, DoCheck, AfterViewInit, ControlValueAccessor, MatFormFieldControl<any>\n{\n /** Value of the color picker control. */\n @Input()\n get value(): string | null {\n return this._value;\n }\n set value(newValue: string | null) {\n this._value = newValue;\n this._onChange(newValue);\n this.stateChanges.next();\n }\n private _value: string | null = '';\n\n /** Implemented as part of MatFormFieldControl. */\n readonly stateChanges: Subject<void> = new Subject<void>();\n\n /** Unique id for this input. */\n private _uid = `mtx-color-picker-${nextUniqueId++}`;\n\n /** Unique id of the element. */\n @Input()\n get id(): string {\n return this._id;\n }\n set id(value: string) {\n this._id = value || this._uid;\n this.stateChanges.next();\n }\n private _id!: string;\n\n /** Placeholder to be shown if value is empty. */\n @Input()\n get placeholder(): string {\n return this._placeholder;\n }\n set placeholder(value: string) {\n this._placeholder = value;\n this.stateChanges.next();\n }\n private _placeholder!: string;\n\n /** Whether the input is focused. */\n get focused(): boolean {\n return this._focused || this._panelOpen;\n }\n private _focused = false;\n\n get empty(): boolean {\n return !this.value;\n }\n\n get shouldLabelFloat(): boolean {\n return this.focused || !this.empty;\n }\n\n @Input()\n get required(): boolean {\n return this._required;\n }\n set required(value: boolean) {\n this._required = coerceBooleanProperty(value);\n this.stateChanges.next();\n }\n private _required = false;\n\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n this.stateChanges.next();\n }\n private _disabled = false;\n\n /** Whether the element is readonly. */\n @Input()\n get readonly(): boolean {\n return this._readonly;\n }\n set readonly(value: boolean) {\n this._readonly = coerceBooleanProperty(value);\n }\n private _readonly = false;\n\n errorState = false;\n\n /** A name for this control that can be used by `mat-form-field`. */\n controlType = 'mtx-color-picker';\n\n /** The aria-describedby attribute on the color picker for improved a11y. */\n _ariaDescribedby!: string;\n\n /** `View -> model callback called when value changes` */\n _onChange: (value: any) => void = () => {};\n\n /** `View -> model callback called when color picker has been touched` */\n _onTouched = () => {};\n\n /** Event emitted when the color changed */\n @Output() readonly colorChange = new EventEmitter<ColorEvent>();\n\n @ViewChild(MatMenuTrigger, { static: true }) trigger!: MatMenuTrigger;\n\n /** Whether or not the overlay panel is open. */\n _panelOpen = false;\n\n /** The subscription for closing actions (some are bound to document). */\n private _closingActionsSubscription!: Subscription;\n\n /** Whether the element is inside of a ShadowRoot component. */\n private _isInsideShadowRoot!: boolean;\n\n /**\n * Whether the color picker can open the next time it is focused. Used to prevent a focused,\n * closed color picker from being reopened if the user switches to another browser tab and then\n * comes back.\n */\n private _canOpenOnNextFocus = true;\n\n /**\n * Event handler for when the window is blurred. Needs to be an\n * arrow function in order to preserve the context.\n */\n private _windowBlurHandler = () => {\n // If the user blurred the window while the color picker is focused, it means that it'll be\n // refocused when they come back. In this case we want to skip the first focus event, if the\n // pane was closed, in order to avoid reopening it unintentionally.\n this._canOpenOnNextFocus =\n this._document.activeElement !== this._elementRef.nativeElement || this._panelOpen;\n };\n\n constructor(\n private _focusMonitor: FocusMonitor,\n private _elementRef: ElementRef<HTMLElement>,\n private _changeDetectorRef: ChangeDetectorRef,\n private _zone: NgZone,\n @Optional() @Self() public ngControl: NgControl,\n @Optional() @Host() private _formField: MatFormField,\n @Optional() @Inject(DOCUMENT) private _document: any\n ) {\n _focusMonitor.monitor(_elementRef, true).subscribe(origin => {\n if (this._focused && !origin) {\n this._onTouched();\n }\n this._focused = !!origin;\n this.stateChanges.next();\n });\n\n if (this.ngControl != null) {\n this.ngControl.valueAccessor = this;\n }\n }\n\n ngDoCheck(): void {\n if (this.ngControl) {\n this.errorState = (this.ngControl.invalid && this.ngControl.touched) as boolean;\n this.stateChanges.next();\n }\n }\n\n ngAfterViewInit() {\n if (typeof window !== 'undefined') {\n this._zone.runOutsideAngular(() => {\n window.addEventListener('blur', this._windowBlurHandler);\n });\n\n if (_supportsShadowDom()) {\n const element = this._elementRef.nativeElement;\n const rootNode = element.getRootNode ? element.getRootNode() : null;\n\n // We need to take the `ShadowRoot` off of `window`, because the built-in types are\n // incorrect. See https://github.com/Microsoft/TypeScript/issues/27929.\n this._isInsideShadowRoot = rootNode instanceof (window as any).ShadowRoot;\n }\n }\n }\n\n ngOnDestroy() {\n this.stateChanges.complete();\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n\n /** Implemented as part of MatFormFieldControl. */\n setDescribedByIds(ids: string[]) {\n this._ariaDescribedby = ids.join(' ');\n }\n\n /** Implemented as part of MatFormFieldControl. */\n onContainerClick() {\n this._handleFocus();\n }\n\n /**\n * Sets the model value. Implemented as part of ControlValueAccessor.\n * @param value New value to be written to the model.\n */\n writeValue(value: string | null): void {\n this.value = value || '';\n this._changeDetectorRef.markForCheck();\n }\n\n /**\n * Registers a callback to be triggered when the model value changes.\n * Implemented as part of ControlValueAccessor.\n * @param fn Callback to be registered.\n */\n registerOnChange(fn: any): void {\n this._onChange = fn;\n }\n\n /**\n * Registers a callback to be triggered when the control is touched.\n * Implemented as part of ControlValueAccessor.\n * @param fn Callback to be registered.\n */\n registerOnTouched(fn: any): void {\n this._onTouched = fn;\n }\n\n /**\n * Sets the disabled state of the control. Implemented as a part of ControlValueAccessor.\n * @param isDisabled Whether the control should be disabled.\n */\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n\n /** Open panel with input focus event. */\n _handleFocus() {\n this.trigger.openMenu();\n\n this._closingActionsSubscription = merge(this._getOutsideClickStream())\n .pipe()\n .subscribe(event => {\n this.trigger.closeMenu();\n this._closingActionsSubscription.unsubscribe();\n });\n }\n\n /** Opens the overlay panel. */\n _openPanel() {\n if (this._focused) {\n this._panelOpen = true;\n }\n }\n\n /** Closes the overlay panel and focuses the host element. */\n _closePanel() {\n if (this._panelOpen) {\n this._panelOpen = false;\n this._changeDetectorRef.markForCheck();\n this._onTouched();\n }\n }\n\n /** The callback of color changed. */\n _onColorChanged(model: ColorEvent) {\n this.value = model.color.hex;\n this.colorChange.emit(model);\n }\n\n /** Stream of clicks outside of the color picker panel. */\n private _getOutsideClickStream(): Observable<any> {\n return merge(\n fromEvent(this._document, 'click') as Observable<MouseEvent>,\n fromEvent(this._document, 'touchend') as Observable<TouchEvent>\n ).pipe(\n filter(event => {\n // If we're in the Shadow DOM, the event target will be the shadow root, so we have to\n // fall back to check the first element in the path of the click event.\n const clickTarget = (\n this._isInsideShadowRoot && event.composedPath ? event.composedPath()[0] : event.target\n ) as HTMLElement;\n const formField = this._formField ? this._formField._elementRef.nativeElement : null;\n\n return (\n clickTarget !== this._elementRef.nativeElement &&\n (!formField || !formField.contains(clickTarget))\n );\n })\n );\n }\n\n static ngAcceptInputType_required: BooleanInput;\n static ngAcceptInputType_readonly: BooleanInput;\n static ngAcceptInputType_disabled: BooleanInput;\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\nimport { ColorChromeModule } from 'ngx-color/chrome';\n\nimport { MtxColorPickerComponent } from './color-picker.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n MatMenuModule,\n MatFormFieldModule,\n MatInputModule,\n ColorChromeModule,\n ],\n exports: [MtxColorPickerComponent],\n declarations: [MtxColorPickerComponent],\n})\nexport class MtxColorPickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -125,6 +125,7 @@ class ColumnResize {
125
125
  });
126
126
  }
127
127
  }
128
+ /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
128
129
  ColumnResize.decorators = [
129
130
  { type: Directive }
130
131
  ];
@@ -150,6 +151,7 @@ class ColumnResizeNotifierSource {
150
151
  this.triggerResize = new Subject();
151
152
  }
152
153
  }
154
+ /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
153
155
  ColumnResizeNotifierSource.decorators = [
154
156
  { type: Injectable }
155
157
  ];
@@ -165,10 +167,17 @@ class ColumnResizeNotifier {
165
167
  this._source.triggerResize.next({ columnId, size, completeImmediately: true, isStickyColumn: true });
166
168
  }
167
169
  }
170
+ /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
168
171
  ColumnResizeNotifier.decorators = [
169
172
  { type: Injectable }
170
173
  ];
171
- /** @nocollapse */
174
+ /**
175
+ * @type {function(): !Array<(null|{
176
+ * type: ?,
177
+ * decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>),
178
+ * })>}
179
+ * @nocollapse
180
+ */
172
181
  ColumnResizeNotifier.ctorParameters = () => [
173
182
  { type: ColumnResizeNotifierSource }
174
183
  ];
@@ -228,10 +237,17 @@ class HeaderRowEventDispatcher {
228
237
  }));
229
238
  }
230
239
  }
240
+ /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
231
241
  HeaderRowEventDispatcher.decorators = [
232
242
  { type: Injectable }
233
243
  ];
234
- /** @nocollapse */
244
+ /**
245
+ * @type {function(): !Array<(null|{
246
+ * type: ?,
247
+ * decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>),
248
+ * })>}
249
+ * @nocollapse
250
+ */
235
251
  HeaderRowEventDispatcher.ctorParameters = () => [
236
252
  { type: NgZone }
237
253
  ];
@@ -268,6 +284,7 @@ class ResizeStrategy {
268
284
  this._pendingResizeDelta = ((_a = this._pendingResizeDelta) !== null && _a !== void 0 ? _a : 0) + delta;
269
285
  }
270
286
  }
287
+ /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
271
288
  ResizeStrategy.decorators = [
272
289
  { type: Injectable }
273
290
  ];
@@ -306,10 +323,17 @@ class TableLayoutFixedResizeStrategy extends ResizeStrategy {
306
323
  this.applyColumnSize(_, columnHeader, newWidth, currentWidth);
307
324
  }
308
325
  }
326
+ /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
309
327
  TableLayoutFixedResizeStrategy.decorators = [
310
328
  { type: Injectable }
311
329
  ];
312
- /** @nocollapse */
330
+ /**
331
+ * @type {function(): !Array<(null|{
332
+ * type: ?,
333
+ * decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>),
334
+ * })>}
335
+ * @nocollapse
336
+ */
313
337
  TableLayoutFixedResizeStrategy.ctorParameters = () => [
314
338
  { type: ColumnResize },
315
339
  { type: _CoalescedStyleScheduler, decorators: [{ type: Inject, args: [_COALESCED_STYLE_SCHEDULER,] }] },
@@ -423,10 +447,17 @@ class CdkFlexTableResizeStrategy extends ResizeStrategy {
423
447
  this._getStyleSheet().insertRule(`${selector} {${body}}`, index);
424
448
  }
425
449
  }
450
+ /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
426
451
  CdkFlexTableResizeStrategy.decorators = [
427
452
  { type: Injectable }
428
453
  ];
429
- /** @nocollapse */
454
+ /**
455
+ * @type {function(): !Array<(null|{
456
+ * type: ?,
457
+ * decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>),
458
+ * })>}
459
+ * @nocollapse
460
+ */
430
461
  CdkFlexTableResizeStrategy.ctorParameters = () => [
431
462
  { type: ColumnResize },
432
463
  { type: _CoalescedStyleScheduler, decorators: [{ type: Inject, args: [_COALESCED_STYLE_SCHEDULER,] }] },
@@ -501,6 +532,7 @@ class CdkColumnResize extends ColumnResize {
501
532
  this.table = table;
502
533
  }
503
534
  }
535
+ /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
504
536
  CdkColumnResize.decorators = [
505
537
  { type: Directive, args: [{
506
538
  selector: 'table[cdk-table][columnResize]',
@@ -510,7 +542,13 @@ CdkColumnResize.decorators = [
510
542
  ],
511
543
  },] }
512
544
  ];
513
- /** @nocollapse */
545
+ /**
546
+ * @type {function(): !Array<(null|{
547
+ * type: ?,
548
+ * decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>),
549
+ * })>}
550
+ * @nocollapse
551
+ */
514
552
  CdkColumnResize.ctorParameters = () => [
515
553
  { type: ColumnResizeNotifier },
516
554
  { type: ElementRef },
@@ -542,6 +580,7 @@ class CdkColumnResizeFlex extends ColumnResize {
542
580
  this.table = table;
543
581
  }
544
582
  }
583
+ /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
545
584
  CdkColumnResizeFlex.decorators = [
546
585
  { type: Directive, args: [{
547
586
  selector: 'cdk-table[columnResize]',
@@ -551,7 +590,13 @@ CdkColumnResizeFlex.decorators = [
551
590
  ],
552
591
  },] }
553
592
  ];
554
- /** @nocollapse */
593
+ /**
594
+ * @type {function(): !Array<(null|{
595
+ * type: ?,
596
+ * decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>),
597
+ * })>}
598
+ * @nocollapse
599
+ */
555
600
  CdkColumnResizeFlex.ctorParameters = () => [
556
601
  { type: ColumnResizeNotifier },
557
602
  { type: ElementRef },
@@ -574,6 +619,7 @@ CdkColumnResizeFlex.ctorParameters = () => [
574
619
  */
575
620
  class CdkColumnResizeModule {
576
621
  }
622
+ /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
577
623
  CdkColumnResizeModule.decorators = [
578
624
  { type: NgModule, args: [{
579
625
  declarations: [CdkColumnResize, CdkColumnResizeFlex],
@@ -593,6 +639,7 @@ CdkColumnResizeModule.decorators = [
593
639
  */
594
640
  class ColumnSizeStore {
595
641
  }
642
+ /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
596
643
  ColumnSizeStore.decorators = [
597
644
  { type: Injectable }
598
645
  ];
@@ -799,6 +846,7 @@ class Resizable {
799
846
  });
800
847
  }
801
848
  }
849
+ /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
802
850
  Resizable.decorators = [
803
851
  { type: Directive }
804
852
  ];
@@ -935,6 +983,7 @@ class ResizeOverlayHandle {
935
983
  });
936
984
  }
937
985
  }
986
+ /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
938
987
  ResizeOverlayHandle.decorators = [
939
988
  { type: Directive }
940
989
  ];