ngx-tethys 19.0.16 → 19.1.0-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (322) hide show
  1. package/CHANGELOG.md +31 -11
  2. package/README.md +0 -1
  3. package/action/action.component.d.ts +14 -23
  4. package/action/actions.component.d.ts +5 -7
  5. package/affix/affix.component.d.ts +9 -13
  6. package/alert/alert.component.d.ts +1 -1
  7. package/anchor/anchor-link.component.d.ts +8 -8
  8. package/anchor/anchor.component.d.ts +15 -21
  9. package/arrow-switcher/arrow-switcher.component.d.ts +15 -22
  10. package/autocomplete/autocomplete.component.d.ts +10 -17
  11. package/autocomplete/autocomplete.trigger.directive.d.ts +10 -18
  12. package/avatar/avatar-list/avatar-list.component.d.ts +8 -14
  13. package/avatar/avatar.component.d.ts +25 -39
  14. package/back-top/back-top.component.d.ts +9 -12
  15. package/badge/badge.component.d.ts +19 -59
  16. package/breadcrumb/breadcrumb.component.d.ts +15 -20
  17. package/button/button-group.component.d.ts +5 -12
  18. package/button/button-icon.component.d.ts +14 -27
  19. package/button/button.component.d.ts +17 -26
  20. package/calendar/calendar-header.component.d.ts +9 -8
  21. package/calendar/calendar.component.d.ts +16 -16
  22. package/card/card.component.d.ts +5 -11
  23. package/card/content.component.d.ts +3 -8
  24. package/card/header.component.d.ts +7 -8
  25. package/carousel/carousel.component.d.ts +22 -27
  26. package/cascader/cascader-li.component.d.ts +13 -21
  27. package/cascader/cascader-search-option.component.d.ts +8 -16
  28. package/cascader/cascader.component.d.ts +58 -80
  29. package/checkbox/checkbox.component.d.ts +2 -5
  30. package/collapse/collapse-item.component.d.ts +12 -19
  31. package/collapse/collapse.component.d.ts +6 -12
  32. package/collapse/collapse.token.d.ts +3 -3
  33. package/color-picker/color-picker-custom-panel.component.d.ts +5 -5
  34. package/color-picker/color-picker-panel.component.d.ts +7 -11
  35. package/color-picker/color-picker.component.d.ts +19 -35
  36. package/color-picker/parts/alpha/alpha.component.d.ts +8 -8
  37. package/color-picker/parts/hue/hue.component.d.ts +6 -6
  38. package/color-picker/parts/indicator/indicator.component.d.ts +4 -3
  39. package/color-picker/parts/inputs/inputs.component.d.ts +9 -9
  40. package/color-picker/parts/saturation/saturation.component.d.ts +9 -9
  41. package/comment/comment.component.d.ts +4 -5
  42. package/copy/copy.directive.d.ts +8 -9
  43. package/date-picker/abstract-picker.component.d.ts +8 -7
  44. package/date-picker/lib/calendar/calendar-footer.component.d.ts +2 -1
  45. package/date-picker/lib/popups/inner-popup.component.d.ts +2 -1
  46. package/date-picker/picker.component.d.ts +2 -1
  47. package/date-range/date-range.component.d.ts +2 -2
  48. package/dialog/body/dialog-body.component.d.ts +2 -6
  49. package/dialog/confirm/confirm.component.d.ts +2 -2
  50. package/dialog/footer/dialog-footer.component.d.ts +6 -9
  51. package/dialog/header/dialog-header.component.d.ts +9 -11
  52. package/divider/divider.component.d.ts +12 -16
  53. package/dot/dot.component.d.ts +5 -13
  54. package/drag-drop/drag-handle.directive.d.ts +2 -1
  55. package/drag-drop/drag.directive.d.ts +2 -1
  56. package/drag-drop/drop-container.directive.d.ts +2 -1
  57. package/dropdown/dropdown-active.directive.d.ts +4 -5
  58. package/dropdown/dropdown-menu-item.directive.d.ts +7 -14
  59. package/dropdown/dropdown-menu.component.d.ts +6 -12
  60. package/dropdown/dropdown-submenu.component.d.ts +2 -4
  61. package/dropdown/dropdown.directive.d.ts +14 -24
  62. package/empty/empty.component.d.ts +21 -27
  63. package/fesm2022/ngx-tethys-action.mjs +63 -101
  64. package/fesm2022/ngx-tethys-action.mjs.map +1 -1
  65. package/fesm2022/ngx-tethys-affix.mjs +40 -41
  66. package/fesm2022/ngx-tethys-affix.mjs.map +1 -1
  67. package/fesm2022/ngx-tethys-anchor.mjs +91 -118
  68. package/fesm2022/ngx-tethys-anchor.mjs.map +1 -1
  69. package/fesm2022/ngx-tethys-arrow-switcher.mjs +51 -77
  70. package/fesm2022/ngx-tethys-arrow-switcher.mjs.map +1 -1
  71. package/fesm2022/ngx-tethys-autocomplete.mjs +69 -103
  72. package/fesm2022/ngx-tethys-autocomplete.mjs.map +1 -1
  73. package/fesm2022/ngx-tethys-avatar.mjs +117 -162
  74. package/fesm2022/ngx-tethys-avatar.mjs.map +1 -1
  75. package/fesm2022/ngx-tethys-back-top.mjs +33 -46
  76. package/fesm2022/ngx-tethys-back-top.mjs.map +1 -1
  77. package/fesm2022/ngx-tethys-badge.mjs +104 -208
  78. package/fesm2022/ngx-tethys-badge.mjs.map +1 -1
  79. package/fesm2022/ngx-tethys-breadcrumb.mjs +66 -70
  80. package/fesm2022/ngx-tethys-breadcrumb.mjs.map +1 -1
  81. package/fesm2022/ngx-tethys-button.mjs +225 -322
  82. package/fesm2022/ngx-tethys-button.mjs.map +1 -1
  83. package/fesm2022/ngx-tethys-calendar.mjs +85 -87
  84. package/fesm2022/ngx-tethys-calendar.mjs.map +1 -1
  85. package/fesm2022/ngx-tethys-card.mjs +72 -77
  86. package/fesm2022/ngx-tethys-card.mjs.map +1 -1
  87. package/fesm2022/ngx-tethys-carousel.mjs +83 -99
  88. package/fesm2022/ngx-tethys-carousel.mjs.map +1 -1
  89. package/fesm2022/ngx-tethys-cascader.mjs +313 -468
  90. package/fesm2022/ngx-tethys-cascader.mjs.map +1 -1
  91. package/fesm2022/ngx-tethys-checkbox.mjs +10 -17
  92. package/fesm2022/ngx-tethys-checkbox.mjs.map +1 -1
  93. package/fesm2022/ngx-tethys-collapse.mjs +66 -71
  94. package/fesm2022/ngx-tethys-collapse.mjs.map +1 -1
  95. package/fesm2022/ngx-tethys-color-picker.mjs +187 -246
  96. package/fesm2022/ngx-tethys-color-picker.mjs.map +1 -1
  97. package/fesm2022/ngx-tethys-comment.mjs +16 -10
  98. package/fesm2022/ngx-tethys-comment.mjs.map +1 -1
  99. package/fesm2022/ngx-tethys-copy.mjs +25 -28
  100. package/fesm2022/ngx-tethys-copy.mjs.map +1 -1
  101. package/fesm2022/ngx-tethys-dialog.mjs +81 -82
  102. package/fesm2022/ngx-tethys-dialog.mjs.map +1 -1
  103. package/fesm2022/ngx-tethys-divider.mjs +49 -58
  104. package/fesm2022/ngx-tethys-divider.mjs.map +1 -1
  105. package/fesm2022/ngx-tethys-dot.mjs +45 -68
  106. package/fesm2022/ngx-tethys-dot.mjs.map +1 -1
  107. package/fesm2022/ngx-tethys-dropdown.mjs +155 -203
  108. package/fesm2022/ngx-tethys-dropdown.mjs.map +1 -1
  109. package/fesm2022/ngx-tethys-empty.mjs +107 -95
  110. package/fesm2022/ngx-tethys-empty.mjs.map +1 -1
  111. package/fesm2022/ngx-tethys-flexible-text.mjs +67 -86
  112. package/fesm2022/ngx-tethys-flexible-text.mjs.map +1 -1
  113. package/fesm2022/ngx-tethys-form.mjs +161 -200
  114. package/fesm2022/ngx-tethys-form.mjs.map +1 -1
  115. package/fesm2022/ngx-tethys-fullscreen.mjs +21 -23
  116. package/fesm2022/ngx-tethys-fullscreen.mjs.map +1 -1
  117. package/fesm2022/ngx-tethys-grid.mjs +161 -158
  118. package/fesm2022/ngx-tethys-grid.mjs.map +1 -1
  119. package/fesm2022/ngx-tethys-i18n.mjs +25 -25
  120. package/fesm2022/ngx-tethys-i18n.mjs.map +1 -1
  121. package/fesm2022/ngx-tethys-icon.mjs +44 -59
  122. package/fesm2022/ngx-tethys-icon.mjs.map +1 -1
  123. package/fesm2022/ngx-tethys-image.mjs +40 -36
  124. package/fesm2022/ngx-tethys-image.mjs.map +1 -1
  125. package/fesm2022/ngx-tethys-input-number.mjs +101 -114
  126. package/fesm2022/ngx-tethys-input-number.mjs.map +1 -1
  127. package/fesm2022/ngx-tethys-input.mjs +268 -271
  128. package/fesm2022/ngx-tethys-input.mjs.map +1 -1
  129. package/fesm2022/ngx-tethys-list.mjs +1 -1
  130. package/fesm2022/ngx-tethys-list.mjs.map +1 -1
  131. package/fesm2022/ngx-tethys-loading.mjs +17 -35
  132. package/fesm2022/ngx-tethys-loading.mjs.map +1 -1
  133. package/fesm2022/ngx-tethys-mention.mjs +52 -74
  134. package/fesm2022/ngx-tethys-mention.mjs.map +1 -1
  135. package/fesm2022/ngx-tethys-menu.mjs +106 -179
  136. package/fesm2022/ngx-tethys-menu.mjs.map +1 -1
  137. package/fesm2022/ngx-tethys-nav.mjs +169 -201
  138. package/fesm2022/ngx-tethys-nav.mjs.map +1 -1
  139. package/fesm2022/ngx-tethys-pagination.mjs +230 -294
  140. package/fesm2022/ngx-tethys-pagination.mjs.map +1 -1
  141. package/fesm2022/ngx-tethys-popover.mjs +67 -70
  142. package/fesm2022/ngx-tethys-popover.mjs.map +1 -1
  143. package/fesm2022/ngx-tethys-progress.mjs +194 -246
  144. package/fesm2022/ngx-tethys-progress.mjs.map +1 -1
  145. package/fesm2022/ngx-tethys-property.mjs +99 -113
  146. package/fesm2022/ngx-tethys-property.mjs.map +1 -1
  147. package/fesm2022/ngx-tethys-radio.mjs +60 -76
  148. package/fesm2022/ngx-tethys-radio.mjs.map +1 -1
  149. package/fesm2022/ngx-tethys-rate.mjs +115 -157
  150. package/fesm2022/ngx-tethys-rate.mjs.map +1 -1
  151. package/fesm2022/ngx-tethys-resizable.mjs +111 -157
  152. package/fesm2022/ngx-tethys-resizable.mjs.map +1 -1
  153. package/fesm2022/ngx-tethys-result.mjs +46 -28
  154. package/fesm2022/ngx-tethys-result.mjs.map +1 -1
  155. package/fesm2022/ngx-tethys-segment.mjs +84 -103
  156. package/fesm2022/ngx-tethys-segment.mjs.map +1 -1
  157. package/fesm2022/ngx-tethys-skeleton.mjs +339 -342
  158. package/fesm2022/ngx-tethys-skeleton.mjs.map +1 -1
  159. package/fesm2022/ngx-tethys-slide.mjs +37 -56
  160. package/fesm2022/ngx-tethys-slide.mjs.map +1 -1
  161. package/fesm2022/ngx-tethys-slider.mjs +75 -108
  162. package/fesm2022/ngx-tethys-slider.mjs.map +1 -1
  163. package/fesm2022/ngx-tethys-space.mjs +25 -51
  164. package/fesm2022/ngx-tethys-space.mjs.map +1 -1
  165. package/fesm2022/ngx-tethys-statistic.mjs +114 -151
  166. package/fesm2022/ngx-tethys-statistic.mjs.map +1 -1
  167. package/fesm2022/ngx-tethys-stepper.mjs +74 -107
  168. package/fesm2022/ngx-tethys-stepper.mjs.map +1 -1
  169. package/fesm2022/ngx-tethys-strength.mjs +52 -66
  170. package/fesm2022/ngx-tethys-strength.mjs.map +1 -1
  171. package/fesm2022/ngx-tethys-switch.mjs +80 -140
  172. package/fesm2022/ngx-tethys-switch.mjs.map +1 -1
  173. package/fesm2022/ngx-tethys-table.mjs +1 -1
  174. package/fesm2022/ngx-tethys-table.mjs.map +1 -1
  175. package/fesm2022/ngx-tethys-tabs.mjs +69 -87
  176. package/fesm2022/ngx-tethys-tabs.mjs.map +1 -1
  177. package/fesm2022/ngx-tethys-tag.mjs +42 -64
  178. package/fesm2022/ngx-tethys-tag.mjs.map +1 -1
  179. package/fesm2022/ngx-tethys-timeline.mjs +104 -129
  180. package/fesm2022/ngx-tethys-timeline.mjs.map +1 -1
  181. package/fesm2022/ngx-tethys-transfer.mjs +98 -119
  182. package/fesm2022/ngx-tethys-transfer.mjs.map +1 -1
  183. package/fesm2022/ngx-tethys-tree-select.mjs +2 -4
  184. package/fesm2022/ngx-tethys-tree-select.mjs.map +1 -1
  185. package/fesm2022/ngx-tethys-tree.mjs +281 -401
  186. package/fesm2022/ngx-tethys-tree.mjs.map +1 -1
  187. package/fesm2022/ngx-tethys-typography.mjs +36 -33
  188. package/fesm2022/ngx-tethys-typography.mjs.map +1 -1
  189. package/fesm2022/ngx-tethys-upload.mjs +93 -132
  190. package/fesm2022/ngx-tethys-upload.mjs.map +1 -1
  191. package/fesm2022/ngx-tethys-util.mjs.map +1 -1
  192. package/fesm2022/ngx-tethys-vote.mjs +53 -99
  193. package/fesm2022/ngx-tethys-vote.mjs.map +1 -1
  194. package/fesm2022/ngx-tethys-watermark.mjs +36 -40
  195. package/fesm2022/ngx-tethys-watermark.mjs.map +1 -1
  196. package/fesm2022/ngx-tethys.mjs +1 -1
  197. package/fesm2022/ngx-tethys.mjs.map +1 -1
  198. package/flexible-text/flexible-text.component.d.ts +9 -15
  199. package/form/form-group-error/form-group-error.component.d.ts +2 -3
  200. package/form/form-group-label.directive.d.ts +2 -1
  201. package/form/form-group.component.d.ts +17 -24
  202. package/form/form-submit.directive.d.ts +2 -2
  203. package/form/form.directive.d.ts +6 -8
  204. package/form/from-group-footer/form-group-footer.component.d.ts +2 -2
  205. package/form/validator/confirm-validator.directive.d.ts +2 -2
  206. package/form/validator/unique-validator.directive.d.ts +2 -2
  207. package/fullscreen/fullscreen.component.d.ts +7 -7
  208. package/grid/flex.d.ts +13 -20
  209. package/grid/thy-col.directive.d.ts +6 -9
  210. package/grid/thy-grid-item.component.d.ts +3 -4
  211. package/grid/thy-grid.component.d.ts +11 -12
  212. package/grid/thy-row.directive.d.ts +11 -14
  213. package/icon/icon.component.d.ts +10 -17
  214. package/image/image.directive.d.ts +10 -12
  215. package/image/image.token.d.ts +5 -5
  216. package/input/input-count.component.d.ts +4 -5
  217. package/input/input-group.component.d.ts +20 -20
  218. package/input/input-search.component.d.ts +15 -20
  219. package/input/input.component.d.ts +20 -21
  220. package/input/input.directive.d.ts +4 -6
  221. package/input-number/input-number.component.d.ts +21 -29
  222. package/layout/header.component.d.ts +4 -9
  223. package/layout/sidebar-header.component.d.ts +2 -1
  224. package/layout/sidebar.component.d.ts +8 -7
  225. package/list/list.component.d.ts +2 -1
  226. package/list/selection/selection-list.d.ts +4 -3
  227. package/loading/loading.component.d.ts +4 -10
  228. package/mention/mention.directive.d.ts +6 -7
  229. package/mention/suggestions/suggestions.component.d.ts +8 -9
  230. package/menu/group/menu-group.component.d.ts +16 -33
  231. package/menu/item/action/menu-item-action.component.d.ts +7 -8
  232. package/menu/item/icon/menu-item-icon.component.d.ts +2 -2
  233. package/menu/item/menu-item.component.d.ts +4 -4
  234. package/menu/item/name/menu-item-name.component.d.ts +2 -3
  235. package/menu/menu.component.d.ts +3 -7
  236. package/nav/icon-nav/icon-nav-link.directive.d.ts +3 -7
  237. package/nav/icon-nav/icon-nav.component.d.ts +3 -8
  238. package/nav/nav-ink-bar.directive.d.ts +4 -6
  239. package/nav/nav-item.directive.d.ts +7 -10
  240. package/nav/nav.component.d.ts +20 -48
  241. package/package.json +1 -1
  242. package/pagination/pagination.component.d.ts +48 -109
  243. package/popover/header/popover-header.component.d.ts +7 -6
  244. package/popover/popover.directive.d.ts +11 -18
  245. package/progress/progress-circle.component.d.ts +35 -26
  246. package/progress/progress-strip.component.d.ts +10 -14
  247. package/progress/progress.component.d.ts +16 -26
  248. package/property/examples/single/single.component.scss +6 -0
  249. package/property/properties.component.d.ts +6 -15
  250. package/property/property-item.component.d.ts +22 -34
  251. package/property/styles/properties.scss +124 -52
  252. package/property-operation/property-operation.component.d.ts +6 -5
  253. package/radio/button/radio-button.component.d.ts +2 -2
  254. package/radio/group/radio-group.component.d.ts +13 -16
  255. package/radio/radio.component.d.ts +2 -2
  256. package/radio/radio.token.d.ts +2 -2
  257. package/rate/rate-item.component.d.ts +8 -10
  258. package/rate/rate.component.d.ts +20 -30
  259. package/resizable/resizable.directive.d.ts +18 -36
  260. package/resizable/resize-handle.component.d.ts +6 -6
  261. package/resizable/resize-handles.component.d.ts +5 -8
  262. package/result/result.component.d.ts +9 -10
  263. package/schematics/version.d.ts +1 -1
  264. package/schematics/version.js +1 -1
  265. package/segment/segment-item.component.d.ts +9 -14
  266. package/segment/segment.component.d.ts +11 -14
  267. package/segment/segment.token.d.ts +4 -3
  268. package/select/custom-select/custom-select.component.d.ts +11 -10
  269. package/select/native-select/native-select.component.d.ts +2 -1
  270. package/shared/base-form-check.component.d.ts +3 -2
  271. package/shared/directives/thy-autofocus.directive.d.ts +3 -2
  272. package/shared/directives/thy-scroll.directive.d.ts +2 -1
  273. package/shared/directives/thy-show.d.ts +2 -1
  274. package/shared/option/group/option-group.component.d.ts +2 -1
  275. package/shared/option/list-option/list-option.component.d.ts +2 -7
  276. package/shared/option/option.component.d.ts +2 -1
  277. package/shared/select/select-control/select-control.component.d.ts +7 -6
  278. package/skeleton/skeleton-circle.component.d.ts +16 -19
  279. package/skeleton/skeleton-rectangle.component.d.ts +20 -23
  280. package/skeleton/skeleton.component.d.ts +5 -6
  281. package/skeleton/stylized/bullet-list.component.d.ts +11 -13
  282. package/skeleton/stylized/list.component.d.ts +10 -12
  283. package/skeleton/stylized/paragraph.component.d.ts +12 -14
  284. package/slide/slide-body/slide-body-section.component.d.ts +2 -5
  285. package/slide/slide-header/slide-header.component.d.ts +6 -9
  286. package/slider/slider.component.d.ts +17 -24
  287. package/space/space.component.d.ts +10 -16
  288. package/statistic/statistic.component.d.ts +35 -40
  289. package/stepper/step-header.component.d.ts +6 -10
  290. package/stepper/step.component.d.ts +6 -6
  291. package/stepper/stepper.component.d.ts +15 -20
  292. package/strength/strength.component.d.ts +8 -13
  293. package/switch/switch.component.d.ts +24 -35
  294. package/table/table-column.component.d.ts +6 -5
  295. package/table/table-skeleton.component.d.ts +3 -10
  296. package/table/table.component.d.ts +11 -10
  297. package/tabs/tab-content.component.d.ts +4 -4
  298. package/tabs/tab.component.d.ts +4 -5
  299. package/tabs/tabs.component.d.ts +13 -15
  300. package/tag/tag.component.d.ts +10 -16
  301. package/time-picker/time-picker-panel.component.d.ts +3 -2
  302. package/time-picker/time-picker.component.d.ts +6 -5
  303. package/timeline/timeline-item.component.d.ts +9 -13
  304. package/timeline/timeline.component.d.ts +13 -17
  305. package/tooltip/tooltip.directive.d.ts +3 -2
  306. package/transfer/transfer-list.component.d.ts +15 -15
  307. package/transfer/transfer.component.d.ts +20 -23
  308. package/tree/tree-abstract.d.ts +5 -5
  309. package/tree/tree-node.component.d.ts +24 -46
  310. package/tree/tree.class.d.ts +4 -4
  311. package/tree/tree.component.d.ts +47 -74
  312. package/tree/tree.service.d.ts +3 -4
  313. package/tree-select/tree-select.component.d.ts +10 -9
  314. package/typography/bg-color.directive.d.ts +3 -3
  315. package/typography/text/text.component.d.ts +2 -2
  316. package/typography/text-color.directive.d.ts +3 -3
  317. package/upload/file-drop.directive.d.ts +9 -11
  318. package/upload/file-select-base.d.ts +6 -10
  319. package/upload/file-select.component.d.ts +10 -20
  320. package/util/helpers/helpers.d.ts +2 -1
  321. package/vote/vote.component.d.ts +13 -32
  322. package/watermark/watermark.directive.d.ts +7 -9
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, IterableDiffers, EventEmitter, HostBinding, Output, Input, ViewEncapsulation, Component, ContentChild, NgModule } from '@angular/core';
2
+ import { inject, IterableDiffers, input, numberAttribute, output, ViewEncapsulation, Component, contentChild, computed, effect, NgModule } from '@angular/core';
3
3
  import { ThyFlexibleText, ThyFlexibleTextModule } from 'ngx-tethys/flexible-text';
