cmat 0.0.3 → 0.0.5

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 -2
  13. package/components/navigation/vertical/components/basic/basic.component.d.ts +2 -2
  14. package/components/navigation/vertical/components/collapsable/collapsable.component.d.ts +2 -2
  15. package/components/navigation/vertical/components/divider/divider.component.d.ts +2 -2
  16. package/components/navigation/vertical/components/group/group.component.d.ts +2 -2
  17. package/components/navigation/vertical/components/spacer/spacer.component.d.ts +2 -2
  18. package/components/navigation/vertical/vertical.component.d.ts +2 -2
  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 +9 -9
  74. package/esm2022/components/navigation/vertical/components/basic/basic.component.mjs +8 -7
  75. package/esm2022/components/navigation/vertical/components/collapsable/collapsable.component.mjs +9 -11
  76. package/esm2022/components/navigation/vertical/components/divider/divider.component.mjs +6 -6
  77. package/esm2022/components/navigation/vertical/components/group/group.component.mjs +10 -11
  78. package/esm2022/components/navigation/vertical/components/spacer/spacer.component.mjs +7 -7
  79. package/esm2022/components/navigation/vertical/vertical.component.mjs +9 -11
  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 +5 -5
  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 +70 -74
  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 +7 -7
  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 +46 -36
  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
@@ -17,7 +17,7 @@ import { MatButtonModule } from '@angular/material/button';
17
17
  import { CmatSelectSearchComponent } from 'cmat/components/select-search';
18
18
  import * as i2 from '@angular/material/icon';
19
19
  import { MatIconModule } from '@angular/material/icon';
20
- import { NgIf, NgFor, NgClass, AsyncPipe, NgStyle } from '@angular/common';
20
+ import { NgClass, AsyncPipe, NgStyle } from '@angular/common';
21
21
  import * as i1 from '@angular/material/form-field';
22
22
  import { MatFormFieldModule } from '@angular/material/form-field';
23
23
  import { isNil } from 'lodash-es';
