cmat 0.0.3 → 0.0.4

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 (266) hide show
  1. package/components/breadcrumb/breadcrumb.component.d.ts +18 -20
  2. package/components/card/card.component.d.ts +0 -5
  3. package/components/cascade/cascade-list/cascade-list.component.d.ts +12 -9
  4. package/components/cascade/cascade-menu/cascade-menu.component.d.ts +0 -1
  5. package/components/chip-input/chip-input.component.d.ts +34 -0
  6. package/components/chip-input/index.d.ts +5 -0
  7. package/components/chip-input/public-api.d.ts +1 -0
  8. package/components/date-range/date-range.component.d.ts +3 -2
  9. package/components/json-editor/index.d.ts +5 -0
  10. package/components/json-editor/json-editor.component.d.ts +25 -0
  11. package/components/json-editor/public-api.d.ts +1 -0
  12. package/components/navigation/vertical/components/aside/aside.component.d.ts +2 -5
  13. package/components/navigation/vertical/components/basic/basic.component.d.ts +2 -5
  14. package/components/navigation/vertical/components/collapsable/collapsable.component.d.ts +2 -5
  15. package/components/navigation/vertical/components/divider/divider.component.d.ts +2 -5
  16. package/components/navigation/vertical/components/group/group.component.d.ts +2 -5
  17. package/components/navigation/vertical/components/spacer/spacer.component.d.ts +2 -5
  18. package/components/navigation/vertical/vertical.component.d.ts +1 -4
  19. package/components/progress-bar/progress-bar.component.d.ts +3 -2
  20. package/components/rating/rating.component.d.ts +3 -2
  21. package/components/select-search/select-search.component.d.ts +1 -2
  22. package/components/select-tree/select-tree.component.d.ts +5 -12
  23. package/components/timeline/timeline-item/timeline-item.component.d.ts +1 -1
  24. package/components/transfer-picker/interface.d.ts +1 -1
  25. package/components/transfer-picker/transfer-picker-source/transfer-picker-source.component.d.ts +4 -4
  26. package/components/transfer-picker/transfer-picker.service.d.ts +2 -1
  27. package/directives/autofocus/autofocus.directive.d.ts +1 -3
  28. package/directives/debounce/debounce-keyup.directive.d.ts +1 -1
  29. package/directives/digit-only/digit-only.directive.d.ts +2 -0
  30. package/esm2022/animations/dropdown.mjs +26 -0
  31. package/esm2022/animations/public-api.mjs +2 -2
  32. package/esm2022/components/adapter/dayjs-date-adapter.mjs +3 -3
  33. package/esm2022/components/adapter/dayjs-datetime-adapter.mjs +3 -3
  34. package/esm2022/components/adapter/native-datetime-adapter.mjs +3 -3
  35. package/esm2022/components/breadcrumb/breadcrumb-item.directive.mjs +3 -3
  36. package/esm2022/components/breadcrumb/breadcrumb.component.mjs +16 -17
  37. package/esm2022/components/breadcrumb/breadcrumb.service.mjs +4 -4
  38. package/esm2022/components/card/card.component.mjs +5 -14
  39. package/esm2022/components/cascade/cascade-bottom-sheet/cascade-bottom-sheet.component.mjs +5 -6
  40. package/esm2022/components/cascade/cascade-list/cascade-list.component.mjs +65 -39
  41. package/esm2022/components/cascade/cascade-menu/cascade-menu.component.mjs +5 -9
  42. package/esm2022/components/chip-input/chip-input.component.mjs +144 -0
  43. package/esm2022/components/chip-input/cmat-components-chip-input.mjs +5 -0
  44. package/esm2022/components/chip-input/public-api.mjs +2 -0
  45. package/esm2022/components/date-range/date-range.component.mjs +13 -9
  46. package/esm2022/components/drawer/drawer.component.mjs +4 -4
  47. package/esm2022/components/drawer/drawer.service.mjs +3 -3
  48. package/esm2022/components/fullscreen/fullscreen.component.mjs +3 -3
  49. package/esm2022/components/highlight/highlight.component.mjs +3 -3
  50. package/esm2022/components/highlight/highlight.service.mjs +3 -3
  51. package/esm2022/components/json-editor/cmat-components-json-editor.mjs +5 -0
  52. package/esm2022/components/json-editor/json-editor.component.mjs +176 -0
  53. package/esm2022/components/json-editor/public-api.mjs +2 -0
  54. package/esm2022/components/masonry/masonry.component.mjs +3 -3
  55. package/esm2022/components/material-color-picker/material-color-picker.component.mjs +6 -6
  56. package/esm2022/components/material-datetimepicker/calendar-body.mjs +5 -6
  57. package/esm2022/components/material-datetimepicker/calendar.mjs +7 -8
  58. package/esm2022/components/material-datetimepicker/clock.mjs +6 -6
  59. package/esm2022/components/material-datetimepicker/datetimepicker-input.mjs +3 -3
  60. package/esm2022/components/material-datetimepicker/datetimepicker-intl.mjs +3 -3
  61. package/esm2022/components/material-datetimepicker/datetimepicker-toggle.mjs +8 -9
  62. package/esm2022/components/material-datetimepicker/datetimepicker.mjs +7 -7
  63. package/esm2022/components/material-datetimepicker/month-view.mjs +5 -6
  64. package/esm2022/components/material-datetimepicker/multi-year-view.mjs +3 -3
  65. package/esm2022/components/material-datetimepicker/time.mjs +8 -9
  66. package/esm2022/components/material-datetimepicker/year-view.mjs +3 -3
  67. package/esm2022/components/navigation/horizontal/components/basic/basic.component.mjs +6 -6
  68. package/esm2022/components/navigation/horizontal/components/branch/branch.component.mjs +7 -8
  69. package/esm2022/components/navigation/horizontal/components/divider/divider.component.mjs +3 -3
  70. package/esm2022/components/navigation/horizontal/components/spacer/spacer.component.mjs +3 -3
  71. package/esm2022/components/navigation/horizontal/horizontal.component.mjs +5 -6
  72. package/esm2022/components/navigation/navigation.service.mjs +3 -3
  73. package/esm2022/components/navigation/vertical/components/aside/aside.component.mjs +8 -17
  74. package/esm2022/components/navigation/vertical/components/basic/basic.component.mjs +7 -15
  75. package/esm2022/components/navigation/vertical/components/collapsable/collapsable.component.mjs +8 -19
  76. package/esm2022/components/navigation/vertical/components/divider/divider.component.mjs +6 -15
  77. package/esm2022/components/navigation/vertical/components/group/group.component.mjs +9 -19
  78. package/esm2022/components/navigation/vertical/components/spacer/spacer.component.mjs +6 -15
  79. package/esm2022/components/navigation/vertical/vertical.component.mjs +7 -18
  80. package/esm2022/components/pagination/pagination.component.mjs +6 -7
  81. package/esm2022/components/pagination/pagination.directive.mjs +3 -3
  82. package/esm2022/components/pagination/pagination.pipe.mjs +5 -5
  83. package/esm2022/components/pagination/pagination.service.mjs +3 -3
  84. package/esm2022/components/password-strength/mat-pass-toggle-visibility/mat-pass-toggle-visibility.component.mjs +3 -3
  85. package/esm2022/components/password-strength/mat-password-strength/mat-password-strength.component.mjs +6 -6
  86. package/esm2022/components/password-strength/mat-password-strength-info/mat-password-strength-info.component.mjs +8 -9
  87. package/esm2022/components/popover/popover.component.mjs +5 -5
  88. package/esm2022/components/progress-bar/progress-bar.component.mjs +11 -8
  89. package/esm2022/components/rating/rating.component.mjs +14 -6
  90. package/esm2022/components/select-search/select-no-entries-found.directive.mjs +3 -3
  91. package/esm2022/components/select-search/select-search-clear.directive.mjs +3 -3
  92. package/esm2022/components/select-search/select-search.component.mjs +8 -11
  93. package/esm2022/components/select-tree/select-tree.component.mjs +13 -29
  94. package/esm2022/components/timeline/timeline-item/timeline-item.component.mjs +18 -16
  95. package/esm2022/components/timeline/timeline.component.mjs +3 -3
  96. package/esm2022/components/toast/toast-modal.component.mjs +7 -7
  97. package/esm2022/components/toast/toast.component.mjs +6 -6
  98. package/esm2022/components/toast/toast.service.mjs +3 -3
  99. package/esm2022/components/transfer-picker/filter/filter.component.mjs +17 -8
  100. package/esm2022/components/transfer-picker/interface.mjs +1 -1
  101. package/esm2022/components/transfer-picker/search/search.component.mjs +9 -5
  102. package/esm2022/components/transfer-picker/transfer-picker-source/transfer-picker-source.component.mjs +44 -21
  103. package/esm2022/components/transfer-picker/transfer-picker-target/transfer-picker-target.component.mjs +7 -6
  104. package/esm2022/components/transfer-picker/transfer-picker.component.mjs +9 -7
  105. package/esm2022/components/transfer-picker/transfer-picker.service.mjs +10 -7
  106. package/esm2022/directives/animate-on-scroll/animate-on-scroll.directive.mjs +3 -3
  107. package/esm2022/directives/animate-on-scroll/scroll.service.mjs +3 -3
  108. package/esm2022/directives/autofocus/autofocus.directive.mjs +7 -7
  109. package/esm2022/directives/debounce/abstract-debounce.directive.mjs +3 -3
  110. package/esm2022/directives/debounce/debounce-click.directive.mjs +3 -3
  111. package/esm2022/directives/debounce/debounce-keyup.directive.mjs +5 -5
  112. package/esm2022/directives/digit-only/digit-only.directive.mjs +20 -4
  113. package/esm2022/directives/digit-only/mask.directive.mjs +3 -3
  114. package/esm2022/directives/digit-only/public-api.mjs +1 -1
  115. package/esm2022/directives/equal-validator/equal-validator.directive.mjs +3 -3
  116. package/esm2022/lib/mock-api/mock-api.interceptor.mjs +3 -3
  117. package/esm2022/lib/mock-api/mock-api.service.mjs +3 -3
  118. package/esm2022/pipes/bytes/bytes.pipe.mjs +3 -3
  119. package/esm2022/pipes/date-format/date-format.pipe.mjs +3 -3
  120. package/esm2022/pipes/find-by-key/find-by-key.pipe.mjs +3 -3
  121. package/esm2022/pipes/group-by/group-by.pipe.mjs +3 -3
  122. package/esm2022/pipes/keys/keys.pipe.mjs +3 -3
  123. package/esm2022/pipes/secure/secure-pipe.mjs +5 -5
  124. package/esm2022/pipes/uppercase/uppercase.pipe.mjs +3 -3
  125. package/esm2022/services/alert/alert.service.mjs +16 -16
  126. package/esm2022/services/config/config.constants.mjs +1 -1
  127. package/esm2022/services/config/config.service.mjs +3 -3
  128. package/esm2022/services/config/urlStateConfig.service.mjs +4 -4
  129. package/esm2022/services/confirmation/confirmation.service.mjs +3 -3
  130. package/esm2022/services/confirmation/dialog/dialog.component.mjs +6 -6
  131. package/esm2022/services/data/data.service.mjs +4 -4
  132. package/esm2022/services/loading/loading.interceptor.mjs +3 -3
  133. package/esm2022/services/loading/loading.service.mjs +3 -3
  134. package/esm2022/services/local-storage/local-storage.service.mjs +3 -3
  135. package/esm2022/services/media-watcher/media-watcher.service.mjs +3 -3
  136. package/esm2022/services/platform/platform.service.mjs +3 -3
  137. package/esm2022/services/splash-screen/splash-screen.service.mjs +3 -3
  138. package/esm2022/services/title/title.service.mjs +3 -3
  139. package/esm2022/services/translation/translation.service.mjs +3 -3
  140. package/esm2022/services/utils/utils.service.mjs +3 -3
  141. package/fesm2022/cmat-animations.mjs.map +1 -1
  142. package/fesm2022/cmat-components-adapter.mjs +9 -9
  143. package/fesm2022/cmat-components-breadcrumb.mjs +21 -22
  144. package/fesm2022/cmat-components-breadcrumb.mjs.map +1 -1
  145. package/fesm2022/cmat-components-card.mjs +4 -13
  146. package/fesm2022/cmat-components-card.mjs.map +1 -1
  147. package/fesm2022/cmat-components-cascade.mjs +72 -49
  148. package/fesm2022/cmat-components-cascade.mjs.map +1 -1
  149. package/fesm2022/cmat-components-chip-input.mjs +151 -0
  150. package/fesm2022/cmat-components-chip-input.mjs.map +1 -0
  151. package/fesm2022/cmat-components-date-range.mjs +12 -8
  152. package/fesm2022/cmat-components-date-range.mjs.map +1 -1
  153. package/fesm2022/cmat-components-drawer.mjs +7 -7
  154. package/fesm2022/cmat-components-drawer.mjs.map +1 -1
  155. package/fesm2022/cmat-components-fullscreen.mjs +3 -3
  156. package/fesm2022/cmat-components-highlight.mjs +6 -6
  157. package/fesm2022/cmat-components-json-editor.mjs +183 -0
  158. package/fesm2022/cmat-components-json-editor.mjs.map +1 -0
  159. package/fesm2022/cmat-components-masonry.mjs +3 -3
  160. package/fesm2022/cmat-components-material-color-picker.mjs +5 -5
  161. package/fesm2022/cmat-components-material-color-picker.mjs.map +1 -1
  162. package/fesm2022/cmat-components-material-datetimepicker.mjs +51 -52
  163. package/fesm2022/cmat-components-material-datetimepicker.mjs.map +1 -1
  164. package/fesm2022/cmat-components-navigation.mjs +58 -125
  165. package/fesm2022/cmat-components-navigation.mjs.map +1 -1
  166. package/fesm2022/cmat-components-pagination.mjs +15 -16
  167. package/fesm2022/cmat-components-pagination.mjs.map +1 -1
  168. package/fesm2022/cmat-components-password-strength.mjs +14 -15
  169. package/fesm2022/cmat-components-password-strength.mjs.map +1 -1
  170. package/fesm2022/cmat-components-popover.mjs +4 -4
  171. package/fesm2022/cmat-components-popover.mjs.map +1 -1
  172. package/fesm2022/cmat-components-progress-bar.mjs +10 -7
  173. package/fesm2022/cmat-components-progress-bar.mjs.map +1 -1
  174. package/fesm2022/cmat-components-rating.mjs +13 -5
  175. package/fesm2022/cmat-components-rating.mjs.map +1 -1
  176. package/fesm2022/cmat-components-select-search.mjs +13 -16
  177. package/fesm2022/cmat-components-select-search.mjs.map +1 -1
  178. package/fesm2022/cmat-components-select-tree.mjs +12 -28
  179. package/fesm2022/cmat-components-select-tree.mjs.map +1 -1
  180. package/fesm2022/cmat-components-timeline.mjs +21 -19
  181. package/fesm2022/cmat-components-timeline.mjs.map +1 -1
  182. package/fesm2022/cmat-components-toast.mjs +13 -13
  183. package/fesm2022/cmat-components-toast.mjs.map +1 -1
  184. package/fesm2022/cmat-components-transfer-picker.mjs +81 -45
  185. package/fesm2022/cmat-components-transfer-picker.mjs.map +1 -1
  186. package/fesm2022/cmat-directives-animate-on-scroll.mjs +6 -6
  187. package/fesm2022/cmat-directives-autofocus.mjs +6 -6
  188. package/fesm2022/cmat-directives-autofocus.mjs.map +1 -1
  189. package/fesm2022/cmat-directives-debounce.mjs +10 -10
  190. package/fesm2022/cmat-directives-debounce.mjs.map +1 -1
  191. package/fesm2022/cmat-directives-digit-only.mjs +22 -6
  192. package/fesm2022/cmat-directives-digit-only.mjs.map +1 -1
  193. package/fesm2022/cmat-directives-equal-validator.mjs +3 -3
  194. package/fesm2022/cmat-lib-mock-api.mjs +6 -6
  195. package/fesm2022/cmat-pipes-bytes.mjs +3 -3
  196. package/fesm2022/cmat-pipes-date-format.mjs +3 -3
  197. package/fesm2022/cmat-pipes-find-by-key.mjs +3 -3
  198. package/fesm2022/cmat-pipes-group-by.mjs +3 -3
  199. package/fesm2022/cmat-pipes-keys.mjs +3 -3
  200. package/fesm2022/cmat-pipes-secure.mjs +4 -4
  201. package/fesm2022/cmat-pipes-secure.mjs.map +1 -1
  202. package/fesm2022/cmat-pipes-uppercase.mjs +3 -3
  203. package/fesm2022/cmat-services-alert.mjs +15 -15
  204. package/fesm2022/cmat-services-alert.mjs.map +1 -1
  205. package/fesm2022/cmat-services-config.mjs +6 -6
  206. package/fesm2022/cmat-services-config.mjs.map +1 -1
  207. package/fesm2022/cmat-services-confirmation.mjs +8 -8
  208. package/fesm2022/cmat-services-confirmation.mjs.map +1 -1
  209. package/fesm2022/cmat-services-data.mjs +3 -3
  210. package/fesm2022/cmat-services-data.mjs.map +1 -1
  211. package/fesm2022/cmat-services-loading.mjs +6 -6
  212. package/fesm2022/cmat-services-local-storage.mjs +3 -3
  213. package/fesm2022/cmat-services-media-watcher.mjs +3 -3
  214. package/fesm2022/cmat-services-platform.mjs +3 -3
  215. package/fesm2022/cmat-services-splash-screen.mjs +3 -3
  216. package/fesm2022/cmat-services-title.mjs +3 -3
  217. package/fesm2022/cmat-services-translation.mjs +3 -3
  218. package/fesm2022/cmat-services-utils.mjs +3 -3
  219. package/package.json +75 -65
  220. package/pipes/secure/secure-pipe.d.ts +1 -1
  221. package/services/alert/alert.service.d.ts +4 -4
  222. package/services/config/config.constants.d.ts +1 -1
  223. package/services/config/urlStateConfig.service.d.ts +3 -2
  224. package/styles/components/bundle.scss +559 -0
  225. package/styles/overrides/angular-material.scss +16 -16
  226. package/styles/styles.scss +6 -1
  227. package/styles/tailwind.scss +4 -2
  228. package/components/breadcrumb/breadcrumb.component.scss +0 -18
  229. package/components/card/card.component.scss +0 -63
  230. package/components/cascade/cascade-bottom-sheet/cascade-bottom-sheet.component.scss +0 -43
  231. package/components/cascade/cascade-list/cascade-list.component.scss +0 -22
  232. package/components/cascade/cascade-menu/cascade-menu.component.scss +0 -48
  233. package/components/date-range/date-range.component.scss +0 -232
  234. package/components/drawer/drawer.component.scss +0 -133
  235. package/components/highlight/highlight.component.scss +0 -3
  236. package/components/material-color-picker/material-color-picker.component.scss +0 -5
  237. package/components/material-datetimepicker/calendar-body.scss +0 -58
  238. package/components/material-datetimepicker/calendar.scss +0 -194
  239. package/components/material-datetimepicker/clock.scss +0 -90
  240. package/components/material-datetimepicker/datetimepicker-content.scss +0 -151
  241. package/components/material-datetimepicker/datetimepicker.scss +0 -145
  242. package/components/material-datetimepicker/time.scss +0 -82
  243. package/components/navigation/horizontal/horizontal.component.scss +0 -167
  244. package/components/navigation/vertical/styles/appearances/compact.scss +0 -103
  245. package/components/navigation/vertical/styles/appearances/default.scss +0 -550
  246. package/components/navigation/vertical/styles/appearances/dense.scss +0 -171
  247. package/components/navigation/vertical/styles/appearances/thin.scss +0 -91
  248. package/components/navigation/vertical/vertical.component.scss +0 -4
  249. package/components/password-strength/mat-password-strength-info/mat-password-strength-info.component.scss +0 -19
  250. package/components/popover/popover.component.scss +0 -174
  251. package/components/progress-bar/progress-bar.component.scss +0 -7
  252. package/components/rating/rating.component.scss +0 -33
  253. package/components/select-search/select-search.component.scss +0 -126
  254. package/components/select-tree/select-tree.component.scss +0 -54
  255. package/components/timeline/timeline-item/timeline-item.component.scss +0 -329
  256. package/components/timeline/timeline.component.scss +0 -42
  257. package/components/toast/toast-modal.component.scss +0 -119
  258. package/components/toast/toast.component.scss +0 -62
  259. package/components/transfer-picker/filter/filter.component.scss +0 -40
  260. package/components/transfer-picker/search/search.component.scss +0 -7
  261. package/components/transfer-picker/transfer-picker-source/transfer-picker-source.component.scss +0 -25
  262. package/components/transfer-picker/transfer-picker-target/transfer-picker-target.component.scss +0 -27
  263. package/components/transfer-picker/transfer-picker.component.scss +0 -8
  264. package/esm2022/animations/drop.mjs +0 -26
  265. package/styles/main.scss +0 -9
  266. /package/animations/{drop.d.ts → dropdown.d.ts} +0 -0