4
4
  import { ThyIcon, ThyIconModule } from 'ngx-tethys/icon';
5
5
  import { NgClass, NgTemplateOutlet, CommonModule } from '@angular/common';
@@ -7,6 +7,7 @@ import { moveItemInArray, transferArrayItem, CdkDropListGroup, CdkDropList, CdkD
7
7
  import { ThyList, ThyListItem, ThyListModule } from 'ngx-tethys/list';
8
8
  import { ThyDragDropDirective, ThySharedModule } from 'ngx-tethys/shared';
9
9
  import { injectLocale } from 'ngx-tethys/i18n';
10
+ import { coerceBooleanProperty } from 'ngx-tethys/util';
10
11
  import { ThyButtonModule } from 'ngx-tethys/button';
11
12
 
12
13
  var TransferDirection;
@@ -24,12 +25,20 @@ class ThyTransferList {
24
25
  this.lockItems = [];
25
26
  this.unlockItems = [];
26
27
  this.locale = injectLocale('transfer');
27
- this.draggableUpdate = new EventEmitter();
28
- this.selectItem = new EventEmitter();
29
- this.unselectItem = new EventEmitter();
30
- this.hostClass = 'thy-transfer-list';
28
+ this.title = input();
29
+ this.items = input();
30
+ this.draggable = input(false, { transform: coerceBooleanProperty });
31
+ this.canLock = input(false, { transform: coerceBooleanProperty });
32
+ this.maxLock = input(undefined, { transform: numberAttribute });
33
+ this.max = input(undefined, { transform: numberAttribute });
34
+ this.disabled = input(false, { transform: coerceBooleanProperty });
35
+ this.template = input();
36
+ this.renderContentRef = input();
37
+ this.draggableUpdate = output();
38
+ this.selectItem = output();
39
+ this.unselectItem = output();
31
40
  this.lockListEnterPredicate = () => {
32
- return this.lockItems.length < this.maxLock;
41
+ return this.lockItems.length < this.maxLock();
33
42
  };
34
43
  this.unlockListEnterPredicate = (event) => {
35
44
  return !event.data.isFixed;
@@ -43,20 +52,20 @@ class ThyTransferList {
43
52
  }
44
53
  ngOnInit() {
45
54
  this._combineTransferData();
46
- if (this.canLock) {
55
+ if (this.canLock()) {
47
56
  this._lockDiff = this.differs.find(this.lockItems).create();
48
57
  this._unlockDiff = this.differs.find(this.unlockItems).create();
49
58
  }
50
59
  else {
51
60
  this._unlockDiff = this.differs.find(this.unlockItems).create();
52
61
  }
53
- this._diff = this.differs.find(this.items).create();
62
+ this._diff = this.differs.find(this.items()).create();
54
63
  }
55
64
  _combineTransferData() {
56
65
  this.lockItems = [];
57
66
  this.unlockItems = [];
58
- if (this.canLock) {
59
- (this.items || []).forEach(item => {
67
+ if (this.canLock()) {
68
+ (this.items() || []).forEach(item => {
60
69
  if (item.isLock) {
61
70
  this.lockItems.push(item);
62
71
  }
@@ -66,7 +75,7 @@ class ThyTransferList {
66
75
  });
67
76
  }
68
77
  else {
69
- this.unlockItems = this.items;
78
+ this.unlockItems = this.items();
70
79
  }
71
80
  }
72
81
  _afterChangeItems(changes, items) {
@@ -86,9 +95,9 @@ class ThyTransferList {
86
95
  });
87
96
  }
88
97
  ngDoCheck() {
89
- const changes = this._diff.diff(this.items);
98
+ const changes = this._diff.diff(this.items());
90
99
  if (changes) {
91
- this._afterChangeItems(changes, this.items);
100
+ this._afterChangeItems(changes, this.items());
92
101
  this._combineTransferData();
93
102
  }
94
103
  if (this._lockDiff) {
@@ -127,40 +136,14 @@ class ThyTransferList {
127
136
  });
128
137
  }
129
138
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyTransferList, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
130
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.8", type: ThyTransferList, isStandalone: true, selector: "thy-transfer-list", inputs: { title: "title", items: "items", draggable: "draggable", canLock: "canLock", maxLock: "maxLock", max: "max", disabled: "disabled", template: "template", contentRef: ["renderContentRef", "contentRef"] }, outputs: { draggableUpdate: "draggableUpdate", selectItem: "selectItem", unselectItem: "unselectItem" }, host: { properties: { "class": "this.hostClass" } }, ngImport: i0, template: "<div class=\"thy-transfer-list-header\">\n <span class=\"thy-transfer-list-header-title\"\n >{{ title }} \u00B7 {{ items?.length }}\n @if (max) {\n <span>{{ locale().maxLimit.replace('{max}', max) }}</span>\n }\n </span>\n</div>\n@if (!contentRef) {\n <div class=\"thy-transfer-list-body\" cdkDropListGroup [cdkDropListGroupDisabled]=\"!draggable\">\n @if (canLock) {\n <div class=\"thy-transfer-list-group-name\">{{ locale().maxLockLimit.replace('{maxLock}', maxLock) }}</div>\n <thy-list\n class=\"thy-transfer-list-content\"\n cdkDropList\n thyDragDrop\n id=\"lock\"\n [cdkDropListData]=\"lockItems\"\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListEnterPredicate]=\"lockListEnterPredicate\">\n @if (lockItems.length === 0) {\n <div class=\"cdk-drop-list-empty\"></div>\n }\n @for (item of lockItems; track $index) {\n <thy-list-item\n class=\"thy-transfer-list-content-item text-truncate\"\n cdkDrag\n [cdkDragData]=\"item\"\n [ngClass]=\"{ active: item.checked }\">\n <ng-template [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </thy-list-item>\n }\n </thy-list>\n <div class=\"thy-transfer-list-group-name\">{{ locale().unlocked }}</div>\n }\n <thy-list\n class=\"thy-transfer-list-content\"\n cdkDropList\n thyDragDrop\n [cdkDropListDisabled]=\"!draggable\"\n id=\"unlock\"\n [cdkDropListData]=\"unlockItems\"\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListEnterPredicate]=\"unlockListEnterPredicate\">\n @if (unlockItems.length === 0) {\n <div class=\"cdk-drop-list-empty\"></div>\n }\n @for (item of unlockItems; track $index) {\n <thy-list-item\n class=\"thy-transfer-list-content-item text-truncate\"\n cdkDrag\n [cdkDragData]=\"item\"\n [ngClass]=\"{ active: item.checked, disabled: disabled && item.direction === 'left' }\">\n <ng-template [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </thy-list-item>\n }\n </thy-list>\n </div>\n} @else {\n <div class=\"thy-transfer-list-body\">\n <ng-container\n *ngTemplateOutlet=\"\n contentRef;\n context: {\n $implicit: items,\n onSelectItem: onSelectItem,\n onUnselectItem: onUnselectItem\n }\n \"></ng-container>\n </div>\n}\n", dependencies: [{ kind: "directive", type: CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { kind: "component", type: ThyList, selector: "thy-list", inputs: ["thyDivided"] }, { kind: "directive", type: CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: ThyDragDropDirective, selector: "[thyDragDrop]" }, { kind: "component", type: ThyListItem, selector: "thy-list-item,[thy-list-item]" }, { kind: "directive", type: CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], encapsulation: i0.ViewEncapsulation.None }); }
139
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.8", type: ThyTransferList, isStandalone: true, selector: "thy-transfer-list", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, draggable: { classPropertyName: "draggable", publicName: "draggable", isSignal: true, isRequired: false, transformFunction: null }, canLock: { classPropertyName: "canLock", publicName: "canLock", isSignal: true, isRequired: false, transformFunction: null }, maxLock: { classPropertyName: "maxLock", publicName: "maxLock", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, template: { classPropertyName: "template", publicName: "template", isSignal: true, isRequired: false, transformFunction: null }, renderContentRef: { classPropertyName: "renderContentRef", publicName: "renderContentRef", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { draggableUpdate: "draggableUpdate", selectItem: "selectItem", unselectItem: "unselectItem" }, host: { classAttribute: "thy-transfer-list" }, ngImport: i0, template: "<div class=\"thy-transfer-list-header\">\n <span class=\"thy-transfer-list-header-title\"\n >{{ title() }} \u00B7 {{ items()?.length }}\n @if (max()) {\n <span>{{ locale().maxLimit.replace('{max}', max()?.toString() ?? '') }}</span>\n }\n </span>\n</div>\n@if (!renderContentRef()) {\n <div class=\"thy-transfer-list-body\" cdkDropListGroup [cdkDropListGroupDisabled]=\"!draggable()\">\n @if (canLock()) {\n <div class=\"thy-transfer-list-group-name\">{{ locale().maxLockLimit.replace('{maxLock}', maxLock()?.toString() ?? '') }}</div>\n <thy-list\n class=\"thy-transfer-list-content\"\n cdkDropList\n thyDragDrop\n id=\"lock\"\n [cdkDropListData]=\"lockItems\"\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListEnterPredicate]=\"lockListEnterPredicate\">\n @if (lockItems.length === 0) {\n <div class=\"cdk-drop-list-empty\"></div>\n }\n @for (item of lockItems; track $index) {\n <thy-list-item\n class=\"thy-transfer-list-content-item text-truncate\"\n cdkDrag\n [cdkDragData]=\"item\"\n [ngClass]=\"{ active: item.checked }\">\n <ng-template [ngTemplateOutlet]=\"template()\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </thy-list-item>\n }\n </thy-list>\n <div class=\"thy-transfer-list-group-name\">{{ locale().unlocked }}</div>\n }\n <thy-list\n class=\"thy-transfer-list-content\"\n cdkDropList\n thyDragDrop\n [cdkDropListDisabled]=\"!draggable()\"\n id=\"unlock\"\n [cdkDropListData]=\"unlockItems\"\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListEnterPredicate]=\"unlockListEnterPredicate\">\n @if (unlockItems.length === 0) {\n <div class=\"cdk-drop-list-empty\"></div>\n }\n @for (item of unlockItems; track $index) {\n <thy-list-item\n class=\"thy-transfer-list-content-item text-truncate\"\n cdkDrag\n [cdkDragData]=\"item\"\n [ngClass]=\"{ active: item.checked, disabled: disabled() && item.direction === 'left' }\">\n <ng-template [ngTemplateOutlet]=\"template()\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </thy-list-item>\n }\n </thy-list>\n </div>\n} @else {\n <div class=\"thy-transfer-list-body\">\n <ng-container\n *ngTemplateOutlet=\"\n renderContentRef();\n context: {\n $implicit: items(),\n onSelectItem: onSelectItem,\n onUnselectItem: onUnselectItem\n }\n \"></ng-container>\n </div>\n}\n", dependencies: [{ kind: "directive", type: CdkDropListGroup, selector: "[cdkDropListGroup]", inputs: ["cdkDropListGroupDisabled"], exportAs: ["cdkDropListGroup"] }, { kind: "component", type: ThyList, selector: "thy-list", inputs: ["thyDivided"] }, { kind: "directive", type: CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: ThyDragDropDirective, selector: "[thyDragDrop]" }, { kind: "component", type: ThyListItem, selector: "thy-list-item,[thy-list-item]" }, { kind: "directive", type: CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], encapsulation: i0.ViewEncapsulation.None }); }
131
140
  }
132
141
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyTransferList, decorators: [{
133
142
  type: Component,
134
- args: [{ selector: 'thy-transfer-list', encapsulation: ViewEncapsulation.None, imports: [CdkDropListGroup, ThyList, CdkDropList, ThyDragDropDirective, ThyListItem, CdkDrag, NgClass, NgTemplateOutlet], template: "<div class=\"thy-transfer-list-header\">\n <span class=\"thy-transfer-list-header-title\"\n >{{ title }} \u00B7 {{ items?.length }}\n @if (max) {\n <span>{{ locale().maxLimit.replace('{max}', max) }}</span>\n }\n </span>\n</div>\n@if (!contentRef) {\n <div class=\"thy-transfer-list-body\" cdkDropListGroup [cdkDropListGroupDisabled]=\"!draggable\">\n @if (canLock) {\n <div class=\"thy-transfer-list-group-name\">{{ locale().maxLockLimit.replace('{maxLock}', maxLock) }}</div>\n <thy-list\n class=\"thy-transfer-list-content\"\n cdkDropList\n thyDragDrop\n id=\"lock\"\n [cdkDropListData]=\"lockItems\"\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListEnterPredicate]=\"lockListEnterPredicate\">\n @if (lockItems.length === 0) {\n <div class=\"cdk-drop-list-empty\"></div>\n }\n @for (item of lockItems; track $index) {\n <thy-list-item\n class=\"thy-transfer-list-content-item text-truncate\"\n cdkDrag\n [cdkDragData]=\"item\"\n [ngClass]=\"{ active: item.checked }\">\n <ng-template [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </thy-list-item>\n }\n </thy-list>\n <div class=\"thy-transfer-list-group-name\">{{ locale().unlocked }}</div>\n }\n <thy-list\n class=\"thy-transfer-list-content\"\n cdkDropList\n thyDragDrop\n [cdkDropListDisabled]=\"!draggable\"\n id=\"unlock\"\n [cdkDropListData]=\"unlockItems\"\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListEnterPredicate]=\"unlockListEnterPredicate\">\n @if (unlockItems.length === 0) {\n <div class=\"cdk-drop-list-empty\"></div>\n }\n @for (item of unlockItems; track $index) {\n <thy-list-item\n class=\"thy-transfer-list-content-item text-truncate\"\n cdkDrag\n [cdkDragData]=\"item\"\n [ngClass]=\"{ active: item.checked, disabled: disabled && item.direction === 'left' }\">\n <ng-template [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </thy-list-item>\n }\n </thy-list>\n </div>\n} @else {\n <div class=\"thy-transfer-list-body\">\n <ng-container\n *ngTemplateOutlet=\"\n contentRef;\n context: {\n $implicit: items,\n onSelectItem: onSelectItem,\n onUnselectItem: onUnselectItem\n }\n \"></ng-container>\n </div>\n}\n" }]
135
- }], propDecorators: { title: [{
136
- type: Input
137
- }], items: [{
138
- type: Input
139
- }], draggable: [{
140
- type: Input
141
- }], canLock: [{
142
- type: Input
143
- }], maxLock: [{
144
- type: Input
145
- }], max: [{
146
- type: Input
147
- }], disabled: [{
148
- type: Input
149
- }], template: [{
150
- type: Input
151
- }], contentRef: [{
152
- type: Input,
153
- args: ['renderContentRef']
154
- }], draggableUpdate: [{
155
- type: Output
156
- }], selectItem: [{
157
- type: Output
158
- }], unselectItem: [{
159
- type: Output
160
- }], hostClass: [{
161
- type: HostBinding,
162
- args: ['class']
163
- }] } });
143
+ args: [{ selector: 'thy-transfer-list', host: {
144
+ class: 'thy-transfer-list'
145
+ }, encapsulation: ViewEncapsulation.None, imports: [CdkDropListGroup, ThyList, CdkDropList, ThyDragDropDirective, ThyListItem, CdkDrag, NgClass, NgTemplateOutlet], template: "<div class=\"thy-transfer-list-header\">\n <span class=\"thy-transfer-list-header-title\"\n >{{ title() }} \u00B7 {{ items()?.length }}\n @if (max()) {\n <span>{{ locale().maxLimit.replace('{max}', max()?.toString() ?? '') }}</span>\n }\n </span>\n</div>\n@if (!renderContentRef()) {\n <div class=\"thy-transfer-list-body\" cdkDropListGroup [cdkDropListGroupDisabled]=\"!draggable()\">\n @if (canLock()) {\n <div class=\"thy-transfer-list-group-name\">{{ locale().maxLockLimit.replace('{maxLock}', maxLock()?.toString() ?? '') }}</div>\n <thy-list\n class=\"thy-transfer-list-content\"\n cdkDropList\n thyDragDrop\n id=\"lock\"\n [cdkDropListData]=\"lockItems\"\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListEnterPredicate]=\"lockListEnterPredicate\">\n @if (lockItems.length === 0) {\n <div class=\"cdk-drop-list-empty\"></div>\n }\n @for (item of lockItems; track $index) {\n <thy-list-item\n class=\"thy-transfer-list-content-item text-truncate\"\n cdkDrag\n [cdkDragData]=\"item\"\n [ngClass]=\"{ active: item.checked }\">\n <ng-template [ngTemplateOutlet]=\"template()\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </thy-list-item>\n }\n </thy-list>\n <div class=\"thy-transfer-list-group-name\">{{ locale().unlocked }}</div>\n }\n <thy-list\n class=\"thy-transfer-list-content\"\n cdkDropList\n thyDragDrop\n [cdkDropListDisabled]=\"!draggable()\"\n id=\"unlock\"\n [cdkDropListData]=\"unlockItems\"\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListEnterPredicate]=\"unlockListEnterPredicate\">\n @if (unlockItems.length === 0) {\n <div class=\"cdk-drop-list-empty\"></div>\n }\n @for (item of unlockItems; track $index) {\n <thy-list-item\n class=\"thy-transfer-list-content-item text-truncate\"\n cdkDrag\n [cdkDragData]=\"item\"\n [ngClass]=\"{ active: item.checked, disabled: disabled() && item.direction === 'left' }\">\n <ng-template [ngTemplateOutlet]=\"template()\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </thy-list-item>\n }\n </thy-list>\n </div>\n} @else {\n <div class=\"thy-transfer-list-body\">\n <ng-container\n *ngTemplateOutlet=\"\n renderContentRef();\n context: {\n $implicit: items(),\n onSelectItem: onSelectItem,\n onUnselectItem: onUnselectItem\n }\n \"></ng-container>\n </div>\n}\n" }]
146
+ }], ctorParameters: () => [] });
164
147
 