@@ -33,7 +33,7 @@ class CmatSelectTreeComponent {
33
33
  this.noEntriesFoundLabel = '无结果';
34
34
  this.showNoFoundLabel = true;
35
35
  this.placeholder = '部门';
36
- this.prefixIcon = 'heroicons_solid:building-library';
36
+ this.prefixIcon = 'heroicons_outline:building-library';
37
37
  this.overallSearchEnabled = true;
38
38
  this.canNull = false;
39
39
  this.showToggleAllCheckbox = false;
@@ -44,11 +44,8 @@ class CmatSelectTreeComponent {
44
44
  this.isIndeterminate = false;
45
45
  this.isChecked = false;
46
46
  this.dataCount = 0;
47
+ this.selectControl = new FormControl();
47
48
  this.matSelectData = new ReplaySubject(1);
48
- this._controlValueAccessorKeys = [
49
- 'formControl',
50
- 'formControlName'
51
- ];
52
49
  this._unsubscribeAll = new Subject();
53
50
  this.getLevel = (node) => node.level;
54
51
  this.isExpandable = (node) => node.expandable;
@@ -84,7 +81,7 @@ class CmatSelectTreeComponent {
84
81
  }
85
82
  let panelClass = '';
86
83
  if (!this.overallSearchEnabled) {
87
- panelClass = 'cmat-select-search-panel overflow-auto md:overflow-hidden';
84
+ panelClass = 'cmat-select-search-panel overflow-y-auto lg:overflow-y-hidden lg:hover:overflow-y-auto scrollbar-custom';
88
85
  }
89
86
  if (this._matSelect.panelClass) {
90
87
  if (Array.isArray(this._matSelect.panelClass)) {
@@ -205,14 +202,6 @@ class CmatSelectTreeComponent {
205
202
  }
206
203
  }
207
204
  }
208
- ngOnChanges(changes) {
209
- if (!isNil(changes['matSelectConfigurator'])) {
210
- const configuration = changes['matSelectConfigurator'].currentValue;
211
- Object.keys(configuration)
212
- .filter(key => !['multiple', 'panelClass'].includes(key) && !this._controlValueAccessorKeys.includes(key))
213
- .forEach(key => this._matSelect[key] = configuration[key]);
214
- }
215
- }
216
205
  simpleTriggerLabelFn(value) {
217
206
  return value.map((node) => {
218
207
  if (isNil(node)) {
@@ -278,8 +267,8 @@ class CmatSelectTreeComponent {
278
267
  this._matSelect.close();
279
268
  }
280
269
  }
281
- noClick() {
282
- return false;
270
+ clearSelection() {
271
+ this.checklistSelection.clear();
283
272
  }
284
273
  /* Checks all the parents when a leaf node is selected/unselected */
285
274
  checkAllParentsSelection(node) {
@@ -402,16 +391,16 @@ class CmatSelectTreeComponent {
402
391
  this.overallFilterControl.setValue('');
403
392
  }
404
393
  }
405
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: CmatSelectTreeComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
406
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.0", type: CmatSelectTreeComponent, isStandalone: true, selector: "cmat-select-tree", inputs: { dataSource: "dataSource", showLabel: "showLabel", noEntriesFoundLabel: "noEntriesFoundLabel", showNoFoundLabel: "showNoFoundLabel", placeholder: "placeholder", prefixIcon: "prefixIcon", multiple: "multiple", required: "required", overallSearchEnabled: "overallSearchEnabled", canNull: "canNull", customTriggerLabelFn: "customTriggerLabelFn", customTriggerLabelTemplate: "customTriggerLabelTemplate", matSelectConfigurator: "matSelectConfigurator", matSelectSearchConfigurator: "matSelectSearchConfigurator", expandable: "expandable", showToggleAllCheckbox: "showToggleAllCheckbox" }, providers: [
394
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: CmatSelectTreeComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
395
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.2.4", type: CmatSelectTreeComponent, isStandalone: true, selector: "cmat-select-tree", inputs: { dataSource: "dataSource", showLabel: "showLabel", noEntriesFoundLabel: "noEntriesFoundLabel", showNoFoundLabel: "showNoFoundLabel", placeholder: "placeholder", prefixIcon: "prefixIcon", multiple: "multiple", required: "required", overallSearchEnabled: "overallSearchEnabled", canNull: "canNull", customTriggerLabelFn: "customTriggerLabelFn", customTriggerLabelTemplate: "customTriggerLabelTemplate", expandable: "expandable", showToggleAllCheckbox: "showToggleAllCheckbox" }, providers: [
407
396
  {
408
397
  provide: NG_VALUE_ACCESSOR,
409
398
  useExisting: forwardRef(() => CmatSelectTreeComponent),
410
399
  multi: true
411
400
  }
412
- ], viewQueries: [{ propertyName: "_matSelect", first: true, predicate: ["componentSelect"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<mat-form-field class=\"w-full\">\r\n <mat-label *ngIf=\"showLabel\">{{placeholder}}</mat-label>\r\n <mat-icon class=\"icon-size-5\" [svgIcon]=\"prefixIcon\" matPrefix></mat-icon>\r\n <mat-select #componentSelect [placeholder]=\"placeholder\" [multiple]=\"multiple\" [required]=\"required\"\r\n [compareWith]=\"compareObjects\">\r\n <mat-select-trigger>\r\n <ng-container *ngIf=\"!customTriggerLabelFn\">{{simpleTriggerLabelFn(checklistSelection.selected)}}\r\n </ng-container>\r\n <ng-container *ngIf=\"customTriggerLabelFn\">{{customTriggerLabelFn}}\r\n </ng-container>\r\n </mat-select-trigger>\r\n\r\n <div class=\"overflow-y-auto lg:overflow-y-hidden lg:hover:overflow-y-auto scrollbar-custom\">\r\n <mat-option *ngIf=\"overallSearchEnabled\">\r\n <cmat-select-search [showNoFoundLabel]=\"showNoFoundLabel\" [noEntriesFoundLabel]=\"noEntriesFoundLabel\"\r\n [formControl]=\"overallFilterControl\" [clearSearchInput]=\"true\"\r\n [toggleAllCheckboxIndeterminate]=\"isIndeterminate\" [toggleAllCheckboxChecked]=\"isChecked\"\r\n (toggleAll)=\"toggleSelectAll($event)\" [showToggleAllCheckbox]=\"showToggleAllCheckbox\">\r\n </cmat-select-search>\r\n </mat-option>\r\n <mat-option *ngIf=\"canNull\">\u7A7A</mat-option>\r\n <mat-option *ngFor=\"let selectData of matSelectData | async ;trackBy: trackByFn\" class=\"hidden\"\r\n [value]=\"selectData\">{{selectData.name}}</mat-option>\r\n\r\n <mat-tree [dataSource]=\"treeDataSource\" [treeControl]=\"treeControl\">\r\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodeToggle matTreeNodePadding\r\n [ngClass]=\"checklistSelection.isSelected(node)?'selected':''\"\r\n (click)=\"todoLeafItemSelectionToggle($event,node)\">\r\n <button type=\"button\" mat-icon-button disabled>\r\n\r\n </button>\r\n <mat-checkbox *ngIf=\"multiple\" class=\"checklist-leaf-node\" (click)=\"noClick()\"\r\n [checked]=\"checklistSelection.isSelected(node)\">{{node.name}}</mat-checkbox>\r\n <span *ngIf=\"!multiple\">{{node.name}}</span>\r\n </mat-tree-node>\r\n\r\n <mat-tree-node *matTreeNodeDef=\"let node; when: hasChild\" matTreeNodePadding\r\n [ngClass]=\"checklistSelection.isSelected(node)?'selected':''\"\r\n (click)=\"todoItemSelectionToggle($event,node)\">\r\n <button type=\"button\" mat-icon-button matTreeNodeToggle\r\n [attr.aria-label]=\"'toggle ' + node.filename\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\"\r\n [svgIcon]=\"treeControl.isExpanded(node) ? 'mat_outline:expand_more' : 'mat_outline:chevron_right'\">\r\n </mat-icon>\r\n </button>\r\n <mat-checkbox *ngIf=\"multiple\" [checked]=\"descendantsAllSelected(node)\" (click)=\"noClick()\"\r\n [indeterminate]=\"descendantsPartiallySelected(node)\">{{node.name}}</mat-checkbox>\r\n <span *ngIf=\"!multiple\">{{node.name}}</span>\r\n </mat-tree-node>\r\n </mat-tree>\r\n </div>\r\n </mat-select>\r\n</mat-form-field>", styles: ["cmat-select-tree{display:block;z-index:101}cmat-select-tree.hidden{display:none}cmat-select-tree .cmat-select-search-inner{overflow:hidden;position:fixed;line-height:45px;@apply flex flex-row;}cmat-select-tree .cmat-select-search-inner span{@apply flex place-items-center;}cmat-select-tree .cmat-select-search-no-entries-found{@apply w-full text-center bg-card rounded;box-shadow:0 2px 8px #00000059}cmat-select-tree .cmat-select-search-input{padding-top:0;padding-bottom:0;height:48px;line-height:48px}cmat-select-tree .cmat-select-search-clear{top:3px;margin:0 10px}cmat-select-tree .cmat-select-search-icon{margin-right:0;margin-left:10px}cmat-select-tree .mat-mdc-option-pseudo-checkbox{display:none}.mat-tree-node{@apply hover:bg-hover cursor-pointer;}.selected{@apply text-primary bg-hover !important;}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i1.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i3.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: i3.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i4.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: CmatSelectSearchComponent, selector: "cmat-select-search", inputs: ["placeholderLabel", "type", "noEntriesFoundLabel", "showNoFoundLabel", "indexAndLengthScreenReaderText", "clearSearchInput", "searching", "disableInitialFocus", "enableClearOnEscapePressed", "preventHomeEndKeyPropagation", "disableScrollToActiveOnOptionsChanged", "ariaLabel", "showToggleAllCheckbox", "toggleAllCheckboxChecked", "toggleAllCheckboxIndeterminate", "toggleAllCheckboxTooltipMessage", "toggleAllCheckboxTooltipPosition", "hideClearSearchButton", "alwaysRestoreSelectedOptionsMulti"], outputs: ["toggleAll"], exportAs: ["cmatSelectSearch"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: MatTreeModule }, { kind: "directive", type: i6.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { kind: "directive", type: i6.MatTreeNodePadding, selector: "[matTreeNodePadding]", inputs: ["matTreeNodePadding", "matTreeNodePaddingIndent"] }, { kind: "directive", type: i6.MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { kind: "component", type: i6.MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { kind: "directive", type: i6.MatTreeNode, selector: "mat-tree-node", inputs: ["disabled", "tabIndex"], exportAs: ["matTreeNode"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i7.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i8.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
401
+ ], viewQueries: [{ propertyName: "_matSelect", first: true, predicate: ["componentSelect"], descendants: true, static: true }], ngImport: i0, template: "<mat-form-field class=\"w-full\">\n @if (showLabel) {\n <mat-label>{{placeholder}}</mat-label>\n }\n <mat-icon class=\"icon-size-5\" [svgIcon]=\"prefixIcon\" matPrefix></mat-icon>\n <mat-select #componentSelect [formControl]=\"selectControl\" [placeholder]=\"placeholder\" [multiple]=\"multiple\" [required]=\"required\"\n [compareWith]=\"compareObjects\" panelClass=\"scrollbar-custom\">\n <mat-select-trigger>\n @if (!customTriggerLabelFn) {\n {{simpleTriggerLabelFn(checklistSelection.selected)}}\n }\n @else{\n {{customTriggerLabelFn}}\n }\n </mat-select-trigger>\n\n <div>\n @if (overallSearchEnabled) {\n <mat-option>\n <cmat-select-search [showNoFoundLabel]=\"showNoFoundLabel\" [noEntriesFoundLabel]=\"noEntriesFoundLabel\"\n [formControl]=\"overallFilterControl\" [clearSearchInput]=\"true\"\n [toggleAllCheckboxIndeterminate]=\"isIndeterminate\" [toggleAllCheckboxChecked]=\"isChecked\"\n (toggleAll)=\"toggleSelectAll($event)\" [showToggleAllCheckbox]=\"showToggleAllCheckbox\">\n </cmat-select-search>\n </mat-option>\n }\n @if (canNull&&treeDataSource.data.length!==0) {\n <mat-option (click)=\"clearSelection()\">\u7A7A</mat-option>\n }\n @for (selectData of matSelectData | async ; track trackByFn($index, selectData)) {\n <mat-option class=\"hidden\"\n [value]=\"selectData\">{{selectData.name}}</mat-option>\n }\n\n <mat-tree [dataSource]=\"treeDataSource\" [treeControl]=\"treeControl\">\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodeToggle matTreeNodePadding\n [ngClass]=\"checklistSelection.isSelected(node)?'selected':''\"\n (click)=\"todoLeafItemSelectionToggle($event,node)\">\n <button type=\"button\" mat-icon-button disabled>\n\n </button>\n @if (multiple) {\n <mat-checkbox class=\"checklist-leaf-node text-current\"\n [checked]=\"checklistSelection.isSelected(node)\">{{node.name}}</mat-checkbox>\n }\n @if (!multiple) {\n <span class=\"text-current\">{{node.name}}</span>\n }\n </mat-tree-node>\n\n <mat-tree-node *matTreeNodeDef=\"let node; when: hasChild\" matTreeNodePadding\n [ngClass]=\"checklistSelection.isSelected(node)?'selected':''\"\n (click)=\"todoItemSelectionToggle($event,node)\">\n <button type=\"button\" mat-icon-button matTreeNodeToggle\n [attr.aria-label]=\"'toggle ' + node.filename\">\n <mat-icon class=\"mat-icon-rtl-mirror\"\n [svgIcon]=\"treeControl.isExpanded(node) ? 'mat_outline:expand_more' : 'mat_outline:chevron_right'\">\n </mat-icon>\n </button>\n @if (multiple) {\n <mat-checkbox [checked]=\"descendantsAllSelected(node)\"\n [indeterminate]=\"descendantsPartiallySelected(node)\" class=\"text-current\">{{node.name}}</mat-checkbox>\n }\n @if (!multiple) {\n <span class=\"text-current\">{{node.name}}</span>\n }\n </mat-tree-node>\n </mat-tree>\n </div>\n </mat-select>\n</mat-form-field>", styles: ["cmat-select-tree{display:block;z-index:101}cmat-select-tree.hidden{display:none}cmat-select-tree .cmat-select-search-inner{overflow:hidden;position:fixed;line-height:45px;display:flex;flex-direction:row}cmat-select-tree .cmat-select-search-inner span{display:flex;place-items:center}cmat-select-tree .cmat-select-search-no-entries-found{width:100%;text-align:center;border-radius:.25rem;box-shadow:0 2px 8px #00000059}cmat-select-tree .cmat-select-search-input{padding-top:0;padding-bottom:0;height:48px;line-height:48px}cmat-select-tree .cmat-select-search-clear{top:3px;margin:0 10px}cmat-select-tree .cmat-select-search-icon{margin-right:0;margin-left:10px}cmat-select-tree .mat-mdc-option-pseudo-checkbox{display:none}cmat-select-tree .mat-tree-node{cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1.MatLabel, selector: "mat-label" }, { kind: "directive", type: i1.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: i3.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: i3.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i4.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: CmatSelectSearchComponent, selector: "cmat-select-search", inputs: ["placeholderLabel", "type", "noEntriesFoundLabel", "showNoFoundLabel", "clearSearchInput", "searching", "disableInitialFocus", "enableClearOnEscapePressed", "preventHomeEndKeyPropagation", "disableScrollToActiveOnOptionsChanged", "ariaLabel", "showToggleAllCheckbox", "toggleAllCheckboxChecked", "toggleAllCheckboxIndeterminate", "toggleAllCheckboxTooltipMessage", "toggleAllCheckboxTooltipPosition", "hideClearSearchButton", "alwaysRestoreSelectedOptionsMulti"], outputs: ["toggleAll"], exportAs: ["cmatSelectSearch"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatTreeModule }, { kind: "directive", type: i6.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { kind: "directive", type: i6.MatTreeNodePadding, selector: "[matTreeNodePadding]", inputs: ["matTreeNodePadding", "matTreeNodePaddingIndent"] }, { kind: "directive", type: i6.MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { kind: "component", type: i6.MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { kind: "directive", type: i6.MatTreeNode, selector: "mat-tree-node", inputs: ["disabled", "tabIndex"], exportAs: ["matTreeNode"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i7.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i8.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
413
402
  }
414
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: CmatSelectTreeComponent, decorators: [{
403
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: CmatSelectTreeComponent, decorators: [{
415
404
  type: Component,
416
405
  args: [{ selector: 'cmat-select-tree', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [
417
406
  {
@@ -419,9 +408,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImpor
419
408
  useExisting: forwardRef(() => CmatSelectTreeComponent),
420
409
  multi: true
421
410
  }
422
- ], standalone: true, imports: [MatFormFieldModule, NgIf, MatIconModule, MatSelectModule,
423
- CmatSelectSearchComponent, FormsModule, ReactiveFormsModule, NgFor, MatTreeModule, NgClass,
424
- MatButtonModule, MatCheckboxModule, AsyncPipe, NgStyle], template: "<mat-form-field class=\"w-full\">\r\n <mat-label *ngIf=\"showLabel\">{{placeholder}}</mat-label>\r\n <mat-icon class=\"icon-size-5\" [svgIcon]=\"prefixIcon\" matPrefix></mat-icon>\r\n <mat-select #componentSelect [placeholder]=\"placeholder\" [multiple]=\"multiple\" [required]=\"required\"\r\n [compareWith]=\"compareObjects\">\r\n <mat-select-trigger>\r\n <ng-container *ngIf=\"!customTriggerLabelFn\">{{simpleTriggerLabelFn(checklistSelection.selected)}}\r\n </ng-container>\r\n <ng-container *ngIf=\"customTriggerLabelFn\">{{customTriggerLabelFn}}\r\n </ng-container>\r\n </mat-select-trigger>\r\n\r\n <div class=\"overflow-y-auto lg:overflow-y-hidden lg:hover:overflow-y-auto scrollbar-custom\">\r\n <mat-option *ngIf=\"overallSearchEnabled\">\r\n <cmat-select-search [showNoFoundLabel]=\"showNoFoundLabel\" [noEntriesFoundLabel]=\"noEntriesFoundLabel\"\r\n [formControl]=\"overallFilterControl\" [clearSearchInput]=\"true\"\r\n [toggleAllCheckboxIndeterminate]=\"isIndeterminate\" [toggleAllCheckboxChecked]=\"isChecked\"\r\n (toggleAll)=\"toggleSelectAll($event)\" [showToggleAllCheckbox]=\"showToggleAllCheckbox\">\r\n </cmat-select-search>\r\n </mat-option>\r\n <mat-option *ngIf=\"canNull\">\u7A7A</mat-option>\r\n <mat-option *ngFor=\"let selectData of matSelectData | async ;trackBy: trackByFn\" class=\"hidden\"\r\n [value]=\"selectData\">{{selectData.name}}</mat-option>\r\n\r\n <mat-tree [dataSource]=\"treeDataSource\" [treeControl]=\"treeControl\">\r\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodeToggle matTreeNodePadding\r\n [ngClass]=\"checklistSelection.isSelected(node)?'selected':''\"\r\n (click)=\"todoLeafItemSelectionToggle($event,node)\">\r\n <button type=\"button\" mat-icon-button disabled>\r\n\r\n </button>\r\n <mat-checkbox *ngIf=\"multiple\" class=\"checklist-leaf-node\" (click)=\"noClick()\"\r\n [checked]=\"checklistSelection.isSelected(node)\">{{node.name}}</mat-checkbox>\r\n <span *ngIf=\"!multiple\">{{node.name}}</span>\r\n </mat-tree-node>\r\n\r\n <mat-tree-node *matTreeNodeDef=\"let node; when: hasChild\" matTreeNodePadding\r\n [ngClass]=\"checklistSelection.isSelected(node)?'selected':''\"\r\n (click)=\"todoItemSelectionToggle($event,node)\">\r\n <button type=\"button\" mat-icon-button matTreeNodeToggle\r\n [attr.aria-label]=\"'toggle ' + node.filename\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\"\r\n [svgIcon]=\"treeControl.isExpanded(node) ? 'mat_outline:expand_more' : 'mat_outline:chevron_right'\">\r\n </mat-icon>\r\n </button>\r\n <mat-checkbox *ngIf=\"multiple\" [checked]=\"descendantsAllSelected(node)\" (click)=\"noClick()\"\r\n [indeterminate]=\"descendantsPartiallySelected(node)\">{{node.name}}</mat-checkbox>\r\n <span *ngIf=\"!multiple\">{{node.name}}</span>\r\n </mat-tree-node>\r\n </mat-tree>\r\n </div>\r\n </mat-select>\r\n</mat-form-field>", styles: ["cmat-select-tree{display:block;z-index:101}cmat-select-tree.hidden{display:none}cmat-select-tree .cmat-select-search-inner{overflow:hidden;position:fixed;line-height:45px;@apply flex flex-row;}cmat-select-tree .cmat-select-search-inner span{@apply flex place-items-center;}cmat-select-tree .cmat-select-search-no-entries-found{@apply w-full text-center bg-card rounded;box-shadow:0 2px 8px #00000059}cmat-select-tree .cmat-select-search-input{padding-top:0;padding-bottom:0;height:48px;line-height:48px}cmat-select-tree .cmat-select-search-clear{top:3px;margin:0 10px}cmat-select-tree .cmat-select-search-icon{margin-right:0;margin-left:10px}cmat-select-tree .mat-mdc-option-pseudo-checkbox{display:none}.mat-tree-node{@apply hover:bg-hover cursor-pointer;}.selected{@apply text-primary bg-hover !important;}\n"] }]
411
+ ], standalone: true, imports: [MatFormFieldModule, MatIconModule, MatSelectModule, CmatSelectSearchComponent, FormsModule,
412
+ ReactiveFormsModule, MatTreeModule, NgClass, MatButtonModule, MatCheckboxModule, AsyncPipe, NgStyle], template: "<mat-form-field class=\"w-full\">\n @if (showLabel) {\n <mat-label>{{placeholder}}</mat-label>\n }\n <mat-icon class=\"icon-size-5\" [svgIcon]=\"prefixIcon\" matPrefix></mat-icon>\n <mat-select #componentSelect [formControl]=\"selectControl\" [placeholder]=\"placeholder\" [multiple]=\"multiple\" [required]=\"required\"\n [compareWith]=\"compareObjects\" panelClass=\"scrollbar-custom\">\n <mat-select-trigger>\n @if (!customTriggerLabelFn) {\n {{simpleTriggerLabelFn(checklistSelection.selected)}}\n }\n @else{\n {{customTriggerLabelFn}}\n }\n </mat-select-trigger>\n\n <div>\n @if (overallSearchEnabled) {\n <mat-option>\n <cmat-select-search [showNoFoundLabel]=\"showNoFoundLabel\" [noEntriesFoundLabel]=\"noEntriesFoundLabel\"\n [formControl]=\"overallFilterControl\" [clearSearchInput]=\"true\"\n [toggleAllCheckboxIndeterminate]=\"isIndeterminate\" [toggleAllCheckboxChecked]=\"isChecked\"\n (toggleAll)=\"toggleSelectAll($event)\" [showToggleAllCheckbox]=\"showToggleAllCheckbox\">\n </cmat-select-search>\n </mat-option>\n }\n @if (canNull&&treeDataSource.data.length!==0) {\n <mat-option (click)=\"clearSelection()\">\u7A7A</mat-option>\n }\n @for (selectData of matSelectData | async ; track trackByFn($index, selectData)) {\n <mat-option class=\"hidden\"\n [value]=\"selectData\">{{selectData.name}}</mat-option>\n }\n\n <mat-tree [dataSource]=\"treeDataSource\" [treeControl]=\"treeControl\">\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodeToggle matTreeNodePadding\n [ngClass]=\"checklistSelection.isSelected(node)?'selected':''\"\n (click)=\"todoLeafItemSelectionToggle($event,node)\">\n <button type=\"button\" mat-icon-button disabled>\n\n </button>\n @if (multiple) {\n <mat-checkbox class=\"checklist-leaf-node text-current\"\n [checked]=\"checklistSelection.isSelected(node)\">{{node.name}}</mat-checkbox>\n }\n @if (!multiple) {\n <span class=\"text-current\">{{node.name}}</span>\n }\n </mat-tree-node>\n\n <mat-tree-node *matTreeNodeDef=\"let node; when: hasChild\" matTreeNodePadding\n [ngClass]=\"checklistSelection.isSelected(node)?'selected':''\"\n (click)=\"todoItemSelectionToggle($event,node)\">\n <button type=\"button\" mat-icon-button matTreeNodeToggle\n [attr.aria-label]=\"'toggle ' + node.filename\">\n <mat-icon class=\"mat-icon-rtl-mirror\"\n [svgIcon]=\"treeControl.isExpanded(node) ? 'mat_outline:expand_more' : 'mat_outline:chevron_right'\">\n </mat-icon>\n </button>\n @if (multiple) {\n <mat-checkbox [checked]=\"descendantsAllSelected(node)\"\n [indeterminate]=\"descendantsPartiallySelected(node)\" class=\"text-current\">{{node.name}}</mat-checkbox>\n }\n @if (!multiple) {\n <span class=\"text-current\">{{node.name}}</span>\n }\n </mat-tree-node>\n </mat-tree>\n </div>\n </mat-select>\n</mat-form-field>", styles: ["cmat-select-tree{display:block;z-index:101}cmat-select-tree.hidden{display:none}cmat-select-tree .cmat-select-search-inner{overflow:hidden;position:fixed;line-height:45px;display:flex;flex-direction:row}cmat-select-tree .cmat-select-search-inner span{display:flex;place-items:center}cmat-select-tree .cmat-select-search-no-entries-found{width:100%;text-align:center;border-radius:.25rem;box-shadow:0 2px 8px #00000059}cmat-select-tree .cmat-select-search-input{padding-top:0;padding-bottom:0;height:48px;line-height:48px}cmat-select-tree .cmat-select-search-clear{top:3px;margin:0 10px}cmat-select-tree .cmat-select-search-icon{margin-right:0;margin-left:10px}cmat-select-tree .mat-mdc-option-pseudo-checkbox{display:none}cmat-select-tree .mat-tree-node{cursor:pointer}\n"] }]
425
413
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { dataSource: [{
426
414
  type: Input
427
415
  }], showLabel: [{
@@ -446,10 +434,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImpor
446
434
  type: Input
447
435
  }], customTriggerLabelTemplate: [{
448
436
  type: Input
449
- }], matSelectConfigurator: [{
450
- type: Input
451
- }], matSelectSearchConfigurator: [{
452
- type: Input
453
437
  }], expandable: [{
454
438
  type: Input
455
439
  }], showToggleAllCheckbox: [{
@@ -1 +1 @@
1
- {"version":3,"file":"cmat-components-select-tree.mjs","sources":["../../../projects/cmat/components/select-tree/select-tree.flatnode.ts","../../../projects/cmat/components/select-tree/select-tree.component.ts","../../../projects/cmat/components/select-tree/select-tree.component.html","../../../projects/cmat/components/select-tree/cmat-components-select-tree.ts"],"sourcesContent":["export class CmatSelectTreeFlatNode {\r\n id: string | number;\r\n name: string;\r\n level: number;\r\n expandable: boolean;\r\n}\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n forwardRef,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n OnInit, SimpleChanges,\r\n ViewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { merge, ReplaySubject, Subject } from 'rxjs';\r\n\r\nimport { debounceTime, takeUntil } from 'rxjs/operators';\r\n\r\nimport { SelectionModel } from '@angular/cdk/collections';\r\nimport { FlatTreeControl } from '@angular/cdk/tree';\r\nimport { MatTreeFlatDataSource, MatTreeFlattener, MatTreeModule } from '@angular/material/tree';\r\nimport { MatSelect, MatSelectModule } from '@angular/material/select';\r\nimport { CmatSelectTreeFlatNode } from './select-tree.flatnode';\r\nimport { CmatSelectTreeNode } from './select-tree.node';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { CmatSelectSearchComponent } from 'cmat/components/select-search';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { NgIf, NgFor, NgClass, AsyncPipe, NgStyle } from '@angular/common';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { isNil } from 'lodash-es';\r\n\r\n@Component({\r\n selector: 'cmat-select-tree',\r\n templateUrl: './select-tree.component.html',\r\n styleUrls: ['./select-tree.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => CmatSelectTreeComponent),\r\n multi: true\r\n }\r\n ],\r\n standalone: true,\r\n imports: [MatFormFieldModule, NgIf, MatIconModule, MatSelectModule,\r\n CmatSelectSearchComponent, FormsModule, ReactiveFormsModule, NgFor, MatTreeModule, NgClass,\r\n MatButtonModule, MatCheckboxModule, AsyncPipe, NgStyle]\r\n})\r\nexport class CmatSelectTreeComponent implements ControlValueAccessor, OnInit, AfterViewInit, OnDestroy, OnChanges {\r\n\r\n @Input() dataSource: CmatSelectTreeNode[];\r\n\r\n @Input() showLabel: boolean = true;\r\n\r\n @Input() noEntriesFoundLabel = '无结果';\r\n\r\n @Input() showNoFoundLabel = true;\r\n\r\n @Input() placeholder: string = '部门';\r\n\r\n @Input() prefixIcon: string = 'heroicons_solid:building-library';\r\n\r\n @Input() multiple: boolean;\r\n\r\n @Input() required: boolean;\r\n\r\n @Input() overallSearchEnabled: boolean = true;\r\n\r\n @Input() canNull: boolean = false;\r\n\r\n @Input() customTriggerLabelFn: (value: CmatSelectTreeNode[]) => string;\r\n\r\n @Input() customTriggerLabelTemplate: string;\r\n\r\n @Input() matSelectConfigurator: { [key: string]: any };\r\n\r\n @Input() matSelectSearchConfigurator: { [key: string]: any };\r\n\r\n @Input() expandable: boolean;\r\n\r\n @Input() showToggleAllCheckbox: boolean = false;\r\n\r\n @ViewChild('componentSelect', { static: true }) private _matSelect: MatSelect;\r\n\r\n flatNodeMap = new Map<CmatSelectTreeFlatNode, CmatSelectTreeNode>();\r\n\r\n nestedNodeMap = new Map<CmatSelectTreeNode, CmatSelectTreeFlatNode>();\r\n\r\n selectedParent: CmatSelectTreeFlatNode | null = null;\r\n\r\n treeControl: FlatTreeControl<CmatSelectTreeFlatNode>;\r\n\r\n treeFlattener: MatTreeFlattener<CmatSelectTreeNode, CmatSelectTreeFlatNode>;\r\n\r\n checklistSelection = new SelectionModel<CmatSelectTreeFlatNode>(true);\r\n\r\n treeDataSource: MatTreeFlatDataSource<CmatSelectTreeNode, CmatSelectTreeFlatNode>;\r\n\r\n overallFilterControl: FormControl;\r\n\r\n isIndeterminate = false;\r\n isChecked = false;\r\n dataCount: number = 0;\r\n\r\n matSelectData: ReplaySubject<any[]> = new ReplaySubject<any[]>(1);\r\n\r\n private _controlValueAccessorKeys: string[] = [\r\n 'formControl',\r\n 'formControlName'\r\n ];\r\n\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n constructor(private _cd: ChangeDetectorRef) {\r\n this.overallFilterControl = new FormControl();\r\n\r\n this.treeFlattener = new MatTreeFlattener(this.transformer, this.getLevel,\r\n this.isExpandable, this.getChildren);\r\n this.treeControl = new FlatTreeControl<CmatSelectTreeFlatNode>(this.getLevel, this.isExpandable);\r\n this.treeDataSource = new MatTreeFlatDataSource(this.treeControl, this.treeFlattener);\r\n }\r\n\r\n getLevel = (node: CmatSelectTreeFlatNode): number => node.level;\r\n\r\n isExpandable = (node: CmatSelectTreeFlatNode): boolean => node.expandable;\r\n\r\n getChildren = (node: CmatSelectTreeNode): CmatSelectTreeNode[] | null => node.children;\r\n\r\n hasChild = (_: number, _nodeData: CmatSelectTreeFlatNode): boolean => _nodeData.expandable;\r\n\r\n hasNoContent = (_: number, _nodeData: CmatSelectTreeFlatNode): boolean => _nodeData.name === '';\r\n\r\n transformer = (node: CmatSelectTreeNode, level: number): CmatSelectTreeFlatNode => {\r\n const existingNode = this.nestedNodeMap.get(node);\r\n const flatNode = existingNode && existingNode.name === node.name\r\n ? existingNode\r\n : new CmatSelectTreeFlatNode();\r\n flatNode.id = node.id;\r\n flatNode.name = node.name;\r\n flatNode.level = level;\r\n flatNode.expandable = !!node.children && node.children.length > 0;\r\n this.flatNodeMap.set(flatNode, node);\r\n this.nestedNodeMap.set(node, flatNode);\r\n return flatNode;\r\n };\r\n\r\n ngOnInit(): void {\r\n this.multiple = this.multiple || false;\r\n this.required = this.required || false;\r\n\r\n this.treeDataSource.data = this.dataSource;\r\n this.dataCount = this.treeControl.dataNodes.length;\r\n\r\n this.matSelectData.next(this.treeControl.dataNodes);\r\n\r\n if (this.expandable) {\r\n this.treeControl.expandAll();\r\n }\r\n\r\n let panelClass: string = '';\r\n if (!this.overallSearchEnabled) {\r\n panelClass = 'cmat-select-search-panel overflow-auto md:overflow-hidden';\r\n }\r\n\r\n if (this._matSelect.panelClass) {\r\n if (Array.isArray(this._matSelect.panelClass)) {\r\n (this._matSelect.panelClass as string[]).push(panelClass);\r\n } else if (typeof this._matSelect.panelClass === 'string') {\r\n this._matSelect.panelClass = [this._matSelect.panelClass, panelClass];\r\n } else if (typeof this._matSelect.panelClass === 'object') {\r\n this._matSelect.panelClass.entries[panelClass] = true;\r\n }\r\n } else {\r\n this._matSelect.panelClass = panelClass;\r\n }\r\n\r\n\r\n this._matSelect.openedChange\r\n .pipe(takeUntil(this._unsubscribeAll))\r\n .subscribe((opened) => {\r\n if (opened && this.multiple) {\r\n this.checklistSelection.selected.forEach((node) => {\r\n if (node.expandable) {\r\n const descendants = this.treeControl.getDescendants(node);\r\n this.checklistSelection.select(...descendants);\r\n }\r\n });\r\n }\r\n\r\n if (!opened) {\r\n if (this.overallSearchEnabled) {\r\n this._resetFilters();\r\n }\r\n\r\n setTimeout(() => {\r\n if (!isNil(this.checklistSelection.selected)) {\r\n\r\n if (this.multiple) {\r\n const findOutNode: CmatSelectTreeFlatNode[] = [];\r\n this.checklistSelection.selected.forEach((node) => {\r\n const parentNode = this.getParentNode(node);\r\n if (parentNode && this.checklistSelection.isSelected(parentNode)) {\r\n findOutNode.push(node);\r\n }\r\n });\r\n\r\n findOutNode.forEach((node) => {\r\n this.checklistSelection.deselect(node);\r\n });\r\n\r\n this._matSelect.writeValue(this.checklistSelection.selected);\r\n\r\n if (this._matSelect.value !== this.checklistSelection.selected) {\r\n this._matSelect.value = this.checklistSelection.selected;\r\n }\r\n this._matSelect._onChange(this.checklistSelection.selected);\r\n\r\n } else {\r\n if (this.checklistSelection.selected && this.checklistSelection.selected.length > 0) {\r\n this._matSelect.writeValue(this.checklistSelection.selected[0]);\r\n if (this._matSelect.value !== this.checklistSelection.selected[0]) {\r\n this._matSelect.value = this.checklistSelection.selected[0];\r\n }\r\n this._matSelect._onChange(this.checklistSelection.selected[0]);\r\n }\r\n }\r\n }\r\n }, 200);\r\n\r\n }\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n merge(this.overallFilterControl.valueChanges)\r\n .pipe(takeUntil(this._unsubscribeAll), debounceTime(200))\r\n .subscribe(() => {\r\n const dataClone: CmatSelectTreeNode[] = JSON.parse(JSON.stringify([...this.dataSource]));\r\n\r\n const arr: number[] = [];\r\n\r\n for (let i = dataClone.length - 1; i >= 0; i--) {\r\n if (!this._applyColumnLevelFilters(dataClone[i], this.overallFilterControl.value.toLowerCase())) {\r\n arr.push(i);\r\n }\r\n }\r\n arr.forEach((v) => { dataClone.splice(v, 1); });\r\n\r\n this.treeDataSource.data = dataClone;\r\n this.matSelectData.next(this.treeControl.dataNodes);\r\n if (this.expandable) {\r\n this.treeControl.expandAll();\r\n }\r\n\r\n this._updateSelect(this.checklistSelection.selected);\r\n\r\n this._cd.detectChanges();\r\n });\r\n\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n\r\n registerOnChange(fn: (value: any) => void): void {\r\n const proxyFn: (value: any) => void = (value: any) => {\r\n fn(value);\r\n };\r\n this._matSelect.registerOnChange(proxyFn);\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this._matSelect.registerOnTouched(fn);\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this._matSelect.setDisabledState(isDisabled);\r\n }\r\n\r\n writeValue(value: any): void {\r\n if (!isNil(value)) {\r\n this._updateChecklistSelection(value);\r\n } else {\r\n this.checklistSelection.clear();\r\n }\r\n if (this.multiple) {\r\n this._matSelect.writeValue(this.checklistSelection.selected);\r\n if (this._matSelect.value !== this.checklistSelection.selected) {\r\n this._matSelect.value = this.checklistSelection.selected;\r\n }\r\n } else {\r\n this._matSelect.writeValue(this.checklistSelection.selected[0]);\r\n if (this._matSelect.value !== this.checklistSelection.selected[0]) {\r\n this._matSelect.value = this.checklistSelection.selected[0];\r\n }\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!isNil(changes['matSelectConfigurator'])) {\r\n const configuration = changes['matSelectConfigurator'].currentValue;\r\n Object.keys(configuration)\r\n .filter(key => !['multiple', 'panelClass'].includes(key) && !this._controlValueAccessorKeys.includes(key))\r\n .forEach(key => (this._matSelect as any)[key] = configuration[key]);\r\n }\r\n }\r\n\r\n simpleTriggerLabelFn(value: CmatSelectTreeFlatNode[]): string {\r\n return value.map((node) => {\r\n\r\n if (isNil(node)) {\r\n return '';\r\n }\r\n if (isNil(this.customTriggerLabelTemplate)\r\n || typeof this.customTriggerLabelTemplate !== 'string'\r\n || this.customTriggerLabelTemplate.trim().length === 0) {\r\n return `${node.id}`;\r\n }\r\n let atLeastPartialSubstitution = false;\r\n const substitution: string = this.customTriggerLabelTemplate.replace(/[$][{]([^}]+)[}]/g, (_, key) =>\r\n !isNil((node as any)[key]) && (atLeastPartialSubstitution = true) ? (node as any)[key] : '');\r\n if (atLeastPartialSubstitution === false) {\r\n return `${node.id}`;\r\n }\r\n return substitution.trim();\r\n }).join(', ');\r\n }\r\n\r\n /** Whether all the descendants of the node are selected. */\r\n descendantsAllSelected(node: CmatSelectTreeFlatNode): boolean {\r\n const descendants = this.treeControl.getDescendants(node);\r\n return descendants.every(child =>\r\n this.checklistSelection.isSelected(child)\r\n );\r\n }\r\n\r\n /** Whether part of the descendants are selected */\r\n descendantsPartiallySelected(node: CmatSelectTreeFlatNode): boolean {\r\n const descendants = this.treeControl.getDescendants(node);\r\n const result = descendants.some(child => this.checklistSelection.isSelected(child));\r\n return result && !this.descendantsAllSelected(node);\r\n }\r\n\r\n /** Toggle the to-do item selection. Select/deselect all the descendants node */\r\n todoItemSelectionToggle(event: any, node: CmatSelectTreeFlatNode): void {\r\n event.stopPropagation();\r\n if (this.multiple) {\r\n this.checklistSelection.toggle(node);\r\n const descendants = this.treeControl.getDescendants(node);\r\n\r\n this.checklistSelection.isSelected(node) ? this.checklistSelection.select(...descendants) : this.checklistSelection.deselect(...descendants);\r\n\r\n this.checkAllParentsSelection(node);\r\n\r\n if (this.showToggleAllCheckbox) {\r\n this.isIndeterminate = this.checklistSelection.selected.length < this.dataCount && this.checklistSelection.selected.length > 0;\r\n this.isChecked = this.checklistSelection.selected.length === this.dataCount;\r\n }\r\n } else {\r\n this.checklistSelection.clear();\r\n this.checklistSelection.select(node);\r\n\r\n this._matSelect.close();\r\n }\r\n }\r\n\r\n /** Toggle a leaf to-do item selection. Check all the parents to see if they changed */\r\n todoLeafItemSelectionToggle(event: any, node: CmatSelectTreeFlatNode): void {\r\n event.stopPropagation();\r\n if (this.multiple) {\r\n this.checklistSelection.toggle(node);\r\n this.checkAllParentsSelection(node);\r\n\r\n if (this.showToggleAllCheckbox) {\r\n this.isIndeterminate = this.checklistSelection.selected.length < this.dataCount && this.checklistSelection.selected.length > 0;\r\n this.isChecked = this.checklistSelection.selected.length === this.dataCount;\r\n }\r\n } else {\r\n this.checklistSelection.clear();\r\n this.checklistSelection.select(node);\r\n\r\n this._matSelect.close();\r\n }\r\n }\r\n\r\n noClick(): boolean {\r\n return false;\r\n }\r\n\r\n /* Checks all the parents when a leaf node is selected/unselected */\r\n checkAllParentsSelection(node: CmatSelectTreeFlatNode): void {\r\n let parent: CmatSelectTreeFlatNode | null = this.getParentNode(node);\r\n while (parent) {\r\n parent.expandable = true;\r\n this.treeControl.expand(parent);\r\n this.checkRootNodeSelection(parent);\r\n parent = this.getParentNode(parent);\r\n }\r\n }\r\n\r\n /** Check root node checked state and change it accordingly */\r\n checkRootNodeSelection(node: CmatSelectTreeFlatNode): void {\r\n const nodeSelected = this.checklistSelection.isSelected(node);\r\n const descendants = this.treeControl.getDescendants(node);\r\n const descAllSelected = descendants.every(child =>\r\n this.checklistSelection.isSelected(child)\r\n );\r\n if (nodeSelected && !descAllSelected) {\r\n this.checklistSelection.deselect(node);\r\n } else if (!nodeSelected && (descAllSelected || descendants.length === 0)) {\r\n this.checklistSelection.select(node);\r\n }\r\n }\r\n\r\n /* Get the parent node of a node */\r\n getParentNode(node: CmatSelectTreeFlatNode): CmatSelectTreeFlatNode | null {\r\n const currentLevel = this.getLevel(node);\r\n\r\n if (currentLevel < 1) {\r\n return null;\r\n }\r\n\r\n const startIndex = this.treeControl.dataNodes.indexOf(node) - 1;\r\n\r\n for (let i = startIndex; i >= 0; i--) {\r\n const currentNode = this.treeControl.dataNodes[i];\r\n\r\n if (this.getLevel(currentNode) < currentLevel) {\r\n return currentNode;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n toggleSelectAll(selectAllValue: boolean): void {\r\n if (selectAllValue) {\r\n this.treeControl.dataNodes.forEach((node) => {\r\n this.checklistSelection.select(node);\r\n this.checkAllParentsSelection(node);\r\n });\r\n this.isIndeterminate = this.checklistSelection.selected.length < this.dataCount && this.checklistSelection.selected.length > 0;\r\n this.isChecked = this.checklistSelection.selected.length === this.dataCount;\r\n } else {\r\n this.checklistSelection.clear();\r\n this.isChecked = false;\r\n this.isIndeterminate = false;\r\n }\r\n }\r\n\r\n compareObjects(o1: any, o2: any): boolean {\r\n return o1 && o2 ? o1?.name === o2?.name && o1?.id === o2?.id : o1 === o2;\r\n }\r\n trackByFn(index: number, item: any): any {\r\n return index || item;\r\n }\r\n\r\n private _updateChecklistSelection(value: any[]): void {\r\n this.checklistSelection.clear();\r\n if (!isNil(value)) {\r\n const valueArray: any[] = !Array.isArray(value) ? [value] : value;\r\n valueArray.forEach((item) => {\r\n const nodeFound = this.treeControl.dataNodes.find(node => node.id === item.id);\r\n if (isNil(nodeFound)) {\r\n return;\r\n }\r\n this.checklistSelection.select(nodeFound);\r\n });\r\n }\r\n }\r\n\r\n private _updateSelect(value: any[]): void {\r\n if (!isNil(value)) {\r\n const valueArray: any[] = !Array.isArray(value) ? [value] : value;\r\n if (this.overallSearchEnabled)//有搜索功能,转化选中节点为当前数据源节点\r\n {\r\n valueArray.forEach((item) => {\r\n const nodeFound = this.treeControl.dataNodes.find(node => node.id === item.id);\r\n if (isNil(nodeFound)) {\r\n return;\r\n }\r\n this.checklistSelection.deselect(item);\r\n\r\n this.checklistSelection.select(nodeFound);\r\n });\r\n }\r\n if (this.multiple) {\r\n this.checklistSelection.selected.forEach((item) => {\r\n this.checkAllParentsSelection(item);\r\n }\r\n );\r\n }\r\n\r\n if (this.showToggleAllCheckbox) {\r\n this.isIndeterminate = this.checklistSelection.selected.length < this.dataCount && this.checklistSelection.selected.length > 0;\r\n this.isChecked = this.checklistSelection.selected.length === this.dataCount;\r\n }\r\n }\r\n }\r\n\r\n private _applyColumnLevelFilters(node: CmatSelectTreeNode, filter: string): boolean {\r\n let result = false;\r\n\r\n if (node && node.children && node.children.length > 0) {\r\n for (let i = node.children.length - 1; i >= 0; i--) {\r\n const resultTemp = this._applyColumnLevelFilters(node.children[i], filter);\r\n\r\n if (!resultTemp) {\r\n node.children.splice(i, 1);\r\n }\r\n\r\n result = resultTemp || result;\r\n }\r\n }\r\n\r\n if (node && node.children && node.children.length === 0) {\r\n node.children = null;\r\n }\r\n\r\n const cellValue = node['name'].toLowerCase();\r\n if (cellValue.indexOf(filter) > -1) {\r\n result = true;\r\n }\r\n return result;\r\n }\r\n\r\n private _resetFilters(): void {\r\n if (this.overallSearchEnabled) {\r\n this.overallFilterControl.setValue('');\r\n }\r\n }\r\n}\r\n","<mat-form-field class=\"w-full\">\r\n <mat-label *ngIf=\"showLabel\">{{placeholder}}</mat-label>\r\n <mat-icon class=\"icon-size-5\" [svgIcon]=\"prefixIcon\" matPrefix></mat-icon>\r\n <mat-select #componentSelect [placeholder]=\"placeholder\" [multiple]=\"multiple\" [required]=\"required\"\r\n [compareWith]=\"compareObjects\">\r\n <mat-select-trigger>\r\n <ng-container *ngIf=\"!customTriggerLabelFn\">{{simpleTriggerLabelFn(checklistSelection.selected)}}\r\n </ng-container>\r\n <ng-container *ngIf=\"customTriggerLabelFn\">{{customTriggerLabelFn}}\r\n </ng-container>\r\n </mat-select-trigger>\r\n\r\n <div class=\"overflow-y-auto lg:overflow-y-hidden lg:hover:overflow-y-auto scrollbar-custom\">\r\n <mat-option *ngIf=\"overallSearchEnabled\">\r\n <cmat-select-search [showNoFoundLabel]=\"showNoFoundLabel\" [noEntriesFoundLabel]=\"noEntriesFoundLabel\"\r\n [formControl]=\"overallFilterControl\" [clearSearchInput]=\"true\"\r\n [toggleAllCheckboxIndeterminate]=\"isIndeterminate\" [toggleAllCheckboxChecked]=\"isChecked\"\r\n (toggleAll)=\"toggleSelectAll($event)\" [showToggleAllCheckbox]=\"showToggleAllCheckbox\">\r\n </cmat-select-search>\r\n </mat-option>\r\n <mat-option *ngIf=\"canNull\">空</mat-option>\r\n <mat-option *ngFor=\"let selectData of matSelectData | async ;trackBy: trackByFn\" class=\"hidden\"\r\n [value]=\"selectData\">{{selectData.name}}</mat-option>\r\n\r\n <mat-tree [dataSource]=\"treeDataSource\" [treeControl]=\"treeControl\">\r\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodeToggle matTreeNodePadding\r\n [ngClass]=\"checklistSelection.isSelected(node)?'selected':''\"\r\n (click)=\"todoLeafItemSelectionToggle($event,node)\">\r\n <button type=\"button\" mat-icon-button disabled>\r\n\r\n </button>\r\n <mat-checkbox *ngIf=\"multiple\" class=\"checklist-leaf-node\" (click)=\"noClick()\"\r\n [checked]=\"checklistSelection.isSelected(node)\">{{node.name}}</mat-checkbox>\r\n <span *ngIf=\"!multiple\">{{node.name}}</span>\r\n </mat-tree-node>\r\n\r\n <mat-tree-node *matTreeNodeDef=\"let node; when: hasChild\" matTreeNodePadding\r\n [ngClass]=\"checklistSelection.isSelected(node)?'selected':''\"\r\n (click)=\"todoItemSelectionToggle($event,node)\">\r\n <button type=\"button\" mat-icon-button matTreeNodeToggle\r\n [attr.aria-label]=\"'toggle ' + node.filename\">\r\n <mat-icon class=\"mat-icon-rtl-mirror\"\r\n [svgIcon]=\"treeControl.isExpanded(node) ? 'mat_outline:expand_more' : 'mat_outline:chevron_right'\">\r\n </mat-icon>\r\n </button>\r\n <mat-checkbox *ngIf=\"multiple\" [checked]=\"descendantsAllSelected(node)\" (click)=\"noClick()\"\r\n [indeterminate]=\"descendantsPartiallySelected(node)\">{{node.name}}</mat-checkbox>\r\n <span *ngIf=\"!multiple\">{{node.name}}</span>\r\n </mat-tree-node>\r\n </mat-tree>\r\n </div>\r\n </mat-select>\r\n</mat-form-field>","/**\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-select-tree.mjs","sources":["../../../projects/cmat/components/select-tree/select-tree.flatnode.ts","../../../projects/cmat/components/select-tree/select-tree.component.ts","../../../projects/cmat/components/select-tree/select-tree.component.html","../../../projects/cmat/components/select-tree/cmat-components-select-tree.ts"],"sourcesContent":["export class CmatSelectTreeFlatNode {\r\n id: string | number;\r\n name: string;\r\n level: number;\r\n expandable: boolean;\r\n}\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n forwardRef,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n ViewChild,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { merge, ReplaySubject, Subject } from 'rxjs';\r\n\r\nimport { debounceTime, takeUntil } from 'rxjs/operators';\r\n\r\nimport { SelectionModel } from '@angular/cdk/collections';\r\nimport { FlatTreeControl } from '@angular/cdk/tree';\r\nimport { MatTreeFlatDataSource, MatTreeFlattener, MatTreeModule } from '@angular/material/tree';\r\nimport { MatSelect, MatSelectModule } from '@angular/material/select';\r\nimport { CmatSelectTreeFlatNode } from './select-tree.flatnode';\r\nimport { CmatSelectTreeNode } from './select-tree.node';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { CmatSelectSearchComponent } from 'cmat/components/select-search';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { NgClass, AsyncPipe, NgStyle } from '@angular/common';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { isNil } from 'lodash-es';\r\n\r\n@Component({\r\n selector: 'cmat-select-tree',\r\n templateUrl: './select-tree.component.html',\r\n styleUrls: ['./select-tree.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => CmatSelectTreeComponent),\r\n multi: true\r\n }\r\n ],\r\n standalone: true,\r\n imports: [MatFormFieldModule, MatIconModule, MatSelectModule, CmatSelectSearchComponent, FormsModule,\r\n ReactiveFormsModule, MatTreeModule, NgClass, MatButtonModule, MatCheckboxModule, AsyncPipe, NgStyle]\r\n})\r\nexport class CmatSelectTreeComponent implements ControlValueAccessor, OnInit, AfterViewInit, OnDestroy {\r\n\r\n @Input() dataSource: CmatSelectTreeNode[];\r\n\r\n @Input() showLabel: boolean = true;\r\n\r\n @Input() noEntriesFoundLabel = '无结果';\r\n\r\n @Input() showNoFoundLabel = true;\r\n\r\n @Input() placeholder: string = '部门';\r\n\r\n @Input() prefixIcon: string = 'heroicons_outline:building-library';\r\n\r\n @Input() multiple: boolean;\r\n\r\n @Input() required: boolean;\r\n\r\n @Input() overallSearchEnabled: boolean = true;\r\n\r\n @Input() canNull: boolean = false;\r\n\r\n @Input() customTriggerLabelFn: (value: CmatSelectTreeNode[]) => string;\r\n\r\n @Input() customTriggerLabelTemplate: string;\r\n\r\n @Input() expandable: boolean;\r\n\r\n @Input() showToggleAllCheckbox: boolean = false;\r\n\r\n @ViewChild('componentSelect', { static: true }) private _matSelect: MatSelect;\r\n\r\n flatNodeMap = new Map<CmatSelectTreeFlatNode, CmatSelectTreeNode>();\r\n\r\n nestedNodeMap = new Map<CmatSelectTreeNode, CmatSelectTreeFlatNode>();\r\n\r\n selectedParent: CmatSelectTreeFlatNode | null = null;\r\n\r\n treeControl: FlatTreeControl<CmatSelectTreeFlatNode>;\r\n\r\n treeFlattener: MatTreeFlattener<CmatSelectTreeNode, CmatSelectTreeFlatNode>;\r\n\r\n checklistSelection = new SelectionModel<CmatSelectTreeFlatNode>(true);\r\n\r\n treeDataSource: MatTreeFlatDataSource<CmatSelectTreeNode, CmatSelectTreeFlatNode>;\r\n\r\n overallFilterControl: FormControl;\r\n\r\n isIndeterminate = false;\r\n isChecked = false;\r\n dataCount: number = 0;\r\n selectControl:FormControl=new FormControl(); \r\n\r\n matSelectData: ReplaySubject<any[]> = new ReplaySubject<any[]>(1);\r\n\r\n private _unsubscribeAll: Subject<void> = new Subject<void>();\r\n\r\n constructor(private _cd: ChangeDetectorRef) {\r\n this.overallFilterControl = new FormControl();\r\n\r\n this.treeFlattener = new MatTreeFlattener(this.transformer, this.getLevel,\r\n this.isExpandable, this.getChildren);\r\n this.treeControl = new FlatTreeControl<CmatSelectTreeFlatNode>(this.getLevel, this.isExpandable);\r\n this.treeDataSource = new MatTreeFlatDataSource(this.treeControl, this.treeFlattener);\r\n }\r\n\r\n getLevel = (node: CmatSelectTreeFlatNode): number => node.level;\r\n\r\n isExpandable = (node: CmatSelectTreeFlatNode): boolean => node.expandable;\r\n\r\n getChildren = (node: CmatSelectTreeNode): CmatSelectTreeNode[] | null => node.children;\r\n\r\n hasChild = (_: number, _nodeData: CmatSelectTreeFlatNode): boolean => _nodeData.expandable;\r\n\r\n hasNoContent = (_: number, _nodeData: CmatSelectTreeFlatNode): boolean => _nodeData.name === '';\r\n\r\n transformer = (node: CmatSelectTreeNode, level: number): CmatSelectTreeFlatNode => {\r\n const existingNode = this.nestedNodeMap.get(node);\r\n const flatNode = existingNode && existingNode.name === node.name\r\n ? existingNode\r\n : new CmatSelectTreeFlatNode();\r\n flatNode.id = node.id;\r\n flatNode.name = node.name;\r\n flatNode.level = level;\r\n flatNode.expandable = !!node.children && node.children.length > 0;\r\n this.flatNodeMap.set(flatNode, node);\r\n this.nestedNodeMap.set(node, flatNode);\r\n return flatNode;\r\n };\r\n\r\n ngOnInit(): void {\r\n this.multiple = this.multiple || false;\r\n this.required = this.required || false;\r\n\r\n this.treeDataSource.data = this.dataSource;\r\n this.dataCount = this.treeControl.dataNodes.length;\r\n\r\n this.matSelectData.next(this.treeControl.dataNodes);\r\n\r\n if (this.expandable) {\r\n this.treeControl.expandAll();\r\n }\r\n\r\n let panelClass: string = '';\r\n if (!this.overallSearchEnabled) {\r\n panelClass = 'cmat-select-search-panel overflow-y-auto lg:overflow-y-hidden lg:hover:overflow-y-auto scrollbar-custom';\r\n }\r\n\r\n if (this._matSelect.panelClass) {\r\n if (Array.isArray(this._matSelect.panelClass)) {\r\n (this._matSelect.panelClass as string[]).push(panelClass);\r\n } else if (typeof this._matSelect.panelClass === 'string') {\r\n this._matSelect.panelClass = [this._matSelect.panelClass, panelClass];\r\n } else if (typeof this._matSelect.panelClass === 'object') {\r\n this._matSelect.panelClass.entries[panelClass] = true;\r\n }\r\n } else {\r\n this._matSelect.panelClass = panelClass;\r\n }\r\n\r\n\r\n this._matSelect.openedChange\r\n .pipe(takeUntil(this._unsubscribeAll))\r\n .subscribe((opened) => {\r\n if (opened && this.multiple) {\r\n this.checklistSelection.selected.forEach((node) => {\r\n if (node.expandable) {\r\n const descendants = this.treeControl.getDescendants(node);\r\n this.checklistSelection.select(...descendants);\r\n }\r\n });\r\n }\r\n\r\n if (!opened) {\r\n if (this.overallSearchEnabled) {\r\n this._resetFilters();\r\n }\r\n\r\n setTimeout(() => {\r\n if (!isNil(this.checklistSelection.selected)) {\r\n\r\n if (this.multiple) {\r\n const findOutNode: CmatSelectTreeFlatNode[] = [];\r\n this.checklistSelection.selected.forEach((node) => {\r\n const parentNode = this.getParentNode(node);\r\n if (parentNode && this.checklistSelection.isSelected(parentNode)) {\r\n findOutNode.push(node);\r\n }\r\n });\r\n\r\n findOutNode.forEach((node) => {\r\n this.checklistSelection.deselect(node);\r\n });\r\n\r\n this._matSelect.writeValue(this.checklistSelection.selected);\r\n\r\n if (this._matSelect.value !== this.checklistSelection.selected) {\r\n this._matSelect.value = this.checklistSelection.selected;\r\n }\r\n this._matSelect._onChange(this.checklistSelection.selected);\r\n\r\n } else {\r\n if (this.checklistSelection.selected && this.checklistSelection.selected.length > 0) {\r\n this._matSelect.writeValue(this.checklistSelection.selected[0]);\r\n if (this._matSelect.value !== this.checklistSelection.selected[0]) {\r\n this._matSelect.value = this.checklistSelection.selected[0];\r\n }\r\n this._matSelect._onChange(this.checklistSelection.selected[0]);\r\n }\r\n }\r\n }\r\n }, 200);\r\n\r\n }\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n merge(this.overallFilterControl.valueChanges)\r\n .pipe(takeUntil(this._unsubscribeAll), debounceTime(200))\r\n .subscribe(() => {\r\n const dataClone: CmatSelectTreeNode[] = JSON.parse(JSON.stringify([...this.dataSource]));\r\n\r\n const arr: number[] = [];\r\n\r\n for (let i = dataClone.length - 1; i >= 0; i--) {\r\n if (!this._applyColumnLevelFilters(dataClone[i], this.overallFilterControl.value.toLowerCase())) {\r\n arr.push(i);\r\n }\r\n }\r\n arr.forEach((v) => { dataClone.splice(v, 1); });\r\n\r\n this.treeDataSource.data = dataClone;\r\n this.matSelectData.next(this.treeControl.dataNodes);\r\n if (this.expandable) {\r\n this.treeControl.expandAll();\r\n }\r\n\r\n this._updateSelect(this.checklistSelection.selected);\r\n\r\n this._cd.detectChanges();\r\n });\r\n\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._unsubscribeAll.next(void 0);\r\n this._unsubscribeAll.complete();\r\n }\r\n\r\n registerOnChange(fn: (value: any) => void): void {\r\n const proxyFn: (value: any) => void = (value: any) => {\r\n fn(value);\r\n };\r\n this._matSelect.registerOnChange(proxyFn);\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this._matSelect.registerOnTouched(fn);\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this._matSelect.setDisabledState(isDisabled);\r\n }\r\n\r\n writeValue(value: any): void {\r\n if (!isNil(value)) {\r\n this._updateChecklistSelection(value);\r\n } else {\r\n this.checklistSelection.clear();\r\n }\r\n if (this.multiple) {\r\n this._matSelect.writeValue(this.checklistSelection.selected);\r\n if (this._matSelect.value !== this.checklistSelection.selected) {\r\n this._matSelect.value = this.checklistSelection.selected;\r\n }\r\n } else {\r\n this._matSelect.writeValue(this.checklistSelection.selected[0]);\r\n if (this._matSelect.value !== this.checklistSelection.selected[0]) {\r\n this._matSelect.value = this.checklistSelection.selected[0];\r\n }\r\n }\r\n }\r\n\r\n simpleTriggerLabelFn(value: CmatSelectTreeFlatNode[]): string {\r\n return value.map((node) => {\r\n\r\n if (isNil(node)) {\r\n return '';\r\n }\r\n if (isNil(this.customTriggerLabelTemplate)\r\n || typeof this.customTriggerLabelTemplate !== 'string'\r\n || this.customTriggerLabelTemplate.trim().length === 0) {\r\n return `${node.id}`;\r\n }\r\n let atLeastPartialSubstitution = false;\r\n const substitution: string = this.customTriggerLabelTemplate.replace(/[$][{]([^}]+)[}]/g, (_, key) =>\r\n !isNil((node as any)[key]) && (atLeastPartialSubstitution = true) ? (node as any)[key] : '');\r\n if (atLeastPartialSubstitution === false) {\r\n return `${node.id}`;\r\n }\r\n return substitution.trim();\r\n }).join(', ');\r\n }\r\n\r\n /** Whether all the descendants of the node are selected. */\r\n descendantsAllSelected(node: CmatSelectTreeFlatNode): boolean {\r\n const descendants = this.treeControl.getDescendants(node);\r\n return descendants.every(child =>\r\n this.checklistSelection.isSelected(child)\r\n );\r\n }\r\n\r\n /** Whether part of the descendants are selected */\r\n descendantsPartiallySelected(node: CmatSelectTreeFlatNode): boolean {\r\n const descendants = this.treeControl.getDescendants(node);\r\n const result = descendants.some(child => this.checklistSelection.isSelected(child));\r\n return result && !this.descendantsAllSelected(node);\r\n }\r\n\r\n /** Toggle the to-do item selection. Select/deselect all the descendants node */\r\n todoItemSelectionToggle(event: any, node: CmatSelectTreeFlatNode): void {\r\n event.stopPropagation();\r\n if (this.multiple) {\r\n this.checklistSelection.toggle(node);\r\n const descendants = this.treeControl.getDescendants(node);\r\n\r\n this.checklistSelection.isSelected(node) ? this.checklistSelection.select(...descendants) : this.checklistSelection.deselect(...descendants);\r\n\r\n this.checkAllParentsSelection(node);\r\n\r\n if (this.showToggleAllCheckbox) {\r\n this.isIndeterminate = this.checklistSelection.selected.length < this.dataCount && this.checklistSelection.selected.length > 0;\r\n this.isChecked = this.checklistSelection.selected.length === this.dataCount;\r\n }\r\n } else {\r\n this.checklistSelection.clear();\r\n this.checklistSelection.select(node);\r\n\r\n this._matSelect.close();\r\n }\r\n }\r\n\r\n /** Toggle a leaf to-do item selection. Check all the parents to see if they changed */\r\n todoLeafItemSelectionToggle(event: any, node: CmatSelectTreeFlatNode): void {\r\n event.stopPropagation();\r\n if (this.multiple) {\r\n this.checklistSelection.toggle(node);\r\n this.checkAllParentsSelection(node);\r\n\r\n if (this.showToggleAllCheckbox) {\r\n this.isIndeterminate = this.checklistSelection.selected.length < this.dataCount && this.checklistSelection.selected.length > 0;\r\n this.isChecked = this.checklistSelection.selected.length === this.dataCount;\r\n }\r\n } else {\r\n this.checklistSelection.clear();\r\n this.checklistSelection.select(node);\r\n\r\n this._matSelect.close();\r\n }\r\n }\r\n\r\n clearSelection():void{\r\n this.checklistSelection.clear();\r\n }\r\n\r\n /* Checks all the parents when a leaf node is selected/unselected */\r\n checkAllParentsSelection(node: CmatSelectTreeFlatNode): void {\r\n let parent: CmatSelectTreeFlatNode | null = this.getParentNode(node);\r\n while (parent) {\r\n parent.expandable = true;\r\n this.treeControl.expand(parent);\r\n this.checkRootNodeSelection(parent);\r\n parent = this.getParentNode(parent);\r\n }\r\n }\r\n\r\n /** Check root node checked state and change it accordingly */\r\n checkRootNodeSelection(node: CmatSelectTreeFlatNode): void {\r\n const nodeSelected = this.checklistSelection.isSelected(node);\r\n const descendants = this.treeControl.getDescendants(node);\r\n const descAllSelected = descendants.every(child =>\r\n this.checklistSelection.isSelected(child)\r\n );\r\n if (nodeSelected && !descAllSelected) {\r\n this.checklistSelection.deselect(node);\r\n } else if (!nodeSelected && (descAllSelected || descendants.length === 0)) {\r\n this.checklistSelection.select(node);\r\n }\r\n }\r\n\r\n /* Get the parent node of a node */\r\n getParentNode(node: CmatSelectTreeFlatNode): CmatSelectTreeFlatNode | null {\r\n const currentLevel = this.getLevel(node);\r\n\r\n if (currentLevel < 1) {\r\n return null;\r\n }\r\n\r\n const startIndex = this.treeControl.dataNodes.indexOf(node) - 1;\r\n\r\n for (let i = startIndex; i >= 0; i--) {\r\n const currentNode = this.treeControl.dataNodes[i];\r\n\r\n if (this.getLevel(currentNode) < currentLevel) {\r\n return currentNode;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n toggleSelectAll(selectAllValue: boolean): void {\r\n if (selectAllValue) {\r\n this.treeControl.dataNodes.forEach((node) => {\r\n this.checklistSelection.select(node);\r\n this.checkAllParentsSelection(node);\r\n });\r\n this.isIndeterminate = this.checklistSelection.selected.length < this.dataCount && this.checklistSelection.selected.length > 0;\r\n this.isChecked = this.checklistSelection.selected.length === this.dataCount;\r\n } else {\r\n this.checklistSelection.clear();\r\n this.isChecked = false;\r\n this.isIndeterminate = false;\r\n }\r\n }\r\n\r\n compareObjects(o1: any, o2: any): boolean {\r\n return o1 && o2 ? o1?.name === o2?.name && o1?.id === o2?.id : o1 === o2;\r\n }\r\n trackByFn(index: number, item: any): any {\r\n return index || item;\r\n }\r\n\r\n private _updateChecklistSelection(value: any[]): void {\r\n this.checklistSelection.clear();\r\n if (!isNil(value)) {\r\n const valueArray: any[] = !Array.isArray(value) ? [value] : value;\r\n valueArray.forEach((item) => {\r\n const nodeFound = this.treeControl.dataNodes.find(node => node.id === item.id);\r\n if (isNil(nodeFound)) {\r\n return;\r\n }\r\n this.checklistSelection.select(nodeFound);\r\n });\r\n }\r\n }\r\n\r\n private _updateSelect(value: any[]): void {\r\n if (!isNil(value)) {\r\n const valueArray: any[] = !Array.isArray(value) ? [value] : value;\r\n if (this.overallSearchEnabled)//有搜索功能,转化选中节点为当前数据源节点\r\n {\r\n valueArray.forEach((item) => {\r\n const nodeFound = this.treeControl.dataNodes.find(node => node.id === item.id);\r\n if (isNil(nodeFound)) {\r\n return;\r\n }\r\n this.checklistSelection.deselect(item);\r\n\r\n this.checklistSelection.select(nodeFound);\r\n });\r\n }\r\n if (this.multiple) {\r\n this.checklistSelection.selected.forEach((item) => {\r\n this.checkAllParentsSelection(item);\r\n }\r\n );\r\n }\r\n\r\n if (this.showToggleAllCheckbox) {\r\n this.isIndeterminate = this.checklistSelection.selected.length < this.dataCount && this.checklistSelection.selected.length > 0;\r\n this.isChecked = this.checklistSelection.selected.length === this.dataCount;\r\n }\r\n }\r\n }\r\n\r\n private _applyColumnLevelFilters(node: CmatSelectTreeNode, filter: string): boolean {\r\n let result = false;\r\n\r\n if (node && node.children && node.children.length > 0) {\r\n for (let i = node.children.length - 1; i >= 0; i--) {\r\n const resultTemp = this._applyColumnLevelFilters(node.children[i], filter);\r\n\r\n if (!resultTemp) {\r\n node.children.splice(i, 1);\r\n }\r\n\r\n result = resultTemp || result;\r\n }\r\n }\r\n\r\n if (node && node.children && node.children.length === 0) {\r\n node.children = null;\r\n }\r\n\r\n const cellValue = node['name'].toLowerCase();\r\n if (cellValue.indexOf(filter) > -1) {\r\n result = true;\r\n }\r\n return result;\r\n }\r\n\r\n private _resetFilters(): void {\r\n if (this.overallSearchEnabled) {\r\n this.overallFilterControl.setValue('');\r\n }\r\n }\r\n}\r\n","<mat-form-field class=\"w-full\">\n @if (showLabel) {\n <mat-label>{{placeholder}}</mat-label>\n }\n <mat-icon class=\"icon-size-5\" [svgIcon]=\"prefixIcon\" matPrefix></mat-icon>\n <mat-select #componentSelect [formControl]=\"selectControl\" [placeholder]=\"placeholder\" [multiple]=\"multiple\" [required]=\"required\"\n [compareWith]=\"compareObjects\" panelClass=\"scrollbar-custom\">\n <mat-select-trigger>\n @if (!customTriggerLabelFn) {\n {{simpleTriggerLabelFn(checklistSelection.selected)}}\n }\n @else{\n {{customTriggerLabelFn}}\n }\n </mat-select-trigger>\n\n <div>\n @if (overallSearchEnabled) {\n <mat-option>\n <cmat-select-search [showNoFoundLabel]=\"showNoFoundLabel\" [noEntriesFoundLabel]=\"noEntriesFoundLabel\"\n [formControl]=\"overallFilterControl\" [clearSearchInput]=\"true\"\n [toggleAllCheckboxIndeterminate]=\"isIndeterminate\" [toggleAllCheckboxChecked]=\"isChecked\"\n (toggleAll)=\"toggleSelectAll($event)\" [showToggleAllCheckbox]=\"showToggleAllCheckbox\">\n </cmat-select-search>\n </mat-option>\n }\n @if (canNull&&treeDataSource.data.length!==0) {\n <mat-option (click)=\"clearSelection()\">空</mat-option>\n }\n @for (selectData of matSelectData | async ; track trackByFn($index, selectData)) {\n <mat-option class=\"hidden\"\n [value]=\"selectData\">{{selectData.name}}</mat-option>\n }\n\n <mat-tree [dataSource]=\"treeDataSource\" [treeControl]=\"treeControl\">\n <mat-tree-node *matTreeNodeDef=\"let node\" matTreeNodeToggle matTreeNodePadding\n [ngClass]=\"checklistSelection.isSelected(node)?'selected':''\"\n (click)=\"todoLeafItemSelectionToggle($event,node)\">\n <button type=\"button\" mat-icon-button disabled>\n\n </button>\n @if (multiple) {\n <mat-checkbox class=\"checklist-leaf-node text-current\"\n [checked]=\"checklistSelection.isSelected(node)\">{{node.name}}</mat-checkbox>\n }\n @if (!multiple) {\n <span class=\"text-current\">{{node.name}}</span>\n }\n </mat-tree-node>\n\n <mat-tree-node *matTreeNodeDef=\"let node; when: hasChild\" matTreeNodePadding\n [ngClass]=\"checklistSelection.isSelected(node)?'selected':''\"\n (click)=\"todoItemSelectionToggle($event,node)\">\n <button type=\"button\" mat-icon-button matTreeNodeToggle\n [attr.aria-label]=\"'toggle ' + node.filename\">\n <mat-icon class=\"mat-icon-rtl-mirror\"\n [svgIcon]=\"treeControl.isExpanded(node) ? 'mat_outline:expand_more' : 'mat_outline:chevron_right'\">\n </mat-icon>\n </button>\n @if (multiple) {\n <mat-checkbox [checked]=\"descendantsAllSelected(node)\"\n [indeterminate]=\"descendantsPartiallySelected(node)\" class=\"text-current\">{{node.name}}</mat-checkbox>\n }\n @if (!multiple) {\n <span class=\"text-current\">{{node.name}}</span>\n }\n </mat-tree-node>\n </mat-tree>\n </div>\n </mat-select>\n</mat-form-field>","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}