@@ -0,0 +1,183 @@
1
+ import * as i0 from '@angular/core';
2
+ import { EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, ViewChild, Input, Output } from '@angular/core';
3
+ import { JSONEditor, createAjvValidator, parseJSONPath, createMultiSelection, isJSONContent, isKeySelection, stringifyJSONPath, isMultiSelection } from 'vanilla-jsoneditor';
4
+
5
+ class CmatJsonEditorComponent {
6
+ constructor(_changeDetectorRef) {
7
+ this._changeDetectorRef = _changeDetectorRef;
8
+ this.contentChanged = new EventEmitter();
9
+ this.pathChanged = new EventEmitter();
10
+ this.id = 'cmatjsoneditor' + Math.floor(Math.random() * 1000000);
11
+ this.content = {
12
+ text: undefined,
13
+ json: {}
14
+ };
15
+ }
16
+ ngOnInit() {
17
+ if (!this.jsonEditorContainer.nativeElement) {
18
+ console.error('Can\'t find the ElementRef reference for jsoneditor)');
19
+ }
20
+ this._editor = new JSONEditor({
21
+ target: this.jsonEditorContainer.nativeElement,
22
+ props: {
23
+ ...this.options,
24
+ content: this.content,
25
+ onChange: (updatedContent, previousContent, { contentErrors, patchResult }) => {
26
+ console.log('onChange', {
27
+ updatedContent,
28
+ previousContent,
29
+ contentErrors,
30
+ patchResult,
31
+ });
32
+ this.content = updatedContent;
33
+ this.contentChanged.emit(updatedContent);
34
+ },
35
+ onSelect: this._onSelect.bind(this),
36
+ onRenderMenu(items,
37
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
38
+ context) {
39
+ // remove buttons for table-mode, transform, sort
40
+ items.splice(items.findIndex(i => i['text'] === 'table'), 1);
41
+ items.splice(items.findIndex(i => i['className'] === 'jse-sort'), 1);
42
+ items.splice(items.findIndex(i => i['className'] === 'jse-transform'), 1);
43
+ items.forEach((item) => {
44
+ const button = item;
45
+ switch (button['title']) {
46
+ case 'Switch to text mode (current mode: text)':
47
+ button.text = '文本';
48
+ button.title = '切换到文本模式(当前模式:文本)';
49
+ break;
50
+ case 'Switch to tree mode (current mode: text)':
51
+ button.text = '树';
52
+ button.title = '切换到树模式(当前模式:文本)';
53
+ break;
54
+ case 'Switch to text mode (current mode: tree)':
55
+ button.text = '文本';
56
+ button.title = '切换到文本模式(当前模式:树)';
57
+ break;
58
+ case 'Switch to tree mode (current mode: tree)':
59
+ button.text = '树';
60
+ button.title = '切换到树模式(当前模式:树)';
61
+ break;
62
+ case 'Format JSON: add proper indentation and new lines (Ctrl+I)':
63
+ button.title = 'JSON格式化: 添加适当的缩进和新行 (Ctrl+I)';
64
+ break;
65
+ case 'Compact JSON: remove all white spacing and new lines (Ctrl+Shift+I)':
66
+ button.title = '压缩JSON: 删除所有白色间距和新行 (Ctrl+Shift+I)';
67
+ break;
68
+ case 'Search (Ctrl+F)':
69
+ button.title = '搜索 (Ctrl+F)';
70
+ break;
71
+ case 'Undo (Ctrl+Z)':
72
+ button.title = '撤回 (Ctrl+Z)';
73
+ break;
74
+ case 'Redo (Ctrl+Shift+Z)':
75
+ button.title = '重试 (Ctrl+Shift+Z)';
76
+ break;
77
+ case 'Expand all':
78
+ button.title = '全部展开';
79
+ break;
80
+ case 'Collapse all':
81
+ button.title = '全部折叠';
82
+ break;
83
+ case 'Open context menu (Click here, right click on the selection, or use the context menu button or Ctrl+Q)':
84
+ button.title = '打开内容菜单 (单击此处,右键单击所选内容,或使用内容菜单按钮或 Ctrl+Q)';
85
+ break;
86
+ }
87
+ });
88
+ return items;
89
+ },
90
+ },
91
+ });
92
+ }
93
+ ngOnChanges(changes) {
94
+ if (changes.data) {
95
+ this.content = {
96
+ text: undefined,
97
+ json: this.data
98
+ };
99
+ if (this._editor) {
100
+ this._editor.update(this.content);
101
+ }
102
+ this._changeDetectorRef.markForCheck();
103
+ }
104
+ if (changes.options) {
105
+ if (this._editor) {
106
+ this._editor?.updateProps(this.options);
107
+ }
108
+ }
109
+ }
110
+ ngOnDestroy() {
111
+ this._editor?.destroy();
112
+ }
113
+ setSchema(schema) {
114
+ const validator = createAjvValidator({ schema });
115
+ this._editor?.updateProps({ validator: validator });
116
+ }
117
+ setSelectionToPath(pathString) {
118
+ const path = parseJSONPath(pathString);
119
+ const selection = createMultiSelection(path, path);
120
+ try {
121
+ this._editor?.select(selection);
122
+ }
123
+ catch (error) {
124
+ console.warn('Set selection to path not possible:', pathString, error);
125
+ }
126
+ this.pathChanged.emit(pathString);
127
+ }
128
+ get() {
129
+ if (this._editor) {
130
+ const content = this._editor.get();
131
+ if (isJSONContent(content)) {
132
+ const j = this._editor.get().json;
133
+ return j;
134
+ }
135
+ else {
136
+ const t = this._editor.get().text;
137
+ const j = JSON.parse(t);
138
+ return j;
139
+ }
140
+ }
141
+ return undefined;
142
+ }
143
+ set(json) {
144
+ const value = {
145
+ json: json,
146
+ };
147
+ this._editor?.set(value);
148
+ }
149
+ _onSelect(selection) {
150
+ if (isKeySelection(selection)) {
151
+ const st = stringifyJSONPath(selection.path);
152
+ this.pathChanged.emit(st);
153
+ }
154
+ else if (isMultiSelection(selection)) {
155
+ const st = stringifyJSONPath(selection.anchorPath);
156
+ this.pathChanged.emit(st);
157
+ }
158
+ }
159
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: CmatJsonEditorComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
160
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: CmatJsonEditorComponent, isStandalone: true, selector: "cmat-json-editor", inputs: { options: "options", data: "data" }, outputs: { contentChanged: "contentChanged", pathChanged: "pathChanged" }, viewQueries: [{ propertyName: "jsonEditorContainer", first: true, predicate: ["jsonEditorContainer"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: '<div class="cmat-jsoneditor" [id]="id" #jsonEditorContainer></div>', isInline: true, styles: [".cmat-jsoneditor .jse-main.svelte-sxaskb{min-height:24rem}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
161
+ }
162
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: CmatJsonEditorComponent, decorators: [{
163
+ type: Component,
164
+ args: [{ selector: 'cmat-json-editor', template: '<div class="cmat-jsoneditor" [id]="id" #jsonEditorContainer></div>', preserveWhitespaces: false, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, imports: [], styles: [".cmat-jsoneditor .jse-main.svelte-sxaskb{min-height:24rem}\n"] }]
165
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { jsonEditorContainer: [{
166
+ type: ViewChild,
167
+ args: ['jsonEditorContainer', { static: true }]
168
+ }], options: [{
169
+ type: Input
170
+ }], data: [{
171
+ type: Input
172
+ }], contentChanged: [{
173
+ type: Output
174
+ }], pathChanged: [{
175
+ type: Output
176
+ }] } });
177
+
178
+ /**
179
+ * Generated bundle index. Do not edit.
180
+ */
181
+
182
+ export { CmatJsonEditorComponent };
183
+ //# sourceMappingURL=cmat-components-json-editor.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cmat-components-json-editor.mjs","sources":["../../../projects/cmat/components/json-editor/json-editor.component.ts","../../../projects/cmat/components/json-editor/cmat-components-json-editor.ts"],"sourcesContent":["import {\r\n Component,\r\n ElementRef,\r\n Input,\r\n OnInit,\r\n OnDestroy,\r\n ViewChild,\r\n Output,\r\n EventEmitter,\r\n ChangeDetectionStrategy,\r\n ViewEncapsulation,\r\n OnChanges,\r\n SimpleChanges,\r\n ChangeDetectorRef,\r\n} from '@angular/core';\r\nimport {\r\n JSONEditor,\r\n stringifyJSONPath,\r\n Content,\r\n MenuItem,\r\n createAjvValidator,\r\n parseJSONPath,\r\n JSONEditorSelection,\r\n isKeySelection,\r\n isJSONContent,\r\n JSONContent,\r\n isMultiSelection,\r\n createMultiSelection,\r\n MenuButton,\r\n TextContent,\r\n} from 'vanilla-jsoneditor';\r\n\r\n@Component({\r\n selector: 'cmat-json-editor',\r\n template: '<div class=\"cmat-jsoneditor\" [id]=\"id\" #jsonEditorContainer></div>',\r\n preserveWhitespaces: false,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n styleUrls: ['./json-editor.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n standalone: true,\r\n imports: []\r\n})\r\nexport class CmatJsonEditorComponent implements OnInit, OnChanges, OnDestroy {\r\n @ViewChild('jsonEditorContainer', { static: true }) jsonEditorContainer!: ElementRef;\r\n @Input() options: any;\r\n @Input() data: any;\r\n\r\n @Output() contentChanged: EventEmitter<any> = new EventEmitter<any>();\r\n @Output() pathChanged: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n public id = 'cmatjsoneditor' + Math.floor(Math.random() * 1000000);\r\n content: Content = {\r\n text: undefined,\r\n json: {}\r\n };\r\n\r\n private _editor: JSONEditor | undefined;\r\n\r\n constructor(private _changeDetectorRef: ChangeDetectorRef) { }\r\n\r\n ngOnInit(): void {\r\n if (!this.jsonEditorContainer.nativeElement) {\r\n console.error('Can\\'t find the ElementRef reference for jsoneditor)');\r\n }\r\n this._editor = new JSONEditor({\r\n target: this.jsonEditorContainer.nativeElement,\r\n props: {\r\n ...this.options,\r\n content: this.content,\r\n onChange: (\r\n updatedContent,\r\n previousContent,\r\n { contentErrors, patchResult }\r\n ): void => {\r\n console.log('onChange', {\r\n updatedContent,\r\n previousContent,\r\n contentErrors,\r\n patchResult,\r\n });\r\n this.content = updatedContent;\r\n this.contentChanged.emit(updatedContent);\r\n },\r\n onSelect: this._onSelect.bind(this),\r\n onRenderMenu(\r\n items: MenuItem[],\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n context: { mode: 'tree' | 'text' | 'table'; modal: boolean }\r\n ): MenuItem[] | undefined {\r\n // remove buttons for table-mode, transform, sort\r\n items.splice(\r\n items.findIndex(i => (i as MenuButton)['text'] === 'table'),\r\n 1\r\n );\r\n items.splice(\r\n items.findIndex(i => (i as MenuButton)['className'] === 'jse-sort'),\r\n 1\r\n );\r\n items.splice(\r\n items.findIndex(i => (i as MenuButton)['className'] === 'jse-transform'),\r\n 1\r\n );\r\n\r\n items.forEach((item) => {\r\n const button = item as MenuButton;\r\n switch (button['title']) {\r\n case 'Switch to text mode (current mode: text)':\r\n button.text = '文本';\r\n button.title = '切换到文本模式(当前模式:文本)';\r\n break;\r\n case 'Switch to tree mode (current mode: text)':\r\n button.text = '树';\r\n button.title = '切换到树模式(当前模式:文本)';\r\n break;\r\n case 'Switch to text mode (current mode: tree)':\r\n button.text = '文本';\r\n button.title = '切换到文本模式(当前模式:树)';\r\n break;\r\n case 'Switch to tree mode (current mode: tree)':\r\n button.text = '树';\r\n button.title = '切换到树模式(当前模式:树)';\r\n break;\r\n case 'Format JSON: add proper indentation and new lines (Ctrl+I)':\r\n button.title = 'JSON格式化: 添加适当的缩进和新行 (Ctrl+I)';\r\n break;\r\n case 'Compact JSON: remove all white spacing and new lines (Ctrl+Shift+I)':\r\n button.title = '压缩JSON: 删除所有白色间距和新行 (Ctrl+Shift+I)';\r\n break;\r\n case 'Search (Ctrl+F)':\r\n button.title = '搜索 (Ctrl+F)';\r\n break;\r\n case 'Undo (Ctrl+Z)':\r\n button.title = '撤回 (Ctrl+Z)';\r\n break;\r\n case 'Redo (Ctrl+Shift+Z)':\r\n button.title = '重试 (Ctrl+Shift+Z)';\r\n break;\r\n case 'Expand all':\r\n button.title = '全部展开';\r\n break;\r\n case 'Collapse all':\r\n button.title = '全部折叠';\r\n break;\r\n case 'Open context menu (Click here, right click on the selection, or use the context menu button or Ctrl+Q)':\r\n button.title = '打开内容菜单 (单击此处,右键单击所选内容,或使用内容菜单按钮或 Ctrl+Q)';\r\n break;\r\n }\r\n });\r\n return items;\r\n },\r\n },\r\n });\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes.data) {\r\n this.content = {\r\n text: undefined,\r\n json: <any>this.data\r\n };\r\n\r\n if (this._editor) {\r\n this._editor.update(this.content);\r\n }\r\n\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n\r\n if(changes.options){\r\n if(this._editor){\r\n this._editor?.updateProps(this.options);\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._editor?.destroy();\r\n }\r\n\r\n setSchema(schema: any): void {\r\n const validator = createAjvValidator({ schema });\r\n this._editor?.updateProps({ validator: validator });\r\n }\r\n\r\n setSelectionToPath(pathString: string): void {\r\n const path = parseJSONPath(pathString);\r\n const selection = createMultiSelection(path, path);\r\n\r\n try {\r\n this._editor?.select(selection);\r\n } catch (error) {\r\n console.warn('Set selection to path not possible:', pathString, error);\r\n }\r\n this.pathChanged.emit(pathString);\r\n }\r\n\r\n get(): JSON | undefined {\r\n if (this._editor) {\r\n const content: Content = this._editor.get();\r\n if (isJSONContent(content)) {\r\n const j: any = (this._editor.get() as JSONContent).json;\r\n return j;\r\n } else {\r\n const t: any = (this._editor.get() as TextContent).text;\r\n const j: JSON = JSON.parse(t);\r\n return j;\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n set(json: any): void {\r\n const value: JSONContent = {\r\n json: json,\r\n };\r\n\r\n this._editor?.set(value);\r\n }\r\n\r\n private _onSelect(selection: JSONEditorSelection | null): void {\r\n if (isKeySelection(selection)) {\r\n const st = stringifyJSONPath((selection as any).path);\r\n this.pathChanged.emit(st);\r\n } else if (isMultiSelection(selection)) {\r\n const st = stringifyJSONPath((selection as any).anchorPath);\r\n this.pathChanged.emit(st);\r\n }\r\n }\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -37,10 +37,10 @@ class CmatMasonryComponent {
37
37
  this.distributedColumns[i % this.columns].items.push(this.items[i]);
38
38
  }
39
39
  }
40
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: CmatMasonryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
41
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.0", type: CmatMasonryComponent, isStandalone: true, selector: "cmat-masonry", inputs: { columnsTemplate: "columnsTemplate", columns: "columns", items: "items" }, exportAs: ["cmatMasonry"], usesOnChanges: true, ngImport: i0, template: "<div class=\"flex p-2\">\r\n <ng-container *ngTemplateOutlet=\"columnsTemplate; context: { $implicit: distributedColumns }\"></ng-container>\r\n</div>", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], animations: cmatAnimations, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
40
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: CmatMasonryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
41
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: CmatMasonryComponent, isStandalone: true, selector: "cmat-masonry", inputs: { columnsTemplate: "columnsTemplate", columns: "columns", items: "items" }, exportAs: ["cmatMasonry"], usesOnChanges: true, ngImport: i0, template: "<div class=\"flex p-2\">\r\n <ng-container *ngTemplateOutlet=\"columnsTemplate; context: { $implicit: distributedColumns }\"></ng-container>\r\n</div>", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], animations: cmatAnimations, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
42
42
  }