165
148
  /**
166
149
  * 穿梭框组件
@@ -169,54 +152,84 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
169
152
  */
170
153
  class ThyTransfer {
171
154
  constructor() {
172
- this.hostClass = 'thy-transfer';
173
155
  this.leftDataSource = [];
174
156
  this.rightDataSource = [];
175
- this.allDataSource = [];
176
- this.rightDraggable = false;
177
- this._autoMove = true;
157
+ /**
158
+ * 数据源
159
+ * @type ThyTransferItem[]
160
+ */
161
+ this.thyData = input([]);
162
+ this.thyRenderLeftTemplateRef = input();
163
+ this.thyRenderRightTemplateRef = input();
164
+ /**
165
+ * title集合,title[0]为左标题,title[1]为右标题
166
+ * @type string[]
167
+ */
168
+ this.thyTitles = input([]);
169
+ /**
170
+ * 右侧列表是否可以锁定
171
+ * @default false
172
+ */
173
+ this.thyRightCanLock = input(false, { transform: coerceBooleanProperty });
174
+ /**
175
+ * 右侧锁定最大数量
176
+ */
177
+ this.thyRightLockMax = input(undefined, { transform: numberAttribute });
178
+ /**
179
+ * 右侧选择最大数量
180
+ */
181
+ this.thyRightMax = input(undefined, { transform: numberAttribute });
182
+ /**
183
+ * 设置是否自动移动
184
+ * @description.en-us Currently not implemented, in order to support the selections move
185
+ * @default true
186
+ */
187
+ this.thyAutoMove = input(true, { transform: coerceBooleanProperty });
188
+ /**
189
+ * 左侧列表是否拖动
190
+ * @default false
191
+ */
192
+ this.thyLeftDraggable = input(false, { transform: coerceBooleanProperty });
193
+ /**
194
+ * 右侧列表是否拖动
195
+ * @default false
196
+ */
197
+ this.thyRightDraggable = input(false, { transform: coerceBooleanProperty });
178
198
  /**
179
199
  * @type EventEmitter<ThyTransferDragEvent>
180
200
  */
181
- this.thyDraggableUpdate = new EventEmitter();
201
+ this.thyDraggableUpdate = output();
182
202
  /**
183
203
  * Transfer变化的回调事件
184
204
  * @type EventEmitter<ThyTransferChangeEvent>
185
205
  */
186
- this.thyChange = new EventEmitter();
187
- }
188
- /**
189
- * 数据源
190
- * @type ThyTransferItem[]
191
- */
192
- set thyData(value) {
193
- if (value) {
194
- this.initializeTransferData(value);
195
- }
196
- }
197
- /**
198
- * title集合,title[0]为左标题,title[1]为右标题
199
- * @type string[]
200
- */
201
- set thyTitles(value) {
202
- this.leftTitle = value[0] || '';
203
- this.rightTitle = value[1] || '';
204
- }
205
- /**
206
- * 设置是否自动移动
207
- * @description.en-us Currently not implemented, in order to support the selections move
208
- * @default true
209
- */
210
- set thyAutoMove(value) {
211
- this._autoMove = value;
206
+ this.thyChange = output();
207
+ /**
208
+ * 设置自定义Item渲染数据模板
209
+ * @type TemplateRef
210
+ */
211
+ this.templateRef = contentChild('renderTemplate');
212
+ /**
213
+ * 设置自定义左侧内容模板
214
+ * @type TemplateRef
215
+ */
216
+ this.leftContentRef = contentChild('renderLeftTemplate');
217
+ /**
218
+ * 设置自定义右侧内容模板
219
+ * @type TemplateRef
220
+ */
221
+ this.rightContentRef = contentChild('renderRightTemplate');
222
+ this.leftTitle = computed(() => this.thyTitles()[0] || '');
223
+ this.rightTitle = computed(() => this.thyTitles()[1] || '');
224
+ effect(() => {
225
+ this.initializeTransferData();
226
+ });
212
227
  }
213
228
  ngOnInit() { }
214
229
  initializeTransferData(data = []) {
215
- this.allDataSource = [];
216
230
  this.leftDataSource = [];
217
231
  this.rightDataSource = [];
218
- data.forEach(item => {
219
- this.allDataSource.push(item);
232
+ this.thyData().forEach(item => {
220
233
  if (item.direction === TransferDirection.left) {
221
234
  this.leftDataSource.push(item);
222
235
  }
@@ -229,12 +242,12 @@ class ThyTransfer {
229
242
  if (event.item.isFixed) {
230
243
  return;
231
244
  }
232
- if (this.thyRightMax <= this.rightDataSource.length && from === TransferDirection.left) {
245
+ if (this.thyRightMax() <= this.rightDataSource.length && from === TransferDirection.left) {
233
246
  return;
234
247
  }
235
248
  const to = from === TransferDirection.left ? TransferDirection.right : TransferDirection.left;
236
249
  event.item.checked = !event.item.checked;
237
- if (this._autoMove) {
250
+ if (this.thyAutoMove()) {
238
251
  this.onMove(to);
239
252
  }
240
253
  }
@@ -292,48 +305,14 @@ class ThyTransfer {
292
305
  : [...otherListData.lock, ...otherListData.unlock];
293
306
  }
294
307
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyTransfer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
295
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.8", type: ThyTransfer, isStandalone: true, selector: "thy-transfer", inputs: { thyData: "thyData", thyrenderLeftTemplateRef: "thyrenderLeftTemplateRef", thyrenderRightTemplateRef: "thyrenderRightTemplateRef", thyTitles: "thyTitles", thyRightCanLock: "thyRightCanLock", thyRightLockMax: "thyRightLockMax", thyRightMax: "thyRightMax", thyAutoMove: "thyAutoMove", thyLeftDraggable: "thyLeftDraggable", thyRightDraggable: "thyRightDraggable" }, outputs: { thyDraggableUpdate: "thyDraggableUpdate", thyChange: "thyChange" }, host: { properties: { "class": "this.hostClass" } }, queries: [{ propertyName: "templateRef", first: true, predicate: ["renderTemplate"], descendants: true }, { propertyName: "leftContentRef", first: true, predicate: ["renderLeftTemplate"], descendants: true }, { propertyName: "rightContentRef", first: true, predicate: ["renderRightTemplate"], descendants: true }], ngImport: i0, template: "<thy-transfer-list\n [items]=\"allDataSource\"\n [title]=\"leftTitle\"\n [draggable]=\"thyLeftDraggable\"\n [disabled]=\"thyRightMax <= rightDataSource.length\"\n [renderContentRef]=\"leftContentRef\"\n (draggableUpdate)=\"onDragUpdate('left', $event)\"\n [template]=\"leftTemplateRef\"\n (selectItem)=\"selectItem($event)\"\n (unselectItem)=\"unselectItem($event)\"\n >\n <ng-template #leftTemplateRef let-item>\n <div (click)=\"onSelect(item.direction === 'left' ? 'left' : 'right', { item: item })\" class=\"list-item-content\">\n @if (thyLeftDraggable) {\n <thy-icon thyIconName=\"drag\" class=\"drag-handle\"></thy-icon>\n }\n <div class=\"item-name\" [ngClass]=\"{ 'un-select-item': item.direction !== 'right' }\">\n <ng-template [ngTemplateOutlet]=\"thyTransferListItem\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </div>\n @if (item.direction === 'right') {\n <thy-icon class=\"text-primary item-status\" thyIconName=\"check\"></thy-icon>\n }\n </div>\n </ng-template>\n</thy-transfer-list>\n\n<div class=\"thy-transfer-operation\">\n <div class=\"thy-transfer-operation-body\">\n <thy-icon thyIconName=\"angle-right\" class=\"operation-link\"></thy-icon>\n <br />\n <thy-icon thyIconName=\"angle-left\" class=\"operation-link\"></thy-icon>\n </div>\n</div>\n\n<thy-transfer-list\n [items]=\"rightDataSource\"\n [title]=\"rightTitle\"\n [draggable]=\"thyRightDraggable\"\n (draggableUpdate)=\"onDragUpdate('right', $event)\"\n [canLock]=\"thyRightCanLock\"\n [maxLock]=\"thyRightLockMax\"\n [max]=\"thyRightMax\"\n [template]=\"rightTemplateRef\"\n [renderContentRef]=\"rightContentRef\"\n (selectItem)=\"selectItem($event)\"\n (unselectItem)=\"unselectItem($event)\"\n >\n <ng-template #rightTemplateRef let-item>\n @if (thyRightDraggable) {\n <thy-icon thyIconName=\"drag\" class=\"drag-handle\"></thy-icon>\n }\n <div class=\"item-name\">\n <ng-template [ngTemplateOutlet]=\"thyTransferListItem\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </div>\n @if (item.direction === 'right' && !item.isFixed) {\n <a class=\"link-secondary\" (click)=\"onSelect('right', { item: item })\">\n <thy-icon class=\"item-status\" thyIconName=\"close\"></thy-icon>\n </a>\n }\n </ng-template>\n</thy-transfer-list>\n\n<ng-template #thyTransferListItem let-item>\n @if (templateRef) {\n <ng-template [ngTemplateOutlet]=\"templateRef\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n }\n @if (!templateRef) {\n <thy-flexible-text [thyTooltipContent]=\"item.title\">\n {{ item.title }}\n </thy-flexible-text>\n }\n</ng-template>\n", dependencies: [{ kind: "component", type: ThyTransferList, selector: "thy-transfer-list", inputs: ["title", "items", "draggable", "canLock", "maxLock", "max", "disabled", "template", "renderContentRef"], outputs: ["draggableUpdate", "selectItem", "unselectItem"] }, { kind: "component", type: ThyIcon, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ThyFlexibleText, selector: "thy-flexible-text,[thyFlexibleText]", inputs: ["thyTooltipTrigger", "thyContainerClass", "thyTooltipContent", "thyTooltipPlacement", "thyTooltipOffset"], exportAs: ["thyFlexibleText"] }], encapsulation: i0.ViewEncapsulation.None }); }
308
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.8", type: ThyTransfer, isStandalone: true, selector: "thy-transfer", inputs: { thyData: { classPropertyName: "thyData", publicName: "thyData", isSignal: true, isRequired: false, transformFunction: null }, thyRenderLeftTemplateRef: { classPropertyName: "thyRenderLeftTemplateRef", publicName: "thyRenderLeftTemplateRef", isSignal: true, isRequired: false, transformFunction: null }, thyRenderRightTemplateRef: { classPropertyName: "thyRenderRightTemplateRef", publicName: "thyRenderRightTemplateRef", isSignal: true, isRequired: false, transformFunction: null }, thyTitles: { classPropertyName: "thyTitles", publicName: "thyTitles", isSignal: true, isRequired: false, transformFunction: null }, thyRightCanLock: { classPropertyName: "thyRightCanLock", publicName: "thyRightCanLock", isSignal: true, isRequired: false, transformFunction: null }, thyRightLockMax: { classPropertyName: "thyRightLockMax", publicName: "thyRightLockMax", isSignal: true, isRequired: false, transformFunction: null }, thyRightMax: { classPropertyName: "thyRightMax", publicName: "thyRightMax", isSignal: true, isRequired: false, transformFunction: null }, thyAutoMove: { classPropertyName: "thyAutoMove", publicName: "thyAutoMove", isSignal: true, isRequired: false, transformFunction: null }, thyLeftDraggable: { classPropertyName: "thyLeftDraggable", publicName: "thyLeftDraggable", isSignal: true, isRequired: false, transformFunction: null }, thyRightDraggable: { classPropertyName: "thyRightDraggable", publicName: "thyRightDraggable", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { thyDraggableUpdate: "thyDraggableUpdate", thyChange: "thyChange" }, host: { classAttribute: "thy-transfer" }, queries: [{ propertyName: "templateRef", first: true, predicate: ["renderTemplate"], descendants: true, isSignal: true }, { propertyName: "leftContentRef", first: true, predicate: ["renderLeftTemplate"], descendants: true, isSignal: true }, { propertyName: "rightContentRef", first: true, predicate: ["renderRightTemplate"], descendants: true, isSignal: true }], ngImport: i0, template: "<thy-transfer-list\n [items]=\"thyData()\"\n [title]=\"leftTitle()\"\n [draggable]=\"thyLeftDraggable()\"\n [disabled]=\"thyRightMax() <= rightDataSource.length\"\n [renderContentRef]=\"leftContentRef()\"\n (draggableUpdate)=\"onDragUpdate('left', $event)\"\n [template]=\"leftTemplateRef\"\n (selectItem)=\"selectItem($event)\"\n (unselectItem)=\"unselectItem($event)\">\n <ng-template #leftTemplateRef let-item>\n <div (click)=\"onSelect(item.direction === 'left' ? 'left' : 'right', { item: item })\" class=\"list-item-content\">\n @if (thyLeftDraggable()) {\n <thy-icon thyIconName=\"drag\" class=\"drag-handle\"></thy-icon>\n }\n <div class=\"item-name\" [ngClass]=\"{ 'un-select-item': item.direction !== 'right' }\">\n <ng-template [ngTemplateOutlet]=\"thyTransferListItem\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </div>\n @if (item.direction === 'right') {\n <thy-icon class=\"text-primary item-status\" thyIconName=\"check\"></thy-icon>\n }\n </div>\n </ng-template>\n</thy-transfer-list>\n\n<div class=\"thy-transfer-operation\">\n <div class=\"thy-transfer-operation-body\">\n <thy-icon thyIconName=\"angle-right\" class=\"operation-link\"></thy-icon>\n <br />\n <thy-icon thyIconName=\"angle-left\" class=\"operation-link\"></thy-icon>\n </div>\n</div>\n\n<thy-transfer-list\n [items]=\"rightDataSource\"\n [title]=\"rightTitle()\"\n [draggable]=\"thyRightDraggable()\"\n (draggableUpdate)=\"onDragUpdate('right', $event)\"\n [canLock]=\"thyRightCanLock()\"\n [maxLock]=\"thyRightLockMax()\"\n [max]=\"thyRightMax()\"\n [template]=\"rightTemplateRef\"\n [renderContentRef]=\"rightContentRef()\"\n (selectItem)=\"selectItem($event)\"\n (unselectItem)=\"unselectItem($event)\">\n <ng-template #rightTemplateRef let-item>\n @if (thyRightDraggable()) {\n <thy-icon thyIconName=\"drag\" class=\"drag-handle\"></thy-icon>\n }\n <div class=\"item-name\">\n <ng-template [ngTemplateOutlet]=\"thyTransferListItem\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </div>\n @if (item.direction === 'right' && !item.isFixed) {\n <a class=\"link-secondary\" (click)=\"onSelect('right', { item: item })\">\n <thy-icon class=\"item-status\" thyIconName=\"close\"></thy-icon>\n </a>\n }\n </ng-template>\n</thy-transfer-list>\n\n<ng-template #thyTransferListItem let-item>\n @if (templateRef()) {\n <ng-template [ngTemplateOutlet]=\"templateRef()\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n }\n @if (!templateRef()) {\n <thy-flexible-text [thyTooltipContent]=\"item.title\">\n {{ item.title }}\n </thy-flexible-text>\n }\n</ng-template>\n", dependencies: [{ kind: "component", type: ThyTransferList, selector: "thy-transfer-list", inputs: ["title", "items", "draggable", "canLock", "maxLock", "max", "disabled", "template", "renderContentRef"], outputs: ["draggableUpdate", "selectItem", "unselectItem"] }, { kind: "component", type: ThyIcon, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ThyFlexibleText, selector: "thy-flexible-text,[thyFlexibleText]", inputs: ["thyTooltipTrigger", "thyContainerClass", "thyTooltipContent", "thyTooltipPlacement", "thyTooltipOffset"], exportAs: ["thyFlexibleText"] }], encapsulation: i0.ViewEncapsulation.None }); }
296
309
  }
297
310
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyTransfer, decorators: [{
298
311
  type: Component,
299
- args: [{ selector: 'thy-transfer', encapsulation: ViewEncapsulation.None, imports: [ThyTransferList, ThyIcon, NgClass, NgTemplateOutlet, ThyFlexibleText], template: "<thy-transfer-list\n [items]=\"allDataSource\"\n [title]=\"leftTitle\"\n [draggable]=\"thyLeftDraggable\"\n [disabled]=\"thyRightMax <= rightDataSource.length\"\n [renderContentRef]=\"leftContentRef\"\n (draggableUpdate)=\"onDragUpdate('left', $event)\"\n [template]=\"leftTemplateRef\"\n (selectItem)=\"selectItem($event)\"\n (unselectItem)=\"unselectItem($event)\"\n >\n <ng-template #leftTemplateRef let-item>\n <div (click)=\"onSelect(item.direction === 'left' ? 'left' : 'right', { item: item })\" class=\"list-item-content\">\n @if (thyLeftDraggable) {\n <thy-icon thyIconName=\"drag\" class=\"drag-handle\"></thy-icon>\n }\n <div class=\"item-name\" [ngClass]=\"{ 'un-select-item': item.direction !== 'right' }\">\n <ng-template [ngTemplateOutlet]=\"thyTransferListItem\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </div>\n @if (item.direction === 'right') {\n <thy-icon class=\"text-primary item-status\" thyIconName=\"check\"></thy-icon>\n }\n </div>\n </ng-template>\n</thy-transfer-list>\n\n<div class=\"thy-transfer-operation\">\n <div class=\"thy-transfer-operation-body\">\n <thy-icon thyIconName=\"angle-right\" class=\"operation-link\"></thy-icon>\n <br />\n <thy-icon thyIconName=\"angle-left\" class=\"operation-link\"></thy-icon>\n </div>\n</div>\n\n<thy-transfer-list\n [items]=\"rightDataSource\"\n [title]=\"rightTitle\"\n [draggable]=\"thyRightDraggable\"\n (draggableUpdate)=\"onDragUpdate('right', $event)\"\n [canLock]=\"thyRightCanLock\"\n [maxLock]=\"thyRightLockMax\"\n [max]=\"thyRightMax\"\n [template]=\"rightTemplateRef\"\n [renderContentRef]=\"rightContentRef\"\n (selectItem)=\"selectItem($event)\"\n (unselectItem)=\"unselectItem($event)\"\n >\n <ng-template #rightTemplateRef let-item>\n @if (thyRightDraggable) {\n <thy-icon thyIconName=\"drag\" class=\"drag-handle\"></thy-icon>\n }\n <div class=\"item-name\">\n <ng-template [ngTemplateOutlet]=\"thyTransferListItem\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </div>\n @if (item.direction === 'right' && !item.isFixed) {\n <a class=\"link-secondary\" (click)=\"onSelect('right', { item: item })\">\n <thy-icon class=\"item-status\" thyIconName=\"close\"></thy-icon>\n </a>\n }\n </ng-template>\n</thy-transfer-list>\n\n<ng-template #thyTransferListItem let-item>\n @if (templateRef) {\n <ng-template [ngTemplateOutlet]=\"templateRef\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n }\n @if (!templateRef) {\n <thy-flexible-text [thyTooltipContent]=\"item.title\">\n {{ item.title }}\n </thy-flexible-text>\n }\n</ng-template>\n" }]
300
- }], propDecorators: { hostClass: [{
301
- type: HostBinding,
302
- args: ['class']
303
- }], thyData: [{
304
- type: Input
305
- }], thyrenderLeftTemplateRef: [{
306
- type: Input
307
- }], thyrenderRightTemplateRef: [{
308
- type: Input
309
- }], thyTitles: [{
310
- type: Input
311
- }], thyRightCanLock: [{
312
- type: Input
313
- }], thyRightLockMax: [{
314
- type: Input
315
- }], thyRightMax: [{
316
- type: Input
317
- }], thyAutoMove: [{
318
- type: Input
319
- }], thyLeftDraggable: [{
320
- type: Input
321
- }], thyRightDraggable: [{
322
- type: Input
323
- }], thyDraggableUpdate: [{
324
- type: Output
325
- }], thyChange: [{
326
- type: Output
327
- }], templateRef: [{
328
- type: ContentChild,
329
- args: ['renderTemplate']
330
- }], leftContentRef: [{
331
- type: ContentChild,
332
- args: ['renderLeftTemplate']
333
- }], rightContentRef: [{
334
- type: ContentChild,
335
- args: ['renderRightTemplate']
336
- }] } });
312
+ args: [{ selector: 'thy-transfer', host: {
313
+ class: 'thy-transfer'
314
+ }, encapsulation: ViewEncapsulation.None, imports: [ThyTransferList, ThyIcon, NgClass, NgTemplateOutlet, ThyFlexibleText], template: "<thy-transfer-list\n [items]=\"thyData()\"\n [title]=\"leftTitle()\"\n [draggable]=\"thyLeftDraggable()\"\n [disabled]=\"thyRightMax() <= rightDataSource.length\"\n [renderContentRef]=\"leftContentRef()\"\n (draggableUpdate)=\"onDragUpdate('left', $event)\"\n [template]=\"leftTemplateRef\"\n (selectItem)=\"selectItem($event)\"\n (unselectItem)=\"unselectItem($event)\">\n <ng-template #leftTemplateRef let-item>\n <div (click)=\"onSelect(item.direction === 'left' ? 'left' : 'right', { item: item })\" class=\"list-item-content\">\n @if (thyLeftDraggable()) {\n <thy-icon thyIconName=\"drag\" class=\"drag-handle\"></thy-icon>\n }\n <div class=\"item-name\" [ngClass]=\"{ 'un-select-item': item.direction !== 'right' }\">\n <ng-template [ngTemplateOutlet]=\"thyTransferListItem\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </div>\n @if (item.direction === 'right') {\n <thy-icon class=\"text-primary item-status\" thyIconName=\"check\"></thy-icon>\n }\n </div>\n </ng-template>\n</thy-transfer-list>\n\n<div class=\"thy-transfer-operation\">\n <div class=\"thy-transfer-operation-body\">\n <thy-icon thyIconName=\"angle-right\" class=\"operation-link\"></thy-icon>\n <br />\n <thy-icon thyIconName=\"angle-left\" class=\"operation-link\"></thy-icon>\n </div>\n</div>\n\n<thy-transfer-list\n [items]=\"rightDataSource\"\n [title]=\"rightTitle()\"\n [draggable]=\"thyRightDraggable()\"\n (draggableUpdate)=\"onDragUpdate('right', $event)\"\n [canLock]=\"thyRightCanLock()\"\n [maxLock]=\"thyRightLockMax()\"\n [max]=\"thyRightMax()\"\n [template]=\"rightTemplateRef\"\n [renderContentRef]=\"rightContentRef()\"\n (selectItem)=\"selectItem($event)\"\n (unselectItem)=\"unselectItem($event)\">\n <ng-template #rightTemplateRef let-item>\n @if (thyRightDraggable()) {\n <thy-icon thyIconName=\"drag\" class=\"drag-handle\"></thy-icon>\n }\n <div class=\"item-name\">\n <ng-template [ngTemplateOutlet]=\"thyTransferListItem\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </div>\n @if (item.direction === 'right' && !item.isFixed) {\n <a class=\"link-secondary\" (click)=\"onSelect('right', { item: item })\">\n <thy-icon class=\"item-status\" thyIconName=\"close\"></thy-icon>\n </a>\n }\n </ng-template>\n</thy-transfer-list>\n\n<ng-template #thyTransferListItem let-item>\n @if (templateRef()) {\n <ng-template [ngTemplateOutlet]=\"templateRef()\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n }\n @if (!templateRef()) {\n <thy-flexible-text [thyTooltipContent]=\"item.title\">\n {{ item.title }}\n </thy-flexible-text>\n }\n</ng-template>\n" }]
315
+ }], ctorParameters: () => [] });
337
316
 
