ngx-tethys 17.0.1 → 17.0.2

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 (381) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/action/action.component.d.ts +3 -0
  3. package/affix/affix.component.d.ts +2 -0
  4. package/alert/alert.component.d.ts +1 -0
  5. package/anchor/anchor.component.d.ts +3 -0
  6. package/arrow-switcher/arrow-switcher.component.d.ts +1 -0
  7. package/autocomplete/autocomplete.component.d.ts +2 -3
  8. package/autocomplete/autocomplete.trigger.directive.d.ts +3 -0
  9. package/avatar/avatar.component.d.ts +4 -0
  10. package/back-top/back-top.component.d.ts +1 -0
  11. package/badge/badge.component.d.ts +5 -0
  12. package/button/button-icon.component.d.ts +2 -0
  13. package/button/button.component.d.ts +2 -0
  14. package/card/card.component.d.ts +3 -0
  15. package/card/content.component.d.ts +2 -1
  16. package/carousel/carousel.component.d.ts +5 -0
  17. package/cascader/cascader-li.component.d.ts +9 -2
  18. package/cascader/cascader-search-option.component.d.ts +7 -2
  19. package/cascader/cascader.component.d.ts +23 -2
  20. package/cascader/styles/cascader.scss +1 -0
  21. package/cascader/types.d.ts +1 -0
  22. package/checkbox/checkbox.component.d.ts +1 -0
  23. package/collapse/collapse-item.component.d.ts +2 -0
  24. package/collapse/collapse.component.d.ts +1 -0
  25. package/color-picker/color-picker-panel.component.d.ts +1 -0
  26. package/color-picker/color-picker.component.d.ts +7 -1
  27. package/copy/copy.directive.d.ts +1 -0
  28. package/core/behaviors/decorators.d.ts +6 -0
  29. package/date-picker/abstract-picker.component.d.ts +8 -1
  30. package/date-picker/abstract-picker.directive.d.ts +4 -0
  31. package/date-picker/base-picker.component.d.ts +2 -0
  32. package/date-picker/lib/calendar/calendar-footer.component.d.ts +1 -0
  33. package/date-picker/lib/popups/inner-popup.component.d.ts +1 -0
  34. package/date-picker/picker.component.d.ts +1 -0
  35. package/date-range/date-range.component.d.ts +2 -0
  36. package/dialog/body/dialog-body.component.d.ts +2 -1
  37. package/dialog/footer/dialog-footer.component.d.ts +1 -0
  38. package/dialog/header/dialog-header.component.d.ts +1 -0
  39. package/divider/divider.component.d.ts +2 -0
  40. package/drag-drop/drag-handle.directive.d.ts +1 -0
  41. package/drag-drop/drag.directive.d.ts +1 -0
  42. package/drag-drop/drop-container.directive.d.ts +1 -0
  43. package/dropdown/dropdown-menu-item.directive.d.ts +3 -1
  44. package/dropdown/dropdown-menu.component.d.ts +1 -0
  45. package/dropdown/dropdown.directive.d.ts +3 -0
  46. package/empty/empty.component.d.ts +1 -0
  47. package/esm2022/action/action.component.mjs +9 -22
  48. package/esm2022/affix/affix.component.mjs +8 -15
  49. package/esm2022/alert/alert.component.mjs +5 -10
  50. package/esm2022/anchor/anchor.component.mjs +10 -20
  51. package/esm2022/arrow-switcher/arrow-switcher.component.mjs +5 -11
  52. package/esm2022/autocomplete/autocomplete.component.mjs +5 -23
  53. package/esm2022/autocomplete/autocomplete.trigger.directive.mjs +9 -20
  54. package/esm2022/avatar/avatar.component.mjs +14 -30
  55. package/esm2022/back-top/back-top.component.mjs +6 -10
  56. package/esm2022/badge/badge.component.mjs +15 -37
  57. package/esm2022/button/button-icon.component.mjs +9 -20
  58. package/esm2022/button/button.component.mjs +7 -16
  59. package/esm2022/card/card.component.mjs +6 -20
  60. package/esm2022/card/content.component.mjs +5 -6
  61. package/esm2022/carousel/carousel.component.mjs +13 -30
  62. package/esm2022/cascader/cascader-li.component.mjs +16 -31
  63. package/esm2022/cascader/cascader-search-option.component.mjs +12 -21
  64. package/esm2022/cascader/cascader.component.mjs +32 -52
  65. package/esm2022/cascader/types.mjs +1 -1
  66. package/esm2022/checkbox/checkbox.component.mjs +7 -13
  67. package/esm2022/collapse/collapse-item.component.mjs +8 -15
  68. package/esm2022/collapse/collapse.component.mjs +5 -10
  69. package/esm2022/color-picker/color-picker-panel.component.mjs +5 -10
  70. package/esm2022/color-picker/color-picker.component.mjs +17 -37
  71. package/esm2022/copy/copy.directive.mjs +5 -10
  72. package/esm2022/core/behaviors/decorators.mjs +7 -44
  73. package/esm2022/date-picker/abstract-picker.component.mjs +21 -45
  74. package/esm2022/date-picker/abstract-picker.directive.mjs +11 -27
  75. package/esm2022/date-picker/base-picker.component.mjs +8 -15
  76. package/esm2022/date-picker/lib/calendar/calendar-footer.component.mjs +5 -10
  77. package/esm2022/date-picker/lib/popups/inner-popup.component.mjs +7 -6
  78. package/esm2022/date-picker/picker.component.mjs +6 -10
  79. package/esm2022/date-range/date-range.component.mjs +7 -15
  80. package/esm2022/dialog/body/dialog-body.component.mjs +6 -6
  81. package/esm2022/dialog/footer/dialog-footer.component.mjs +6 -13
  82. package/esm2022/dialog/header/dialog-header.component.mjs +6 -10
  83. package/esm2022/divider/divider.component.mjs +7 -15
  84. package/esm2022/drag-drop/drag-handle.directive.mjs +5 -13
  85. package/esm2022/drag-drop/drag.directive.mjs +5 -11
  86. package/esm2022/drag-drop/drop-container.directive.mjs +5 -10
  87. package/esm2022/dropdown/dropdown-menu-item.directive.mjs +9 -19
  88. package/esm2022/dropdown/dropdown-menu.component.mjs +6 -9
  89. package/esm2022/dropdown/dropdown.directive.mjs +8 -22
  90. package/esm2022/empty/empty.component.mjs +7 -13
  91. package/esm2022/flexible-text/flexible-text.component.mjs +4 -11
  92. package/esm2022/form/form-group-error/form-group-error.component.mjs +5 -10
  93. package/esm2022/form/form-group-label.directive.mjs +6 -6
  94. package/esm2022/form/form-group.component.mjs +13 -17
  95. package/esm2022/icon/icon.component.mjs +6 -20
  96. package/esm2022/image/image.directive.mjs +7 -15
  97. package/esm2022/input/input-search.component.mjs +6 -11
  98. package/esm2022/input/input.component.mjs +7 -15
  99. package/esm2022/input-number/input-number.component.mjs +12 -25
  100. package/esm2022/layout/header.component.mjs +9 -19
  101. package/esm2022/layout/sidebar-header.component.mjs +5 -10
  102. package/esm2022/layout/sidebar.component.mjs +22 -45
  103. package/esm2022/list/list.component.mjs +5 -11
  104. package/esm2022/list/selection/selection-list.mjs +13 -10
  105. package/esm2022/loading/loading.component.mjs +9 -20
  106. package/esm2022/menu/group/menu-group.component.mjs +12 -38
  107. package/esm2022/menu/item/action/menu-item-action.component.mjs +5 -10
  108. package/esm2022/menu/item/name/menu-item-name.component.mjs +5 -10
  109. package/esm2022/menu/menu.component.mjs +5 -10
  110. package/esm2022/nav/icon-nav/icon-nav-link.directive.mjs +6 -6
  111. package/esm2022/nav/nav-ink-bar.directive.mjs +7 -15
  112. package/esm2022/nav/nav-item.directive.mjs +10 -20
  113. package/esm2022/nav/nav.component.mjs +12 -25
  114. package/esm2022/pagination/pagination.component.mjs +18 -68
  115. package/esm2022/popover/popover.directive.mjs +12 -33
  116. package/esm2022/progress/progress-circle.component.mjs +9 -20
  117. package/esm2022/progress/progress-strip.component.mjs +5 -11
  118. package/esm2022/progress/progress.component.mjs +11 -23
  119. package/esm2022/property/properties.component.mjs +5 -10
  120. package/esm2022/property/property-item.component.mjs +8 -15
  121. package/esm2022/property-operation/property-operation.component.mjs +16 -37
  122. package/esm2022/radio/group/radio-group.component.mjs +6 -21
  123. package/esm2022/rate/rate-item.component.mjs +5 -10
  124. package/esm2022/rate/rate.component.mjs +16 -25
  125. package/esm2022/resizable/resizable.directive.mjs +24 -55
  126. package/esm2022/resizable/resize-handle.component.mjs +6 -10
  127. package/esm2022/resizable/resize-handles.component.mjs +5 -10
  128. package/esm2022/segment/segment-item.component.mjs +5 -10
  129. package/esm2022/segment/segment.component.mjs +7 -16
  130. package/esm2022/select/custom-select/custom-select.component.mjs +30 -65
  131. package/esm2022/select/native-select/native-select.component.mjs +6 -10
  132. package/esm2022/shared/base-form-check.component.mjs +10 -20
  133. package/esm2022/shared/directives/thy-autofocus.directive.mjs +10 -15
  134. package/esm2022/shared/directives/thy-scroll.directive.mjs +6 -13
  135. package/esm2022/shared/directives/thy-show.mjs +5 -11
  136. package/esm2022/shared/option/group/option-group.component.mjs +5 -10
  137. package/esm2022/shared/option/list-option/list-option.component.mjs +6 -13
  138. package/esm2022/shared/option/option.component.mjs +5 -11
  139. package/esm2022/shared/select/select-control/select-control.component.mjs +17 -44
  140. package/esm2022/skeleton/skeleton-circle.component.mjs +6 -9
  141. package/esm2022/skeleton/skeleton-rectangle.component.mjs +6 -9
  142. package/esm2022/skeleton/skeleton.component.mjs +5 -10
  143. package/esm2022/skeleton/stylized/bullet-list.component.mjs +6 -9
  144. package/esm2022/skeleton/stylized/list.component.mjs +6 -9
  145. package/esm2022/skeleton/stylized/paragraph.component.mjs +6 -9
  146. package/esm2022/slide/slide-body/slide-body-section.component.mjs +6 -6
  147. package/esm2022/slider/slider.component.mjs +18 -35
  148. package/esm2022/space/space.component.mjs +6 -10
  149. package/esm2022/stepper/step-header.component.mjs +9 -20
  150. package/esm2022/stepper/stepper.component.mjs +7 -16
  151. package/esm2022/switch/switch.component.mjs +12 -17
  152. package/esm2022/table/table-column.component.mjs +9 -31
  153. package/esm2022/table/table-skeleton.component.mjs +8 -14
  154. package/esm2022/table/table.component.mjs +32 -83
  155. package/esm2022/tabs/tab.component.mjs +5 -10
  156. package/esm2022/tabs/tabs.component.mjs +8 -15
  157. package/esm2022/tag/tag.component.mjs +6 -10
  158. package/esm2022/time-picker/time-picker-panel.component.mjs +8 -15
  159. package/esm2022/time-picker/time-picker.component.mjs +20 -46
  160. package/esm2022/timeline/timeline.component.mjs +5 -10
  161. package/esm2022/tooltip/tooltip.directive.mjs +11 -34
  162. package/esm2022/tree/tree-node.component.mjs +17 -40
  163. package/esm2022/tree/tree.component.mjs +19 -47
  164. package/esm2022/tree-select/tree-select.component.mjs +18 -40
  165. package/esm2022/upload/file-select-base.mjs +7 -6
  166. package/esm2022/upload/file-select.component.mjs +11 -26
  167. package/esm2022/version.mjs +2 -2
  168. package/esm2022/vote/vote.component.mjs +11 -33
  169. package/esm2022/watermark/watermark.directive.mjs +6 -10
  170. package/fesm2022/ngx-tethys-action.mjs +9 -21
  171. package/fesm2022/ngx-tethys-action.mjs.map +1 -1
  172. package/fesm2022/ngx-tethys-affix.mjs +6 -14
  173. package/fesm2022/ngx-tethys-affix.mjs.map +1 -1
  174. package/fesm2022/ngx-tethys-alert.mjs +4 -9
  175. package/fesm2022/ngx-tethys-alert.mjs.map +1 -1
  176. package/fesm2022/ngx-tethys-anchor.mjs +8 -19
  177. package/fesm2022/ngx-tethys-anchor.mjs.map +1 -1
  178. package/fesm2022/ngx-tethys-arrow-switcher.mjs +4 -10
  179. package/fesm2022/ngx-tethys-arrow-switcher.mjs.map +1 -1
  180. package/fesm2022/ngx-tethys-autocomplete.mjs +14 -39
  181. package/fesm2022/ngx-tethys-autocomplete.mjs.map +1 -1
  182. package/fesm2022/ngx-tethys-avatar.mjs +14 -29
  183. package/fesm2022/ngx-tethys-avatar.mjs.map +1 -1
  184. package/fesm2022/ngx-tethys-back-top.mjs +5 -9
  185. package/fesm2022/ngx-tethys-back-top.mjs.map +1 -1
  186. package/fesm2022/ngx-tethys-badge.mjs +14 -36
  187. package/fesm2022/ngx-tethys-badge.mjs.map +1 -1
  188. package/fesm2022/ngx-tethys-button.mjs +13 -30
  189. package/fesm2022/ngx-tethys-button.mjs.map +1 -1
  190. package/fesm2022/ngx-tethys-card.mjs +8 -23
  191. package/fesm2022/ngx-tethys-card.mjs.map +1 -1
  192. package/fesm2022/ngx-tethys-carousel.mjs +12 -29
  193. package/fesm2022/ngx-tethys-carousel.mjs.map +1 -1
  194. package/fesm2022/ngx-tethys-cascader.mjs +55 -95
  195. package/fesm2022/ngx-tethys-cascader.mjs.map +1 -1
  196. package/fesm2022/ngx-tethys-checkbox.mjs +5 -12
  197. package/fesm2022/ngx-tethys-checkbox.mjs.map +1 -1
  198. package/fesm2022/ngx-tethys-collapse.mjs +10 -20
  199. package/fesm2022/ngx-tethys-collapse.mjs.map +1 -1
  200. package/fesm2022/ngx-tethys-color-picker.mjs +19 -42
  201. package/fesm2022/ngx-tethys-color-picker.mjs.map +1 -1
  202. package/fesm2022/ngx-tethys-copy.mjs +4 -9
  203. package/fesm2022/ngx-tethys-copy.mjs.map +1 -1
  204. package/fesm2022/ngx-tethys-core.mjs +6 -43
  205. package/fesm2022/ngx-tethys-core.mjs.map +1 -1
  206. package/fesm2022/ngx-tethys-date-picker.mjs +45 -93
  207. package/fesm2022/ngx-tethys-date-picker.mjs.map +1 -1
  208. package/fesm2022/ngx-tethys-date-range.mjs +6 -14
  209. package/fesm2022/ngx-tethys-date-range.mjs.map +1 -1
  210. package/fesm2022/ngx-tethys-dialog.mjs +13 -21
  211. package/fesm2022/ngx-tethys-dialog.mjs.map +1 -1
  212. package/fesm2022/ngx-tethys-divider.mjs +6 -14
  213. package/fesm2022/ngx-tethys-divider.mjs.map +1 -1
  214. package/fesm2022/ngx-tethys-drag-drop.mjs +10 -25
  215. package/fesm2022/ngx-tethys-drag-drop.mjs.map +1 -1
  216. package/fesm2022/ngx-tethys-dropdown.mjs +19 -42
  217. package/fesm2022/ngx-tethys-dropdown.mjs.map +1 -1
  218. package/fesm2022/ngx-tethys-empty.mjs +5 -12
  219. package/fesm2022/ngx-tethys-empty.mjs.map +1 -1
  220. package/fesm2022/ngx-tethys-flexible-text.mjs +3 -10
  221. package/fesm2022/ngx-tethys-flexible-text.mjs.map +1 -1
  222. package/fesm2022/ngx-tethys-form.mjs +19 -25
  223. package/fesm2022/ngx-tethys-form.mjs.map +1 -1
  224. package/fesm2022/ngx-tethys-icon.mjs +5 -19
  225. package/fesm2022/ngx-tethys-icon.mjs.map +1 -1
  226. package/fesm2022/ngx-tethys-image.mjs +7 -14
  227. package/fesm2022/ngx-tethys-image.mjs.map +1 -1
  228. package/fesm2022/ngx-tethys-input-number.mjs +11 -24
  229. package/fesm2022/ngx-tethys-input-number.mjs.map +1 -1
  230. package/fesm2022/ngx-tethys-input.mjs +10 -21
  231. package/fesm2022/ngx-tethys-input.mjs.map +1 -1
  232. package/fesm2022/ngx-tethys-layout.mjs +31 -64
  233. package/fesm2022/ngx-tethys-layout.mjs.map +1 -1
  234. package/fesm2022/ngx-tethys-list.mjs +16 -18
  235. package/fesm2022/ngx-tethys-list.mjs.map +1 -1
  236. package/fesm2022/ngx-tethys-loading.mjs +8 -19
  237. package/fesm2022/ngx-tethys-loading.mjs.map +1 -1
  238. package/fesm2022/ngx-tethys-menu.mjs +20 -55
  239. package/fesm2022/ngx-tethys-menu.mjs.map +1 -1
  240. package/fesm2022/ngx-tethys-nav.mjs +28 -55
  241. package/fesm2022/ngx-tethys-nav.mjs.map +1 -1
  242. package/fesm2022/ngx-tethys-pagination.mjs +17 -67
  243. package/fesm2022/ngx-tethys-pagination.mjs.map +1 -1
  244. package/fesm2022/ngx-tethys-popover.mjs +11 -32
  245. package/fesm2022/ngx-tethys-popover.mjs.map +1 -1
  246. package/fesm2022/ngx-tethys-progress.mjs +20 -45
  247. package/fesm2022/ngx-tethys-progress.mjs.map +1 -1
  248. package/fesm2022/ngx-tethys-property-operation.mjs +14 -36
  249. package/fesm2022/ngx-tethys-property-operation.mjs.map +1 -1
  250. package/fesm2022/ngx-tethys-property.mjs +10 -21
  251. package/fesm2022/ngx-tethys-property.mjs.map +1 -1
  252. package/fesm2022/ngx-tethys-radio.mjs +5 -19
  253. package/fesm2022/ngx-tethys-radio.mjs.map +1 -1
  254. package/fesm2022/ngx-tethys-rate.mjs +18 -30
  255. package/fesm2022/ngx-tethys-rate.mjs.map +1 -1
  256. package/fesm2022/ngx-tethys-resizable.mjs +29 -66
  257. package/fesm2022/ngx-tethys-resizable.mjs.map +1 -1
  258. package/fesm2022/ngx-tethys-segment.mjs +10 -21
  259. package/fesm2022/ngx-tethys-segment.mjs.map +1 -1
  260. package/fesm2022/ngx-tethys-select.mjs +32 -70
  261. package/fesm2022/ngx-tethys-select.mjs.map +1 -1
  262. package/fesm2022/ngx-tethys-shared.mjs +49 -105
  263. package/fesm2022/ngx-tethys-shared.mjs.map +1 -1
  264. package/fesm2022/ngx-tethys-skeleton.mjs +20 -38
  265. package/fesm2022/ngx-tethys-skeleton.mjs.map +1 -1
  266. package/fesm2022/ngx-tethys-slide.mjs +6 -5
  267. package/fesm2022/ngx-tethys-slide.mjs.map +1 -1
  268. package/fesm2022/ngx-tethys-slider.mjs +17 -34
  269. package/fesm2022/ngx-tethys-slider.mjs.map +1 -1
  270. package/fesm2022/ngx-tethys-space.mjs +5 -9
  271. package/fesm2022/ngx-tethys-space.mjs.map +1 -1
  272. package/fesm2022/ngx-tethys-stepper.mjs +13 -31
  273. package/fesm2022/ngx-tethys-stepper.mjs.map +1 -1
  274. package/fesm2022/ngx-tethys-switch.mjs +11 -16
  275. package/fesm2022/ngx-tethys-switch.mjs.map +1 -1
  276. package/fesm2022/ngx-tethys-table.mjs +43 -120
  277. package/fesm2022/ngx-tethys-table.mjs.map +1 -1
  278. package/fesm2022/ngx-tethys-tabs.mjs +10 -20
  279. package/fesm2022/ngx-tethys-tabs.mjs.map +1 -1
  280. package/fesm2022/ngx-tethys-tag.mjs +5 -9
  281. package/fesm2022/ngx-tethys-tag.mjs.map +1 -1
  282. package/fesm2022/ngx-tethys-time-picker.mjs +24 -55
  283. package/fesm2022/ngx-tethys-time-picker.mjs.map +1 -1
  284. package/fesm2022/ngx-tethys-timeline.mjs +4 -9
  285. package/fesm2022/ngx-tethys-timeline.mjs.map +1 -1
  286. package/fesm2022/ngx-tethys-tooltip.mjs +10 -33
  287. package/fesm2022/ngx-tethys-tooltip.mjs.map +1 -1
  288. package/fesm2022/ngx-tethys-tree-select.mjs +17 -39
  289. package/fesm2022/ngx-tethys-tree-select.mjs.map +1 -1
  290. package/fesm2022/ngx-tethys-tree.mjs +33 -82
  291. package/fesm2022/ngx-tethys-tree.mjs.map +1 -1
  292. package/fesm2022/ngx-tethys-upload.mjs +15 -28
  293. package/fesm2022/ngx-tethys-upload.mjs.map +1 -1
  294. package/fesm2022/ngx-tethys-vote.mjs +10 -32
  295. package/fesm2022/ngx-tethys-vote.mjs.map +1 -1
  296. package/fesm2022/ngx-tethys-watermark.mjs +5 -9
  297. package/fesm2022/ngx-tethys-watermark.mjs.map +1 -1
  298. package/fesm2022/ngx-tethys.mjs +1 -1
  299. package/fesm2022/ngx-tethys.mjs.map +1 -1
  300. package/flexible-text/flexible-text.component.d.ts +1 -0
  301. package/form/form-group-error/form-group-error.component.d.ts +1 -0
  302. package/form/form-group-label.directive.d.ts +2 -1
  303. package/form/form-group.component.d.ts +5 -2
  304. package/icon/icon.component.d.ts +3 -0
  305. package/image/image.directive.d.ts +2 -0
  306. package/input/input-search.component.d.ts +1 -0
  307. package/input/input.component.d.ts +2 -0
  308. package/input-number/input-number.component.d.ts +4 -0
  309. package/layout/header.component.d.ts +5 -2
  310. package/layout/sidebar-header.component.d.ts +1 -0
  311. package/layout/sidebar.component.d.ts +14 -4
  312. package/list/list.component.d.ts +1 -0
  313. package/list/selection/selection-list.d.ts +4 -1
  314. package/loading/loading.component.d.ts +4 -2
  315. package/menu/group/menu-group.component.d.ts +6 -0
  316. package/menu/item/action/menu-item-action.component.d.ts +1 -0
  317. package/menu/item/name/menu-item-name.component.d.ts +1 -0
  318. package/menu/menu.component.d.ts +1 -0
  319. package/nav/icon-nav/icon-nav-link.directive.d.ts +2 -1
  320. package/nav/nav-ink-bar.directive.d.ts +2 -0
  321. package/nav/nav-item.directive.d.ts +3 -0
  322. package/nav/nav.component.d.ts +4 -0
  323. package/package.json +1 -1
  324. package/pagination/pagination.component.d.ts +11 -0
  325. package/popover/popover.directive.d.ts +5 -0
  326. package/progress/progress-circle.component.d.ts +3 -0
  327. package/progress/progress-strip.component.d.ts +1 -0
  328. package/progress/progress.component.d.ts +3 -0
  329. package/property/properties.component.d.ts +1 -0
  330. package/property/property-item.component.d.ts +2 -0
  331. package/property-operation/property-operation.component.d.ts +5 -0
  332. package/radio/group/radio-group.component.d.ts +2 -2
  333. package/rate/rate-item.component.d.ts +1 -0
  334. package/rate/rate.component.d.ts +5 -1
  335. package/resizable/resizable.directive.d.ts +10 -0
  336. package/resizable/resize-handle.component.d.ts +1 -0
  337. package/resizable/resize-handles.component.d.ts +1 -0
  338. package/schematics/version.d.ts +1 -1
  339. package/schematics/version.js +1 -1
  340. package/segment/segment-item.component.d.ts +1 -0
  341. package/segment/segment.component.d.ts +2 -0
  342. package/select/custom-select/custom-select.component.d.ts +12 -1
  343. package/select/native-select/native-select.component.d.ts +1 -0
  344. package/shared/base-form-check.component.d.ts +2 -0
  345. package/shared/directives/thy-autofocus.directive.d.ts +3 -1
  346. package/shared/directives/thy-scroll.directive.d.ts +1 -0
  347. package/shared/directives/thy-show.d.ts +1 -0
  348. package/shared/option/group/option-group.component.d.ts +1 -0
  349. package/shared/option/list-option/list-option.component.d.ts +1 -0
  350. package/shared/option/option.component.d.ts +1 -0
  351. package/shared/option/styles/select-dropdown.scss +1 -0
  352. package/shared/select/select-control/select-control.component.d.ts +7 -0
  353. package/skeleton/skeleton-circle.component.d.ts +1 -0
  354. package/skeleton/skeleton-rectangle.component.d.ts +1 -0
  355. package/skeleton/skeleton.component.d.ts +1 -0
  356. package/skeleton/stylized/bullet-list.component.d.ts +1 -0
  357. package/skeleton/stylized/list.component.d.ts +1 -0
  358. package/skeleton/stylized/paragraph.component.d.ts +1 -0
  359. package/slide/slide-body/slide-body-section.component.d.ts +2 -1
  360. package/slider/slider.component.d.ts +6 -1
  361. package/space/space.component.d.ts +1 -0
  362. package/stepper/step-header.component.d.ts +3 -0
  363. package/stepper/stepper.component.d.ts +2 -0
  364. package/switch/switch.component.d.ts +3 -1
  365. package/table/table-column.component.d.ts +7 -2
  366. package/table/table-skeleton.component.d.ts +2 -0
  367. package/table/table.component.d.ts +14 -0
  368. package/tabs/tab.component.d.ts +1 -0
  369. package/tabs/tabs.component.d.ts +2 -0
  370. package/tag/tag.component.d.ts +1 -0
  371. package/time-picker/time-picker-panel.component.d.ts +2 -0
  372. package/time-picker/time-picker.component.d.ts +6 -2
  373. package/timeline/timeline.component.d.ts +1 -0
  374. package/tooltip/tooltip.directive.d.ts +5 -0
  375. package/tree/tree-node.component.d.ts +7 -0
  376. package/tree/tree.component.d.ts +8 -0
  377. package/tree-select/tree-select.component.d.ts +7 -0
  378. package/upload/file-select-base.d.ts +1 -0
  379. package/upload/file-select.component.d.ts +3 -0
  380. package/vote/vote.component.d.ts +4 -2
  381. package/watermark/watermark.directive.d.ts +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-tethys-tree.mjs","sources":["../../../src/tree/tree-abstract.ts","../../../src/tree/tree.class.ts","../../../src/tree/tree-node.class.ts","../../../src/tree/tree.service.ts","../../../src/tree/tree-node.component.ts","../../../src/tree/tree-node.component.html","../../../src/tree/tree.pipe.ts","../../../src/tree/tree.component.ts","../../../src/tree/tree.component.html","../../../src/tree/tree.module.ts","../../../src/tree/ngx-tethys-tree.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { ThyTreeNode } from './tree-node.class';\nimport { ThyTreeBeforeDragDropContext, ThyTreeBeforeDragStartContext, ThyTreeDragDropEvent, ThyTreeIcons } from './tree.class';\n\nexport interface ThyTreeAbstractComponent {\n thyMultiple: boolean;\n thyDraggable: boolean;\n thyShowExpand: boolean;\n treeNodes: ThyTreeNode[];\n thyIcons: ThyTreeIcons;\n thyBeforeDragStart(e: ThyTreeBeforeDragStartContext): boolean;\n thyBeforeDragDrop(e: ThyTreeBeforeDragDropContext): boolean;\n onDragDrop(event: ThyTreeDragDropEvent): void;\n selectTreeNode(node: ThyTreeNode): void;\n toggleTreeNode(node: ThyTreeNode): void;\n isShowExpand(node: ThyTreeNode): boolean;\n trackByFn(number: string, node: ThyTreeNode): string | number;\n isSelected(node: ThyTreeNode): boolean;\n}\n\nexport const THY_TREE_ABSTRACT_TOKEN = new InjectionToken<ThyTreeAbstractComponent>('thy-tree-abstract-token');\n","import { ThyTreeNode } from './tree-node.class';\n\nexport enum ThyTreeNodeCheckState {\n unchecked = 0,\n checked = 1,\n indeterminate = 2\n}\n\nexport enum ThyTreeDropPosition {\n in = 'in',\n before = 'before',\n after = 'after'\n}\n\nexport interface ThyTreeNodeData<T = any> {\n key?: number | string;\n\n title?: string;\n\n icon?: string;\n\n iconStyle?: {\n [key: string]: any;\n };\n\n children?: ThyTreeNodeData<T>[];\n\n origin?: any;\n\n expanded?: boolean;\n\n disabled?: boolean;\n\n checked?: boolean;\n\n data?: T;\n\n itemClass?: string | string[];\n\n [key: string]: any;\n}\n\nexport interface ThyTreeEmitEvent<T = any> {\n eventName: string;\n\n node?: ThyTreeNode<T>;\n\n event?: Event | any;\n\n dragNode?: ThyTreeNode<T>;\n\n targetNode?: ThyTreeNode<T>;\n}\n\nexport interface ThyTreeBeforeDragStartContext {\n item: ThyTreeNode;\n}\n\nexport interface ThyTreeBeforeDragDropContext {\n item?: ThyTreeNode;\n containerItems?: ThyTreeNode[];\n previousItem?: ThyTreeNode;\n previousContainerItems?: ThyTreeNode[];\n position?: ThyTreeDropPosition;\n}\n\nexport interface ThyTreeDragDropEvent<T = any> {\n dragNode?: ThyTreeNode<T>;\n\n targetNode?: ThyTreeNode<T>;\n\n afterNode?: ThyTreeNode<T>;\n}\n\nexport class ThyTreeIcons {\n expand?: string;\n collapse?: string;\n}\n\nexport type ThyClickBehavior = 'default' | 'selectCheckbox';\n","import { helpers, isArray } from 'ngx-tethys/util';\n\nimport { ThyTreeNodeCheckState, ThyTreeNodeData } from './tree.class';\nimport { ThyTreeService } from './tree.service';\n\nexport class ThyTreeNode<T = any> {\n key?: number | string;\n\n title?: string;\n\n children: ThyTreeNode[];\n\n parentNode: ThyTreeNode;\n\n level = 0;\n\n origin: ThyTreeNodeData<T>;\n\n isExpanded: boolean;\n\n isChecked: ThyTreeNodeCheckState;\n\n isLoading: boolean;\n\n isDisabled: boolean;\n\n itemClass?: string[];\n\n private readonly service: ThyTreeService;\n\n get treeService(): ThyTreeService {\n if (this.service) {\n return this.service;\n } else if (this.parentNode) {\n return this.parentNode.treeService;\n }\n }\n\n constructor(node: ThyTreeNodeData, parent: ThyTreeNode = null, service?: ThyTreeService) {\n this.title = node.title;\n this.key = node.key;\n this.children = [];\n this.parentNode = parent;\n this.level = parent ? parent.level + 1 : this.level;\n this.origin = node;\n this.isDisabled = node.disabled || false;\n this.isExpanded = node.expanded || false;\n this.isChecked = node.checked ? ThyTreeNodeCheckState.checked : ThyTreeNodeCheckState.unchecked;\n this.isLoading = false;\n if (node.itemClass) {\n this.itemClass = isArray(node.itemClass) ? node.itemClass : [node.itemClass];\n }\n if (node.children) {\n node.children.forEach(childNode => {\n this.children.push(new ThyTreeNode(childNode, this, service));\n });\n }\n this.service = service;\n if (node.children && node.children.length && service) {\n this.isChecked = service.checkStateResolve(this);\n }\n }\n\n public setKey(key: string) {\n this.origin.key = key;\n this.key = key;\n }\n\n public setTitle(title: string) {\n this.origin.title = title;\n this.title = title;\n }\n\n public setLevel(level: number) {\n this.level = level;\n }\n\n private _setExpanded(expanded: boolean, propagate = false) {\n this.origin.expanded = expanded;\n this.isExpanded = expanded;\n if (propagate && this.children) {\n this.children.forEach(n => n._setExpanded(expanded, propagate));\n }\n }\n\n public setExpanded(expanded: boolean, propagate = false) {\n this._setExpanded(expanded, propagate);\n this.treeService.syncFlattenTreeNodes();\n }\n\n public setLoading(loading: boolean): void {\n this.isLoading = loading;\n this.treeService.syncFlattenTreeNodes();\n }\n\n public setChecked(checked: boolean, propagateUp = true, propagateDown = true) {\n this.treeService.setNodeChecked(this, checked, propagateUp, propagateDown);\n }\n\n public syncNodeCheckState() {\n this.treeService.syncNodeCheckState(this);\n }\n\n public getParentNode(): ThyTreeNode {\n return this.parentNode;\n }\n\n public getChildren(): ThyTreeNode[] {\n return this.children;\n }\n\n public addChildren(children: ThyTreeNodeData | ThyTreeNodeData[], index: number = -1): void {\n children = helpers.coerceArray(children);\n ((children as ThyTreeNodeData[]) || []).forEach((childNode: ThyTreeNodeData, i: number) => {\n if (index === -1) {\n this.children.push(new ThyTreeNode(childNode, this));\n } else {\n this.children.splice(index + i, 0, new ThyTreeNode(childNode, this, this.treeService));\n }\n });\n\n this.origin.children = this.getChildren().map(n => n.origin);\n this.setLoading(false);\n this.treeService.statusChange$.next({\n eventName: 'addChildren',\n node: this\n });\n }\n}\n","import { coerceArray, isFunction } from 'ngx-tethys/util';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { Injectable, OnDestroy } from '@angular/core';\nimport { ThyTreeNode } from './tree-node.class';\nimport { ThyTreeNodeCheckState, ThyTreeNodeData } from './tree.class';\n\nfunction checkStateResolve(node: ThyTreeNode) {\n const checkedNodes = node.children.filter(n => n.isChecked === ThyTreeNodeCheckState.checked);\n const unCheckedNodes = node.children.filter(n => n.isChecked === ThyTreeNodeCheckState.unchecked);\n if (checkedNodes.length === node.children.length) {\n return ThyTreeNodeCheckState.checked;\n } else if (unCheckedNodes.length === node.children.length) {\n return ThyTreeNodeCheckState.unchecked;\n } else {\n return ThyTreeNodeCheckState.indeterminate;\n }\n}\n\ntype FlattenAllNodesCb = (treeNode: ThyTreeNode) => boolean;\n\nexport interface ThyTreeFormatEmitEvent {\n eventName: string;\n node: ThyTreeNode;\n event?: MouseEvent | DragEvent;\n}\n\n/**\n * @internal\n */\n@Injectable()\nexport class ThyTreeService implements OnDestroy {\n selectedNode!: ThyTreeNode;\n\n flattenNodes$ = new BehaviorSubject<ThyTreeNode[]>([]);\n\n flattenTreeNodes: ThyTreeNode[] = [];\n\n private originTreeNodes: ThyTreeNodeData[] = [];\n\n public treeNodes: ThyTreeNode[] = [];\n\n public checkStateResolve: (node: ThyTreeNode) => ThyTreeNodeCheckState = checkStateResolve;\n\n statusChange$ = new Subject<ThyTreeFormatEmitEvent>();\n\n constructor() {\n this.statusChange$.pipe().subscribe(event => {\n this.syncFlattenTreeNodes();\n this.syncNodeCheckState(event.node);\n });\n }\n\n public initializeTreeNodes(rootNodes: ThyTreeNodeData[]) {\n this.originTreeNodes = rootNodes || [];\n this.treeNodes = (rootNodes || []).map(node => new ThyTreeNode(node, null, this));\n }\n\n public syncFlattenTreeNodes() {\n this.flattenTreeNodes = this.getParallelTreeNodes(this.treeNodes, false);\n this.flattenNodes$.next(this.flattenTreeNodes);\n return this.flattenTreeNodes;\n }\n\n private getParallelTreeNodes(rootTrees: ThyTreeNode[] = this.treeNodes, flattenAllNodes: boolean | FlattenAllNodesCb = true) {\n const flattenTreeData: ThyTreeNode[] = [];\n function _getParallelTreeNodes(list: ThyTreeNode[]) {\n return list.forEach((treeNode, index) => {\n flattenTreeData.push(treeNode);\n const flattenAllNodesFlag = isFunction(flattenAllNodes) ? flattenAllNodes(treeNode) : flattenAllNodes;\n if (flattenAllNodesFlag || treeNode.isExpanded) {\n _getParallelTreeNodes(treeNode.children);\n }\n });\n }\n _getParallelTreeNodes(rootTrees);\n return flattenTreeData;\n }\n\n setCheckStateResolve(resolve: (node: ThyTreeNode) => ThyTreeNodeCheckState = checkStateResolve) {\n this.checkStateResolve = resolve;\n }\n\n public resetSortedTreeNodes(treeNodes: ThyTreeNode[], parent?: ThyTreeNode) {\n treeNodes.forEach(node => {\n node.level = node.parentNode ? node.parentNode.level + 1 : 0;\n node.origin.children = node.children.map(n => n.origin);\n node.parentNode = parent;\n this.resetSortedTreeNodes(node.children, node);\n });\n }\n\n public getTreeNode(key: string | number) {\n const allNodes = this.getParallelTreeNodes(this.treeNodes);\n return allNodes.find(n => n.key === key);\n }\n\n public getExpandedNodes(): ThyTreeNode[] {\n const allNodes = this.getParallelTreeNodes(this.treeNodes);\n return allNodes.filter(n => n.isExpanded);\n }\n\n public getCheckedNodes(): ThyTreeNode[] {\n const allNodes = this.getParallelTreeNodes(this.treeNodes);\n return allNodes.filter(n => n.isChecked === ThyTreeNodeCheckState.checked);\n }\n\n public deleteTreeNode(node: ThyTreeNode) {\n if (node.parentNode) {\n const children = node.parentNode.children;\n const index = children.findIndex(n => n.key === node.key);\n if (index > -1) {\n children.splice(index, 1);\n node.parentNode.origin.children = children.map(item => item.origin);\n this.syncNodeCheckState(node.parentNode);\n }\n } else {\n const index = this.treeNodes.findIndex(n => n.key === node.key);\n if (index > -1) {\n this.treeNodes.splice(index, 1);\n this.originTreeNodes.splice(index, 1);\n }\n }\n }\n\n public addTreeNode(node: ThyTreeNode, parent?: ThyTreeNode, index = -1) {\n if (parent) {\n const insertNode = new ThyTreeNode(node.origin, parent, this);\n if (index > -1) {\n parent.children.splice(index, 0, insertNode);\n } else {\n parent.children.push(insertNode);\n }\n parent.origin.children = parent.children.map(item => item.origin);\n this.syncNodeCheckState(parent);\n } else {\n const insertNode = new ThyTreeNode(node.origin, null, this);\n if (index > -1) {\n this.treeNodes.splice(index, 0, insertNode);\n } else {\n this.treeNodes.push(insertNode);\n }\n this.originTreeNodes = this.treeNodes.map(item => item.origin);\n // this.syncNodeCheckState(insertNode);\n }\n }\n\n public expandTreeNodes(keyOrKeys: string | number | (string | number)[]) {\n const keys = coerceArray(keyOrKeys);\n const needExpandNodes = this.getParallelTreeNodes(this.treeNodes).filter(node => {\n return keys.indexOf(node.key) > -1;\n });\n needExpandNodes.forEach(node => {\n node.setExpanded(true);\n });\n this.syncFlattenTreeNodes();\n }\n\n // 设置节点选中状态\n public setNodeChecked(node: ThyTreeNode, checked: boolean, propagateUp = true, propagateDown = true) {\n this._setNodeChecked(node, checked, propagateUp, propagateDown);\n this.syncFlattenTreeNodes();\n }\n\n private _setNodeChecked(node: ThyTreeNode, checked: boolean, propagateUp = true, propagateDown = true) {\n if (propagateDown && node.children) {\n node.children.forEach(subNode => {\n this._setNodeChecked(subNode, checked, false, true);\n });\n }\n if (!node.isDisabled) {\n if (node.children.length) {\n if (checked) {\n const isAllChildrenChecked = node.children.every(item => item.isChecked === ThyTreeNodeCheckState.checked);\n node.isChecked = isAllChildrenChecked ? ThyTreeNodeCheckState.checked : ThyTreeNodeCheckState.indeterminate;\n node.origin.checked = isAllChildrenChecked && checked;\n } else {\n const isAllChildrenUnChecked = node.children.every(item => item.isChecked === ThyTreeNodeCheckState.unchecked);\n node.isChecked = isAllChildrenUnChecked ? ThyTreeNodeCheckState.unchecked : ThyTreeNodeCheckState.indeterminate;\n node.origin.checked = isAllChildrenUnChecked && checked;\n }\n } else {\n node.isChecked = checked ? ThyTreeNodeCheckState.checked : ThyTreeNodeCheckState.unchecked;\n node.origin.checked = checked;\n }\n }\n if (propagateUp) {\n this._syncNodeCheckState(node.parentNode);\n }\n }\n\n public syncNodeCheckState(node: ThyTreeNode) {\n this._syncNodeCheckState(node);\n this.syncFlattenTreeNodes();\n }\n\n private _syncNodeCheckState(node: ThyTreeNode) {\n if (node) {\n node.isChecked = this.checkStateResolve(node);\n this._syncNodeCheckState(node.parentNode);\n }\n }\n\n ngOnDestroy(): void {\n this.statusChange$.complete();\n this.statusChange$ = null;\n }\n}\n","import { Subject } from 'rxjs';\nimport { normalizePassiveListenerOptions } from '@angular/cdk/platform';\nimport {\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\n\nimport { THY_TREE_ABSTRACT_TOKEN, ThyTreeAbstractComponent } from './tree-abstract';\nimport { ThyTreeNode } from './tree-node.class';\nimport { ThyTreeEmitEvent, ThyTreeNodeCheckState, ThyClickBehavior } from './tree.class';\nimport { ThyTreeService } from './tree.service';\nimport { InputBoolean, InputNumber } from 'ngx-tethys/core';\nimport { ThyLoading } from 'ngx-tethys/loading';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { NgIf, NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\n\nconst passiveEventListenerOptions = <AddEventListenerOptions>normalizePassiveListenerOptions({ passive: true });\n\n/**\n * 树形控件的节点组件\n * @private\n * @name thy-tree-node\n */\n@Component({\n selector: 'thy-tree-node',\n templateUrl: './tree-node.component.html',\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [NgIf, ThyIcon, NgClass, NgStyle, NgTemplateOutlet, ThyLoading]\n})\nexport class ThyTreeNodeComponent implements OnDestroy, OnInit, OnChanges {\n /**\n * node 节点展现所需的数据\n */\n @Input() node: ThyTreeNode;\n\n /**\n * 设置 TreeNode 是否支持异步加载\n */\n @Input() @InputBoolean() thyAsync = false;\n\n /**\n * 设置 TreeNode 是否支持多选节点\n */\n @Input() @InputBoolean() thyMultiple = false;\n\n /**\n * 设置 TreeNode 是否支持拖拽排序\n */\n @Input() @InputBoolean() thyDraggable = false;\n\n /**\n * 设置 TreeNode 是否支持 Checkbox 选择\n */\n @Input() @InputBoolean() thyCheckable = false;\n\n /**\n * 点击节点的行为,`default` 为选中当前节点,`selectCheckbox` 为选中节点的 Checkbox, `thyCheckable` 为 true 时生效。\n * @default default\n */\n @Input() thyClickBehavior: ThyClickBehavior;\n\n /**\n * 设置节点名称是否支持超出截取\n * @default false\n */\n @Input() @InputBoolean() thyTitleTruncate: boolean;\n\n /**\n * 设置 TreeNode 的渲染模板\n */\n @Input() templateRef: TemplateRef<any>;\n\n /**\n * 设置子的空数据渲染模板\n */\n @Input() emptyChildrenTemplateRef: TemplateRef<any>;\n\n /**\n * 设置 node 点击事件\n */\n @Output() thyOnClick: EventEmitter<ThyTreeEmitEvent> = new EventEmitter<ThyTreeEmitEvent>();\n\n /**\n * 双击 node 事件\n */\n @Output() thyDblClick: EventEmitter<ThyTreeEmitEvent> = new EventEmitter<ThyTreeEmitEvent>();\n\n /**\n * 点击展开触发事件\n */\n @Output() thyOnExpandChange: EventEmitter<ThyTreeEmitEvent> = new EventEmitter<ThyTreeEmitEvent>();\n\n /**\n * 设置 check 选择事件\n */\n @Output() thyOnCheckboxChange: EventEmitter<ThyTreeEmitEvent> = new EventEmitter<ThyTreeEmitEvent>();\n\n /**\n * 设置 childrenTree 的渲染模板\n */\n @ContentChild('childrenTree') childrenTreeTemplateRef: TemplateRef<any>;\n\n /** The native `<div class=\"thy-tree-node-wrapper thy-sortable-item\"></div>` element. */\n @ViewChild('treeNodeWrapper', { static: true }) treeNodeWrapper: ElementRef<HTMLElement>;\n\n @HostBinding('class.thy-tree-node') thyTreeNodeClass = true;\n\n @HostBinding('class') itemClass: string;\n\n /**\n * 开启虚拟滚动时,单行节点的高度,当`thySize`为`default`时,该参数才生效\n */\n @Input() @InputNumber() thyItemSize = 44;\n\n /**\n * 设置节点缩进距离,缩进距离 = thyIndent * node.level\n */\n @Input() @InputNumber() thyIndent = 25;\n\n public get nodeIcon() {\n return this.node.origin.icon;\n }\n\n public get nodeIconStyle() {\n return this.node.origin.iconStyle;\n }\n\n private destroy$ = new Subject<void>();\n\n checkState = ThyTreeNodeCheckState;\n\n constructor(@Inject(THY_TREE_ABSTRACT_TOKEN) public root: ThyTreeAbstractComponent, public thyTreeService: ThyTreeService) {}\n\n public clickNode(event: Event) {\n if (this.node.isDisabled) {\n this.expandNode(event);\n } else {\n if (this.thyCheckable && this.thyClickBehavior === 'selectCheckbox') {\n this.clickNodeCheck(event);\n } else {\n if (this.root.thyMultiple) {\n this.root.toggleTreeNode(this.node);\n } else {\n this.root.selectTreeNode(this.node);\n }\n }\n }\n this.thyOnClick.emit({\n eventName: 'click',\n event: event,\n node: this.node\n });\n }\n\n public dbClickNode(event: Event) {\n this.thyDblClick.emit({\n eventName: 'dbclick',\n event: event,\n node: this.node\n });\n }\n\n public clickNodeCheck(event: Event) {\n event.stopPropagation();\n if (this.node.isChecked === ThyTreeNodeCheckState.unchecked) {\n this.node.setChecked(true);\n } else if (this.node.isChecked === ThyTreeNodeCheckState.checked) {\n this.node.setChecked(false);\n } else if (this.node.isChecked === ThyTreeNodeCheckState.indeterminate) {\n if (this.node.children?.length) {\n const activeChildren = this.node.children.filter(item => !item.isDisabled);\n const isAllActiveChildrenChecked = activeChildren.every(item => item.isChecked);\n this.node.setChecked(!isAllActiveChildrenChecked);\n } else {\n this.node.setChecked(true);\n }\n }\n this.thyOnCheckboxChange.emit({\n eventName: 'checkboxChange',\n event: event,\n node: this.node\n });\n }\n\n public expandNode(event: Event) {\n event.stopPropagation();\n this.node.setExpanded(!this.node.isExpanded);\n if (this.root.thyShowExpand) {\n this.thyOnExpandChange.emit({\n eventName: 'expand',\n event: event,\n node: this.node\n });\n if (this.thyAsync && this.node.children.length === 0) {\n this.node.setLoading(true);\n }\n }\n }\n\n public isShowExpand(node: ThyTreeNode) {\n return this.root.isShowExpand(node);\n }\n\n ngOnInit(): void {\n this.itemClass = this.node?.itemClass?.join(' ');\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.node && !changes.node.isFirstChange()) {\n this.itemClass = changes?.node?.currentValue.itemClass?.join(' ');\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","<div\n #treeNodeWrapper\n class=\"thy-tree-node-wrapper\"\n [class.active]=\"root.isSelected(node)\"\n [class.disabled]=\"node.isDisabled\"\n [class.expand]=\"node.children.length\"\n [style.height]=\"thyItemSize + 'px'\"\n (click)=\"clickNode($event)\"\n>\n <span class=\"thy-tree-index\" [style.width.px]=\"node.level * thyIndent\"></span>\n <span class=\"thy-tree-drag-icon\">\n <thy-icon thyIconName=\"drag\"></thy-icon>\n </span>\n <span class=\"thy-tree-expand\" (click)=\"expandNode($event)\">\n <ng-container *ngIf=\"isShowExpand(node)\">\n <ng-container *ngIf=\"(node.children && node.children.length > 0) || thyAsync || emptyChildrenTemplateRef\">\n <thy-icon\n *ngIf=\"root.thyIcons?.expand && root.thyIcons?.collapse; else defaultIcon\"\n class=\"thy-tree-expand-icon\"\n [thyIconName]=\"node.isExpanded ? root.thyIcons.expand : root.thyIcons.collapse\"\n ></thy-icon>\n <ng-template #defaultIcon>\n <thy-icon class=\"thy-tree-expand-icon\" [class.collapse]=\"!node.isExpanded\" thyIconName=\"caret-right-down\"></thy-icon>\n </ng-template>\n </ng-container>\n </ng-container>\n </span>\n\n <span class=\"thy-tree-node-content\" (dblclick)=\"dbClickNode($event)\">\n <input\n *ngIf=\"thyCheckable\"\n type=\"checkbox\"\n class=\"thy-tree-node-check\"\n [class.form-check-indeterminate]=\"node.isChecked === checkState.indeterminate\"\n [class.form-unchecked]=\"node.isChecked === checkState.unchecked\"\n [checked]=\"node.isChecked === checkState.checked\"\n [disabled]=\"node.isDisabled\"\n (click)=\"clickNodeCheck($event)\"\n />\n <ng-container *ngIf=\"!templateRef\">\n <ng-container *ngIf=\"nodeIcon\">\n <span class=\"thy-tree-node-icon\"> <i [ngClass]=\"nodeIcon\" [ngStyle]=\"nodeIconStyle\"></i></span>\n </ng-container>\n <span [title]=\"node.title\" class=\"thy-tree-node-title\" [class.truncate]=\"thyTitleTruncate\"> {{ node.title }}</span>\n </ng-container>\n <ng-container *ngIf=\"templateRef\">\n <ng-template\n [ngTemplateOutlet]=\"templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: node, node: node, origin: node?.origin }\"\n ></ng-template>\n </ng-container>\n </span>\n</div>\n<ng-container *ngIf=\"thyAsync\">\n <thy-loading *ngIf=\"node.isLoading\" [thyDone]=\"!node.isLoading\"></thy-loading>\n</ng-container>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ThyTreeNode } from './tree-node.class';\nimport { ThyTreeBeforeDragStartContext } from './tree.class';\n\n/**\n * @private\n */\n@Pipe({\n name: 'treeNodeDraggable',\n standalone: true\n})\nexport class ThyTreeNodeDraggablePipe implements PipeTransform {\n transform(node: ThyTreeNode, beforeDragStart: (e: ThyTreeBeforeDragStartContext) => boolean): boolean {\n if (beforeDragStart) {\n const draggable = beforeDragStart({ item: node } as ThyTreeBeforeDragStartContext);\n return draggable;\n } else {\n return true;\n }\n }\n}\n","import { InputBoolean, InputNumber } from 'ngx-tethys/core';\nimport { helpers } from 'ngx-tethys/util';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { CdkVirtualScrollViewport, CdkFixedSizeVirtualScroll, CdkVirtualForOf } from '@angular/cdk/scrolling';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n EventEmitter,\n forwardRef,\n HostBinding,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewChildren,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { THY_TREE_ABSTRACT_TOKEN } from './tree-abstract';\nimport { ThyTreeNode } from './tree-node.class';\nimport {\n ThyTreeBeforeDragDropContext,\n ThyTreeBeforeDragStartContext,\n ThyClickBehavior,\n ThyTreeDragDropEvent,\n ThyTreeDropPosition,\n ThyTreeEmitEvent,\n ThyTreeIcons,\n ThyTreeNodeCheckState,\n ThyTreeNodeData\n} from './tree.class';\nimport { ThyTreeService } from './tree.service';\nimport { ThyTreeNodeComponent } from './tree-node.component';\nimport { NgIf, NgFor, DOCUMENT } from '@angular/common';\nimport { CdkDrag, CdkDragDrop, CdkDragEnd, CdkDragMove, CdkDragStart, CdkDropList } from '@angular/cdk/drag-drop';\nimport { auditTime, filter, startWith, takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\nimport { ThyTreeNodeDraggablePipe } from './tree.pipe';\n\ntype ThyTreeSize = 'sm' | 'default';\n\ntype ThyTreeType = 'default' | 'especial';\n\nconst treeTypeClassMap = {\n default: ['thy-tree-default'],\n especial: ['thy-tree-especial']\n};\n\nconst treeItemSizeMap = {\n default: 44,\n sm: 42\n};\n\n/**\n * 树形控件组件\n * @name thy-tree\n */\n@Component({\n selector: 'thy-tree',\n templateUrl: './tree.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ThyTree),\n multi: true\n },\n {\n provide: THY_TREE_ABSTRACT_TOKEN,\n useExisting: forwardRef(() => ThyTree)\n },\n ThyTreeService\n ],\n standalone: true,\n imports: [\n NgIf,\n CdkDrag,\n CdkDropList,\n CdkVirtualScrollViewport,\n CdkFixedSizeVirtualScroll,\n CdkVirtualForOf,\n ThyTreeNodeComponent,\n NgFor,\n ThyTreeNodeDraggablePipe\n ]\n})\nexport class ThyTree implements ControlValueAccessor, OnInit, OnChanges, AfterViewInit, OnDestroy {\n private _templateRef: TemplateRef<any>;\n\n private _emptyChildrenTemplateRef: TemplateRef<any>;\n\n private _draggable = false;\n\n private _expandedKeys: (string | number)[];\n\n private _selectedKeys: (string | number)[];\n\n private hostRenderer = useHostRenderer();\n\n private _onTouched: () => void = () => {};\n\n private _onChange: (value: any) => void = (_: any) => {};\n\n private destroy$ = new Subject();\n\n // 缓存 Element 和 DragRef 的关系,方便在 Item 拖动时查找\n private nodeDragsMap = new Map<HTMLElement, CdkDrag<ThyTreeNode>>();\n\n private nodeDragMoved = new Subject<CdkDragMove>();\n\n // private startDragNodeExpanded: boolean;\n\n private startDragNodeClone: ThyTreeNode;\n\n // Node 拖动经过目标时临时记录目标id以及相对应目标的位置\n private nodeDropTarget: {\n position?: ThyTreeDropPosition;\n key?: number | string;\n };\n\n private dropEnterPredicate?: (context: { source: ThyTreeNode; target: ThyTreeNode; dropPosition: ThyTreeDropPosition }) => boolean =\n context => {\n return (\n this.isShowExpand(context.target) || (!this.isShowExpand(context.target) && context.dropPosition !== ThyTreeDropPosition.in)\n );\n };\n\n public _selectionModel: SelectionModel<ThyTreeNode>;\n\n public get treeNodes() {\n return this.thyTreeService.treeNodes;\n }\n\n public flattenTreeNodes: ThyTreeNode[] = [];\n\n /**\n * 虚拟化滚动的视口\n */\n @Output() @ViewChild('viewport', { static: false }) viewport: CdkVirtualScrollViewport;\n\n /**\n * TreeNode 展现所需的数据\n * @type ThyTreeNodeData[]\n */\n @Input() thyNodes: ThyTreeNodeData[];\n\n /**\n * 设置 TreeNode 是否支持展开\n * @type boolean | Function\n */\n @Input() thyShowExpand: boolean | ((_: ThyTreeNodeData) => boolean) = true;\n\n /**\n * 设置是否支持多选节点\n */\n @HostBinding(`class.thy-multiple-selection-list`)\n @Input()\n @InputBoolean()\n thyMultiple = false;\n\n /**\n * 设置 TreeNode 是否支持拖拽排序\n * @default false\n */\n @HostBinding('class.thy-tree-draggable')\n @Input()\n @InputBoolean()\n set thyDraggable(value: boolean) {\n this._draggable = value;\n }\n\n get thyDraggable() {\n return this._draggable;\n }\n\n /**\n * 设置 TreeNode 是否支持 Checkbox 选择\n * @default false\n */\n @Input() @InputBoolean() thyCheckable: boolean;\n\n /**\n * 点击节点的行为,`default` 为选中当前节点,`selectCheckbox` 为选中节点的 Checkbox, `thyCheckable` 为 true 时生效。\n */\n @Input() thyClickBehavior: ThyClickBehavior = 'default';\n\n /**\n * 设置 check 状态的计算策略\n */\n @Input() set thyCheckStateResolve(resolve: (node: ThyTreeNode) => ThyTreeNodeCheckState) {\n if (resolve) {\n this.thyTreeService.setCheckStateResolve(resolve);\n }\n }\n\n /**\n * 设置 TreeNode 是否支持异步加载\n */\n @Input() @InputBoolean() thyAsync = false;\n\n private _thyType: ThyTreeType = 'default';\n\n /**\n * 设置不同展示类型的 Tree,`default` 为小箭头展示, `especial` 为 加减号图标展示\n * @type ThyTreeType\n * @default default\n */\n @Input()\n set thyType(type: ThyTreeType) {\n this._thyType = type;\n if (type === 'especial') {\n this.thyIcons = { expand: 'minus-square', collapse: 'plus-square' };\n }\n }\n\n get thyType() {\n return this._thyType;\n }\n\n /**\n * 设置不同 Tree 展开折叠的图标,`expand` 为展开状态的图标,`collapse` 为折叠状态的图标\n * @type { expand: string, collapse: string }\n */\n @Input() thyIcons: ThyTreeIcons = {};\n\n private _thySize: ThyTreeSize = 'default';\n /**\n * 支持 `sm` | `default` 两种大小,默认值为 `default`\n * @type ThyTreeSize\n * @default default\n */\n @Input()\n set thySize(size: ThyTreeSize) {\n this._thySize = size;\n if (this._thySize) {\n this._thyItemSize = treeItemSizeMap[this._thySize];\n } else {\n this._thyItemSize = treeItemSizeMap.default;\n }\n }\n\n get thySize() {\n return this._thySize;\n }\n\n /**\n * 设置是否开启虚拟滚动\n */\n @HostBinding('class.thy-virtual-scrolling-tree')\n @Input()\n @InputBoolean()\n thyVirtualScroll = false;\n\n private _thyItemSize = 44;\n\n /**\n * 开启虚拟滚动时,单行节点的高度,当`thySize`为`default`时,该参数才生效\n * @default 44\n */\n @Input()\n @InputNumber()\n set thyItemSize(itemSize: number) {\n if (this.thySize !== 'default') {\n throw new Error('setting thySize and thyItemSize at the same time is not allowed');\n }\n this._thyItemSize = itemSize;\n }\n\n get thyItemSize() {\n return this._thyItemSize;\n }\n\n /**\n * 设置节点名称是否支持超出截取\n * @type boolean\n */\n @Input() @InputBoolean() thyTitleTruncate = true;\n\n /**\n * 已选中的 node 节点集合\n * @default []\n */\n @Input() thySelectedKeys: string[];\n\n /**\n * 设置缩进距离,缩进距离 = thyIndent * node.level\n * @type number\n */\n @Input() @InputNumber() thyIndent = 25;\n\n /**\n * 拖拽之前的回调,函数返回 false 则阻止拖拽\n */\n @Input() thyBeforeDragStart: (context: ThyTreeBeforeDragStartContext) => boolean;\n\n /**\n * 拖放到元素时回调,函数返回 false 则阻止拖放到当前元素\n */\n @Input() thyBeforeDragDrop: (context: ThyTreeBeforeDragDropContext) => boolean;\n\n /**\n * 设置子 TreeNode 点击事件\n */\n @Output() thyOnClick: EventEmitter<ThyTreeEmitEvent> = new EventEmitter<ThyTreeEmitEvent>();\n\n /**\n * 设置 check 选择事件\n */\n @Output() thyOnCheckboxChange: EventEmitter<ThyTreeEmitEvent> = new EventEmitter<ThyTreeEmitEvent>();\n\n /**\n * 设置点击展开触发事件\n */\n @Output() thyOnExpandChange: EventEmitter<ThyTreeEmitEvent> = new EventEmitter<ThyTreeEmitEvent>();\n\n /**\n * 设置 TreeNode 拖拽事件\n */\n @Output() thyOnDragDrop: EventEmitter<ThyTreeDragDropEvent> = new EventEmitter<ThyTreeDragDropEvent>();\n\n /**\n * 双击 TreeNode 事件\n */\n @Output() thyDblClick: EventEmitter<ThyTreeEmitEvent> = new EventEmitter<ThyTreeEmitEvent>();\n\n /**\n * 设置 TreeNode 的渲染模板\n */\n @ContentChild('treeNodeTemplate', { static: true })\n set templateRef(template: TemplateRef<any>) {\n if (template) {\n this._templateRef = template;\n }\n }\n\n get templateRef() {\n return this._templateRef;\n }\n\n /**\n * 设置子的空数据渲染模板\n */\n @ContentChild('emptyChildrenTemplate', { static: true }) emptyChildrenTemplate: TemplateRef<any>;\n set emptyChildrenTemplateRef(template: TemplateRef<any>) {\n if (template) {\n this._emptyChildrenTemplateRef = template;\n }\n }\n\n get emptyChildrenTemplateRef() {\n return this._emptyChildrenTemplateRef;\n }\n\n @HostBinding('class.thy-tree')\n thyTreeClass = true;\n\n @HostBinding('class.thy-tree-dragging')\n dragging: boolean;\n\n @ViewChildren(CdkDrag) cdkDrags: QueryList<CdkDrag<ThyTreeNode>>;\n\n constructor(public thyTreeService: ThyTreeService, private cdr: ChangeDetectorRef, @Inject(DOCUMENT) private document: Document) {}\n\n ngOnInit(): void {\n this._initThyNodes();\n this._setTreeType();\n this._setTreeSize();\n this._instanceSelectionModel();\n this._selectTreeNodes(this.thySelectedKeys);\n\n this.thyTreeService.flattenNodes$.subscribe(flattenTreeNodes => {\n this.flattenTreeNodes = flattenTreeNodes;\n this.cdr.markForCheck();\n });\n }\n\n ngAfterViewInit(): void {\n this.cdkDrags.changes\n .pipe(startWith(this.cdkDrags), takeUntil(this.destroy$))\n .subscribe((drags: QueryList<CdkDrag<ThyTreeNode>>) => {\n this.nodeDragsMap.clear();\n drags.forEach(drag => {\n if (drag.data) {\n // cdkDrag 变化时,缓存 Element 与 DragRef 的关系,方便 Drag Move 时查找\n this.nodeDragsMap.set(drag.element.nativeElement, drag);\n }\n });\n });\n\n this.nodeDragMoved\n .pipe(\n // auditTime(30),\n // auditTime 可能会导致拖动结束后仍然执行 moved ,所以通过判断 dragging 状态来过滤无效 moved\n filter((event: CdkDragMove) => event.source._dragRef.isDragging()),\n takeUntil(this.destroy$)\n )\n .subscribe(event => {\n this.onDragMoved(event);\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.thyNodes && !changes.thyNodes.isFirstChange()) {\n this._initThyNodes();\n }\n if (changes.thyType && !changes.thyType.isFirstChange()) {\n this._setTreeType();\n }\n if (changes.thyMultiple && !changes.thyMultiple.isFirstChange()) {\n this._instanceSelectionModel();\n }\n\n if (changes.thySelectedKeys && !changes.thySelectedKeys.isFirstChange()) {\n this._selectedKeys = changes.thySelectedKeys.currentValue;\n this._selectTreeNodes(changes.thySelectedKeys.currentValue);\n }\n }\n\n renderView = () => {};\n\n eventTriggerChanged(event: ThyTreeEmitEvent): void {\n switch (event.eventName) {\n case 'expand':\n this.thyOnExpandChange.emit(event);\n break;\n\n case 'checkboxChange':\n this.thyOnCheckboxChange.emit(event);\n break;\n }\n }\n\n private _initThyNodes() {\n this._expandedKeys = this.getExpandedNodes().map(node => node.key);\n this._selectedKeys = this.getSelectedNodes().map(node => node.key);\n this.thyTreeService.initializeTreeNodes(this.thyNodes);\n this.flattenTreeNodes = this.thyTreeService.flattenTreeNodes;\n this._selectTreeNodes(this._selectedKeys);\n this.thyTreeService.expandTreeNodes(this._expandedKeys);\n }\n\n private _setTreeType() {\n if (this.thyType && treeTypeClassMap[this.thyType]) {\n treeTypeClassMap[this.thyType].forEach(className => {\n this.hostRenderer.addClass(className);\n });\n }\n }\n\n private _setTreeSize() {\n if (this.thySize) {\n this.hostRenderer.addClass(`thy-tree-${this.thySize}`);\n }\n }\n\n private _instanceSelectionModel() {\n this._selectionModel = new SelectionModel<any>(this.thyMultiple);\n }\n\n private _selectTreeNodes(keys: (string | number)[]) {\n (keys || []).forEach(key => {\n const node = this.thyTreeService.getTreeNode(key);\n if (node) {\n this.selectTreeNode(this.thyTreeService.getTreeNode(key));\n }\n });\n }\n\n isSelected(node: ThyTreeNode) {\n return this._selectionModel.isSelected(node);\n }\n\n toggleTreeNode(node: ThyTreeNode) {\n if (node && !node.isDisabled) {\n this._selectionModel.toggle(node);\n }\n }\n\n trackByFn(index: number, item: any) {\n return item.key || index;\n }\n\n isShowExpand(node: ThyTreeNode) {\n if (helpers.isFunction(this.thyShowExpand)) {\n return (this.thyShowExpand as Function)(node);\n } else {\n return this.thyShowExpand;\n }\n }\n\n writeValue(value: ThyTreeNodeData[]): void {\n if (value) {\n this.thyNodes = value;\n this._initThyNodes();\n }\n }\n\n registerOnChange(fn: any): void {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this._onTouched = fn;\n }\n\n onDragStarted(event: CdkDragStart<ThyTreeNode>) {\n this.dragging = true;\n this.startDragNodeClone = Object.assign({}, event.source.data);\n if (event.source.data.isExpanded) {\n event.source.data.setExpanded(false);\n }\n }\n\n emitDragMoved(event: CdkDragMove) {\n this.nodeDragMoved.next(event);\n }\n\n onDragMoved(event: CdkDragMove<ThyTreeNode>) {\n // 通过鼠标位置查找对应的目标 Item 元素\n let currentPointElement = this.document.elementFromPoint(event.pointerPosition.x, event.pointerPosition.y) as HTMLElement;\n if (!currentPointElement) {\n this.cleanupDragArtifacts();\n return;\n }\n let targetElement = currentPointElement.classList.contains('thy-tree-node')\n ? currentPointElement\n : (currentPointElement.closest('.thy-tree-node') as HTMLElement);\n if (!targetElement) {\n this.cleanupDragArtifacts();\n return;\n }\n // 缓存放置目标Id 并计算鼠标相对应的位置\n this.nodeDropTarget = {\n key: this.nodeDragsMap.get(targetElement)?.data.key,\n position: this.getTargetPosition(targetElement, event)\n };\n // 执行外部传入的 dropEnterPredicate 判断是否允许拖入目标项\n if (this.dropEnterPredicate) {\n const targetDragRef = this.nodeDragsMap.get(targetElement);\n if (\n this.dropEnterPredicate({\n source: event.source.data,\n target: targetDragRef.data,\n dropPosition: this.nodeDropTarget.position\n })\n ) {\n this.showDropPositionPlaceholder(targetElement);\n } else {\n this.nodeDropTarget = null;\n this.cleanupDragArtifacts();\n }\n } else {\n this.showDropPositionPlaceholder(targetElement);\n }\n }\n\n onDragEnded(event: CdkDragEnd<ThyTreeNode>) {\n this.dragging = false;\n // 拖拽结束后恢复原始的展开状态\n event.source.data.setExpanded(this.startDragNodeClone.isExpanded);\n setTimeout(() => {\n this.startDragNodeClone = null;\n });\n }\n\n onListDropped(event: CdkDragDrop<ThyTreeNode[], ThyTreeNode[], ThyTreeNode>) {\n if (!this.nodeDropTarget) {\n return;\n }\n if (!this.isShowExpand(this.startDragNodeClone) && this.nodeDropTarget.position === ThyTreeDropPosition.in) {\n this.cleanupDragArtifacts();\n return;\n }\n\n const sourceNode = this.startDragNodeClone;\n const sourceNodeParent = sourceNode.parentNode;\n const targetDragRef = this.cdkDrags.find(item => item.data?.key === this.nodeDropTarget.key);\n const targetNode = targetDragRef?.data;\n const targetNodeParent = targetNode.parentNode;\n\n const beforeDragDropContext: ThyTreeBeforeDragDropContext = {\n previousItem: sourceNode,\n previousContainerItems: sourceNodeParent?.children,\n item: targetNode,\n containerItems: targetNodeParent?.children,\n position: this.nodeDropTarget.position\n };\n\n if (this.thyBeforeDragDrop && !this.thyBeforeDragDrop(beforeDragDropContext)) {\n this.cleanupDragArtifacts();\n return;\n }\n\n this.thyTreeService.deleteTreeNode(sourceNode);\n\n switch (this.nodeDropTarget.position) {\n case 'before':\n const beforeInsertIndex = (targetNodeParent?.children || this.treeNodes).indexOf(targetNode);\n this.thyTreeService.addTreeNode(sourceNode, targetNodeParent, beforeInsertIndex);\n break;\n case 'after':\n const afterInsertIndex = (targetNodeParent?.children || this.treeNodes).indexOf(targetNode) + 1;\n this.thyTreeService.addTreeNode(sourceNode, targetNodeParent, afterInsertIndex);\n break;\n case 'in':\n this.thyTreeService.addTreeNode(sourceNode, targetNode);\n break;\n }\n\n this.thyTreeService.syncFlattenTreeNodes();\n\n let after: ThyTreeNode = null;\n let targe: ThyTreeNode = null;\n if (beforeDragDropContext.position === ThyTreeDropPosition.before) {\n const targetContainerNodes = targetNodeParent?.children || this.treeNodes;\n after = targetContainerNodes[targetContainerNodes.indexOf(targetNode) - 2];\n targe = targetNodeParent;\n } else if (beforeDragDropContext.position === ThyTreeDropPosition.after) {\n after = targetNode;\n targe = targetNodeParent;\n } else {\n after = targetNode.children?.length > 0 ? targetNode.children[targetNode.children.length - 2] : null;\n targe = targetNode;\n }\n\n this.thyOnDragDrop.emit({\n dragNode: this.thyTreeService.getTreeNode(sourceNode.key),\n targetNode: targe,\n afterNode: after\n });\n\n this.cleanupDragArtifacts();\n }\n\n private getTargetPosition(target: HTMLElement, event: CdkDragMove) {\n const targetRect = target.getBoundingClientRect();\n const beforeOrAfterGap = targetRect.height * 0.3;\n // 将 Node 高度分为上中下三段,其中上下的 Gap 为 height 的 30%,通过判断鼠标位置在哪一段 gap 来计算对应的位置\n if (event.pointerPosition.y - targetRect.top < beforeOrAfterGap) {\n return ThyTreeDropPosition.before;\n } else if (event.pointerPosition.y >= targetRect.bottom - beforeOrAfterGap) {\n return ThyTreeDropPosition.after;\n } else {\n return ThyTreeDropPosition.in;\n }\n }\n\n private showDropPositionPlaceholder(targetElement: HTMLElement) {\n this.cleanupDropPositionPlaceholder();\n if (this.nodeDropTarget && targetElement) {\n targetElement.classList.add(`drop-position-${this.nodeDropTarget.position}`);\n }\n }\n\n private cleanupDropPositionPlaceholder() {\n this.document.querySelectorAll('.drop-position-before').forEach(element => element.classList.remove('drop-position-before'));\n this.document.querySelectorAll('.drop-position-after').forEach(element => element.classList.remove('drop-position-after'));\n this.document.querySelectorAll('.drop-position-in').forEach(element => element.classList.remove('drop-position-in'));\n }\n\n private cleanupDragArtifacts() {\n this.nodeDropTarget = null;\n this.cleanupDropPositionPlaceholder();\n }\n\n // region Public Functions\n\n selectTreeNode(node: ThyTreeNode) {\n if (node && !node.isDisabled) {\n this._selectionModel.select(node);\n this.thyTreeService.syncFlattenTreeNodes();\n }\n }\n\n getRootNodes(): ThyTreeNode[] {\n return this.treeNodes;\n }\n\n getTreeNode(key: string) {\n return this.thyTreeService.getTreeNode(key);\n }\n\n getSelectedNode(): ThyTreeNode {\n return this._selectionModel ? this._selectionModel.selected[0] : null;\n }\n\n getSelectedNodes(): ThyTreeNode[] {\n return this._selectionModel ? this._selectionModel.selected : [];\n }\n\n getExpandedNodes(): ThyTreeNode[] {\n return this.thyTreeService.getExpandedNodes();\n }\n\n getCheckedNodes(): ThyTreeNode[] {\n return this.thyTreeService.getCheckedNodes();\n }\n\n addTreeNode(node: ThyTreeNodeData, parent?: ThyTreeNode, index = -1) {\n this.thyTreeService.addTreeNode(new ThyTreeNode(node, null, this.thyTreeService), parent, index);\n this.thyTreeService.syncFlattenTreeNodes();\n }\n\n deleteTreeNode(node: ThyTreeNode) {\n if (this.isSelected(node)) {\n this._selectionModel.toggle(node);\n }\n this.thyTreeService.deleteTreeNode(node);\n this.thyTreeService.syncFlattenTreeNodes();\n }\n\n expandAllNodes() {\n const nodes = this.getRootNodes();\n nodes.forEach(n => n.setExpanded(true, true));\n }\n\n collapsedAllNodes() {\n const nodes = this.getRootNodes();\n nodes.forEach(n => n.setExpanded(false, true));\n }\n\n // endregion\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","<cdk-virtual-scroll-viewport\n #viewport\n *ngIf=\"thyVirtualScroll\"\n [itemSize]=\"thyItemSize\"\n [style.height]=\"'100%'\"\n cdkDropList\n [cdkDropListAutoScrollStep]=\"6\"\n [cdkDropListData]=\"flattenTreeNodes\"\n [cdkDropListSortingDisabled]=\"true\"\n (cdkDropListDropped)=\"onListDropped($event)\"\n >\n <div class=\"virtual-trees-container\">\n <thy-tree-node\n *cdkVirtualFor=\"let node of flattenTreeNodes; trackBy: trackByFn; let i = index\"\n cdkDrag\n [cdkDragData]=\"node\"\n [cdkDragDisabled]=\"!thyDraggable || !(node | treeNodeDraggable : thyBeforeDragStart)\"\n (cdkDragStarted)=\"onDragStarted($event)\"\n (cdkDragEnded)=\"onDragEnded($event)\"\n (cdkDragMoved)=\"emitDragMoved($event)\"\n [node]=\"node\"\n [templateRef]=\"templateRef\"\n [emptyChildrenTemplateRef]=\"emptyChildrenTemplate\"\n [thyAsync]=\"thyAsync\"\n [thyDraggable]=\"thyDraggable\"\n [thyCheckable]=\"thyCheckable\"\n [thyMultiple]=\"thyMultiple\"\n [thyClickBehavior]=\"thyClickBehavior\"\n [thyTitleTruncate]=\"thyTitleTruncate\"\n [thyItemSize]=\"thyItemSize\"\n [thyIndent]=\"thyIndent\"\n (thyOnClick)=\"thyOnClick.emit($event)\"\n (thyDblClick)=\"thyDblClick.emit($event)\"\n (thyOnExpandChange)=\"eventTriggerChanged($event)\"\n (thyOnCheckboxChange)=\"eventTriggerChanged($event)\">\n </thy-tree-node>\n </div>\n</cdk-virtual-scroll-viewport>\n\n<div\n *ngIf=\"!thyVirtualScroll\"\n cdkDropList\n [cdkDropListAutoScrollStep]=\"6\"\n [cdkDropListData]=\"flattenTreeNodes\"\n [cdkDropListSortingDisabled]=\"true\"\n (cdkDropListDropped)=\"onListDropped($event)\">\n <thy-tree-node\n *ngFor=\"let node of flattenTreeNodes; trackBy: trackByFn; let i = index\"\n cdkDrag\n [cdkDragData]=\"node\"\n [cdkDragDisabled]=\"!thyDraggable || !(node | treeNodeDraggable : thyBeforeDragStart)\"\n (cdkDragStarted)=\"onDragStarted($event)\"\n (cdkDragEnded)=\"onDragEnded($event)\"\n (cdkDragMoved)=\"emitDragMoved($event)\"\n [node]=\"node\"\n [templateRef]=\"templateRef\"\n [emptyChildrenTemplateRef]=\"emptyChildrenTemplate\"\n [thyAsync]=\"thyAsync\"\n [thyDraggable]=\"thyDraggable\"\n [thyCheckable]=\"thyCheckable\"\n [thyMultiple]=\"thyMultiple\"\n [thyTitleTruncate]=\"thyTitleTruncate\"\n [thyItemSize]=\"thyItemSize\"\n [thyClickBehavior]=\"thyClickBehavior\"\n [thyIndent]=\"thyIndent\"\n (thyOnClick)=\"thyOnClick.emit($event)\"\n (thyDblClick)=\"thyDblClick.emit($event)\"\n (thyOnExpandChange)=\"eventTriggerChanged($event)\"\n (thyOnCheckboxChange)=\"thyOnCheckboxChange.emit($event)\">\n </thy-tree-node>\n</div>\n","import { ThyButtonModule } from 'ngx-tethys/button';\nimport { ThyCheckboxModule } from 'ngx-tethys/checkbox';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyInputModule } from 'ngx-tethys/input';\nimport { ThyListModule } from 'ngx-tethys/list';\nimport { ThyLoadingModule } from 'ngx-tethys/loading';\nimport { ThyOptionModule, ThySharedModule } from 'ngx-tethys/shared';\n\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { ThyTreeNodeComponent } from './tree-node.component';\nimport { ThyTree } from './tree.component';\nimport { ThyTreeService } from './tree.service';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { ThyTreeNodeDraggablePipe } from './tree.pipe';\n\n@NgModule({\n imports: [\n DragDropModule,\n CommonModule,\n ThyInputModule,\n ThyButtonModule,\n ThySharedModule,\n FormsModule,\n ThyListModule,\n ThyOptionModule,\n ThyLoadingModule,\n ThyIconModule,\n ThyCheckboxModule,\n ScrollingModule,\n ThyTree,\n ThyTreeNodeComponent,\n ThyTreeNodeDraggablePipe\n ],\n exports: [ThyTree, ThyTreeNodeComponent],\n providers: [ThyTreeService]\n})\nexport class ThyTreeModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.ThyTreeService"],"mappings":"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"}
1
+ {"version":3,"file":"ngx-tethys-tree.mjs","sources":["../../../src/tree/tree-abstract.ts","../../../src/tree/tree.class.ts","../../../src/tree/tree-node.class.ts","../../../src/tree/tree.service.ts","../../../src/tree/tree-node.component.ts","../../../src/tree/tree-node.component.html","../../../src/tree/tree.pipe.ts","../../../src/tree/tree.component.ts","../../../src/tree/tree.component.html","../../../src/tree/tree.module.ts","../../../src/tree/ngx-tethys-tree.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { ThyTreeNode } from './tree-node.class';\nimport { ThyTreeBeforeDragDropContext, ThyTreeBeforeDragStartContext, ThyTreeDragDropEvent, ThyTreeIcons } from './tree.class';\n\nexport interface ThyTreeAbstractComponent {\n thyMultiple: boolean;\n thyDraggable: boolean;\n thyShowExpand: boolean;\n treeNodes: ThyTreeNode[];\n thyIcons: ThyTreeIcons;\n thyBeforeDragStart(e: ThyTreeBeforeDragStartContext): boolean;\n thyBeforeDragDrop(e: ThyTreeBeforeDragDropContext): boolean;\n onDragDrop(event: ThyTreeDragDropEvent): void;\n selectTreeNode(node: ThyTreeNode): void;\n toggleTreeNode(node: ThyTreeNode): void;\n isShowExpand(node: ThyTreeNode): boolean;\n trackByFn(number: string, node: ThyTreeNode): string | number;\n isSelected(node: ThyTreeNode): boolean;\n}\n\nexport const THY_TREE_ABSTRACT_TOKEN = new InjectionToken<ThyTreeAbstractComponent>('thy-tree-abstract-token');\n","import { ThyTreeNode } from './tree-node.class';\n\nexport enum ThyTreeNodeCheckState {\n unchecked = 0,\n checked = 1,\n indeterminate = 2\n}\n\nexport enum ThyTreeDropPosition {\n in = 'in',\n before = 'before',\n after = 'after'\n}\n\nexport interface ThyTreeNodeData<T = any> {\n key?: number | string;\n\n title?: string;\n\n icon?: string;\n\n iconStyle?: {\n [key: string]: any;\n };\n\n children?: ThyTreeNodeData<T>[];\n\n origin?: any;\n\n expanded?: boolean;\n\n disabled?: boolean;\n\n checked?: boolean;\n\n data?: T;\n\n itemClass?: string | string[];\n\n [key: string]: any;\n}\n\nexport interface ThyTreeEmitEvent<T = any> {\n eventName: string;\n\n node?: ThyTreeNode<T>;\n\n event?: Event | any;\n\n dragNode?: ThyTreeNode<T>;\n\n targetNode?: ThyTreeNode<T>;\n}\n\nexport interface ThyTreeBeforeDragStartContext {\n item: ThyTreeNode;\n}\n\nexport interface ThyTreeBeforeDragDropContext {\n item?: ThyTreeNode;\n containerItems?: ThyTreeNode[];\n previousItem?: ThyTreeNode;\n previousContainerItems?: ThyTreeNode[];\n position?: ThyTreeDropPosition;\n}\n\nexport interface ThyTreeDragDropEvent<T = any> {\n dragNode?: ThyTreeNode<T>;\n\n targetNode?: ThyTreeNode<T>;\n\n afterNode?: ThyTreeNode<T>;\n}\n\nexport class ThyTreeIcons {\n expand?: string;\n collapse?: string;\n}\n\nexport type ThyClickBehavior = 'default' | 'selectCheckbox';\n","import { helpers, isArray } from 'ngx-tethys/util';\n\nimport { ThyTreeNodeCheckState, ThyTreeNodeData } from './tree.class';\nimport { ThyTreeService } from './tree.service';\n\nexport class ThyTreeNode<T = any> {\n key?: number | string;\n\n title?: string;\n\n children: ThyTreeNode[];\n\n parentNode: ThyTreeNode;\n\n level = 0;\n\n origin: ThyTreeNodeData<T>;\n\n isExpanded: boolean;\n\n isChecked: ThyTreeNodeCheckState;\n\n isLoading: boolean;\n\n isDisabled: boolean;\n\n itemClass?: string[];\n\n private readonly service: ThyTreeService;\n\n get treeService(): ThyTreeService {\n if (this.service) {\n return this.service;\n } else if (this.parentNode) {\n return this.parentNode.treeService;\n }\n }\n\n constructor(node: ThyTreeNodeData, parent: ThyTreeNode = null, service?: ThyTreeService) {\n this.title = node.title;\n this.key = node.key;\n this.children = [];\n this.parentNode = parent;\n this.level = parent ? parent.level + 1 : this.level;\n this.origin = node;\n this.isDisabled = node.disabled || false;\n this.isExpanded = node.expanded || false;\n this.isChecked = node.checked ? ThyTreeNodeCheckState.checked : ThyTreeNodeCheckState.unchecked;\n this.isLoading = false;\n if (node.itemClass) {\n this.itemClass = isArray(node.itemClass) ? node.itemClass : [node.itemClass];\n }\n if (node.children) {\n node.children.forEach(childNode => {\n this.children.push(new ThyTreeNode(childNode, this, service));\n });\n }\n this.service = service;\n if (node.children && node.children.length && service) {\n this.isChecked = service.checkStateResolve(this);\n }\n }\n\n public setKey(key: string) {\n this.origin.key = key;\n this.key = key;\n }\n\n public setTitle(title: string) {\n this.origin.title = title;\n this.title = title;\n }\n\n public setLevel(level: number) {\n this.level = level;\n }\n\n private _setExpanded(expanded: boolean, propagate = false) {\n this.origin.expanded = expanded;\n this.isExpanded = expanded;\n if (propagate && this.children) {\n this.children.forEach(n => n._setExpanded(expanded, propagate));\n }\n }\n\n public setExpanded(expanded: boolean, propagate = false) {\n this._setExpanded(expanded, propagate);\n this.treeService.syncFlattenTreeNodes();\n }\n\n public setLoading(loading: boolean): void {\n this.isLoading = loading;\n this.treeService.syncFlattenTreeNodes();\n }\n\n public setChecked(checked: boolean, propagateUp = true, propagateDown = true) {\n this.treeService.setNodeChecked(this, checked, propagateUp, propagateDown);\n }\n\n public syncNodeCheckState() {\n this.treeService.syncNodeCheckState(this);\n }\n\n public getParentNode(): ThyTreeNode {\n return this.parentNode;\n }\n\n public getChildren(): ThyTreeNode[] {\n return this.children;\n }\n\n public addChildren(children: ThyTreeNodeData | ThyTreeNodeData[], index: number = -1): void {\n children = helpers.coerceArray(children);\n ((children as ThyTreeNodeData[]) || []).forEach((childNode: ThyTreeNodeData, i: number) => {\n if (index === -1) {\n this.children.push(new ThyTreeNode(childNode, this));\n } else {\n this.children.splice(index + i, 0, new ThyTreeNode(childNode, this, this.treeService));\n }\n });\n\n this.origin.children = this.getChildren().map(n => n.origin);\n this.setLoading(false);\n this.treeService.statusChange$.next({\n eventName: 'addChildren',\n node: this\n });\n }\n}\n","import { coerceArray, isFunction } from 'ngx-tethys/util';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { Injectable, OnDestroy } from '@angular/core';\nimport { ThyTreeNode } from './tree-node.class';\nimport { ThyTreeNodeCheckState, ThyTreeNodeData } from './tree.class';\n\nfunction checkStateResolve(node: ThyTreeNode) {\n const checkedNodes = node.children.filter(n => n.isChecked === ThyTreeNodeCheckState.checked);\n const unCheckedNodes = node.children.filter(n => n.isChecked === ThyTreeNodeCheckState.unchecked);\n if (checkedNodes.length === node.children.length) {\n return ThyTreeNodeCheckState.checked;\n } else if (unCheckedNodes.length === node.children.length) {\n return ThyTreeNodeCheckState.unchecked;\n } else {\n return ThyTreeNodeCheckState.indeterminate;\n }\n}\n\ntype FlattenAllNodesCb = (treeNode: ThyTreeNode) => boolean;\n\nexport interface ThyTreeFormatEmitEvent {\n eventName: string;\n node: ThyTreeNode;\n event?: MouseEvent | DragEvent;\n}\n\n/**\n * @internal\n */\n@Injectable()\nexport class ThyTreeService implements OnDestroy {\n selectedNode!: ThyTreeNode;\n\n flattenNodes$ = new BehaviorSubject<ThyTreeNode[]>([]);\n\n flattenTreeNodes: ThyTreeNode[] = [];\n\n private originTreeNodes: ThyTreeNodeData[] = [];\n\n public treeNodes: ThyTreeNode[] = [];\n\n public checkStateResolve: (node: ThyTreeNode) => ThyTreeNodeCheckState = checkStateResolve;\n\n statusChange$ = new Subject<ThyTreeFormatEmitEvent>();\n\n constructor() {\n this.statusChange$.pipe().subscribe(event => {\n this.syncFlattenTreeNodes();\n this.syncNodeCheckState(event.node);\n });\n }\n\n public initializeTreeNodes(rootNodes: ThyTreeNodeData[]) {\n this.originTreeNodes = rootNodes || [];\n this.treeNodes = (rootNodes || []).map(node => new ThyTreeNode(node, null, this));\n }\n\n public syncFlattenTreeNodes() {\n this.flattenTreeNodes = this.getParallelTreeNodes(this.treeNodes, false);\n this.flattenNodes$.next(this.flattenTreeNodes);\n return this.flattenTreeNodes;\n }\n\n private getParallelTreeNodes(rootTrees: ThyTreeNode[] = this.treeNodes, flattenAllNodes: boolean | FlattenAllNodesCb = true) {\n const flattenTreeData: ThyTreeNode[] = [];\n function _getParallelTreeNodes(list: ThyTreeNode[]) {\n return list.forEach((treeNode, index) => {\n flattenTreeData.push(treeNode);\n const flattenAllNodesFlag = isFunction(flattenAllNodes) ? flattenAllNodes(treeNode) : flattenAllNodes;\n if (flattenAllNodesFlag || treeNode.isExpanded) {\n _getParallelTreeNodes(treeNode.children);\n }\n });\n }\n _getParallelTreeNodes(rootTrees);\n return flattenTreeData;\n }\n\n setCheckStateResolve(resolve: (node: ThyTreeNode) => ThyTreeNodeCheckState = checkStateResolve) {\n this.checkStateResolve = resolve;\n }\n\n public resetSortedTreeNodes(treeNodes: ThyTreeNode[], parent?: ThyTreeNode) {\n treeNodes.forEach(node => {\n node.level = node.parentNode ? node.parentNode.level + 1 : 0;\n node.origin.children = node.children.map(n => n.origin);\n node.parentNode = parent;\n this.resetSortedTreeNodes(node.children, node);\n });\n }\n\n public getTreeNode(key: string | number) {\n const allNodes = this.getParallelTreeNodes(this.treeNodes);\n return allNodes.find(n => n.key === key);\n }\n\n public getExpandedNodes(): ThyTreeNode[] {\n const allNodes = this.getParallelTreeNodes(this.treeNodes);\n return allNodes.filter(n => n.isExpanded);\n }\n\n public getCheckedNodes(): ThyTreeNode[] {\n const allNodes = this.getParallelTreeNodes(this.treeNodes);\n return allNodes.filter(n => n.isChecked === ThyTreeNodeCheckState.checked);\n }\n\n public deleteTreeNode(node: ThyTreeNode) {\n if (node.parentNode) {\n const children = node.parentNode.children;\n const index = children.findIndex(n => n.key === node.key);\n if (index > -1) {\n children.splice(index, 1);\n node.parentNode.origin.children = children.map(item => item.origin);\n this.syncNodeCheckState(node.parentNode);\n }\n } else {\n const index = this.treeNodes.findIndex(n => n.key === node.key);\n if (index > -1) {\n this.treeNodes.splice(index, 1);\n this.originTreeNodes.splice(index, 1);\n }\n }\n }\n\n public addTreeNode(node: ThyTreeNode, parent?: ThyTreeNode, index = -1) {\n if (parent) {\n const insertNode = new ThyTreeNode(node.origin, parent, this);\n if (index > -1) {\n parent.children.splice(index, 0, insertNode);\n } else {\n parent.children.push(insertNode);\n }\n parent.origin.children = parent.children.map(item => item.origin);\n this.syncNodeCheckState(parent);\n } else {\n const insertNode = new ThyTreeNode(node.origin, null, this);\n if (index > -1) {\n this.treeNodes.splice(index, 0, insertNode);\n } else {\n this.treeNodes.push(insertNode);\n }\n this.originTreeNodes = this.treeNodes.map(item => item.origin);\n // this.syncNodeCheckState(insertNode);\n }\n }\n\n public expandTreeNodes(keyOrKeys: string | number | (string | number)[]) {\n const keys = coerceArray(keyOrKeys);\n const needExpandNodes = this.getParallelTreeNodes(this.treeNodes).filter(node => {\n return keys.indexOf(node.key) > -1;\n });\n needExpandNodes.forEach(node => {\n node.setExpanded(true);\n });\n this.syncFlattenTreeNodes();\n }\n\n // 设置节点选中状态\n public setNodeChecked(node: ThyTreeNode, checked: boolean, propagateUp = true, propagateDown = true) {\n this._setNodeChecked(node, checked, propagateUp, propagateDown);\n this.syncFlattenTreeNodes();\n }\n\n private _setNodeChecked(node: ThyTreeNode, checked: boolean, propagateUp = true, propagateDown = true) {\n if (propagateDown && node.children) {\n node.children.forEach(subNode => {\n this._setNodeChecked(subNode, checked, false, true);\n });\n }\n if (!node.isDisabled) {\n if (node.children.length) {\n if (checked) {\n const isAllChildrenChecked = node.children.every(item => item.isChecked === ThyTreeNodeCheckState.checked);\n node.isChecked = isAllChildrenChecked ? ThyTreeNodeCheckState.checked : ThyTreeNodeCheckState.indeterminate;\n node.origin.checked = isAllChildrenChecked && checked;\n } else {\n const isAllChildrenUnChecked = node.children.every(item => item.isChecked === ThyTreeNodeCheckState.unchecked);\n node.isChecked = isAllChildrenUnChecked ? ThyTreeNodeCheckState.unchecked : ThyTreeNodeCheckState.indeterminate;\n node.origin.checked = isAllChildrenUnChecked && checked;\n }\n } else {\n node.isChecked = checked ? ThyTreeNodeCheckState.checked : ThyTreeNodeCheckState.unchecked;\n node.origin.checked = checked;\n }\n }\n if (propagateUp) {\n this._syncNodeCheckState(node.parentNode);\n }\n }\n\n public syncNodeCheckState(node: ThyTreeNode) {\n this._syncNodeCheckState(node);\n this.syncFlattenTreeNodes();\n }\n\n private _syncNodeCheckState(node: ThyTreeNode) {\n if (node) {\n node.isChecked = this.checkStateResolve(node);\n this._syncNodeCheckState(node.parentNode);\n }\n }\n\n ngOnDestroy(): void {\n this.statusChange$.complete();\n this.statusChange$ = null;\n }\n}\n","import { Subject } from 'rxjs';\nimport { normalizePassiveListenerOptions } from '@angular/cdk/platform';\nimport {\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n booleanAttribute,\n numberAttribute\n} from '@angular/core';\n\nimport { THY_TREE_ABSTRACT_TOKEN, ThyTreeAbstractComponent } from './tree-abstract';\nimport { ThyTreeNode } from './tree-node.class';\nimport { ThyTreeEmitEvent, ThyTreeNodeCheckState, ThyClickBehavior } from './tree.class';\nimport { ThyTreeService } from './tree.service';\nimport { ThyLoading } from 'ngx-tethys/loading';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { NgIf, NgClass, NgStyle, NgTemplateOutlet } from '@angular/common';\n\nconst passiveEventListenerOptions = <AddEventListenerOptions>normalizePassiveListenerOptions({ passive: true });\n\n/**\n * 树形控件的节点组件\n * @private\n * @name thy-tree-node\n */\n@Component({\n selector: 'thy-tree-node',\n templateUrl: './tree-node.component.html',\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n imports: [NgIf, ThyIcon, NgClass, NgStyle, NgTemplateOutlet, ThyLoading]\n})\nexport class ThyTreeNodeComponent implements OnDestroy, OnInit, OnChanges {\n /**\n * node 节点展现所需的数据\n */\n @Input() node: ThyTreeNode;\n\n /**\n * 设置 TreeNode 是否支持异步加载\n */\n @Input({ transform: booleanAttribute }) thyAsync = false;\n\n /**\n * 设置 TreeNode 是否支持多选节点\n */\n @Input({ transform: booleanAttribute }) thyMultiple = false;\n\n /**\n * 设置 TreeNode 是否支持拖拽排序\n */\n @Input({ transform: booleanAttribute }) thyDraggable = false;\n\n /**\n * 设置 TreeNode 是否支持 Checkbox 选择\n */\n @Input({ transform: booleanAttribute }) thyCheckable = false;\n\n /**\n * 点击节点的行为,`default` 为选中当前节点,`selectCheckbox` 为选中节点的 Checkbox, `thyCheckable` 为 true 时生效。\n * @default default\n */\n @Input() thyClickBehavior: ThyClickBehavior;\n\n /**\n * 设置节点名称是否支持超出截取\n * @default false\n */\n @Input({ transform: booleanAttribute }) thyTitleTruncate: boolean;\n\n /**\n * 设置 TreeNode 的渲染模板\n */\n @Input() templateRef: TemplateRef<any>;\n\n /**\n * 设置子的空数据渲染模板\n */\n @Input() emptyChildrenTemplateRef: TemplateRef<any>;\n\n /**\n * 设置 node 点击事件\n */\n @Output() thyOnClick: EventEmitter<ThyTreeEmitEvent> = new EventEmitter<ThyTreeEmitEvent>();\n\n /**\n * 双击 node 事件\n */\n @Output() thyDblClick: EventEmitter<ThyTreeEmitEvent> = new EventEmitter<ThyTreeEmitEvent>();\n\n /**\n * 点击展开触发事件\n */\n @Output() thyOnExpandChange: EventEmitter<ThyTreeEmitEvent> = new EventEmitter<ThyTreeEmitEvent>();\n\n /**\n * 设置 check 选择事件\n */\n @Output() thyOnCheckboxChange: EventEmitter<ThyTreeEmitEvent> = new EventEmitter<ThyTreeEmitEvent>();\n\n /**\n * 设置 childrenTree 的渲染模板\n */\n @ContentChild('childrenTree') childrenTreeTemplateRef: TemplateRef<any>;\n\n /** The native `<div class=\"thy-tree-node-wrapper thy-sortable-item\"></div>` element. */\n @ViewChild('treeNodeWrapper', { static: true }) treeNodeWrapper: ElementRef<HTMLElement>;\n\n @HostBinding('class.thy-tree-node') thyTreeNodeClass = true;\n\n @HostBinding('class') itemClass: string;\n\n /**\n * 开启虚拟滚动时,单行节点的高度,当`thySize`为`default`时,该参数才生效\n */\n @Input({ transform: numberAttribute }) thyItemSize = 44;\n\n /**\n * 设置节点缩进距离,缩进距离 = thyIndent * node.level\n */\n @Input({ transform: numberAttribute }) thyIndent = 25;\n\n public get nodeIcon() {\n return this.node.origin.icon;\n }\n\n public get nodeIconStyle() {\n return this.node.origin.iconStyle;\n }\n\n private destroy$ = new Subject<void>();\n\n checkState = ThyTreeNodeCheckState;\n\n constructor(@Inject(THY_TREE_ABSTRACT_TOKEN) public root: ThyTreeAbstractComponent, public thyTreeService: ThyTreeService) {}\n\n public clickNode(event: Event) {\n if (this.node.isDisabled) {\n this.expandNode(event);\n } else {\n if (this.thyCheckable && this.thyClickBehavior === 'selectCheckbox') {\n this.clickNodeCheck(event);\n } else {\n if (this.root.thyMultiple) {\n this.root.toggleTreeNode(this.node);\n } else {\n this.root.selectTreeNode(this.node);\n }\n }\n }\n this.thyOnClick.emit({\n eventName: 'click',\n event: event,\n node: this.node\n });\n }\n\n public dbClickNode(event: Event) {\n this.thyDblClick.emit({\n eventName: 'dbclick',\n event: event,\n node: this.node\n });\n }\n\n public clickNodeCheck(event: Event) {\n event.stopPropagation();\n if (this.node.isChecked === ThyTreeNodeCheckState.unchecked) {\n this.node.setChecked(true);\n } else if (this.node.isChecked === ThyTreeNodeCheckState.checked) {\n this.node.setChecked(false);\n } else if (this.node.isChecked === ThyTreeNodeCheckState.indeterminate) {\n if (this.node.children?.length) {\n const activeChildren = this.node.children.filter(item => !item.isDisabled);\n const isAllActiveChildrenChecked = activeChildren.every(item => item.isChecked);\n this.node.setChecked(!isAllActiveChildrenChecked);\n } else {\n this.node.setChecked(true);\n }\n }\n this.thyOnCheckboxChange.emit({\n eventName: 'checkboxChange',\n event: event,\n node: this.node\n });\n }\n\n public expandNode(event: Event) {\n event.stopPropagation();\n this.node.setExpanded(!this.node.isExpanded);\n if (this.root.thyShowExpand) {\n this.thyOnExpandChange.emit({\n eventName: 'expand',\n event: event,\n node: this.node\n });\n if (this.thyAsync && this.node.children.length === 0) {\n this.node.setLoading(true);\n }\n }\n }\n\n public isShowExpand(node: ThyTreeNode) {\n return this.root.isShowExpand(node);\n }\n\n ngOnInit(): void {\n this.itemClass = this.node?.itemClass?.join(' ');\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.node && !changes.node.isFirstChange()) {\n this.itemClass = changes?.node?.currentValue.itemClass?.join(' ');\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","<div\n #treeNodeWrapper\n class=\"thy-tree-node-wrapper\"\n [class.active]=\"root.isSelected(node)\"\n [class.disabled]=\"node.isDisabled\"\n [class.expand]=\"node.children.length\"\n [style.height]=\"thyItemSize + 'px'\"\n (click)=\"clickNode($event)\"\n>\n <span class=\"thy-tree-index\" [style.width.px]=\"node.level * thyIndent\"></span>\n <span class=\"thy-tree-drag-icon\">\n <thy-icon thyIconName=\"drag\"></thy-icon>\n </span>\n <span class=\"thy-tree-expand\" (click)=\"expandNode($event)\">\n <ng-container *ngIf=\"isShowExpand(node)\">\n <ng-container *ngIf=\"(node.children && node.children.length > 0) || thyAsync || emptyChildrenTemplateRef\">\n <thy-icon\n *ngIf=\"root.thyIcons?.expand && root.thyIcons?.collapse; else defaultIcon\"\n class=\"thy-tree-expand-icon\"\n [thyIconName]=\"node.isExpanded ? root.thyIcons.expand : root.thyIcons.collapse\"\n ></thy-icon>\n <ng-template #defaultIcon>\n <thy-icon class=\"thy-tree-expand-icon\" [class.collapse]=\"!node.isExpanded\" thyIconName=\"caret-right-down\"></thy-icon>\n </ng-template>\n </ng-container>\n </ng-container>\n </span>\n\n <span class=\"thy-tree-node-content\" (dblclick)=\"dbClickNode($event)\">\n <input\n *ngIf=\"thyCheckable\"\n type=\"checkbox\"\n class=\"thy-tree-node-check\"\n [class.form-check-indeterminate]=\"node.isChecked === checkState.indeterminate\"\n [class.form-unchecked]=\"node.isChecked === checkState.unchecked\"\n [checked]=\"node.isChecked === checkState.checked\"\n [disabled]=\"node.isDisabled\"\n (click)=\"clickNodeCheck($event)\"\n />\n <ng-container *ngIf=\"!templateRef\">\n <ng-container *ngIf=\"nodeIcon\">\n <span class=\"thy-tree-node-icon\"> <i [ngClass]=\"nodeIcon\" [ngStyle]=\"nodeIconStyle\"></i></span>\n </ng-container>\n <span [title]=\"node.title\" class=\"thy-tree-node-title\" [class.truncate]=\"thyTitleTruncate\"> {{ node.title }}</span>\n </ng-container>\n <ng-container *ngIf=\"templateRef\">\n <ng-template\n [ngTemplateOutlet]=\"templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: node, node: node, origin: node?.origin }\"\n ></ng-template>\n </ng-container>\n </span>\n</div>\n<ng-container *ngIf=\"thyAsync\">\n <thy-loading *ngIf=\"node.isLoading\" [thyDone]=\"!node.isLoading\"></thy-loading>\n</ng-container>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ThyTreeNode } from './tree-node.class';\nimport { ThyTreeBeforeDragStartContext } from './tree.class';\n\n/**\n * @private\n */\n@Pipe({\n name: 'treeNodeDraggable',\n standalone: true\n})\nexport class ThyTreeNodeDraggablePipe implements PipeTransform {\n transform(node: ThyTreeNode, beforeDragStart: (e: ThyTreeBeforeDragStartContext) => boolean): boolean {\n if (beforeDragStart) {\n const draggable = beforeDragStart({ item: node } as ThyTreeBeforeDragStartContext);\n return draggable;\n } else {\n return true;\n }\n }\n}\n","import { helpers } from 'ngx-tethys/util';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { CdkVirtualScrollViewport, CdkFixedSizeVirtualScroll, CdkVirtualForOf } from '@angular/cdk/scrolling';\nimport {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n EventEmitter,\n forwardRef,\n HostBinding,\n Inject,\n Input,\n numberAttribute,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewChildren,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { THY_TREE_ABSTRACT_TOKEN } from './tree-abstract';\nimport { ThyTreeNode } from './tree-node.class';\nimport {\n ThyTreeBeforeDragDropContext,\n ThyTreeBeforeDragStartContext,\n ThyClickBehavior,\n ThyTreeDragDropEvent,\n ThyTreeDropPosition,\n ThyTreeEmitEvent,\n ThyTreeIcons,\n ThyTreeNodeCheckState,\n ThyTreeNodeData\n} from './tree.class';\nimport { ThyTreeService } from './tree.service';\nimport { ThyTreeNodeComponent } from './tree-node.component';\nimport { NgIf, NgFor, DOCUMENT } from '@angular/common';\nimport { CdkDrag, CdkDragDrop, CdkDragEnd, CdkDragMove, CdkDragStart, CdkDropList } from '@angular/cdk/drag-drop';\nimport { auditTime, filter, startWith, takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\nimport { ThyTreeNodeDraggablePipe } from './tree.pipe';\n\ntype ThyTreeSize = 'sm' | 'default';\n\ntype ThyTreeType = 'default' | 'especial';\n\nconst treeTypeClassMap = {\n default: ['thy-tree-default'],\n especial: ['thy-tree-especial']\n};\n\nconst treeItemSizeMap = {\n default: 44,\n sm: 42\n};\n\n/**\n * 树形控件组件\n * @name thy-tree\n */\n@Component({\n selector: 'thy-tree',\n templateUrl: './tree.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ThyTree),\n multi: true\n },\n {\n provide: THY_TREE_ABSTRACT_TOKEN,\n useExisting: forwardRef(() => ThyTree)\n },\n ThyTreeService\n ],\n standalone: true,\n imports: [\n NgIf,\n CdkDrag,\n CdkDropList,\n CdkVirtualScrollViewport,\n CdkFixedSizeVirtualScroll,\n CdkVirtualForOf,\n ThyTreeNodeComponent,\n NgFor,\n ThyTreeNodeDraggablePipe\n ]\n})\nexport class ThyTree implements ControlValueAccessor, OnInit, OnChanges, AfterViewInit, OnDestroy {\n private _templateRef: TemplateRef<any>;\n\n private _emptyChildrenTemplateRef: TemplateRef<any>;\n\n private _draggable = false;\n\n private _expandedKeys: (string | number)[];\n\n private _selectedKeys: (string | number)[];\n\n private hostRenderer = useHostRenderer();\n\n private _onTouched: () => void = () => {};\n\n private _onChange: (value: any) => void = (_: any) => {};\n\n private destroy$ = new Subject();\n\n // 缓存 Element 和 DragRef 的关系,方便在 Item 拖动时查找\n private nodeDragsMap = new Map<HTMLElement, CdkDrag<ThyTreeNode>>();\n\n private nodeDragMoved = new Subject<CdkDragMove>();\n\n // private startDragNodeExpanded: boolean;\n\n private startDragNodeClone: ThyTreeNode;\n\n // Node 拖动经过目标时临时记录目标id以及相对应目标的位置\n private nodeDropTarget: {\n position?: ThyTreeDropPosition;\n key?: number | string;\n };\n\n private dropEnterPredicate?: (context: { source: ThyTreeNode; target: ThyTreeNode; dropPosition: ThyTreeDropPosition }) => boolean =\n context => {\n return (\n this.isShowExpand(context.target) || (!this.isShowExpand(context.target) && context.dropPosition !== ThyTreeDropPosition.in)\n );\n };\n\n public _selectionModel: SelectionModel<ThyTreeNode>;\n\n public get treeNodes() {\n return this.thyTreeService.treeNodes;\n }\n\n public flattenTreeNodes: ThyTreeNode[] = [];\n\n /**\n * 虚拟化滚动的视口\n */\n @Output() @ViewChild('viewport', { static: false }) viewport: CdkVirtualScrollViewport;\n\n /**\n * TreeNode 展现所需的数据\n * @type ThyTreeNodeData[]\n */\n @Input() thyNodes: ThyTreeNodeData[];\n\n /**\n * 设置 TreeNode 是否支持展开\n * @type boolean | Function\n */\n @Input() thyShowExpand: boolean | ((_: ThyTreeNodeData) => boolean) = true;\n\n /**\n * 设置是否支持多选节点\n */\n @HostBinding(`class.thy-multiple-selection-list`)\n @Input({ transform: booleanAttribute })\n thyMultiple = false;\n\n /**\n * 设置 TreeNode 是否支持拖拽排序\n * @default false\n */\n @HostBinding('class.thy-tree-draggable')\n @Input({ transform: booleanAttribute })\n set thyDraggable(value: boolean) {\n this._draggable = value;\n }\n\n get thyDraggable() {\n return this._draggable;\n }\n\n /**\n * 设置 TreeNode 是否支持 Checkbox 选择\n * @default false\n */\n @Input({ transform: booleanAttribute }) thyCheckable: boolean;\n\n /**\n * 点击节点的行为,`default` 为选中当前节点,`selectCheckbox` 为选中节点的 Checkbox, `thyCheckable` 为 true 时生效。\n */\n @Input() thyClickBehavior: ThyClickBehavior = 'default';\n\n /**\n * 设置 check 状态的计算策略\n */\n @Input() set thyCheckStateResolve(resolve: (node: ThyTreeNode) => ThyTreeNodeCheckState) {\n if (resolve) {\n this.thyTreeService.setCheckStateResolve(resolve);\n }\n }\n\n /**\n * 设置 TreeNode 是否支持异步加载\n */\n @Input({ transform: booleanAttribute }) thyAsync = false;\n\n private _thyType: ThyTreeType = 'default';\n\n /**\n * 设置不同展示类型的 Tree,`default` 为小箭头展示, `especial` 为 加减号图标展示\n * @type ThyTreeType\n * @default default\n */\n @Input()\n set thyType(type: ThyTreeType) {\n this._thyType = type;\n if (type === 'especial') {\n this.thyIcons = { expand: 'minus-square', collapse: 'plus-square' };\n }\n }\n\n get thyType() {\n return this._thyType;\n }\n\n /**\n * 设置不同 Tree 展开折叠的图标,`expand` 为展开状态的图标,`collapse` 为折叠状态的图标\n * @type { expand: string, collapse: string }\n */\n @Input() thyIcons: ThyTreeIcons = {};\n\n private _thySize: ThyTreeSize = 'default';\n /**\n * 支持 `sm` | `default` 两种大小,默认值为 `default`\n * @type ThyTreeSize\n * @default default\n */\n @Input()\n set thySize(size: ThyTreeSize) {\n this._thySize = size;\n if (this._thySize) {\n this._thyItemSize = treeItemSizeMap[this._thySize];\n } else {\n this._thyItemSize = treeItemSizeMap.default;\n }\n }\n\n get thySize() {\n return this._thySize;\n }\n\n /**\n * 设置是否开启虚拟滚动\n */\n @HostBinding('class.thy-virtual-scrolling-tree')\n @Input({ transform: booleanAttribute })\n thyVirtualScroll = false;\n\n private _thyItemSize = 44;\n\n /**\n * 开启虚拟滚动时,单行节点的高度,当`thySize`为`default`时,该参数才生效\n * @default 44\n */\n @Input({ transform: numberAttribute })\n set thyItemSize(itemSize: number) {\n if (this.thySize !== 'default') {\n throw new Error('setting thySize and thyItemSize at the same time is not allowed');\n }\n this._thyItemSize = itemSize;\n }\n\n get thyItemSize() {\n return this._thyItemSize;\n }\n\n /**\n * 设置节点名称是否支持超出截取\n * @type boolean\n */\n @Input({ transform: booleanAttribute }) thyTitleTruncate = true;\n\n /**\n * 已选中的 node 节点集合\n * @default []\n */\n @Input() thySelectedKeys: string[];\n\n /**\n * 设置缩进距离,缩进距离 = thyIndent * node.level\n * @type number\n */\n @Input({ transform: numberAttribute }) thyIndent = 25;\n\n /**\n * 拖拽之前的回调,函数返回 false 则阻止拖拽\n */\n @Input() thyBeforeDragStart: (context: ThyTreeBeforeDragStartContext) => boolean;\n\n /**\n * 拖放到元素时回调,函数返回 false 则阻止拖放到当前元素\n */\n @Input() thyBeforeDragDrop: (context: ThyTreeBeforeDragDropContext) => boolean;\n\n /**\n * 设置子 TreeNode 点击事件\n */\n @Output() thyOnClick: EventEmitter<ThyTreeEmitEvent> = new EventEmitter<ThyTreeEmitEvent>();\n\n /**\n * 设置 check 选择事件\n */\n @Output() thyOnCheckboxChange: EventEmitter<ThyTreeEmitEvent> = new EventEmitter<ThyTreeEmitEvent>();\n\n /**\n * 设置点击展开触发事件\n */\n @Output() thyOnExpandChange: EventEmitter<ThyTreeEmitEvent> = new EventEmitter<ThyTreeEmitEvent>();\n\n /**\n * 设置 TreeNode 拖拽事件\n */\n @Output() thyOnDragDrop: EventEmitter<ThyTreeDragDropEvent> = new EventEmitter<ThyTreeDragDropEvent>();\n\n /**\n * 双击 TreeNode 事件\n */\n @Output() thyDblClick: EventEmitter<ThyTreeEmitEvent> = new EventEmitter<ThyTreeEmitEvent>();\n\n /**\n * 设置 TreeNode 的渲染模板\n */\n @ContentChild('treeNodeTemplate', { static: true })\n set templateRef(template: TemplateRef<any>) {\n if (template) {\n this._templateRef = template;\n }\n }\n\n get templateRef() {\n return this._templateRef;\n }\n\n /**\n * 设置子的空数据渲染模板\n */\n @ContentChild('emptyChildrenTemplate', { static: true }) emptyChildrenTemplate: TemplateRef<any>;\n set emptyChildrenTemplateRef(template: TemplateRef<any>) {\n if (template) {\n this._emptyChildrenTemplateRef = template;\n }\n }\n\n get emptyChildrenTemplateRef() {\n return this._emptyChildrenTemplateRef;\n }\n\n @HostBinding('class.thy-tree')\n thyTreeClass = true;\n\n @HostBinding('class.thy-tree-dragging')\n dragging: boolean;\n\n @ViewChildren(CdkDrag) cdkDrags: QueryList<CdkDrag<ThyTreeNode>>;\n\n constructor(public thyTreeService: ThyTreeService, private cdr: ChangeDetectorRef, @Inject(DOCUMENT) private document: Document) {}\n\n ngOnInit(): void {\n this._initThyNodes();\n this._setTreeType();\n this._setTreeSize();\n this._instanceSelectionModel();\n this._selectTreeNodes(this.thySelectedKeys);\n\n this.thyTreeService.flattenNodes$.subscribe(flattenTreeNodes => {\n this.flattenTreeNodes = flattenTreeNodes;\n this.cdr.markForCheck();\n });\n }\n\n ngAfterViewInit(): void {\n this.cdkDrags.changes\n .pipe(startWith(this.cdkDrags), takeUntil(this.destroy$))\n .subscribe((drags: QueryList<CdkDrag<ThyTreeNode>>) => {\n this.nodeDragsMap.clear();\n drags.forEach(drag => {\n if (drag.data) {\n // cdkDrag 变化时,缓存 Element 与 DragRef 的关系,方便 Drag Move 时查找\n this.nodeDragsMap.set(drag.element.nativeElement, drag);\n }\n });\n });\n\n this.nodeDragMoved\n .pipe(\n // auditTime(30),\n // auditTime 可能会导致拖动结束后仍然执行 moved ,所以通过判断 dragging 状态来过滤无效 moved\n filter((event: CdkDragMove) => event.source._dragRef.isDragging()),\n takeUntil(this.destroy$)\n )\n .subscribe(event => {\n this.onDragMoved(event);\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.thyNodes && !changes.thyNodes.isFirstChange()) {\n this._initThyNodes();\n }\n if (changes.thyType && !changes.thyType.isFirstChange()) {\n this._setTreeType();\n }\n if (changes.thyMultiple && !changes.thyMultiple.isFirstChange()) {\n this._instanceSelectionModel();\n }\n\n if (changes.thySelectedKeys && !changes.thySelectedKeys.isFirstChange()) {\n this._selectedKeys = changes.thySelectedKeys.currentValue;\n this._selectTreeNodes(changes.thySelectedKeys.currentValue);\n }\n }\n\n renderView = () => {};\n\n eventTriggerChanged(event: ThyTreeEmitEvent): void {\n switch (event.eventName) {\n case 'expand':\n this.thyOnExpandChange.emit(event);\n break;\n\n case 'checkboxChange':\n this.thyOnCheckboxChange.emit(event);\n break;\n }\n }\n\n private _initThyNodes() {\n this._expandedKeys = this.getExpandedNodes().map(node => node.key);\n this._selectedKeys = this.getSelectedNodes().map(node => node.key);\n this.thyTreeService.initializeTreeNodes(this.thyNodes);\n this.flattenTreeNodes = this.thyTreeService.flattenTreeNodes;\n this._selectTreeNodes(this._selectedKeys);\n this.thyTreeService.expandTreeNodes(this._expandedKeys);\n }\n\n private _setTreeType() {\n if (this.thyType && treeTypeClassMap[this.thyType]) {\n treeTypeClassMap[this.thyType].forEach(className => {\n this.hostRenderer.addClass(className);\n });\n }\n }\n\n private _setTreeSize() {\n if (this.thySize) {\n this.hostRenderer.addClass(`thy-tree-${this.thySize}`);\n }\n }\n\n private _instanceSelectionModel() {\n this._selectionModel = new SelectionModel<any>(this.thyMultiple);\n }\n\n private _selectTreeNodes(keys: (string | number)[]) {\n (keys || []).forEach(key => {\n const node = this.thyTreeService.getTreeNode(key);\n if (node) {\n this.selectTreeNode(this.thyTreeService.getTreeNode(key));\n }\n });\n }\n\n isSelected(node: ThyTreeNode) {\n return this._selectionModel.isSelected(node);\n }\n\n toggleTreeNode(node: ThyTreeNode) {\n if (node && !node.isDisabled) {\n this._selectionModel.toggle(node);\n }\n }\n\n trackByFn(index: number, item: any) {\n return item.key || index;\n }\n\n isShowExpand(node: ThyTreeNode) {\n if (helpers.isFunction(this.thyShowExpand)) {\n return (this.thyShowExpand as Function)(node);\n } else {\n return this.thyShowExpand;\n }\n }\n\n writeValue(value: ThyTreeNodeData[]): void {\n if (value) {\n this.thyNodes = value;\n this._initThyNodes();\n }\n }\n\n registerOnChange(fn: any): void {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this._onTouched = fn;\n }\n\n onDragStarted(event: CdkDragStart<ThyTreeNode>) {\n this.dragging = true;\n this.startDragNodeClone = Object.assign({}, event.source.data);\n if (event.source.data.isExpanded) {\n event.source.data.setExpanded(false);\n }\n }\n\n emitDragMoved(event: CdkDragMove) {\n this.nodeDragMoved.next(event);\n }\n\n onDragMoved(event: CdkDragMove<ThyTreeNode>) {\n // 通过鼠标位置查找对应的目标 Item 元素\n let currentPointElement = this.document.elementFromPoint(event.pointerPosition.x, event.pointerPosition.y) as HTMLElement;\n if (!currentPointElement) {\n this.cleanupDragArtifacts();\n return;\n }\n let targetElement = currentPointElement.classList.contains('thy-tree-node')\n ? currentPointElement\n : (currentPointElement.closest('.thy-tree-node') as HTMLElement);\n if (!targetElement) {\n this.cleanupDragArtifacts();\n return;\n }\n // 缓存放置目标Id 并计算鼠标相对应的位置\n this.nodeDropTarget = {\n key: this.nodeDragsMap.get(targetElement)?.data.key,\n position: this.getTargetPosition(targetElement, event)\n };\n // 执行外部传入的 dropEnterPredicate 判断是否允许拖入目标项\n if (this.dropEnterPredicate) {\n const targetDragRef = this.nodeDragsMap.get(targetElement);\n if (\n this.dropEnterPredicate({\n source: event.source.data,\n target: targetDragRef.data,\n dropPosition: this.nodeDropTarget.position\n })\n ) {\n this.showDropPositionPlaceholder(targetElement);\n } else {\n this.nodeDropTarget = null;\n this.cleanupDragArtifacts();\n }\n } else {\n this.showDropPositionPlaceholder(targetElement);\n }\n }\n\n onDragEnded(event: CdkDragEnd<ThyTreeNode>) {\n this.dragging = false;\n // 拖拽结束后恢复原始的展开状态\n event.source.data.setExpanded(this.startDragNodeClone.isExpanded);\n setTimeout(() => {\n this.startDragNodeClone = null;\n });\n }\n\n onListDropped(event: CdkDragDrop<ThyTreeNode[], ThyTreeNode[], ThyTreeNode>) {\n if (!this.nodeDropTarget) {\n return;\n }\n if (!this.isShowExpand(this.startDragNodeClone) && this.nodeDropTarget.position === ThyTreeDropPosition.in) {\n this.cleanupDragArtifacts();\n return;\n }\n\n const sourceNode = this.startDragNodeClone;\n const sourceNodeParent = sourceNode.parentNode;\n const targetDragRef = this.cdkDrags.find(item => item.data?.key === this.nodeDropTarget.key);\n const targetNode = targetDragRef?.data;\n const targetNodeParent = targetNode.parentNode;\n\n const beforeDragDropContext: ThyTreeBeforeDragDropContext = {\n previousItem: sourceNode,\n previousContainerItems: sourceNodeParent?.children,\n item: targetNode,\n containerItems: targetNodeParent?.children,\n position: this.nodeDropTarget.position\n };\n\n if (this.thyBeforeDragDrop && !this.thyBeforeDragDrop(beforeDragDropContext)) {\n this.cleanupDragArtifacts();\n return;\n }\n\n this.thyTreeService.deleteTreeNode(sourceNode);\n\n switch (this.nodeDropTarget.position) {\n case 'before':\n const beforeInsertIndex = (targetNodeParent?.children || this.treeNodes).indexOf(targetNode);\n this.thyTreeService.addTreeNode(sourceNode, targetNodeParent, beforeInsertIndex);\n break;\n case 'after':\n const afterInsertIndex = (targetNodeParent?.children || this.treeNodes).indexOf(targetNode) + 1;\n this.thyTreeService.addTreeNode(sourceNode, targetNodeParent, afterInsertIndex);\n break;\n case 'in':\n this.thyTreeService.addTreeNode(sourceNode, targetNode);\n break;\n }\n\n this.thyTreeService.syncFlattenTreeNodes();\n\n let after: ThyTreeNode = null;\n let targe: ThyTreeNode = null;\n if (beforeDragDropContext.position === ThyTreeDropPosition.before) {\n const targetContainerNodes = targetNodeParent?.children || this.treeNodes;\n after = targetContainerNodes[targetContainerNodes.indexOf(targetNode) - 2];\n targe = targetNodeParent;\n } else if (beforeDragDropContext.position === ThyTreeDropPosition.after) {\n after = targetNode;\n targe = targetNodeParent;\n } else {\n after = targetNode.children?.length > 0 ? targetNode.children[targetNode.children.length - 2] : null;\n targe = targetNode;\n }\n\n this.thyOnDragDrop.emit({\n dragNode: this.thyTreeService.getTreeNode(sourceNode.key),\n targetNode: targe,\n afterNode: after\n });\n\n this.cleanupDragArtifacts();\n }\n\n private getTargetPosition(target: HTMLElement, event: CdkDragMove) {\n const targetRect = target.getBoundingClientRect();\n const beforeOrAfterGap = targetRect.height * 0.3;\n // 将 Node 高度分为上中下三段,其中上下的 Gap 为 height 的 30%,通过判断鼠标位置在哪一段 gap 来计算对应的位置\n if (event.pointerPosition.y - targetRect.top < beforeOrAfterGap) {\n return ThyTreeDropPosition.before;\n } else if (event.pointerPosition.y >= targetRect.bottom - beforeOrAfterGap) {\n return ThyTreeDropPosition.after;\n } else {\n return ThyTreeDropPosition.in;\n }\n }\n\n private showDropPositionPlaceholder(targetElement: HTMLElement) {\n this.cleanupDropPositionPlaceholder();\n if (this.nodeDropTarget && targetElement) {\n targetElement.classList.add(`drop-position-${this.nodeDropTarget.position}`);\n }\n }\n\n private cleanupDropPositionPlaceholder() {\n this.document.querySelectorAll('.drop-position-before').forEach(element => element.classList.remove('drop-position-before'));\n this.document.querySelectorAll('.drop-position-after').forEach(element => element.classList.remove('drop-position-after'));\n this.document.querySelectorAll('.drop-position-in').forEach(element => element.classList.remove('drop-position-in'));\n }\n\n private cleanupDragArtifacts() {\n this.nodeDropTarget = null;\n this.cleanupDropPositionPlaceholder();\n }\n\n // region Public Functions\n\n selectTreeNode(node: ThyTreeNode) {\n if (node && !node.isDisabled) {\n this._selectionModel.select(node);\n this.thyTreeService.syncFlattenTreeNodes();\n }\n }\n\n getRootNodes(): ThyTreeNode[] {\n return this.treeNodes;\n }\n\n getTreeNode(key: string) {\n return this.thyTreeService.getTreeNode(key);\n }\n\n getSelectedNode(): ThyTreeNode {\n return this._selectionModel ? this._selectionModel.selected[0] : null;\n }\n\n getSelectedNodes(): ThyTreeNode[] {\n return this._selectionModel ? this._selectionModel.selected : [];\n }\n\n getExpandedNodes(): ThyTreeNode[] {\n return this.thyTreeService.getExpandedNodes();\n }\n\n getCheckedNodes(): ThyTreeNode[] {\n return this.thyTreeService.getCheckedNodes();\n }\n\n addTreeNode(node: ThyTreeNodeData, parent?: ThyTreeNode, index = -1) {\n this.thyTreeService.addTreeNode(new ThyTreeNode(node, null, this.thyTreeService), parent, index);\n this.thyTreeService.syncFlattenTreeNodes();\n }\n\n deleteTreeNode(node: ThyTreeNode) {\n if (this.isSelected(node)) {\n this._selectionModel.toggle(node);\n }\n this.thyTreeService.deleteTreeNode(node);\n this.thyTreeService.syncFlattenTreeNodes();\n }\n\n expandAllNodes() {\n const nodes = this.getRootNodes();\n nodes.forEach(n => n.setExpanded(true, true));\n }\n\n collapsedAllNodes() {\n const nodes = this.getRootNodes();\n nodes.forEach(n => n.setExpanded(false, true));\n }\n\n // endregion\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","<cdk-virtual-scroll-viewport\n #viewport\n *ngIf=\"thyVirtualScroll\"\n [itemSize]=\"thyItemSize\"\n [style.height]=\"'100%'\"\n cdkDropList\n [cdkDropListAutoScrollStep]=\"6\"\n [cdkDropListData]=\"flattenTreeNodes\"\n [cdkDropListSortingDisabled]=\"true\"\n (cdkDropListDropped)=\"onListDropped($event)\"\n >\n <div class=\"virtual-trees-container\">\n <thy-tree-node\n *cdkVirtualFor=\"let node of flattenTreeNodes; trackBy: trackByFn; let i = index\"\n cdkDrag\n [cdkDragData]=\"node\"\n [cdkDragDisabled]=\"!thyDraggable || !(node | treeNodeDraggable : thyBeforeDragStart)\"\n (cdkDragStarted)=\"onDragStarted($event)\"\n (cdkDragEnded)=\"onDragEnded($event)\"\n (cdkDragMoved)=\"emitDragMoved($event)\"\n [node]=\"node\"\n [templateRef]=\"templateRef\"\n [emptyChildrenTemplateRef]=\"emptyChildrenTemplate\"\n [thyAsync]=\"thyAsync\"\n [thyDraggable]=\"thyDraggable\"\n [thyCheckable]=\"thyCheckable\"\n [thyMultiple]=\"thyMultiple\"\n [thyClickBehavior]=\"thyClickBehavior\"\n [thyTitleTruncate]=\"thyTitleTruncate\"\n [thyItemSize]=\"thyItemSize\"\n [thyIndent]=\"thyIndent\"\n (thyOnClick)=\"thyOnClick.emit($event)\"\n (thyDblClick)=\"thyDblClick.emit($event)\"\n (thyOnExpandChange)=\"eventTriggerChanged($event)\"\n (thyOnCheckboxChange)=\"eventTriggerChanged($event)\">\n </thy-tree-node>\n </div>\n</cdk-virtual-scroll-viewport>\n\n<div\n *ngIf=\"!thyVirtualScroll\"\n cdkDropList\n [cdkDropListAutoScrollStep]=\"6\"\n [cdkDropListData]=\"flattenTreeNodes\"\n [cdkDropListSortingDisabled]=\"true\"\n (cdkDropListDropped)=\"onListDropped($event)\">\n <thy-tree-node\n *ngFor=\"let node of flattenTreeNodes; trackBy: trackByFn; let i = index\"\n cdkDrag\n [cdkDragData]=\"node\"\n [cdkDragDisabled]=\"!thyDraggable || !(node | treeNodeDraggable : thyBeforeDragStart)\"\n (cdkDragStarted)=\"onDragStarted($event)\"\n (cdkDragEnded)=\"onDragEnded($event)\"\n (cdkDragMoved)=\"emitDragMoved($event)\"\n [node]=\"node\"\n [templateRef]=\"templateRef\"\n [emptyChildrenTemplateRef]=\"emptyChildrenTemplate\"\n [thyAsync]=\"thyAsync\"\n [thyDraggable]=\"thyDraggable\"\n [thyCheckable]=\"thyCheckable\"\n [thyMultiple]=\"thyMultiple\"\n [thyTitleTruncate]=\"thyTitleTruncate\"\n [thyItemSize]=\"thyItemSize\"\n [thyClickBehavior]=\"thyClickBehavior\"\n [thyIndent]=\"thyIndent\"\n (thyOnClick)=\"thyOnClick.emit($event)\"\n (thyDblClick)=\"thyDblClick.emit($event)\"\n (thyOnExpandChange)=\"eventTriggerChanged($event)\"\n (thyOnCheckboxChange)=\"thyOnCheckboxChange.emit($event)\">\n </thy-tree-node>\n</div>\n","import { ThyButtonModule } from 'ngx-tethys/button';\nimport { ThyCheckboxModule } from 'ngx-tethys/checkbox';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyInputModule } from 'ngx-tethys/input';\nimport { ThyListModule } from 'ngx-tethys/list';\nimport { ThyLoadingModule } from 'ngx-tethys/loading';\nimport { ThyOptionModule, ThySharedModule } from 'ngx-tethys/shared';\n\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { ThyTreeNodeComponent } from './tree-node.component';\nimport { ThyTree } from './tree.component';\nimport { ThyTreeService } from './tree.service';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { ThyTreeNodeDraggablePipe } from './tree.pipe';\n\n@NgModule({\n imports: [\n DragDropModule,\n CommonModule,\n ThyInputModule,\n ThyButtonModule,\n ThySharedModule,\n FormsModule,\n ThyListModule,\n ThyOptionModule,\n ThyLoadingModule,\n ThyIconModule,\n ThyCheckboxModule,\n ScrollingModule,\n ThyTree,\n ThyTreeNodeComponent,\n ThyTreeNodeDraggablePipe\n ],\n exports: [ThyTree, ThyTreeNodeComponent],\n providers: [ThyTreeService]\n})\nexport class ThyTreeModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.ThyTreeService"],"mappings":"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"}
@@ -2,12 +2,10 @@ import * as i1 from '@angular/common';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import { HttpClientModule } from '@angular/common/http';
4
4
  import * as i0 from '@angular/core';
5
- import { InjectionToken, Directive, Inject, Input, EventEmitter, HostBinding, Output, Component, ViewChild, Injectable, NgModule } from '@angular/core';
6
- import { isArray, isString, coerceNumberValue, isNumber, isEmpty, coerceBooleanProperty, coerceArray, humanizeBytes } from 'ngx-tethys/util';
5
+ import { InjectionToken, numberAttribute, Directive, Inject, Input, EventEmitter, HostBinding, Output, booleanAttribute, Component, ViewChild, Injectable, NgModule } from '@angular/core';
6
+ import { isArray, isString, isNumber, isEmpty, coerceArray, humanizeBytes } from 'ngx-tethys/util';
7
7
  import { Subject, fromEvent, Observable, from } from 'rxjs';
8
8
  import { takeUntil, tap, filter, mergeMap, map } from 'rxjs/operators';
9
- import { __decorate, __metadata } from 'tslib';
10
- import { InputBoolean, InputNumber } from 'ngx-tethys/core';
11
9
 
12
10
  const THY_UPLOAD_DEFAULT_OPTIONS = new InjectionToken('thy-uploader-default-options');
13
11
  const THY_UPLOAD_DEFAULT_OPTIONS_PROVIDER = {
@@ -132,7 +130,7 @@ function mimeTypeConvert(value) {
132
130
  */
133
131
  class FileSelectBaseDirective {
134
132
  set thySizeThreshold(value) {
135
- const sizeThreshold = coerceNumberValue(value);
133
+ const sizeThreshold = value;
136
134
  if (isNumber(sizeThreshold)) {
137
135
  this.sizeThreshold = sizeThreshold;
138
136
  }
@@ -182,7 +180,7 @@ class FileSelectBaseDirective {
182
180
  }
183
181
  }
184
182
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: FileSelectBaseDirective, deps: [{ token: i0.ElementRef }, { token: THY_UPLOAD_DEFAULT_OPTIONS }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); }
185
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.3", type: FileSelectBaseDirective, inputs: { thySizeThreshold: "thySizeThreshold", thySizeExceedsHandler: "thySizeExceedsHandler", thyAcceptType: "thyAcceptType" }, ngImport: i0 }); }
183
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.2.3", type: FileSelectBaseDirective, inputs: { thySizeThreshold: ["thySizeThreshold", "thySizeThreshold", numberAttribute], thySizeExceedsHandler: "thySizeExceedsHandler", thyAcceptType: "thyAcceptType" }, ngImport: i0 }); }
186
184
  }
187
185
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: FileSelectBaseDirective, decorators: [{
188
186
  type: Directive
@@ -190,7 +188,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
190
188
  type: Inject,
191
189
  args: [THY_UPLOAD_DEFAULT_OPTIONS]
192
190
  }] }, { type: i0.NgZone }], propDecorators: { thySizeThreshold: [{
193
- type: Input
191
+ type: Input,
192
+ args: [{ transform: numberAttribute }]
194
193
  }], thySizeExceedsHandler: [{
195
194
  type: Input
196
195
  }], thyAcceptType: [{
@@ -354,7 +353,7 @@ class ThyFileSelect extends FileSelectBaseDirective {
354
353
  * @default false
355
354
  */
356
355
  set thyMultiple(value) {
357
- this.multiple = coerceBooleanProperty(value);
356
+ this.multiple = value;
358
357
  if (this.multiple) {
359
358
  this.fileInput.nativeElement.setAttribute('multiple', '');
360
359
  }
@@ -363,7 +362,7 @@ class ThyFileSelect extends FileSelectBaseDirective {
363
362
  }
364
363
  }
365
364
  set thyAcceptFolder(value) {
366
- this.acceptFolder = coerceBooleanProperty(value);
365
+ this.acceptFolder = value;
367
366
  if (this.acceptFolder) {
368
367
  this.fileInput.nativeElement.setAttribute('webkitdirectory', '');
369
368
  }
@@ -410,23 +409,8 @@ class ThyFileSelect extends FileSelectBaseDirective {
410
409
  this.destroy$.next();
411
410
  }
412
411
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: ThyFileSelect, deps: [{ token: i0.ElementRef }, { token: THY_UPLOAD_DEFAULT_OPTIONS }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
413
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.3", type: ThyFileSelect, isStandalone: true, selector: "[thyFileSelect],thy-file-select", inputs: { thyMultiple: "thyMultiple", thyAcceptFolder: "thyAcceptFolder", thyAcceptType: "thyAcceptType", thySizeThreshold: "thySizeThreshold" }, outputs: { thyOnFileSelect: "thyOnFileSelect" }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\n<input\n style=\"width: 0; height: 0\"\n thyStopPropagation=\"true\"\n [hidden]=\"'true'\"\n #fileInput\n type=\"file\"\n (change)=\"selectFile($event)\"\n [attr.accept]=\"acceptType\"\n/>\n" }); }
412
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.2.3", type: ThyFileSelect, isStandalone: true, selector: "[thyFileSelect],thy-file-select", inputs: { thyMultiple: ["thyMultiple", "thyMultiple", booleanAttribute], thyAcceptFolder: ["thyAcceptFolder", "thyAcceptFolder", booleanAttribute], thyAcceptType: "thyAcceptType", thySizeThreshold: ["thySizeThreshold", "thySizeThreshold", numberAttribute] }, outputs: { thyOnFileSelect: "thyOnFileSelect" }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\n<input\n style=\"width: 0; height: 0\"\n thyStopPropagation=\"true\"\n [hidden]=\"'true'\"\n #fileInput\n type=\"file\"\n (change)=\"selectFile($event)\"\n [attr.accept]=\"acceptType\"\n/>\n" }); }
414
413
  }
415
- __decorate([
416
- InputBoolean(),
417
- __metadata("design:type", Boolean),
418
- __metadata("design:paramtypes", [Boolean])
419
- ], ThyFileSelect.prototype, "thyMultiple", null);
420
- __decorate([
421
- InputBoolean(),
422
- __metadata("design:type", Boolean),
423
- __metadata("design:paramtypes", [Boolean])
424
- ], ThyFileSelect.prototype, "thyAcceptFolder", null);
425
- __decorate([
426
- InputNumber(),
427
- __metadata("design:type", Number),
428
- __metadata("design:paramtypes", [Number])
429
- ], ThyFileSelect.prototype, "thySizeThreshold", null);
430
414
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: ThyFileSelect, decorators: [{
431
415
  type: Component,
432
416
  args: [{ selector: '[thyFileSelect],thy-file-select', standalone: true, template: "<ng-content></ng-content>\n<input\n style=\"width: 0; height: 0\"\n thyStopPropagation=\"true\"\n [hidden]=\"'true'\"\n #fileInput\n type=\"file\"\n (change)=\"selectFile($event)\"\n [attr.accept]=\"acceptType\"\n/>\n" }]
@@ -439,13 +423,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
439
423
  type: ViewChild,
440
424
  args: ['fileInput', { static: true }]
441
425
  }], thyMultiple: [{
442
- type: Input
426
+ type: Input,
427
+ args: [{ transform: booleanAttribute }]
443
428
  }], thyAcceptFolder: [{
444
- type: Input
429
+ type: Input,
430
+ args: [{ transform: booleanAttribute }]
445
431
  }], thyAcceptType: [{
446
432
  type: Input
447
433
  }], thySizeThreshold: [{
448
- type: Input
434
+ type: Input,
435
+ args: [{ transform: numberAttribute }]
449
436
  }] } });
450
437
 
451
438
  var ThyUploadStatus;