43
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: CmatMasonryComponent, decorators: [{
43
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: CmatMasonryComponent, decorators: [{
44
44
  type: Component,
45
45
  args: [{ selector: 'cmat-masonry', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, animations: cmatAnimations, exportAs: 'cmatMasonry', standalone: true, imports: [NgTemplateOutlet], template: "<div class=\"flex p-2\">\r\n <ng-container *ngTemplateOutlet=\"columnsTemplate; context: { $implicit: distributedColumns }\"></ng-container>\r\n</div>" }]
46
46
  }], propDecorators: { columnsTemplate: [{
@@ -10,7 +10,7 @@ import * as i3 from '@angular/material/icon';
10
10
  import { MatIconModule } from '@angular/material/icon';
11
11
  import * as i1 from '@angular/material/select';
12
12
  import { MatSelectModule } from '@angular/material/select';
13
- import { NgClass, NgSwitch, NgSwitchCase, NgFor, NgIf } from '@angular/common';
13
+ import { NgClass } from '@angular/common';
14
14
  import * as i2 from '@angular/material/core';
15
15
 
16
16
  const baseColors = [
@@ -135,12 +135,12 @@ class CmatMaterialColorPickerComponent {
135
135
  trackByFn(index, item) {
136
136
  return index || item;
137
137
  }
138
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: CmatMaterialColorPickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
139
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.0", type: CmatMaterialColorPickerComponent, isStandalone: true, selector: "cmat-material-color-picker", inputs: { color: "color", title: "title" }, outputs: { colorChanged: "colorChanged" }, providers: [CMAT_MATERIAL_COLOR_PICKER_VALUE_ACCESSOR], exportAs: ["cmatMaterialColorPicker"], ngImport: i0, template: "<div class=\"rounded\" [ngClass]=\"selectedColor.color\">\r\n <mat-select value=\"init\" [disableOptionCentering]=\"true\" [hideSingleSelectionIndicator]=\"true\"\r\n (openedChange)=\"onMenuOpen($event)\">\r\n <mat-select-trigger class=\"flex p-1\">\r\n <mat-icon [svgIcon]=\"'heroicons_outline:paint-brush'\"></mat-icon>\r\n </mat-select-trigger>\r\n\r\n <header [ngClass]=\"'accent'\" class=\"shadow flex flex-row content-between justify-between p-2\">\r\n <button type=\"button\" mat-icon-button class=\"secondary-text\" [class.invisible]=\"view === 'palettes'\"\r\n (click)=\"goToPalettesView()\" aria-label=\"\u8C03\u8272\u677F\">\r\n <mat-icon svgIcon=\"mat_outline:arrow_back\"></mat-icon>\r\n </button>\r\n <span class=\"align-middle leading-loose text-xl font-bold\">{{title}}</span>\r\n <button type=\"button\" mat-icon-button class=\"remove-color-button secondary-text\" (click)=\"removeColor()\"\r\n aria-label=\"\u79FB\u9664\u989C\u8272\" matTooltip=\"\u79FB\u9664\u989C\u8272\">\r\n <mat-icon color=\"warn\" [svgIcon]=\"'mat_outline:cleaning_services'\"></mat-icon>\r\n </button>\r\n </header>\r\n\r\n <div class=\"flex flex-wrap w-60 m-2\">\r\n <mat-option value=\"init\" class=\"hidden\">\u521D\u59CB\u5316</mat-option>\r\n <div [ngSwitch]=\"view\">\r\n <div *ngSwitchCase=\"'palettes'\">\r\n <div class=\"flex flex-row flex-wrap justify-start content-start colors\">\r\n <div role=\"presentation\" *ngFor=\"let palette of palettes;trackBy: trackByFn\"\r\n class=\"cursor-pointer\" (click)=\"selectPalette(palette)\">\r\n <mat-option\r\n class=\"relative flex w-12 h-12 p-0 pointer-events-none rounded-full bg-transparent hover:opacity-50\"\r\n [value]=\"selectedPalette\">\r\n <mat-icon class=\"absolute m-3 text-white\"\r\n *ngIf=\"selectedColor.color===palette + '-' + selectedHue\"\r\n [svgIcon]=\"'heroicons_outline:check'\"></mat-icon>\r\n <span class=\"flex w-10 h-10 m-1 rounded-full\"\r\n [ngClass]=\"palette + '-' + selectedHue\"></span>\r\n </mat-option>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngSwitchCase=\"'hues'\">\r\n <div class=\"flex flex-row flex-wrap justify-start content-start colors\">\r\n <div role=\"presentation\" *ngFor=\"let hue of hues;trackBy: trackByFn\" class=\"cursor-pointer\"\r\n (click)=\"selectHue(hue)\">\r\n <mat-option\r\n class=\"relative flex w-12 h-12 p-0 pointer-events-none rounded-full bg-transparent hover:opacity-50\"\r\n [value]=\"selectedHue\">\r\n <mat-icon class=\"absolute m-3 text-white\"\r\n *ngIf=\"selectedColor.color===selectedPalette + '-' + hue\"\r\n [svgIcon]=\"'heroicons_outline:check'\"></mat-icon>\r\n <span class=\"flex w-10 h-10 m-1 rounded-full\"\r\n [ngClass]=\"selectedPalette + '-' + hue\"></span>\r\n </mat-option>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </mat-select>\r\n</div>", styles: ["cmat-material-color-picker .mat-mdc-select-arrow-wrapper{display:none!important}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i1.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "directive", type: i1.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i2.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], animations: cmatAnimations, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
138
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: CmatMaterialColorPickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
139
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.4", type: CmatMaterialColorPickerComponent, isStandalone: true, selector: "cmat-material-color-picker", inputs: { color: "color", title: "title" }, outputs: { colorChanged: "colorChanged" }, providers: [CMAT_MATERIAL_COLOR_PICKER_VALUE_ACCESSOR], exportAs: ["cmatMaterialColorPicker"], ngImport: i0, template: "<div class=\"rounded\" [ngClass]=\"selectedColor.color\">\n <mat-select value=\"init\" [disableOptionCentering]=\"true\" [hideSingleSelectionIndicator]=\"true\"\n (openedChange)=\"onMenuOpen($event)\" panelClass=\"min-w-64\">\n <mat-select-trigger class=\"flex p-1\">\n <mat-icon [svgIcon]=\"'heroicons_outline:paint-brush'\"></mat-icon>\n </mat-select-trigger>\n\n <header [ngClass]=\"'accent'\" class=\"shadow flex flex-row content-between justify-between p-2\">\n <button type=\"button\" mat-icon-button class=\"secondary-text\" [class.invisible]=\"view === 'palettes'\"\n (click)=\"goToPalettesView()\" aria-label=\"\u8C03\u8272\u677F\">\n <mat-icon svgIcon=\"mat_outline:arrow_back\"></mat-icon>\n </button>\n <span class=\"align-middle leading-loose text-xl font-bold\">{{title}}</span>\n <button type=\"button\" mat-icon-button class=\"remove-color-button secondary-text\" (click)=\"removeColor()\"\n aria-label=\"\u79FB\u9664\u989C\u8272\" matTooltip=\"\u79FB\u9664\u989C\u8272\">\n <mat-icon color=\"warn\" [svgIcon]=\"'mat_outline:cleaning_services'\"></mat-icon>\n </button>\n </header>\n\n <div class=\"flex flex-wrap w-60 m-2\">\n <mat-option value=\"init\" class=\"hidden\">\u521D\u59CB\u5316</mat-option>\n <div>\n @switch (view) {\n @case ('palettes') {\n <div>\n <div class=\"flex flex-row flex-wrap justify-start content-start colors\">\n @for (palette of palettes; track trackByFn($index, palette)) {\n <div role=\"presentation\"\n class=\"cursor-pointer\" (click)=\"selectPalette(palette)\">\n <mat-option\n class=\"relative flex w-12 h-12 p-0 pointer-events-none rounded-full bg-transparent hover:opacity-50\"\n [value]=\"selectedPalette\">\n @if (selectedColor.color===palette + '-' + selectedHue) {\n <mat-icon class=\"absolute m-3 text-white\"\n [svgIcon]=\"'heroicons_outline:check'\"></mat-icon>\n }\n <span class=\"flex w-10 h-10 m-1 rounded-full\"\n [ngClass]=\"palette + '-' + selectedHue\"></span>\n </mat-option>\n </div>\n }\n </div>\n </div>\n }\n @case ('hues') {\n <div>\n <div class=\"flex flex-row flex-wrap justify-start content-start colors\">\n @for (hue of hues; track trackByFn($index, hue)) {\n <div role=\"presentation\" class=\"cursor-pointer\"\n (click)=\"selectHue(hue)\">\n <mat-option\n class=\"relative flex w-12 h-12 p-0 pointer-events-none rounded-full bg-transparent hover:opacity-50\"\n [value]=\"selectedHue\">\n @if (selectedColor.color===selectedPalette + '-' + hue) {\n <mat-icon class=\"absolute m-3 text-white\"\n [svgIcon]=\"'heroicons_outline:check'\"></mat-icon>\n }\n <span class=\"flex w-10 h-10 m-1 rounded-full\"\n [ngClass]=\"selectedPalette + '-' + hue\"></span>\n </mat-option>\n </div>\n }\n </div>\n </div>\n }\n }\n </div>\n </div>\n </mat-select>\n</div>", styles: ["cmat-material-color-picker .mat-mdc-select-arrow-wrapper{display:none!important}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i1.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "directive", type: i1.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i2.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }], animations: cmatAnimations, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
140
140
  }
141
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: CmatMaterialColorPickerComponent, decorators: [{
141
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: CmatMaterialColorPickerComponent, decorators: [{
142
142
  type: Component,
143
- args: [{ selector: 'cmat-material-color-picker', animations: cmatAnimations, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'cmatMaterialColorPicker', providers: [CMAT_MATERIAL_COLOR_PICKER_VALUE_ACCESSOR], standalone: true, imports: [NgClass, MatSelectModule, MatIconModule, MatButtonModule, MatTooltipModule, NgSwitch, NgSwitchCase, NgFor, NgIf], template: "<div class=\"rounded\" [ngClass]=\"selectedColor.color\">\r\n <mat-select value=\"init\" [disableOptionCentering]=\"true\" [hideSingleSelectionIndicator]=\"true\"\r\n (openedChange)=\"onMenuOpen($event)\">\r\n <mat-select-trigger class=\"flex p-1\">\r\n <mat-icon [svgIcon]=\"'heroicons_outline:paint-brush'\"></mat-icon>\r\n </mat-select-trigger>\r\n\r\n <header [ngClass]=\"'accent'\" class=\"shadow flex flex-row content-between justify-between p-2\">\r\n <button type=\"button\" mat-icon-button class=\"secondary-text\" [class.invisible]=\"view === 'palettes'\"\r\n (click)=\"goToPalettesView()\" aria-label=\"\u8C03\u8272\u677F\">\r\n <mat-icon svgIcon=\"mat_outline:arrow_back\"></mat-icon>\r\n </button>\r\n <span class=\"align-middle leading-loose text-xl font-bold\">{{title}}</span>\r\n <button type=\"button\" mat-icon-button class=\"remove-color-button secondary-text\" (click)=\"removeColor()\"\r\n aria-label=\"\u79FB\u9664\u989C\u8272\" matTooltip=\"\u79FB\u9664\u989C\u8272\">\r\n <mat-icon color=\"warn\" [svgIcon]=\"'mat_outline:cleaning_services'\"></mat-icon>\r\n </button>\r\n </header>\r\n\r\n <div class=\"flex flex-wrap w-60 m-2\">\r\n <mat-option value=\"init\" class=\"hidden\">\u521D\u59CB\u5316</mat-option>\r\n <div [ngSwitch]=\"view\">\r\n <div *ngSwitchCase=\"'palettes'\">\r\n <div class=\"flex flex-row flex-wrap justify-start content-start colors\">\r\n <div role=\"presentation\" *ngFor=\"let palette of palettes;trackBy: trackByFn\"\r\n class=\"cursor-pointer\" (click)=\"selectPalette(palette)\">\r\n <mat-option\r\n class=\"relative flex w-12 h-12 p-0 pointer-events-none rounded-full bg-transparent hover:opacity-50\"\r\n [value]=\"selectedPalette\">\r\n <mat-icon class=\"absolute m-3 text-white\"\r\n *ngIf=\"selectedColor.color===palette + '-' + selectedHue\"\r\n [svgIcon]=\"'heroicons_outline:check'\"></mat-icon>\r\n <span class=\"flex w-10 h-10 m-1 rounded-full\"\r\n [ngClass]=\"palette + '-' + selectedHue\"></span>\r\n </mat-option>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngSwitchCase=\"'hues'\">\r\n <div class=\"flex flex-row flex-wrap justify-start content-start colors\">\r\n <div role=\"presentation\" *ngFor=\"let hue of hues;trackBy: trackByFn\" class=\"cursor-pointer\"\r\n (click)=\"selectHue(hue)\">\r\n <mat-option\r\n class=\"relative flex w-12 h-12 p-0 pointer-events-none rounded-full bg-transparent hover:opacity-50\"\r\n [value]=\"selectedHue\">\r\n <mat-icon class=\"absolute m-3 text-white\"\r\n *ngIf=\"selectedColor.color===selectedPalette + '-' + hue\"\r\n [svgIcon]=\"'heroicons_outline:check'\"></mat-icon>\r\n <span class=\"flex w-10 h-10 m-1 rounded-full\"\r\n [ngClass]=\"selectedPalette + '-' + hue\"></span>\r\n </mat-option>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </mat-select>\r\n</div>", styles: ["cmat-material-color-picker .mat-mdc-select-arrow-wrapper{display:none!important}\n"] }]
143
+ args: [{ selector: 'cmat-material-color-picker', animations: cmatAnimations, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'cmatMaterialColorPicker', providers: [CMAT_MATERIAL_COLOR_PICKER_VALUE_ACCESSOR], standalone: true, imports: [NgClass, MatSelectModule, MatIconModule, MatButtonModule, MatTooltipModule], template: "<div class=\"rounded\" [ngClass]=\"selectedColor.color\">\n <mat-select value=\"init\" [disableOptionCentering]=\"true\" [hideSingleSelectionIndicator]=\"true\"\n (openedChange)=\"onMenuOpen($event)\" panelClass=\"min-w-64\">\n <mat-select-trigger class=\"flex p-1\">\n <mat-icon [svgIcon]=\"'heroicons_outline:paint-brush'\"></mat-icon>\n </mat-select-trigger>\n\n <header [ngClass]=\"'accent'\" class=\"shadow flex flex-row content-between justify-between p-2\">\n <button type=\"button\" mat-icon-button class=\"secondary-text\" [class.invisible]=\"view === 'palettes'\"\n (click)=\"goToPalettesView()\" aria-label=\"\u8C03\u8272\u677F\">\n <mat-icon svgIcon=\"mat_outline:arrow_back\"></mat-icon>\n </button>\n <span class=\"align-middle leading-loose text-xl font-bold\">{{title}}</span>\n <button type=\"button\" mat-icon-button class=\"remove-color-button secondary-text\" (click)=\"removeColor()\"\n aria-label=\"\u79FB\u9664\u989C\u8272\" matTooltip=\"\u79FB\u9664\u989C\u8272\">\n <mat-icon color=\"warn\" [svgIcon]=\"'mat_outline:cleaning_services'\"></mat-icon>\n </button>\n </header>\n\n <div class=\"flex flex-wrap w-60 m-2\">\n <mat-option value=\"init\" class=\"hidden\">\u521D\u59CB\u5316</mat-option>\n <div>\n @switch (view) {\n @case ('palettes') {\n <div>\n <div class=\"flex flex-row flex-wrap justify-start content-start colors\">\n @for (palette of palettes; track trackByFn($index, palette)) {\n <div role=\"presentation\"\n class=\"cursor-pointer\" (click)=\"selectPalette(palette)\">\n <mat-option\n class=\"relative flex w-12 h-12 p-0 pointer-events-none rounded-full bg-transparent hover:opacity-50\"\n [value]=\"selectedPalette\">\n @if (selectedColor.color===palette + '-' + selectedHue) {\n <mat-icon class=\"absolute m-3 text-white\"\n [svgIcon]=\"'heroicons_outline:check'\"></mat-icon>\n }\n <span class=\"flex w-10 h-10 m-1 rounded-full\"\n [ngClass]=\"palette + '-' + selectedHue\"></span>\n </mat-option>\n </div>\n }\n </div>\n </div>\n }\n @case ('hues') {\n <div>\n <div class=\"flex flex-row flex-wrap justify-start content-start colors\">\n @for (hue of hues; track trackByFn($index, hue)) {\n <div role=\"presentation\" class=\"cursor-pointer\"\n (click)=\"selectHue(hue)\">\n <mat-option\n class=\"relative flex w-12 h-12 p-0 pointer-events-none rounded-full bg-transparent hover:opacity-50\"\n [value]=\"selectedHue\">\n @if (selectedColor.color===selectedPalette + '-' + hue) {\n <mat-icon class=\"absolute m-3 text-white\"\n [svgIcon]=\"'heroicons_outline:check'\"></mat-icon>\n }\n <span class=\"flex w-10 h-10 m-1 rounded-full\"\n [ngClass]=\"selectedPalette + '-' + hue\"></span>\n </mat-option>\n </div>\n }\n </div>\n </div>\n }\n }\n </div>\n </div>\n </mat-select>\n</div>", styles: ["cmat-material-color-picker .mat-mdc-select-arrow-wrapper{display:none!important}\n"] }]
144
144
  }], ctorParameters: () => [], propDecorators: { colorChanged: [{
145
145
  type: Output
146
146
  }], color: [{
@@ -1 +1 @@
1
- {"version":3,"file":"cmat-components-material-color-picker.mjs","sources":["../../../projects/cmat/components/material-color-picker/base-color.ts","../../../projects/cmat/components/material-color-picker/material-color-picker.component.ts","../../../projects/cmat/components/material-color-picker/material-color-picker.component.html","../../../projects/cmat/components/material-color-picker/selected-color.ts","../../../projects/cmat/components/material-color-picker/cmat-components-material-color-picker.ts"],"sourcesContent":["export const baseColors = [\r\n 'bg-slate',\r\n 'bg-red',\r\n 'bg-amber',\r\n 'bg-orange',\r\n 'bg-emerald',\r\n 'bg-teal',\r\n 'bg-blue',\r\n 'bg-indigo',\r\n 'bg-violet',\r\n 'bg-pink'\r\n];\r\n","/* eslint-disable @typescript-eslint/no-empty-function */\r\nimport { ChangeDetectionStrategy, Component, EventEmitter, forwardRef, Input, Output, ViewEncapsulation } from '@angular/core';\r\n\r\nimport { cmatAnimations } from 'cmat/animations';\r\nimport { CmatSelectedColor } from './selected-color';\r\nimport { baseColors } from './base-color';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { NgClass, NgSwitch, NgSwitchCase, NgFor, NgIf } from '@angular/common';\r\n\r\nexport const CMAT_MATERIAL_COLOR_PICKER_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => CmatMaterialColorPickerComponent),\r\n multi: true\r\n};\r\n\r\n\r\n@Component({\r\n selector: 'cmat-material-color-picker',\r\n templateUrl: './material-color-picker.component.html',\r\n styleUrls: ['./material-color-picker.component.scss'],\r\n animations: cmatAnimations,\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatMaterialColorPicker',\r\n providers: [CMAT_MATERIAL_COLOR_PICKER_VALUE_ACCESSOR],\r\n standalone: true,\r\n imports: [NgClass, MatSelectModule, MatIconModule, MatButtonModule, MatTooltipModule, NgSwitch, NgSwitchCase, NgFor, NgIf]\r\n})\r\nexport class CmatMaterialColorPickerComponent implements ControlValueAccessor {\r\n // Color changed\r\n @Output()\r\n colorChanged: EventEmitter<any>;\r\n\r\n palettes: string[];\r\n hues: string[];\r\n view: string;\r\n selectedColor: CmatSelectedColor;\r\n selectedPalette: string;\r\n selectedHue: string;\r\n\r\n // Private\r\n private _color: string;\r\n private _title: string;\r\n private _modelChange: (value: any) => void;\r\n private _modelTouched: (value: any) => void;\r\n\r\n constructor() {\r\n // Set the defaults\r\n this.colorChanged = new EventEmitter();\r\n this.palettes = baseColors;\r\n this.hues = ['50', '100', '200', '300', '400', '500', '600', '700', '800', '900'];\r\n this.selectedHue = '500';\r\n this.selectedPalette = 'bg-indigo';\r\n this.view = 'palettes';\r\n\r\n this._modelChange = (): any => { };\r\n this._modelTouched = (): any => { };\r\n\r\n this.updateSelectedColor();\r\n }\r\n\r\n get color(): string {\r\n return this._color;\r\n }\r\n\r\n @Input()\r\n set color(value) {\r\n if (!value || value === '' || this._color === value) {\r\n return;\r\n }\r\n\r\n // Split the color value (bg-red-400, bg-blue-500 etc.)\r\n const colorParts = value.split('-');\r\n\r\n // Take the very last part as the selected hue value\r\n this.selectedHue = colorParts[colorParts.length - 1];\r\n\r\n // Remove the last part\r\n colorParts.pop();\r\n\r\n // Rejoin the remaining parts as the selected palette name\r\n this.selectedPalette = colorParts.join('-');\r\n\r\n // Update the selected color\r\n this.updateSelectedColor();\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n get title(): string {\r\n return this._title;\r\n }\r\n\r\n @Input()\r\n set title(value) {\r\n this._title = value;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this._modelChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this._modelTouched = fn;\r\n }\r\n\r\n writeValue(color: any): void {\r\n // Return if null\r\n if (!color) {\r\n return;\r\n }\r\n\r\n // Set the color\r\n this.color = color;\r\n }\r\n\r\n selectPalette(palette: string): void {\r\n // Go to 'hues' view\r\n this.view = 'hues';\r\n\r\n // Update the selected palette\r\n this.selectedPalette = palette;\r\n\r\n // Update the selected color\r\n this.updateSelectedColor();\r\n }\r\n\r\n selectHue(hue: string): void {\r\n // Update the selected hue\r\n this.selectedHue = hue;\r\n\r\n // Update the selected color\r\n this.updateSelectedColor();\r\n }\r\n\r\n removeColor(): void {\r\n // Return to the 'palettes' view\r\n this.view = 'palettes';\r\n\r\n // Clear the selected palette and hue\r\n this.selectedPalette = 'bg-indigo';\r\n this.selectedHue = '500';\r\n\r\n // Update the selected color\r\n this.updateSelectedColor();\r\n }\r\n\r\n updateSelectedColor(): void {\r\n if (this.selectedColor && this.selectedColor.palette === this.selectedPalette && this.selectedColor.hue === this.selectedHue) {\r\n return;\r\n }\r\n\r\n // Set the selected color object\r\n this.selectedColor = {\r\n palette: this.selectedPalette,\r\n hue: this.selectedHue,\r\n color: this.selectedPalette + '-' + this.selectedHue\r\n };\r\n\r\n this._color = this.selectedColor.color;\r\n\r\n this.colorChanged.emit(this.selectedColor);\r\n\r\n // Mark the model as touched\r\n this._modelTouched(this.selectedColor.color);\r\n\r\n // Update the model\r\n this._modelChange(this.selectedColor.color);\r\n\r\n }\r\n\r\n goToPalettesView(): void {\r\n this.view = 'palettes';\r\n }\r\n\r\n onMenuOpen(opened: boolean): void {\r\n if (opened) {\r\n this.view = 'hues';\r\n }\r\n }\r\n\r\n trackByFn(index: number, item: any): any {\r\n return index || item;\r\n }\r\n}\r\n","<div class=\"rounded\" [ngClass]=\"selectedColor.color\">\r\n <mat-select value=\"init\" [disableOptionCentering]=\"true\" [hideSingleSelectionIndicator]=\"true\"\r\n (openedChange)=\"onMenuOpen($event)\">\r\n <mat-select-trigger class=\"flex p-1\">\r\n <mat-icon [svgIcon]=\"'heroicons_outline:paint-brush'\"></mat-icon>\r\n </mat-select-trigger>\r\n\r\n <header [ngClass]=\"'accent'\" class=\"shadow flex flex-row content-between justify-between p-2\">\r\n <button type=\"button\" mat-icon-button class=\"secondary-text\" [class.invisible]=\"view === 'palettes'\"\r\n (click)=\"goToPalettesView()\" aria-label=\"调色板\">\r\n <mat-icon svgIcon=\"mat_outline:arrow_back\"></mat-icon>\r\n </button>\r\n <span class=\"align-middle leading-loose text-xl font-bold\">{{title}}</span>\r\n <button type=\"button\" mat-icon-button class=\"remove-color-button secondary-text\" (click)=\"removeColor()\"\r\n aria-label=\"移除颜色\" matTooltip=\"移除颜色\">\r\n <mat-icon color=\"warn\" [svgIcon]=\"'mat_outline:cleaning_services'\"></mat-icon>\r\n </button>\r\n </header>\r\n\r\n <div class=\"flex flex-wrap w-60 m-2\">\r\n <mat-option value=\"init\" class=\"hidden\">初始化</mat-option>\r\n <div [ngSwitch]=\"view\">\r\n <div *ngSwitchCase=\"'palettes'\">\r\n <div class=\"flex flex-row flex-wrap justify-start content-start colors\">\r\n <div role=\"presentation\" *ngFor=\"let palette of palettes;trackBy: trackByFn\"\r\n class=\"cursor-pointer\" (click)=\"selectPalette(palette)\">\r\n <mat-option\r\n class=\"relative flex w-12 h-12 p-0 pointer-events-none rounded-full bg-transparent hover:opacity-50\"\r\n [value]=\"selectedPalette\">\r\n <mat-icon class=\"absolute m-3 text-white\"\r\n *ngIf=\"selectedColor.color===palette + '-' + selectedHue\"\r\n [svgIcon]=\"'heroicons_outline:check'\"></mat-icon>\r\n <span class=\"flex w-10 h-10 m-1 rounded-full\"\r\n [ngClass]=\"palette + '-' + selectedHue\"></span>\r\n </mat-option>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngSwitchCase=\"'hues'\">\r\n <div class=\"flex flex-row flex-wrap justify-start content-start colors\">\r\n <div role=\"presentation\" *ngFor=\"let hue of hues;trackBy: trackByFn\" class=\"cursor-pointer\"\r\n (click)=\"selectHue(hue)\">\r\n <mat-option\r\n class=\"relative flex w-12 h-12 p-0 pointer-events-none rounded-full bg-transparent hover:opacity-50\"\r\n [value]=\"selectedHue\">\r\n <mat-icon class=\"absolute m-3 text-white\"\r\n *ngIf=\"selectedColor.color===selectedPalette + '-' + hue\"\r\n [svgIcon]=\"'heroicons_outline:check'\"></mat-icon>\r\n <span class=\"flex w-10 h-10 m-1 rounded-full\"\r\n [ngClass]=\"selectedPalette + '-' + hue\"></span>\r\n </mat-option>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </mat-select>\r\n</div>","export class CmatSelectedColor {\r\n palette: string;\r\n hue: string;\r\n color: string;\r\n}\r\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":"cmat-components-material-color-picker.mjs","sources":["../../../projects/cmat/components/material-color-picker/base-color.ts","../../../projects/cmat/components/material-color-picker/material-color-picker.component.ts","../../../projects/cmat/components/material-color-picker/material-color-picker.component.html","../../../projects/cmat/components/material-color-picker/selected-color.ts","../../../projects/cmat/components/material-color-picker/cmat-components-material-color-picker.ts"],"sourcesContent":["export const baseColors = [\r\n 'bg-slate',\r\n 'bg-red',\r\n 'bg-amber',\r\n 'bg-orange',\r\n 'bg-emerald',\r\n 'bg-teal',\r\n 'bg-blue',\r\n 'bg-indigo',\r\n 'bg-violet',\r\n 'bg-pink'\r\n];\r\n","/* eslint-disable @typescript-eslint/no-empty-function */\r\nimport { ChangeDetectionStrategy, Component, EventEmitter, forwardRef, Input, Output, ViewEncapsulation } from '@angular/core';\r\n\r\nimport { cmatAnimations } from 'cmat/animations';\r\nimport { CmatSelectedColor } from './selected-color';\r\nimport { baseColors } from './base-color';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { NgClass } from '@angular/common';\r\n\r\nexport const CMAT_MATERIAL_COLOR_PICKER_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => CmatMaterialColorPickerComponent),\r\n multi: true\r\n};\r\n\r\n\r\n@Component({\r\n selector: 'cmat-material-color-picker',\r\n templateUrl: './material-color-picker.component.html',\r\n styleUrls: ['./material-color-picker.component.scss'],\r\n animations: cmatAnimations,\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n exportAs: 'cmatMaterialColorPicker',\r\n providers: [CMAT_MATERIAL_COLOR_PICKER_VALUE_ACCESSOR],\r\n standalone: true,\r\n imports: [NgClass, MatSelectModule, MatIconModule, MatButtonModule, MatTooltipModule]\r\n})\r\nexport class CmatMaterialColorPickerComponent implements ControlValueAccessor {\r\n // Color changed\r\n @Output()\r\n colorChanged: EventEmitter<any>;\r\n\r\n palettes: string[];\r\n hues: string[];\r\n view: string;\r\n selectedColor: CmatSelectedColor;\r\n selectedPalette: string;\r\n selectedHue: string;\r\n\r\n // Private\r\n private _color: string;\r\n private _title: string;\r\n private _modelChange: (value: any) => void;\r\n private _modelTouched: (value: any) => void;\r\n\r\n constructor() {\r\n // Set the defaults\r\n this.colorChanged = new EventEmitter();\r\n this.palettes = baseColors;\r\n this.hues = ['50', '100', '200', '300', '400', '500', '600', '700', '800', '900'];\r\n this.selectedHue = '500';\r\n this.selectedPalette = 'bg-indigo';\r\n this.view = 'palettes';\r\n\r\n this._modelChange = (): any => { };\r\n this._modelTouched = (): any => { };\r\n\r\n this.updateSelectedColor();\r\n }\r\n\r\n get color(): string {\r\n return this._color;\r\n }\r\n\r\n @Input()\r\n set color(value) {\r\n if (!value || value === '' || this._color === value) {\r\n return;\r\n }\r\n\r\n // Split the color value (bg-red-400, bg-blue-500 etc.)\r\n const colorParts = value.split('-');\r\n\r\n // Take the very last part as the selected hue value\r\n this.selectedHue = colorParts[colorParts.length - 1];\r\n\r\n // Remove the last part\r\n colorParts.pop();\r\n\r\n // Rejoin the remaining parts as the selected palette name\r\n this.selectedPalette = colorParts.join('-');\r\n\r\n // Update the selected color\r\n this.updateSelectedColor();\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n get title(): string {\r\n return this._title;\r\n }\r\n\r\n @Input()\r\n set title(value) {\r\n this._title = value;\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this._modelChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this._modelTouched = fn;\r\n }\r\n\r\n writeValue(color: any): void {\r\n // Return if null\r\n if (!color) {\r\n return;\r\n }\r\n\r\n // Set the color\r\n this.color = color;\r\n }\r\n\r\n selectPalette(palette: string): void {\r\n // Go to 'hues' view\r\n this.view = 'hues';\r\n\r\n // Update the selected palette\r\n this.selectedPalette = palette;\r\n\r\n // Update the selected color\r\n this.updateSelectedColor();\r\n }\r\n\r\n selectHue(hue: string): void {\r\n // Update the selected hue\r\n this.selectedHue = hue;\r\n\r\n // Update the selected color\r\n this.updateSelectedColor();\r\n }\r\n\r\n removeColor(): void {\r\n // Return to the 'palettes' view\r\n this.view = 'palettes';\r\n\r\n // Clear the selected palette and hue\r\n this.selectedPalette = 'bg-indigo';\r\n this.selectedHue = '500';\r\n\r\n // Update the selected color\r\n this.updateSelectedColor();\r\n }\r\n\r\n updateSelectedColor(): void {\r\n if (this.selectedColor && this.selectedColor.palette === this.selectedPalette && this.selectedColor.hue === this.selectedHue) {\r\n return;\r\n }\r\n\r\n // Set the selected color object\r\n this.selectedColor = {\r\n palette: this.selectedPalette,\r\n hue: this.selectedHue,\r\n color: this.selectedPalette + '-' + this.selectedHue\r\n };\r\n\r\n this._color = this.selectedColor.color;\r\n\r\n this.colorChanged.emit(this.selectedColor);\r\n\r\n // Mark the model as touched\r\n this._modelTouched(this.selectedColor.color);\r\n\r\n // Update the model\r\n this._modelChange(this.selectedColor.color);\r\n\r\n }\r\n\r\n goToPalettesView(): void {\r\n this.view = 'palettes';\r\n }\r\n\r\n onMenuOpen(opened: boolean): void {\r\n if (opened) {\r\n this.view = 'hues';\r\n }\r\n }\r\n\r\n trackByFn(index: number, item: any): any {\r\n return index || item;\r\n }\r\n}\r\n","<div class=\"rounded\" [ngClass]=\"selectedColor.color\">\n <mat-select value=\"init\" [disableOptionCentering]=\"true\" [hideSingleSelectionIndicator]=\"true\"\n (openedChange)=\"onMenuOpen($event)\" panelClass=\"min-w-64\">\n <mat-select-trigger class=\"flex p-1\">\n <mat-icon [svgIcon]=\"'heroicons_outline:paint-brush'\"></mat-icon>\n </mat-select-trigger>\n\n <header [ngClass]=\"'accent'\" class=\"shadow flex flex-row content-between justify-between p-2\">\n <button type=\"button\" mat-icon-button class=\"secondary-text\" [class.invisible]=\"view === 'palettes'\"\n (click)=\"goToPalettesView()\" aria-label=\"调色板\">\n <mat-icon svgIcon=\"mat_outline:arrow_back\"></mat-icon>\n </button>\n <span class=\"align-middle leading-loose text-xl font-bold\">{{title}}</span>\n <button type=\"button\" mat-icon-button class=\"remove-color-button secondary-text\" (click)=\"removeColor()\"\n aria-label=\"移除颜色\" matTooltip=\"移除颜色\">\n <mat-icon color=\"warn\" [svgIcon]=\"'mat_outline:cleaning_services'\"></mat-icon>\n </button>\n </header>\n\n <div class=\"flex flex-wrap w-60 m-2\">\n <mat-option value=\"init\" class=\"hidden\">初始化</mat-option>\n <div>\n @switch (view) {\n @case ('palettes') {\n <div>\n <div class=\"flex flex-row flex-wrap justify-start content-start colors\">\n @for (palette of palettes; track trackByFn($index, palette)) {\n <div role=\"presentation\"\n class=\"cursor-pointer\" (click)=\"selectPalette(palette)\">\n <mat-option\n class=\"relative flex w-12 h-12 p-0 pointer-events-none rounded-full bg-transparent hover:opacity-50\"\n [value]=\"selectedPalette\">\n @if (selectedColor.color===palette + '-' + selectedHue) {\n <mat-icon class=\"absolute m-3 text-white\"\n [svgIcon]=\"'heroicons_outline:check'\"></mat-icon>\n }\n <span class=\"flex w-10 h-10 m-1 rounded-full\"\n [ngClass]=\"palette + '-' + selectedHue\"></span>\n </mat-option>\n </div>\n }\n </div>\n </div>\n }\n @case ('hues') {\n <div>\n <div class=\"flex flex-row flex-wrap justify-start content-start colors\">\n @for (hue of hues; track trackByFn($index, hue)) {\n <div role=\"presentation\" class=\"cursor-pointer\"\n (click)=\"selectHue(hue)\">\n <mat-option\n class=\"relative flex w-12 h-12 p-0 pointer-events-none rounded-full bg-transparent hover:opacity-50\"\n [value]=\"selectedHue\">\n @if (selectedColor.color===selectedPalette + '-' + hue) {\n <mat-icon class=\"absolute m-3 text-white\"\n [svgIcon]=\"'heroicons_outline:check'\"></mat-icon>\n }\n <span class=\"flex w-10 h-10 m-1 rounded-full\"\n [ngClass]=\"selectedPalette + '-' + hue\"></span>\n </mat-option>\n </div>\n }\n </div>\n </div>\n }\n }\n </div>\n </div>\n </mat-select>\n</div>","export class CmatSelectedColor {\r\n palette: string;\r\n hue: string;\r\n color: string;\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}