338
317
  class ThyTransferModule {
339
318
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyTransferModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-tethys-transfer.mjs","sources":["../../../src/transfer/transfer.interface.ts","../../../src/transfer/transfer-list.component.ts","../../../src/transfer/transfer-list.component.html","../../../src/transfer/transfer.component.ts","../../../src/transfer/transfer.component.html","../../../src/transfer/transfer.module.ts","../../../src/transfer/ngx-tethys-transfer.ts"],"sourcesContent":["export type Direction = 'left' | 'right';\n\nexport enum TransferDirection {\n left = 'left',\n right = 'right'\n}\n\nexport interface ThyTransferData {\n source: ThyTransferModel;\n target: ThyTransferModel;\n}\n\nexport interface ThyTransferModel {\n title?: string;\n data: Array<any>;\n}\n\n/**\n * @public\n * @order 20\n */\nexport interface ThyTransferItem {\n /**\n * 数据标题\n */\n title: string;\n\n /**\n * 设置方向,可选值 [left,right]\n */\n direction?: Direction;\n\n order?: number;\n\n disabled?: boolean;\n\n /**\n * 选中状态\n */\n checked?: boolean;\n\n isLock?: boolean;\n\n groupId?: string;\n\n isFixed?: boolean;\n\n /**\n * 自定义数据\n */\n [key: string]: any;\n}\n\nexport interface ThyTransferSelectEvent {\n item: ThyTransferItem;\n}\n\nexport interface ThyTransferChangeEvent {\n from?: string;\n to?: string;\n items?: ThyTransferItem[];\n left?: InnerTransferList;\n right?: InnerTransferList;\n}\n\nexport interface ThyTransferDragEvent {\n oldIndex?: number;\n newIndex?: number;\n model?: ThyTransferItem;\n models?: ThyTransferItem[];\n left?: InnerTransferList;\n right?: InnerTransferList;\n}\n\nexport interface InnerTransferDragEvent {\n dragEvent?: ThyTransferDragEvent;\n listData?: InnerTransferList;\n}\n\nexport interface InnerTransferList {\n lock?: ThyTransferItem[];\n unlock?: ThyTransferItem[];\n}\n","import { CdkDrag, CdkDragDrop, CdkDropList, CdkDropListGroup, moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';\nimport {\n Component,\n DoCheck,\n EventEmitter,\n HostBinding,\n Input,\n IterableChanges,\n IterableDiffer,\n IterableDiffers,\n OnInit,\n Output,\n Signal,\n TemplateRef,\n ViewEncapsulation,\n inject\n} from '@angular/core';\n\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { ThyList, ThyListItem } from 'ngx-tethys/list';\nimport { ThyDragDropDirective } from 'ngx-tethys/shared';\nimport { InnerTransferDragEvent, ThyTransferDragEvent, ThyTransferItem, ThyTransferSelectEvent } from './transfer.interface';\nimport { injectLocale, ThyTransferLocale } from 'ngx-tethys/i18n';\n\n/**\n * @private\n */\n@Component({\n selector: 'thy-transfer-list',\n templateUrl: './transfer-list.component.html',\n encapsulation: ViewEncapsulation.None,\n imports: [CdkDropListGroup, ThyList, CdkDropList, ThyDragDropDirective, ThyListItem, CdkDrag, NgClass, NgTemplateOutlet]\n})\nexport class ThyTransferList implements OnInit, DoCheck {\n private differs = inject(IterableDiffers);\n\n public lockItems: ThyTransferItem[] = [];\n\n public unlockItems: ThyTransferItem[] = [];\n\n private _diff: IterableDiffer<ThyTransferItem>;\n\n private _lockDiff: IterableDiffer<ThyTransferItem>;\n\n private _unlockDiff: IterableDiffer<ThyTransferItem>;\n\n locale: Signal<ThyTransferLocale> = injectLocale('transfer');\n\n @Input() title: string;\n\n @Input() items: ThyTransferItem[];\n\n @Input() draggable: boolean;\n\n @Input() canLock: boolean;\n\n @Input() maxLock: number;\n\n @Input() max: number;\n\n @Input() disabled: boolean;\n\n @Input() template: TemplateRef<any>;\n\n @Input('renderContentRef') contentRef: TemplateRef<any>;\n\n @Output() draggableUpdate: EventEmitter<InnerTransferDragEvent> = new EventEmitter<InnerTransferDragEvent>();\n\n @Output() selectItem: EventEmitter<ThyTransferSelectEvent> = new EventEmitter<ThyTransferSelectEvent>();\n\n @Output() unselectItem: EventEmitter<ThyTransferSelectEvent> = new EventEmitter<ThyTransferSelectEvent>();\n\n @HostBinding('class') hostClass = 'thy-transfer-list';\n\n ngOnInit() {\n this._combineTransferData();\n if (this.canLock) {\n this._lockDiff = this.differs.find(this.lockItems).create();\n this._unlockDiff = this.differs.find(this.unlockItems).create();\n } else {\n this._unlockDiff = this.differs.find(this.unlockItems).create();\n }\n this._diff = this.differs.find(this.items).create();\n }\n\n private _combineTransferData() {\n this.lockItems = [];\n this.unlockItems = [];\n if (this.canLock) {\n (this.items || []).forEach(item => {\n if (item.isLock) {\n this.lockItems.push(item);\n } else {\n this.unlockItems.push(item);\n }\n });\n } else {\n this.unlockItems = this.items;\n }\n }\n\n private _afterChangeItems(changes: IterableChanges<ThyTransferItem>, items: ThyTransferItem[]) {\n // 数据发生变化时,更改order值\n changes.forEachAddedItem(record => {\n record.item.order = record.currentIndex;\n });\n changes.forEachRemovedItem(() => {\n items.forEach((item, index) => {\n item.order = index;\n });\n });\n changes.forEachMovedItem(() => {\n items.forEach((item, index) => {\n item.order = index;\n });\n });\n }\n\n ngDoCheck() {\n const changes = this._diff.diff(this.items);\n if (changes) {\n this._afterChangeItems(changes, this.items);\n this._combineTransferData();\n }\n if (this._lockDiff) {\n const lockChanges = this._lockDiff.diff(this.lockItems);\n if (lockChanges) {\n this._afterChangeItems(lockChanges, this.lockItems);\n }\n }\n const unlockChanges = this._unlockDiff.diff(this.unlockItems);\n if (unlockChanges) {\n this._afterChangeItems(unlockChanges, this.unlockItems);\n }\n }\n\n lockListEnterPredicate = () => {\n return this.lockItems.length < this.maxLock;\n };\n\n unlockListEnterPredicate = (event: CdkDrag<ThyTransferItem>) => {\n return !event.data.isFixed;\n };\n\n onSelectItem = (item: ThyTransferItem) => {\n this.selectItem.emit({ item });\n };\n\n onUnselectItem = (item: ThyTransferItem) => {\n this.unselectItem.emit({ item });\n };\n\n drop(event: CdkDragDrop<ThyTransferItem[]>) {\n if (event.previousContainer === event.container) {\n moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\n } else {\n transferArrayItem(event.previousContainer.data, event.container.data, event.previousIndex, event.currentIndex);\n (event.previousContainer.data || []).forEach(item => {\n item.isLock = event.previousContainer.id === 'lock';\n });\n\n (event.container.data || []).forEach(item => {\n item.isLock = event.container.id === 'lock';\n });\n }\n const dragEvent: ThyTransferDragEvent = {\n model: event.item.data,\n models: event.container.data,\n oldIndex: event.previousIndex,\n newIndex: event.currentIndex\n };\n this.draggableUpdate.emit({\n dragEvent: dragEvent,\n listData: { lock: this.lockItems, unlock: this.unlockItems }\n });\n }\n}\n","<div class=\"thy-transfer-list-header\">\n <span class=\"thy-transfer-list-header-title\"\n >{{ title }} · {{ items?.length }}\n @if (max) {\n <span>{{ locale().maxLimit.replace('{max}', max) }}</span>\n }\n </span>\n</div>\n@if (!contentRef) {\n <div class=\"thy-transfer-list-body\" cdkDropListGroup [cdkDropListGroupDisabled]=\"!draggable\">\n @if (canLock) {\n <div class=\"thy-transfer-list-group-name\">{{ locale().maxLockLimit.replace('{maxLock}', maxLock) }}</div>\n <thy-list\n class=\"thy-transfer-list-content\"\n cdkDropList\n thyDragDrop\n id=\"lock\"\n [cdkDropListData]=\"lockItems\"\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListEnterPredicate]=\"lockListEnterPredicate\">\n @if (lockItems.length === 0) {\n <div class=\"cdk-drop-list-empty\"></div>\n }\n @for (item of lockItems; track $index) {\n <thy-list-item\n class=\"thy-transfer-list-content-item text-truncate\"\n cdkDrag\n [cdkDragData]=\"item\"\n [ngClass]=\"{ active: item.checked }\">\n <ng-template [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </thy-list-item>\n }\n </thy-list>\n <div class=\"thy-transfer-list-group-name\">{{ locale().unlocked }}</div>\n }\n <thy-list\n class=\"thy-transfer-list-content\"\n cdkDropList\n thyDragDrop\n [cdkDropListDisabled]=\"!draggable\"\n id=\"unlock\"\n [cdkDropListData]=\"unlockItems\"\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListEnterPredicate]=\"unlockListEnterPredicate\">\n @if (unlockItems.length === 0) {\n <div class=\"cdk-drop-list-empty\"></div>\n }\n @for (item of unlockItems; track $index) {\n <thy-list-item\n class=\"thy-transfer-list-content-item text-truncate\"\n cdkDrag\n [cdkDragData]=\"item\"\n [ngClass]=\"{ active: item.checked, disabled: disabled && item.direction === 'left' }\">\n <ng-template [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </thy-list-item>\n }\n </thy-list>\n </div>\n} @else {\n <div class=\"thy-transfer-list-body\">\n <ng-container\n *ngTemplateOutlet=\"\n contentRef;\n context: {\n $implicit: items,\n onSelectItem: onSelectItem,\n onUnselectItem: onUnselectItem\n }\n \"></ng-container>\n </div>\n}\n","import { Component, ContentChild, EventEmitter, HostBinding, Input, OnInit, Output, TemplateRef, ViewEncapsulation } from '@angular/core';\n\nimport {\n Direction,\n InnerTransferDragEvent,\n ThyTransferChangeEvent,\n ThyTransferDragEvent,\n ThyTransferItem,\n ThyTransferSelectEvent,\n TransferDirection\n} from './transfer.interface';\nimport { ThyFlexibleText } from 'ngx-tethys/flexible-text';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { ThyTransferList } from './transfer-list.component';\n\n/**\n * 穿梭框组件\n * @name thy-transfer\n * @order 10\n */\n@Component({\n selector: 'thy-transfer',\n templateUrl: './transfer.component.html',\n encapsulation: ViewEncapsulation.None,\n imports: [ThyTransferList, ThyIcon, NgClass, NgTemplateOutlet, ThyFlexibleText]\n})\nexport class ThyTransfer implements OnInit {\n @HostBinding('class') hostClass = 'thy-transfer';\n\n public leftDataSource: ThyTransferItem[] = [];\n\n public rightDataSource: ThyTransferItem[] = [];\n\n public allDataSource: ThyTransferItem[] = [];\n\n public leftTitle: string;\n\n public rightTitle: string;\n\n public rightDraggable = false;\n\n private _autoMove = true;\n\n /**\n * 数据源\n * @type ThyTransferItem[]\n */\n @Input()\n set thyData(value: ThyTransferItem[]) {\n if (value) {\n this.initializeTransferData(value);\n }\n }\n\n @Input() thyrenderLeftTemplateRef: TemplateRef<any>;\n\n @Input() thyrenderRightTemplateRef: TemplateRef<any>;\n\n /**\n * title集合,title[0]为左标题,title[1]为右标题\n * @type string[]\n */\n @Input()\n set thyTitles(value: string[]) {\n this.leftTitle = value[0] || '';\n this.rightTitle = value[1] || '';\n }\n\n /**\n * 右侧列表是否可以锁定\n * @default false\n */\n @Input() thyRightCanLock: boolean;\n\n /**\n * 右侧锁定最大数量\n */\n @Input() thyRightLockMax: number;\n\n /**\n * 右侧选择最大数量\n */\n @Input() thyRightMax: number;\n\n /**\n * 设置是否自动移动\n * @description.en-us Currently not implemented, in order to support the selections move\n * @default true\n */\n @Input()\n set thyAutoMove(value: boolean) {\n this._autoMove = value;\n }\n\n /**\n * 左侧列表是否拖动\n * @default false\n */\n @Input() thyLeftDraggable: boolean;\n\n /**\n * 右侧列表是否拖动\n * @default false\n */\n @Input() thyRightDraggable: boolean;\n\n /**\n * @type EventEmitter<ThyTransferDragEvent>\n */\n @Output() thyDraggableUpdate: EventEmitter<ThyTransferDragEvent> = new EventEmitter<ThyTransferDragEvent>();\n\n /**\n * Transfer变化的回调事件\n * @type EventEmitter<ThyTransferChangeEvent>\n */\n @Output() thyChange: EventEmitter<ThyTransferChangeEvent> = new EventEmitter<ThyTransferChangeEvent>();\n\n /**\n * 设置自定义Item渲染数据模板\n * @type TemplateRef\n */\n @ContentChild('renderTemplate') templateRef: TemplateRef<any>;\n\n /**\n * 设置自定义左侧内容模板\n * @type TemplateRef\n */\n @ContentChild('renderLeftTemplate') leftContentRef: TemplateRef<any>;\n\n /**\n * 设置自定义右侧内容模板\n * @type TemplateRef\n */\n @ContentChild('renderRightTemplate') rightContentRef: TemplateRef<any>;\n\n ngOnInit() {}\n\n initializeTransferData(data: ThyTransferItem[] = []) {\n this.allDataSource = [];\n this.leftDataSource = [];\n this.rightDataSource = [];\n data.forEach(item => {\n this.allDataSource.push(item);\n if (item.direction === TransferDirection.left) {\n this.leftDataSource.push(item);\n }\n if (item.direction === TransferDirection.right) {\n this.rightDataSource.push(item);\n }\n });\n }\n\n onSelect(from: Direction, event: ThyTransferSelectEvent) {\n if (event.item.isFixed) {\n return;\n }\n if (this.thyRightMax <= this.rightDataSource.length && from === TransferDirection.left) {\n return;\n }\n const to = from === TransferDirection.left ? TransferDirection.right : TransferDirection.left;\n event.item.checked = !event.item.checked;\n if (this._autoMove) {\n this.onMove(to);\n }\n }\n\n selectItem(event: ThyTransferSelectEvent) {\n this.onSelect(TransferDirection.left, event);\n }\n\n unselectItem(event: ThyTransferSelectEvent) {\n this.onSelect(TransferDirection.right, event);\n }\n\n private groupListByIsLock(list: ThyTransferItem[] = []) {\n const lock: ThyTransferItem[] = [],\n unlock: ThyTransferItem[] = [];\n list.forEach(item => {\n if (item.isLock) {\n lock.push(item);\n } else {\n unlock.push(item);\n }\n });\n return { lock: lock, unlock: unlock };\n }\n\n onMove(to: Direction) {\n const fromDataSource = to === TransferDirection.right ? this.leftDataSource : this.rightDataSource;\n const toDataSource = to === TransferDirection.right ? this.rightDataSource : this.leftDataSource;\n const selections = fromDataSource.filter(item => item.checked);\n const changeEvent: ThyTransferChangeEvent = {\n from: to === TransferDirection.right ? TransferDirection.left : TransferDirection.right,\n to: to,\n items: [...selections]\n };\n selections.forEach(item => {\n const index = fromDataSource.indexOf(item);\n const removed = fromDataSource.splice(index, 1)[0];\n removed.checked = !removed.checked;\n removed.direction = to;\n toDataSource.push(removed);\n });\n this.thyChange.emit({\n ...changeEvent,\n left: this.groupListByIsLock(this.leftDataSource),\n right: this.groupListByIsLock(this.rightDataSource)\n });\n }\n\n onDragUpdate(direction: Direction, event: InnerTransferDragEvent) {\n const otherDirectionData = direction === TransferDirection.left ? this.rightDataSource : this.leftDataSource;\n const otherListData = this.groupListByIsLock(otherDirectionData);\n this.thyDraggableUpdate.emit({\n ...event.dragEvent,\n left: direction === TransferDirection.left ? event.listData : otherListData,\n right: direction === TransferDirection.right ? event.listData : otherListData\n });\n\n this.rightDataSource =\n direction === TransferDirection.right\n ? [...event.listData.lock, ...event.listData.unlock]\n : [...otherListData.lock, ...otherListData.unlock];\n }\n}\n","<thy-transfer-list\n [items]=\"allDataSource\"\n [title]=\"leftTitle\"\n [draggable]=\"thyLeftDraggable\"\n [disabled]=\"thyRightMax <= rightDataSource.length\"\n [renderContentRef]=\"leftContentRef\"\n (draggableUpdate)=\"onDragUpdate('left', $event)\"\n [template]=\"leftTemplateRef\"\n (selectItem)=\"selectItem($event)\"\n (unselectItem)=\"unselectItem($event)\"\n >\n <ng-template #leftTemplateRef let-item>\n <div (click)=\"onSelect(item.direction === 'left' ? 'left' : 'right', { item: item })\" class=\"list-item-content\">\n @if (thyLeftDraggable) {\n <thy-icon thyIconName=\"drag\" class=\"drag-handle\"></thy-icon>\n }\n <div class=\"item-name\" [ngClass]=\"{ 'un-select-item': item.direction !== 'right' }\">\n <ng-template [ngTemplateOutlet]=\"thyTransferListItem\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </div>\n @if (item.direction === 'right') {\n <thy-icon class=\"text-primary item-status\" thyIconName=\"check\"></thy-icon>\n }\n </div>\n </ng-template>\n</thy-transfer-list>\n\n<div class=\"thy-transfer-operation\">\n <div class=\"thy-transfer-operation-body\">\n <thy-icon thyIconName=\"angle-right\" class=\"operation-link\"></thy-icon>\n <br />\n <thy-icon thyIconName=\"angle-left\" class=\"operation-link\"></thy-icon>\n </div>\n</div>\n\n<thy-transfer-list\n [items]=\"rightDataSource\"\n [title]=\"rightTitle\"\n [draggable]=\"thyRightDraggable\"\n (draggableUpdate)=\"onDragUpdate('right', $event)\"\n [canLock]=\"thyRightCanLock\"\n [maxLock]=\"thyRightLockMax\"\n [max]=\"thyRightMax\"\n [template]=\"rightTemplateRef\"\n [renderContentRef]=\"rightContentRef\"\n (selectItem)=\"selectItem($event)\"\n (unselectItem)=\"unselectItem($event)\"\n >\n <ng-template #rightTemplateRef let-item>\n @if (thyRightDraggable) {\n <thy-icon thyIconName=\"drag\" class=\"drag-handle\"></thy-icon>\n }\n <div class=\"item-name\">\n <ng-template [ngTemplateOutlet]=\"thyTransferListItem\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </div>\n @if (item.direction === 'right' && !item.isFixed) {\n <a class=\"link-secondary\" (click)=\"onSelect('right', { item: item })\">\n <thy-icon class=\"item-status\" thyIconName=\"close\"></thy-icon>\n </a>\n }\n </ng-template>\n</thy-transfer-list>\n\n<ng-template #thyTransferListItem let-item>\n @if (templateRef) {\n <ng-template [ngTemplateOutlet]=\"templateRef\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n }\n @if (!templateRef) {\n <thy-flexible-text [thyTooltipContent]=\"item.title\">\n {{ item.title }}\n </thy-flexible-text>\n }\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ThyTransfer } from './transfer.component';\nimport { ThyTransferList } from './transfer-list.component';\nimport { ThyButtonModule } from 'ngx-tethys/button';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyListModule } from 'ngx-tethys/list';\nimport { ThySharedModule } from 'ngx-tethys/shared';\nimport { ThyFlexibleTextModule } from 'ngx-tethys/flexible-text';\n@NgModule({\n imports: [\n CommonModule,\n ThyButtonModule,\n DragDropModule,\n ThyIconModule,\n ThyListModule,\n ThySharedModule,\n ThyFlexibleTextModule,\n ThyTransfer,\n ThyTransferList\n ],\n exports: [ThyTransfer]\n})\nexport class ThyTransferModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngx-tethys-transfer.mjs","sources":["../../../src/transfer/transfer.interface.ts","../../../src/transfer/transfer-list.component.ts","../../../src/transfer/transfer-list.component.html","../../../src/transfer/transfer.component.ts","../../../src/transfer/transfer.component.html","../../../src/transfer/transfer.module.ts","../../../src/transfer/ngx-tethys-transfer.ts"],"sourcesContent":["export type Direction = 'left' | 'right';\n\nexport enum TransferDirection {\n left = 'left',\n right = 'right'\n}\n\nexport interface ThyTransferData {\n source: ThyTransferModel;\n target: ThyTransferModel;\n}\n\nexport interface ThyTransferModel {\n title?: string;\n data: Array<any>;\n}\n\n/**\n * @public\n * @order 20\n */\nexport interface ThyTransferItem {\n /**\n * 数据标题\n */\n title: string;\n\n /**\n * 设置方向,可选值 [left,right]\n */\n direction?: Direction;\n\n order?: number;\n\n disabled?: boolean;\n\n /**\n * 选中状态\n */\n checked?: boolean;\n\n isLock?: boolean;\n\n groupId?: string;\n\n isFixed?: boolean;\n\n /**\n * 自定义数据\n */\n [key: string]: any;\n}\n\nexport interface ThyTransferSelectEvent {\n item: ThyTransferItem;\n}\n\nexport interface ThyTransferChangeEvent {\n from?: string;\n to?: string;\n items?: ThyTransferItem[];\n left?: InnerTransferList;\n right?: InnerTransferList;\n}\n\nexport interface ThyTransferDragEvent {\n oldIndex?: number;\n newIndex?: number;\n model?: ThyTransferItem;\n models?: ThyTransferItem[];\n left?: InnerTransferList;\n right?: InnerTransferList;\n}\n\nexport interface InnerTransferDragEvent {\n dragEvent?: ThyTransferDragEvent;\n listData?: InnerTransferList;\n}\n\nexport interface InnerTransferList {\n lock?: ThyTransferItem[];\n unlock?: ThyTransferItem[];\n}\n","import { CdkDrag, CdkDragDrop, CdkDropList, CdkDropListGroup, moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';\nimport {\n Component,\n DoCheck,\n IterableChanges,\n IterableDiffer,\n IterableDiffers,\n OnInit,\n Signal,\n TemplateRef,\n ViewEncapsulation,\n inject,\n input,\n numberAttribute,\n output\n} from '@angular/core';\n\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { ThyList, ThyListItem } from 'ngx-tethys/list';\nimport { ThyDragDropDirective } from 'ngx-tethys/shared';\nimport { InnerTransferDragEvent, ThyTransferDragEvent, ThyTransferItem, ThyTransferSelectEvent } from './transfer.interface';\nimport { injectLocale, ThyTransferLocale } from 'ngx-tethys/i18n';\nimport { coerceBooleanProperty, ThyBooleanInput } from 'ngx-tethys/util';\n\n/**\n * @private\n */\n@Component({\n selector: 'thy-transfer-list',\n templateUrl: './transfer-list.component.html',\n host: {\n class: 'thy-transfer-list'\n },\n encapsulation: ViewEncapsulation.None,\n imports: [CdkDropListGroup, ThyList, CdkDropList, ThyDragDropDirective, ThyListItem, CdkDrag, NgClass, NgTemplateOutlet]\n})\nexport class ThyTransferList implements OnInit, DoCheck {\n private differs = inject(IterableDiffers);\n\n public lockItems: ThyTransferItem[] = [];\n\n public unlockItems: ThyTransferItem[] = [];\n\n private _diff: IterableDiffer<ThyTransferItem>;\n\n private _lockDiff: IterableDiffer<ThyTransferItem>;\n\n private _unlockDiff: IterableDiffer<ThyTransferItem>;\n\n locale: Signal<ThyTransferLocale> = injectLocale('transfer');\n\n readonly title = input<string>();\n\n readonly items = input<ThyTransferItem[]>();\n\n readonly draggable = input<boolean, ThyBooleanInput>(false, { transform: coerceBooleanProperty });\n\n readonly canLock = input<boolean, ThyBooleanInput>(false, { transform: coerceBooleanProperty });\n\n readonly maxLock = input<number, unknown>(undefined, { transform: numberAttribute });\n\n readonly max = input<number, unknown>(undefined, { transform: numberAttribute });\n\n readonly disabled = input<boolean, ThyBooleanInput>(false, { transform: coerceBooleanProperty });\n\n readonly template = input<TemplateRef<any>>();\n\n readonly renderContentRef = input<TemplateRef<any>>();\n\n readonly draggableUpdate = output<InnerTransferDragEvent>();\n\n readonly selectItem = output<ThyTransferSelectEvent>();\n\n readonly unselectItem = output<ThyTransferSelectEvent>();\n\n constructor() {}\n\n ngOnInit() {\n this._combineTransferData();\n if (this.canLock()) {\n this._lockDiff = this.differs.find(this.lockItems).create();\n this._unlockDiff = this.differs.find(this.unlockItems).create();\n } else {\n this._unlockDiff = this.differs.find(this.unlockItems).create();\n }\n this._diff = this.differs.find(this.items()).create();\n }\n\n private _combineTransferData() {\n this.lockItems = [];\n this.unlockItems = [];\n if (this.canLock()) {\n (this.items() || []).forEach(item => {\n if (item.isLock) {\n this.lockItems.push(item);\n } else {\n this.unlockItems.push(item);\n }\n });\n } else {\n this.unlockItems = this.items();\n }\n }\n\n private _afterChangeItems(changes: IterableChanges<ThyTransferItem>, items: ThyTransferItem[]) {\n // 数据发生变化时,更改order值\n changes.forEachAddedItem(record => {\n record.item.order = record.currentIndex;\n });\n changes.forEachRemovedItem(() => {\n items.forEach((item, index) => {\n item.order = index;\n });\n });\n changes.forEachMovedItem(() => {\n items.forEach((item, index) => {\n item.order = index;\n });\n });\n }\n\n ngDoCheck() {\n const changes = this._diff.diff(this.items());\n if (changes) {\n this._afterChangeItems(changes, this.items());\n this._combineTransferData();\n }\n if (this._lockDiff) {\n const lockChanges = this._lockDiff.diff(this.lockItems);\n if (lockChanges) {\n this._afterChangeItems(lockChanges, this.lockItems);\n }\n }\n const unlockChanges = this._unlockDiff.diff(this.unlockItems);\n if (unlockChanges) {\n this._afterChangeItems(unlockChanges, this.unlockItems);\n }\n }\n\n lockListEnterPredicate = () => {\n return this.lockItems.length < this.maxLock();\n };\n\n unlockListEnterPredicate = (event: CdkDrag<ThyTransferItem>) => {\n return !event.data.isFixed;\n };\n\n onSelectItem = (item: ThyTransferItem) => {\n this.selectItem.emit({ item });\n };\n\n onUnselectItem = (item: ThyTransferItem) => {\n this.unselectItem.emit({ item });\n };\n\n drop(event: CdkDragDrop<ThyTransferItem[]>) {\n if (event.previousContainer === event.container) {\n moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\n } else {\n transferArrayItem(event.previousContainer.data, event.container.data, event.previousIndex, event.currentIndex);\n (event.previousContainer.data || []).forEach(item => {\n item.isLock = event.previousContainer.id === 'lock';\n });\n\n (event.container.data || []).forEach(item => {\n item.isLock = event.container.id === 'lock';\n });\n }\n const dragEvent: ThyTransferDragEvent = {\n model: event.item.data,\n models: event.container.data,\n oldIndex: event.previousIndex,\n newIndex: event.currentIndex\n };\n this.draggableUpdate.emit({\n dragEvent: dragEvent,\n listData: { lock: this.lockItems, unlock: this.unlockItems }\n });\n }\n}\n","<div class=\"thy-transfer-list-header\">\n <span class=\"thy-transfer-list-header-title\"\n >{{ title() }} · {{ items()?.length }}\n @if (max()) {\n <span>{{ locale().maxLimit.replace('{max}', max()?.toString() ?? '') }}</span>\n }\n </span>\n</div>\n@if (!renderContentRef()) {\n <div class=\"thy-transfer-list-body\" cdkDropListGroup [cdkDropListGroupDisabled]=\"!draggable()\">\n @if (canLock()) {\n <div class=\"thy-transfer-list-group-name\">{{ locale().maxLockLimit.replace('{maxLock}', maxLock()?.toString() ?? '') }}</div>\n <thy-list\n class=\"thy-transfer-list-content\"\n cdkDropList\n thyDragDrop\n id=\"lock\"\n [cdkDropListData]=\"lockItems\"\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListEnterPredicate]=\"lockListEnterPredicate\">\n @if (lockItems.length === 0) {\n <div class=\"cdk-drop-list-empty\"></div>\n }\n @for (item of lockItems; track $index) {\n <thy-list-item\n class=\"thy-transfer-list-content-item text-truncate\"\n cdkDrag\n [cdkDragData]=\"item\"\n [ngClass]=\"{ active: item.checked }\">\n <ng-template [ngTemplateOutlet]=\"template()\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </thy-list-item>\n }\n </thy-list>\n <div class=\"thy-transfer-list-group-name\">{{ locale().unlocked }}</div>\n }\n <thy-list\n class=\"thy-transfer-list-content\"\n cdkDropList\n thyDragDrop\n [cdkDropListDisabled]=\"!draggable()\"\n id=\"unlock\"\n [cdkDropListData]=\"unlockItems\"\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListEnterPredicate]=\"unlockListEnterPredicate\">\n @if (unlockItems.length === 0) {\n <div class=\"cdk-drop-list-empty\"></div>\n }\n @for (item of unlockItems; track $index) {\n <thy-list-item\n class=\"thy-transfer-list-content-item text-truncate\"\n cdkDrag\n [cdkDragData]=\"item\"\n [ngClass]=\"{ active: item.checked, disabled: disabled() && item.direction === 'left' }\">\n <ng-template [ngTemplateOutlet]=\"template()\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </thy-list-item>\n }\n </thy-list>\n </div>\n} @else {\n <div class=\"thy-transfer-list-body\">\n <ng-container\n *ngTemplateOutlet=\"\n renderContentRef();\n context: {\n $implicit: items(),\n onSelectItem: onSelectItem,\n onUnselectItem: onUnselectItem\n }\n \"></ng-container>\n </div>\n}\n","import {\n Component,\n OnInit,\n TemplateRef,\n ViewEncapsulation,\n computed,\n input,\n output,\n contentChild,\n numberAttribute,\n effect\n} from '@angular/core';\n\nimport {\n Direction,\n InnerTransferDragEvent,\n ThyTransferChangeEvent,\n ThyTransferDragEvent,\n ThyTransferItem,\n ThyTransferSelectEvent,\n TransferDirection\n} from './transfer.interface';\nimport { ThyFlexibleText } from 'ngx-tethys/flexible-text';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { ThyTransferList } from './transfer-list.component';\nimport { coerceBooleanProperty, ThyBooleanInput } from 'ngx-tethys/util';\n\n/**\n * 穿梭框组件\n * @name thy-transfer\n * @order 10\n */\n@Component({\n selector: 'thy-transfer',\n templateUrl: './transfer.component.html',\n host: {\n class: 'thy-transfer'\n },\n encapsulation: ViewEncapsulation.None,\n imports: [ThyTransferList, ThyIcon, NgClass, NgTemplateOutlet, ThyFlexibleText]\n})\nexport class ThyTransfer implements OnInit {\n public leftDataSource: ThyTransferItem[] = [];\n\n public rightDataSource: ThyTransferItem[] = [];\n /**\n * 数据源\n * @type ThyTransferItem[]\n */\n readonly thyData = input<ThyTransferItem[]>([]);\n\n readonly thyRenderLeftTemplateRef = input<TemplateRef<any>>();\n\n readonly thyRenderRightTemplateRef = input<TemplateRef<any>>();\n\n /**\n * title集合,title[0]为左标题,title[1]为右标题\n * @type string[]\n */\n readonly thyTitles = input<string[]>([]);\n\n /**\n * 右侧列表是否可以锁定\n * @default false\n */\n readonly thyRightCanLock = input<boolean, ThyBooleanInput>(false, { transform: coerceBooleanProperty });\n\n /**\n * 右侧锁定最大数量\n */\n readonly thyRightLockMax = input<number, unknown>(undefined, { transform: numberAttribute });\n\n /**\n * 右侧选择最大数量\n */\n readonly thyRightMax = input<number, unknown>(undefined, { transform: numberAttribute });\n\n /**\n * 设置是否自动移动\n * @description.en-us Currently not implemented, in order to support the selections move\n * @default true\n */\n readonly thyAutoMove = input<boolean, ThyBooleanInput>(true, { transform: coerceBooleanProperty });\n\n /**\n * 左侧列表是否拖动\n * @default false\n */\n readonly thyLeftDraggable = input<boolean, ThyBooleanInput>(false, { transform: coerceBooleanProperty });\n\n /**\n * 右侧列表是否拖动\n * @default false\n */\n readonly thyRightDraggable = input<boolean, ThyBooleanInput>(false, { transform: coerceBooleanProperty });\n\n /**\n * @type EventEmitter<ThyTransferDragEvent>\n */\n thyDraggableUpdate = output<ThyTransferDragEvent>();\n\n /**\n * Transfer变化的回调事件\n * @type EventEmitter<ThyTransferChangeEvent>\n */\n thyChange = output<ThyTransferChangeEvent>();\n\n /**\n * 设置自定义Item渲染数据模板\n * @type TemplateRef\n */\n readonly templateRef = contentChild<TemplateRef<any>>('renderTemplate');\n\n /**\n * 设置自定义左侧内容模板\n * @type TemplateRef\n */\n readonly leftContentRef = contentChild<TemplateRef<any>>('renderLeftTemplate');\n\n /**\n * 设置自定义右侧内容模板\n * @type TemplateRef\n */\n readonly rightContentRef = contentChild<TemplateRef<any>>('renderRightTemplate');\n\n readonly leftTitle = computed(() => this.thyTitles()[0] || '');\n\n readonly rightTitle = computed(() => this.thyTitles()[1] || '');\n\n constructor() {\n effect(() => {\n this.initializeTransferData();\n });\n }\n\n ngOnInit() {}\n\n initializeTransferData(data: ThyTransferItem[] = []) {\n this.leftDataSource = [];\n this.rightDataSource = [];\n this.thyData().forEach(item => {\n if (item.direction === TransferDirection.left) {\n this.leftDataSource.push(item);\n }\n if (item.direction === TransferDirection.right) {\n this.rightDataSource.push(item);\n }\n });\n }\n\n onSelect(from: Direction, event: ThyTransferSelectEvent) {\n if (event.item.isFixed) {\n return;\n }\n if (this.thyRightMax() <= this.rightDataSource.length && from === TransferDirection.left) {\n return;\n }\n const to = from === TransferDirection.left ? TransferDirection.right : TransferDirection.left;\n event.item.checked = !event.item.checked;\n if (this.thyAutoMove()) {\n this.onMove(to);\n }\n }\n\n selectItem(event: ThyTransferSelectEvent) {\n this.onSelect(TransferDirection.left, event);\n }\n\n unselectItem(event: ThyTransferSelectEvent) {\n this.onSelect(TransferDirection.right, event);\n }\n\n private groupListByIsLock(list: ThyTransferItem[] = []) {\n const lock: ThyTransferItem[] = [],\n unlock: ThyTransferItem[] = [];\n list.forEach(item => {\n if (item.isLock) {\n lock.push(item);\n } else {\n unlock.push(item);\n }\n });\n return { lock: lock, unlock: unlock };\n }\n\n onMove(to: Direction) {\n const fromDataSource = to === TransferDirection.right ? this.leftDataSource : this.rightDataSource;\n const toDataSource = to === TransferDirection.right ? this.rightDataSource : this.leftDataSource;\n const selections = fromDataSource.filter(item => item.checked);\n const changeEvent: ThyTransferChangeEvent = {\n from: to === TransferDirection.right ? TransferDirection.left : TransferDirection.right,\n to: to,\n items: [...selections]\n };\n selections.forEach(item => {\n const index = fromDataSource.indexOf(item);\n const removed = fromDataSource.splice(index, 1)[0];\n removed.checked = !removed.checked;\n removed.direction = to;\n toDataSource.push(removed);\n });\n this.thyChange.emit({\n ...changeEvent,\n left: this.groupListByIsLock(this.leftDataSource),\n right: this.groupListByIsLock(this.rightDataSource)\n });\n }\n\n onDragUpdate(direction: Direction, event: InnerTransferDragEvent) {\n const otherDirectionData = direction === TransferDirection.left ? this.rightDataSource : this.leftDataSource;\n const otherListData = this.groupListByIsLock(otherDirectionData);\n this.thyDraggableUpdate.emit({\n ...event.dragEvent,\n left: direction === TransferDirection.left ? event.listData : otherListData,\n right: direction === TransferDirection.right ? event.listData : otherListData\n });\n\n this.rightDataSource =\n direction === TransferDirection.right\n ? [...event.listData.lock, ...event.listData.unlock]\n : [...otherListData.lock, ...otherListData.unlock];\n }\n}\n","<thy-transfer-list\n [items]=\"thyData()\"\n [title]=\"leftTitle()\"\n [draggable]=\"thyLeftDraggable()\"\n [disabled]=\"thyRightMax() <= rightDataSource.length\"\n [renderContentRef]=\"leftContentRef()\"\n (draggableUpdate)=\"onDragUpdate('left', $event)\"\n [template]=\"leftTemplateRef\"\n (selectItem)=\"selectItem($event)\"\n (unselectItem)=\"unselectItem($event)\">\n <ng-template #leftTemplateRef let-item>\n <div (click)=\"onSelect(item.direction === 'left' ? 'left' : 'right', { item: item })\" class=\"list-item-content\">\n @if (thyLeftDraggable()) {\n <thy-icon thyIconName=\"drag\" class=\"drag-handle\"></thy-icon>\n }\n <div class=\"item-name\" [ngClass]=\"{ 'un-select-item': item.direction !== 'right' }\">\n <ng-template [ngTemplateOutlet]=\"thyTransferListItem\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </div>\n @if (item.direction === 'right') {\n <thy-icon class=\"text-primary item-status\" thyIconName=\"check\"></thy-icon>\n }\n </div>\n </ng-template>\n</thy-transfer-list>\n\n<div class=\"thy-transfer-operation\">\n <div class=\"thy-transfer-operation-body\">\n <thy-icon thyIconName=\"angle-right\" class=\"operation-link\"></thy-icon>\n <br />\n <thy-icon thyIconName=\"angle-left\" class=\"operation-link\"></thy-icon>\n </div>\n</div>\n\n<thy-transfer-list\n [items]=\"rightDataSource\"\n [title]=\"rightTitle()\"\n [draggable]=\"thyRightDraggable()\"\n (draggableUpdate)=\"onDragUpdate('right', $event)\"\n [canLock]=\"thyRightCanLock()\"\n [maxLock]=\"thyRightLockMax()\"\n [max]=\"thyRightMax()\"\n [template]=\"rightTemplateRef\"\n [renderContentRef]=\"rightContentRef()\"\n (selectItem)=\"selectItem($event)\"\n (unselectItem)=\"unselectItem($event)\">\n <ng-template #rightTemplateRef let-item>\n @if (thyRightDraggable()) {\n <thy-icon thyIconName=\"drag\" class=\"drag-handle\"></thy-icon>\n }\n <div class=\"item-name\">\n <ng-template [ngTemplateOutlet]=\"thyTransferListItem\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n </div>\n @if (item.direction === 'right' && !item.isFixed) {\n <a class=\"link-secondary\" (click)=\"onSelect('right', { item: item })\">\n <thy-icon class=\"item-status\" thyIconName=\"close\"></thy-icon>\n </a>\n }\n </ng-template>\n</thy-transfer-list>\n\n<ng-template #thyTransferListItem let-item>\n @if (templateRef()) {\n <ng-template [ngTemplateOutlet]=\"templateRef()\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-template>\n }\n @if (!templateRef()) {\n <thy-flexible-text [thyTooltipContent]=\"item.title\">\n {{ item.title }}\n </thy-flexible-text>\n }\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ThyTransfer } from './transfer.component';\nimport { ThyTransferList } from './transfer-list.component';\nimport { ThyButtonModule } from 'ngx-tethys/button';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyListModule } from 'ngx-tethys/list';\nimport { ThySharedModule } from 'ngx-tethys/shared';\nimport { ThyFlexibleTextModule } from 'ngx-tethys/flexible-text';\n@NgModule({\n imports: [\n CommonModule,\n ThyButtonModule,\n DragDropModule,\n ThyIconModule,\n ThyListModule,\n ThySharedModule,\n ThyFlexibleTextModule,\n ThyTransfer,\n ThyTransferList\n ],\n exports: [ThyTransfer]\n})\nexport class ThyTransferModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { ViewportRuler, CdkOverlayOrigin, CdkConnectedOverlay, OverlayModule } from '@angular/cdk/overlay';
2
2
  import { isPlatformBrowser, NgTemplateOutlet, NgClass, NgStyle, CommonModule } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
- import { inject, ElementRef, NgZone, ChangeDetectorRef, PLATFORM_ID, EventEmitter, forwardRef, Output, Input, ViewChild, ContentChild, HostBinding, Component, NgModule } from '@angular/core';
4
+ import { inject, ElementRef, NgZone, ChangeDetectorRef, PLATFORM_ID, output, forwardRef, Input, ViewChild, ContentChild, HostBinding, Component, NgModule } from '@angular/core';
5
5
  import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
6
6
  import { ThyEmpty, ThyEmptyModule } from 'ngx-tethys/empty';
7
7
  import { ThyIcon, ThyIconModule } from 'ngx-tethys/icon';
@@ -209,7 +209,7 @@ class ThyTreeSelect extends TabIndexDisabledControlValueAccessorMixin {
209
209
  /**
210
210
  * 树选择组件展开和折叠状态事件
211
211
  */
212
- this.thyExpandStatusChange = new EventEmitter();
212
+ this.thyExpandStatusChange = output();
213
213
  }
214
214
  ngOnInit() {
215
215
  this.isMulti = this.thyMultiple;
@@ -514,8 +514,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
514
514
  type: Input
515
515
  }], thyGetNodeChildren: [{
516
516
  type: Input
517
- }], thyExpandStatusChange: [{
518
- type: Output
519
517
  }] } });
520
518
  const DEFAULT_ITEM_SIZE = 40;
521
519
  /**