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,25 +1,11 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, inject, ChangeDetectorRef, ContentChild, Input, HostBinding, ViewChild, ChangeDetectionStrategy, Component, ContentChildren, ViewEncapsulation, NgModule } from '@angular/core';
2
+ import { inject, ChangeDetectorRef, viewChild, input, contentChild, ChangeDetectionStrategy, Component, Injectable, signal, computed, contentChildren, effect, ViewEncapsulation, NgModule } from '@angular/core';
3
3
  import { NgTemplateOutlet, CommonModule } from '@angular/common';
4
4
  import { ThySharedModule } from 'ngx-tethys/shared';
5
5
  import { ThyIconModule } from 'ngx-tethys/icon';
6
- import { takeUntil } from 'rxjs/operators';
7
6
  import { Subject } from 'rxjs';
8
7
  import { coerceBooleanProperty } from 'ngx-tethys/util';
9
-
10
- class ThyTimelineService {
11
- constructor() {
12
- this.check$ = new Subject();
13
- }
14
- markForCheck() {
15
- this.check$.next();
16
- }
17
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyTimelineService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
18
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyTimelineService }); }
19
- }
20
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyTimelineService, decorators: [{
21
- type: Injectable
22
- }] });
8
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
23
9
 
24
10
  /**
25
11
  * 时间轴节点组件
@@ -29,52 +15,57 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
29
15
  class ThyTimelineItem {
30
16
  constructor() {
31
17
  this.cdr = inject(ChangeDetectorRef);
32
- this.timelineService = inject(ThyTimelineService);
33
- this.color = 'primary';
18
+ this.template = viewChild('timelineItem');
34
19
  this.isLast = false;
35
20
  this.isFirst = false;
36
21
  this.reverse = false;
37
- }
38
- /**
39
- * 指定圆圈颜色
40
- * @type primary | success | warning | danger | info
41
- * @default primary
42
- */
43
- set thyColor(value) {
44
- if (value) {
45
- this.color = value;
46
- }
22
+ /**
23
+ * 指定圆圈颜色
24
+ * @type primary | success | warning | danger | info
25
+ * @default primary
26
+ */
27
+ this.thyColor = input('primary');
28
+ /**
29
+ * 自定义节点位置
30
+ * @type left | right | center
31
+ */
32
+ this.thyPosition = input(undefined);
33
+ /**
34
+ * 自定义时间轴点模板
35
+ * @type TemplateRef
36
+ */
37
+ this.dot = contentChild('dot');
38
+ /**
39
+ * 自定义另一侧的模板
40
+ * @type TemplateRef
41
+ */
42
+ this.description = contentChild('description');
47
43
  }
48
44
  detectChanges() {
49
45
  this.cdr.detectChanges();
50
46
  }
51
- ngOnChanges(changes) {
52
- this.timelineService.markForCheck();
53
- }
54
47
  ngOnInit() { }
55
48
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyTimelineItem, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
56
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.8", type: ThyTimelineItem, isStandalone: true, selector: "thy-timeline-item", inputs: { thyColor: "thyColor", thyPosition: "thyPosition" }, host: { properties: { "class": "this.className" } }, queries: [{ propertyName: "dot", first: true, predicate: ["dot"], descendants: true }, { propertyName: "description", first: true, predicate: ["description"], descendants: true }], viewQueries: [{ propertyName: "template", first: true, predicate: ["timelineItem"], descendants: true }], exportAs: ["ThyTimelineItem"], usesOnChanges: true, ngImport: i0, template: "<ng-template #timelineItem>\n <div\n class=\"thy-timeline-item\"\n [class.thy-timeline-item-reverse-last]=\"isLast && reverse\"\n [class.thy-timeline-item-last]=\"isLast\"\n [class.thy-timeline-item-reverse-first]=\"isFirst && reverse\"\n [class.thy-timeline-item-right]=\"(thyPosition || position) === 'right'\"\n [class.thy-timeline-item-left]=\"(thyPosition || position) === 'left'\"\n >\n <div class=\"thy-timeline-item-tail\"></div>\n <div\n class=\"thy-timeline-item-dot\"\n [class.thy-timeline-item-dot-primary]=\"color === 'primary'\"\n [class.thy-timeline-item-dot-success]=\"color === 'success'\"\n [class.thy-timeline-item-dot-warning]=\"color === 'warning'\"\n [class.thy-timeline-item-dot-danger]=\"color === 'danger'\"\n [class.thy-timeline-item-dot-info]=\"color === 'info'\"\n [class.thy-timeline-item-dot-custom]=\"!!dot\"\n >\n @if (dot) {\n <ng-template [ngTemplateOutlet]=\"dot\"></ng-template>\n }\n </div>\n <div class=\"thy-timeline-item-content\">\n <ng-content></ng-content>\n </div>\n <div class=\"thy-timeline-item-content-other-side\">\n @if (description) {\n <ng-template [ngTemplateOutlet]=\"description\"></ng-template>\n }\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
49
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.8", type: ThyTimelineItem, isStandalone: true, selector: "thy-timeline-item", inputs: { thyColor: { classPropertyName: "thyColor", publicName: "thyColor", isSignal: true, isRequired: false, transformFunction: null }, thyPosition: { classPropertyName: "thyPosition", publicName: "thyPosition", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "dot", first: true, predicate: ["dot"], descendants: true, isSignal: true }, { propertyName: "description", first: true, predicate: ["description"], descendants: true, isSignal: true }], viewQueries: [{ propertyName: "template", first: true, predicate: ["timelineItem"], descendants: true, isSignal: true }], exportAs: ["ThyTimelineItem"], ngImport: i0, template: "<ng-template #timelineItem>\n <div\n class=\"thy-timeline-item\"\n [class.thy-timeline-item-reverse-last]=\"isLast && reverse\"\n [class.thy-timeline-item-last]=\"isLast\"\n [class.thy-timeline-item-reverse-first]=\"isFirst && reverse\"\n [class.thy-timeline-item-right]=\"(thyPosition() || position) === 'right'\"\n [class.thy-timeline-item-left]=\"(thyPosition() || position) === 'left'\">\n <div class=\"thy-timeline-item-tail\"></div>\n <div\n class=\"thy-timeline-item-dot\"\n [class.thy-timeline-item-dot-primary]=\"thyColor() === 'primary'\"\n [class.thy-timeline-item-dot-success]=\"thyColor() === 'success'\"\n [class.thy-timeline-item-dot-warning]=\"thyColor() === 'warning'\"\n [class.thy-timeline-item-dot-danger]=\"thyColor() === 'danger'\"\n [class.thy-timeline-item-dot-info]=\"thyColor() === 'info'\"\n [class.thy-timeline-item-dot-custom]=\"!!dot()\">\n @if (dot()) {\n <ng-template [ngTemplateOutlet]=\"dot()\"></ng-template>\n }\n </div>\n <div class=\"thy-timeline-item-content\">\n <ng-content></ng-content>\n </div>\n <div class=\"thy-timeline-item-content-other-side\">\n @if (description()) {\n <ng-template [ngTemplateOutlet]=\"description()\"></ng-template>\n }\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
57
50
  }
58
51
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyTimelineItem, decorators: [{
59
52
  type: Component,
60
- args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'thy-timeline-item', exportAs: 'ThyTimelineItem', imports: [NgTemplateOutlet], template: "<ng-template #timelineItem>\n <div\n class=\"thy-timeline-item\"\n [class.thy-timeline-item-reverse-last]=\"isLast && reverse\"\n [class.thy-timeline-item-last]=\"isLast\"\n [class.thy-timeline-item-reverse-first]=\"isFirst && reverse\"\n [class.thy-timeline-item-right]=\"(thyPosition || position) === 'right'\"\n [class.thy-timeline-item-left]=\"(thyPosition || position) === 'left'\"\n >\n <div class=\"thy-timeline-item-tail\"></div>\n <div\n class=\"thy-timeline-item-dot\"\n [class.thy-timeline-item-dot-primary]=\"color === 'primary'\"\n [class.thy-timeline-item-dot-success]=\"color === 'success'\"\n [class.thy-timeline-item-dot-warning]=\"color === 'warning'\"\n [class.thy-timeline-item-dot-danger]=\"color === 'danger'\"\n [class.thy-timeline-item-dot-info]=\"color === 'info'\"\n [class.thy-timeline-item-dot-custom]=\"!!dot\"\n >\n @if (dot) {\n <ng-template [ngTemplateOutlet]=\"dot\"></ng-template>\n }\n </div>\n <div class=\"thy-timeline-item-content\">\n <ng-content></ng-content>\n </div>\n <div class=\"thy-timeline-item-content-other-side\">\n @if (description) {\n <ng-template [ngTemplateOutlet]=\"description\"></ng-template>\n }\n </div>\n </div>\n</ng-template>\n" }]
61
- }], propDecorators: { template: [{
62
- type: ViewChild,
63
- args: ['timelineItem', { static: false }]
64
- }], className: [{
65
- type: HostBinding,
66
- args: ['class']
67
- }], thyColor: [{
68
- type: Input
69
- }], thyPosition: [{
70
- type: Input
71
- }], dot: [{
72
- type: ContentChild,
73
- args: ['dot', { static: false }]
74
- }], description: [{
75
- type: ContentChild,
76
- args: ['description', { static: false }]
77
- }] } });
53
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'thy-timeline-item', exportAs: 'ThyTimelineItem', imports: [NgTemplateOutlet], template: "<ng-template #timelineItem>\n <div\n class=\"thy-timeline-item\"\n [class.thy-timeline-item-reverse-last]=\"isLast && reverse\"\n [class.thy-timeline-item-last]=\"isLast\"\n [class.thy-timeline-item-reverse-first]=\"isFirst && reverse\"\n [class.thy-timeline-item-right]=\"(thyPosition() || position) === 'right'\"\n [class.thy-timeline-item-left]=\"(thyPosition() || position) === 'left'\">\n <div class=\"thy-timeline-item-tail\"></div>\n <div\n class=\"thy-timeline-item-dot\"\n [class.thy-timeline-item-dot-primary]=\"thyColor() === 'primary'\"\n [class.thy-timeline-item-dot-success]=\"thyColor() === 'success'\"\n [class.thy-timeline-item-dot-warning]=\"thyColor() === 'warning'\"\n [class.thy-timeline-item-dot-danger]=\"thyColor() === 'danger'\"\n [class.thy-timeline-item-dot-info]=\"thyColor() === 'info'\"\n [class.thy-timeline-item-dot-custom]=\"!!dot()\">\n @if (dot()) {\n <ng-template [ngTemplateOutlet]=\"dot()\"></ng-template>\n }\n </div>\n <div class=\"thy-timeline-item-content\">\n <ng-content></ng-content>\n </div>\n <div class=\"thy-timeline-item-content-other-side\">\n @if (description()) {\n <ng-template [ngTemplateOutlet]=\"description()\"></ng-template>\n }\n </div>\n </div>\n</ng-template>\n" }]
54
+ }], ctorParameters: () => [] });
55
+
56
+ class ThyTimelineService {
57
+ constructor() {
58
+ this.check$ = new Subject();
59
+ }
60
+ markForCheck() {
61
+ this.check$.next();
62
+ }
63
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyTimelineService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
64
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyTimelineService }); }
65
+ }
66
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyTimelineService, decorators: [{
67
+ type: Injectable
68
+ }] });
78
69
 
79
70
  var ThyTimeModes;
80
71
  (function (ThyTimeModes) {
@@ -91,79 +82,84 @@ class ThyTimeline {
91
82
  constructor() {
92
83
  this.cdr = inject(ChangeDetectorRef);
93
84
  this.timelineService = inject(ThyTimelineService);
85
+ /**
86
+ * 节点排序是否倒序
87
+ * @default false
88
+ */
89
+ this.thyReverse = input(false, { transform: coerceBooleanProperty });
90
+ /**
91
+ * 改变时间轴和内容的相对位置
92
+ * @type left | right | center
93
+ * @default left
94
+ */
95
+ this.thyMode = input('left');
94
96
  /**
95
97
  * 时间轴的方向
96
98
  * @type horizontal | vertical
97
99
  */
98
- this.thyDirection = 'vertical';
100
+ this.thyDirection = input('vertical');
99
101
  this.timelineItems = [];
100
- this.destroy$ = new Subject();
101
- this.isTimeline = true;
102
- this.rightTimeline = false;
103
- this.centerTimeline = false;
104
- this.templateTimeline = false;
105
- this.horizontal = false;
106
- }
107
- ngOnChanges(changes) {
108
- const { thyMode, thyReverse } = changes;
109
- if (thyMode && !this.horizontal) {
110
- if (thyMode.currentValue === 'right') {
111
- this.rightTimeline = !this.templateTimeline;
112
- this.centerTimeline = false;
113
- }
114
- else if (thyMode.currentValue === 'center') {
115
- this.centerTimeline = true;
116
- this.rightTimeline = false;
102
+ this.templateTimeline = signal(false);
103
+ this.horizontal = computed(() => {
104
+ return this.thyDirection() === 'horizontal' ? true : false;
105
+ });
106
+ this.rightTimeline = computed(() => {
107
+ const thyMode = this.thyMode();
108
+ const horizontal = this.horizontal();
109
+ const templateTimeline = this.templateTimeline();
110
+ if (thyMode && !horizontal) {
111
+ if (thyMode === 'right') {
112
+ return !templateTimeline;
113
+ }
114
+ else {
115
+ return false;
116
+ }
117
117
  }
118
- else {
119
- this.rightTimeline = false;
120
- this.centerTimeline = false;
118
+ });
119
+ this.centerTimeline = computed(() => {
120
+ const thyMode = this.thyMode();
121
+ const horizontal = this.horizontal();
122
+ if (thyMode && !horizontal) {
123
+ return thyMode === 'center';
121
124
  }
122
- }
123
- if ((simpleChangeActivated(thyMode) && !this.horizontal) || simpleChangeActivated(thyReverse)) {
125
+ });
126
+ this.listOfItems = contentChildren(ThyTimelineItem);
127
+ this.takeUntilDestroyed = takeUntilDestroyed();
128
+ effect(() => {
124
129
  this.updateChildren();
125
- }
130
+ });
126
131
  }
127
132
  ngOnInit() {
128
- this.horizontal = this.thyDirection === 'horizontal' ? true : false;
129
- this.timelineService.check$.pipe(takeUntil(this.destroy$)).subscribe(() => {
133
+ this.timelineService.check$.pipe(this.takeUntilDestroyed).subscribe(() => {
130
134
  this.cdr.markForCheck();
131
135
  });
132
136
  }
133
- ngAfterContentInit() {
134
- this.updateChildren();
135
- this.listOfItems.changes.subscribe(() => {
136
- this.updateChildren();
137
- });
138
- }
139
- ngOnDestroy() {
140
- this.destroy$.next();
141
- this.destroy$.complete();
142
- }
143
137
  updateChildren() {
144
- if (this.listOfItems && this.listOfItems.length) {
145
- const length = this.listOfItems.length;
146
- this.listOfItems.forEach((item, index) => {
147
- item.isLast = !this.thyReverse ? index === length - 1 : index === 0;
148
- item.isFirst = this.thyReverse ? index === length - 1 : index === 0;
149
- item.reverse = this.thyReverse;
150
- if (!this.horizontal) {
151
- item.position = getTimelineItemPosition(index, this.thyMode);
138
+ const listOfItems = this.listOfItems();
139
+ const thyReverse = this.thyReverse();
140
+ if (listOfItems && listOfItems.length) {
141
+ const length = listOfItems.length;
142
+ listOfItems.forEach((item, index) => {
143
+ item.isLast = !thyReverse ? index === length - 1 : index === 0;
144
+ item.isFirst = thyReverse ? index === length - 1 : index === 0;
145
+ item.reverse = thyReverse;
146
+ if (!this.horizontal()) {
147
+ item.position = getTimelineItemPosition(index, this.thyMode());
152
148
  }
153
- if (item.description || (item.thyPosition && !this.horizontal)) {
154
- this.templateTimeline = true;
149
+ if (item.description() || (item.thyPosition() && !this.horizontal())) {
150
+ this.templateTimeline.set(true);
155
151
  }
156
152
  item.detectChanges();
157
153
  });
158
- this.timelineItems = this.thyReverse ? this.listOfItems.toArray().reverse() : this.listOfItems.toArray();
154
+ this.timelineItems = this.thyReverse() ? [...listOfItems].reverse() : [...listOfItems];
159
155
  }
160
156
  this.cdr.markForCheck();
161
157
  }
162
158
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyTimeline, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
163
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.8", type: ThyTimeline, isStandalone: true, selector: "thy-timeline", inputs: { thyReverse: ["thyReverse", "thyReverse", coerceBooleanProperty], thyMode: "thyMode", thyDirection: "thyDirection" }, host: { properties: { "class.thy-timeline": "this.isTimeline", "class.thy-timeline-right": "this.rightTimeline", "class.thy-timeline-center": "this.centerTimeline", "class.thy-timeline-template": "this.templateTimeline", "class.thy-timeline-horizontal": "this.horizontal" } }, providers: [ThyTimelineService], queries: [{ propertyName: "listOfItems", predicate: ThyTimelineItem }], usesOnChanges: true, ngImport: i0, template: `
159
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.8", type: ThyTimeline, isStandalone: true, selector: "thy-timeline", inputs: { thyReverse: { classPropertyName: "thyReverse", publicName: "thyReverse", isSignal: true, isRequired: false, transformFunction: null }, thyMode: { classPropertyName: "thyMode", publicName: "thyMode", isSignal: true, isRequired: false, transformFunction: null }, thyDirection: { classPropertyName: "thyDirection", publicName: "thyDirection", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.thy-timeline-right": "rightTimeline()", "class.thy-timeline-center": "centerTimeline()", "class.thy-timeline-template": "templateTimeline()", "class.thy-timeline-horizontal": "horizontal()" }, classAttribute: "thy-timeline" }, providers: [ThyTimelineService], queries: [{ propertyName: "listOfItems", predicate: ThyTimelineItem, isSignal: true }], ngImport: i0, template: `
164
160
  <ng-container>
165
161
  @for (item of timelineItems; track $index) {
166
- <ng-template [ngTemplateOutlet]="item.template"></ng-template>
162
+ <ng-template [ngTemplateOutlet]="item.template()"></ng-template>
167
163
  }
168
164
  <ng-template>
169
165
  <ng-content></ng-content>
@@ -181,44 +177,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
181
177
  template: `
182
178
  <ng-container>
183
179
  @for (item of timelineItems; track $index) {
184
- <ng-template [ngTemplateOutlet]="item.template"></ng-template>
180
+ <ng-template [ngTemplateOutlet]="item.template()"></ng-template>
185
181
  }
186
182
  <ng-template>
187
183
  <ng-content></ng-content>
188
184
  </ng-template>
189
185
  </ng-container>
190
186
  `,
187
+ host: {
188
+ class: 'thy-timeline',
189
+ '[class.thy-timeline-right]': `rightTimeline()`,
190
+ '[class.thy-timeline-center]': `centerTimeline()`,
191
+ '[class.thy-timeline-template]': `templateTimeline()`,
192
+ '[class.thy-timeline-horizontal]': `horizontal()`
193
+ },
191
194
  imports: [NgTemplateOutlet]
192
195
  }]
193
- }], propDecorators: { thyReverse: [{
194
- type: Input,
195
- args: [{ transform: coerceBooleanProperty }]
196
- }], thyMode: [{
197
- type: Input
198
- }], thyDirection: [{
199
- type: Input
200
- }], isTimeline: [{
201
- type: HostBinding,
202
- args: [`class.thy-timeline`]
203
- }], rightTimeline: [{
204
- type: HostBinding,
205
- args: [`class.thy-timeline-right`]
206
- }], centerTimeline: [{
207
- type: HostBinding,
208
- args: [`class.thy-timeline-center`]
209
- }], templateTimeline: [{
210
- type: HostBinding,
211
- args: [`class.thy-timeline-template`]
212
- }], horizontal: [{
213
- type: HostBinding,
214
- args: [`class.thy-timeline-horizontal`]
215
- }], listOfItems: [{
216
- type: ContentChildren,
217
- args: [ThyTimelineItem]
218
- }] } });
219
- function simpleChangeActivated(simpleChange) {
220
- return !!(simpleChange && (simpleChange.previousValue !== simpleChange.currentValue || simpleChange.isFirstChange()));
221
- }
196
+ }], ctorParameters: () => [] });
222
197
  function getTimelineItemPosition(index, mode) {
223
198
  return mode === 'left' ? 'left' : mode === 'right' ? 'right' : mode === 'center' && index % 2 === 0 ? 'left' : 'right';
224
199
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-tethys-timeline.mjs","sources":["../../../src/timeline/timeline.service.ts","../../../src/timeline/timeline-item.component.ts","../../../src/timeline/timeline-item.component.html","../../../src/timeline/timeline.component.ts","../../../src/timeline/timeline.module.ts","../../../src/timeline/ngx-tethys-timeline.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class ThyTimelineService {\n check$ = new Subject<void>();\n markForCheck(): void {\n this.check$.next();\n }\n}\n","import {\n Component,\n Input,\n HostBinding,\n OnInit,\n OnChanges,\n ContentChild,\n TemplateRef,\n ViewChild,\n ChangeDetectorRef,\n ChangeDetectionStrategy,\n SimpleChanges,\n inject\n} from '@angular/core';\nimport { SafeAny } from 'ngx-tethys/types';\nimport { ThyTimeMode } from './timeline.type';\nimport { ThyTimelineService } from './timeline.service';\nimport { NgTemplateOutlet } from '@angular/common';\n\nexport type thyColor = 'primary' | 'success' | 'warning' | 'danger' | 'info';\n\n/**\n * 时间轴节点组件\n * @name thy-timeline-item\n * @order 20\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'thy-timeline-item',\n templateUrl: './timeline-item.component.html',\n exportAs: 'ThyTimelineItem',\n imports: [NgTemplateOutlet]\n})\nexport class ThyTimelineItem implements OnInit, OnChanges {\n private cdr = inject(ChangeDetectorRef);\n private timelineService = inject(ThyTimelineService);\n\n @ViewChild('timelineItem', { static: false }) template: TemplateRef<void>;\n\n @HostBinding('class') className: string;\n\n public color: thyColor = 'primary';\n\n public isLast = false;\n\n public isFirst = false;\n\n public position: ThyTimeMode;\n\n public reverse: Boolean = false;\n\n /**\n * 指定圆圈颜色\n * @type primary | success | warning | danger | info\n * @default primary\n */\n @Input()\n set thyColor(value: thyColor) {\n if (value) {\n this.color = value;\n }\n }\n\n /**\n * 自定义节点位置\n * @type left | right | center\n */\n @Input() thyPosition: ThyTimeMode;\n\n /**\n * 自定义时间轴点模板\n * @type TemplateRef\n */\n @ContentChild('dot', { static: false }) dot: TemplateRef<SafeAny>;\n\n /**\n * 自定义另一侧的模板\n * @type TemplateRef\n */\n @ContentChild('description', { static: false }) description: TemplateRef<SafeAny>;\n\n detectChanges(): void {\n this.cdr.detectChanges();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n this.timelineService.markForCheck();\n }\n\n ngOnInit() {}\n}\n","<ng-template #timelineItem>\n <div\n class=\"thy-timeline-item\"\n [class.thy-timeline-item-reverse-last]=\"isLast && reverse\"\n [class.thy-timeline-item-last]=\"isLast\"\n [class.thy-timeline-item-reverse-first]=\"isFirst && reverse\"\n [class.thy-timeline-item-right]=\"(thyPosition || position) === 'right'\"\n [class.thy-timeline-item-left]=\"(thyPosition || position) === 'left'\"\n >\n <div class=\"thy-timeline-item-tail\"></div>\n <div\n class=\"thy-timeline-item-dot\"\n [class.thy-timeline-item-dot-primary]=\"color === 'primary'\"\n [class.thy-timeline-item-dot-success]=\"color === 'success'\"\n [class.thy-timeline-item-dot-warning]=\"color === 'warning'\"\n [class.thy-timeline-item-dot-danger]=\"color === 'danger'\"\n [class.thy-timeline-item-dot-info]=\"color === 'info'\"\n [class.thy-timeline-item-dot-custom]=\"!!dot\"\n >\n @if (dot) {\n <ng-template [ngTemplateOutlet]=\"dot\"></ng-template>\n }\n </div>\n <div class=\"thy-timeline-item-content\">\n <ng-content></ng-content>\n </div>\n <div class=\"thy-timeline-item-content-other-side\">\n @if (description) {\n <ng-template [ngTemplateOutlet]=\"description\"></ng-template>\n }\n </div>\n </div>\n</ng-template>\n","import {\n Component,\n Input,\n HostBinding,\n ContentChildren,\n QueryList,\n AfterContentInit,\n OnChanges,\n OnDestroy,\n OnInit,\n SimpleChanges,\n SimpleChange,\n ChangeDetectorRef,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n inject\n} from '@angular/core';\nimport { takeUntil } from 'rxjs/operators';\nimport { ThyTimelineItem } from './timeline-item.component';\nimport { ThyTimelineService } from './timeline.service';\nimport { Subject } from 'rxjs';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\nimport { ThyTimeMode } from './timeline.type';\n\nexport enum ThyTimeModes {\n left = 'left',\n right = 'right',\n center = 'center'\n}\n\nexport type ThyTimeDirection = 'horizontal' | 'vertical';\n\n/**\n * 时间轴组件\n * @name thy-timeline\n * @order 10\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n selector: 'thy-timeline',\n providers: [ThyTimelineService],\n template: `\n <ng-container>\n @for (item of timelineItems; track $index) {\n <ng-template [ngTemplateOutlet]=\"item.template\"></ng-template>\n }\n <ng-template>\n <ng-content></ng-content>\n </ng-template>\n </ng-container>\n `,\n imports: [NgTemplateOutlet]\n})\nexport class ThyTimeline implements OnInit, AfterContentInit, OnChanges, OnDestroy {\n private cdr = inject(ChangeDetectorRef);\n private timelineService = inject(ThyTimelineService);\n\n /**\n * 节点排序是否倒序\n * @default false\n */\n @Input({ transform: coerceBooleanProperty }) thyReverse: boolean;\n\n /**\n * 改变时间轴和内容的相对位置\n * @type left | right | center\n * @default left\n */\n @Input() thyMode: ThyTimeMode;\n\n /**\n * 时间轴的方向\n * @type horizontal | vertical\n */\n @Input() thyDirection: ThyTimeDirection = 'vertical';\n\n public timelineItems: ThyTimelineItem[] = [];\n\n private destroy$ = new Subject<void>();\n\n @HostBinding(`class.thy-timeline`) isTimeline = true;\n @HostBinding(`class.thy-timeline-right`) rightTimeline = false;\n @HostBinding(`class.thy-timeline-center`) centerTimeline = false;\n @HostBinding(`class.thy-timeline-template`) templateTimeline = false;\n @HostBinding(`class.thy-timeline-horizontal`) horizontal = false;\n\n @ContentChildren(ThyTimelineItem)\n listOfItems: QueryList<ThyTimelineItem>;\n\n ngOnChanges(changes: SimpleChanges): void {\n const { thyMode, thyReverse } = changes;\n if (thyMode && !this.horizontal) {\n if (thyMode.currentValue === 'right') {\n this.rightTimeline = !this.templateTimeline;\n this.centerTimeline = false;\n } else if (thyMode.currentValue === 'center') {\n this.centerTimeline = true;\n this.rightTimeline = false;\n } else {\n this.rightTimeline = false;\n this.centerTimeline = false;\n }\n }\n if ((simpleChangeActivated(thyMode) && !this.horizontal) || simpleChangeActivated(thyReverse)) {\n this.updateChildren();\n }\n }\n\n ngOnInit() {\n this.horizontal = this.thyDirection === 'horizontal' ? true : false;\n this.timelineService.check$.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.cdr.markForCheck();\n });\n }\n\n ngAfterContentInit() {\n this.updateChildren();\n this.listOfItems.changes.subscribe(() => {\n this.updateChildren();\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private updateChildren(): void {\n if (this.listOfItems && this.listOfItems.length) {\n const length = this.listOfItems.length;\n this.listOfItems.forEach((item, index) => {\n item.isLast = !this.thyReverse ? index === length - 1 : index === 0;\n item.isFirst = this.thyReverse ? index === length - 1 : index === 0;\n item.reverse = this.thyReverse;\n if (!this.horizontal) {\n item.position = getTimelineItemPosition(index, this.thyMode);\n }\n if (item.description || (item.thyPosition && !this.horizontal)) {\n this.templateTimeline = true;\n }\n item.detectChanges();\n });\n this.timelineItems = this.thyReverse ? this.listOfItems.toArray().reverse() : this.listOfItems.toArray();\n }\n this.cdr.markForCheck();\n }\n}\nfunction simpleChangeActivated(simpleChange?: SimpleChange): boolean {\n return !!(simpleChange && (simpleChange.previousValue !== simpleChange.currentValue || simpleChange.isFirstChange()));\n}\n\nfunction getTimelineItemPosition(index: number, mode: ThyTimeMode): ThyTimeMode | undefined {\n return mode === 'left' ? 'left' : mode === 'right' ? 'right' : mode === 'center' && index % 2 === 0 ? 'left' : 'right';\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ThySharedModule } from 'ngx-tethys/shared';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyTimeline } from './timeline.component';\nimport { ThyTimelineItem } from './timeline-item.component';\n\n@NgModule({\n imports: [CommonModule, ThySharedModule, ThyIconModule, ThyTimeline, ThyTimelineItem],\n exports: [ThyTimeline, ThyTimelineItem],\n providers: []\n})\nexport class ThyTimelineModule {}\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-timeline.mjs","sources":["../../../src/timeline/timeline-item.component.ts","../../../src/timeline/timeline-item.component.html","../../../src/timeline/timeline.service.ts","../../../src/timeline/timeline.component.ts","../../../src/timeline/timeline.module.ts","../../../src/timeline/ngx-tethys-timeline.ts"],"sourcesContent":["import {\n Component,\n OnInit,\n TemplateRef,\n ChangeDetectorRef,\n ChangeDetectionStrategy,\n inject,\n input,\n viewChild,\n contentChild\n} from '@angular/core';\nimport { SafeAny } from 'ngx-tethys/types';\nimport { ThyTimeMode } from './timeline.type';\nimport { NgTemplateOutlet } from '@angular/common';\n\nexport type thyColor = 'primary' | 'success' | 'warning' | 'danger' | 'info';\n\n/**\n * 时间轴节点组件\n * @name thy-timeline-item\n * @order 20\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'thy-timeline-item',\n templateUrl: './timeline-item.component.html',\n exportAs: 'ThyTimelineItem',\n imports: [NgTemplateOutlet]\n})\nexport class ThyTimelineItem implements OnInit {\n private cdr = inject(ChangeDetectorRef);\n\n readonly template = viewChild<TemplateRef<void>>('timelineItem');\n\n public isLast = false;\n\n public isFirst = false;\n\n public position: ThyTimeMode;\n\n public reverse: Boolean = false;\n\n /**\n * 指定圆圈颜色\n * @type primary | success | warning | danger | info\n * @default primary\n */\n readonly thyColor = input<thyColor>('primary');\n\n /**\n * 自定义节点位置\n * @type left | right | center\n */\n readonly thyPosition = input<ThyTimeMode>(undefined);\n\n /**\n * 自定义时间轴点模板\n * @type TemplateRef\n */\n readonly dot = contentChild<TemplateRef<SafeAny>>('dot');\n\n /**\n * 自定义另一侧的模板\n * @type TemplateRef\n */\n readonly description = contentChild<TemplateRef<SafeAny>>('description');\n\n constructor() {}\n\n detectChanges(): void {\n this.cdr.detectChanges();\n }\n\n ngOnInit() {}\n}\n","<ng-template #timelineItem>\n <div\n class=\"thy-timeline-item\"\n [class.thy-timeline-item-reverse-last]=\"isLast && reverse\"\n [class.thy-timeline-item-last]=\"isLast\"\n [class.thy-timeline-item-reverse-first]=\"isFirst && reverse\"\n [class.thy-timeline-item-right]=\"(thyPosition() || position) === 'right'\"\n [class.thy-timeline-item-left]=\"(thyPosition() || position) === 'left'\">\n <div class=\"thy-timeline-item-tail\"></div>\n <div\n class=\"thy-timeline-item-dot\"\n [class.thy-timeline-item-dot-primary]=\"thyColor() === 'primary'\"\n [class.thy-timeline-item-dot-success]=\"thyColor() === 'success'\"\n [class.thy-timeline-item-dot-warning]=\"thyColor() === 'warning'\"\n [class.thy-timeline-item-dot-danger]=\"thyColor() === 'danger'\"\n [class.thy-timeline-item-dot-info]=\"thyColor() === 'info'\"\n [class.thy-timeline-item-dot-custom]=\"!!dot()\">\n @if (dot()) {\n <ng-template [ngTemplateOutlet]=\"dot()\"></ng-template>\n }\n </div>\n <div class=\"thy-timeline-item-content\">\n <ng-content></ng-content>\n </div>\n <div class=\"thy-timeline-item-content-other-side\">\n @if (description()) {\n <ng-template [ngTemplateOutlet]=\"description()\"></ng-template>\n }\n </div>\n </div>\n</ng-template>\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class ThyTimelineService {\n check$ = new Subject<void>();\n markForCheck(): void {\n this.check$.next();\n }\n}\n","import {\n Component,\n OnInit,\n ChangeDetectorRef,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n inject,\n input,\n effect,\n computed,\n signal,\n WritableSignal,\n contentChildren\n} from '@angular/core';\nimport { ThyTimelineItem } from './timeline-item.component';\nimport { ThyTimelineService } from './timeline.service';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { coerceBooleanProperty, ThyBooleanInput } from 'ngx-tethys/util';\nimport { ThyTimeMode } from './timeline.type';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nexport enum ThyTimeModes {\n left = 'left',\n right = 'right',\n center = 'center'\n}\n\nexport type ThyTimeDirection = 'horizontal' | 'vertical';\n\n/**\n * 时间轴组件\n * @name thy-timeline\n * @order 10\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n selector: 'thy-timeline',\n providers: [ThyTimelineService],\n template: `\n <ng-container>\n @for (item of timelineItems; track $index) {\n <ng-template [ngTemplateOutlet]=\"item.template()\"></ng-template>\n }\n <ng-template>\n <ng-content></ng-content>\n </ng-template>\n </ng-container>\n `,\n host: {\n class: 'thy-timeline',\n '[class.thy-timeline-right]': `rightTimeline()`,\n '[class.thy-timeline-center]': `centerTimeline()`,\n '[class.thy-timeline-template]': `templateTimeline()`,\n '[class.thy-timeline-horizontal]': `horizontal()`\n },\n imports: [NgTemplateOutlet]\n})\nexport class ThyTimeline implements OnInit {\n private cdr = inject(ChangeDetectorRef);\n\n private timelineService = inject(ThyTimelineService);\n\n /**\n * 节点排序是否倒序\n * @default false\n */\n readonly thyReverse = input<boolean, ThyBooleanInput>(false, { transform: coerceBooleanProperty });\n\n /**\n * 改变时间轴和内容的相对位置\n * @type left | right | center\n * @default left\n */\n readonly thyMode = input<ThyTimeMode>('left');\n\n /**\n * 时间轴的方向\n * @type horizontal | vertical\n */\n readonly thyDirection = input<ThyTimeDirection>('vertical');\n\n public timelineItems: ThyTimelineItem[] = [];\n\n public templateTimeline: WritableSignal<boolean> = signal(false);\n\n public horizontal = computed(() => {\n return this.thyDirection() === 'horizontal' ? true : false;\n });\n\n public rightTimeline = computed(() => {\n const thyMode = this.thyMode();\n const horizontal = this.horizontal();\n const templateTimeline = this.templateTimeline();\n if (thyMode && !horizontal) {\n if (thyMode === 'right') {\n return !templateTimeline;\n } else {\n return false;\n }\n }\n });\n\n public centerTimeline = computed(() => {\n const thyMode = this.thyMode();\n const horizontal = this.horizontal();\n if (thyMode && !horizontal) {\n return thyMode === 'center';\n }\n });\n\n readonly listOfItems = contentChildren(ThyTimelineItem);\n\n private takeUntilDestroyed = takeUntilDestroyed();\n\n constructor() {\n effect(() => {\n this.updateChildren();\n });\n }\n\n ngOnInit() {\n this.timelineService.check$.pipe(this.takeUntilDestroyed).subscribe(() => {\n this.cdr.markForCheck();\n });\n }\n\n private updateChildren(): void {\n const listOfItems = this.listOfItems();\n const thyReverse = this.thyReverse();\n if (listOfItems && listOfItems.length) {\n const length = listOfItems.length;\n listOfItems.forEach((item, index) => {\n item.isLast = !thyReverse ? index === length - 1 : index === 0;\n item.isFirst = thyReverse ? index === length - 1 : index === 0;\n item.reverse = thyReverse;\n if (!this.horizontal()) {\n item.position = getTimelineItemPosition(index, this.thyMode());\n }\n if (item.description() || (item.thyPosition() && !this.horizontal())) {\n this.templateTimeline.set(true);\n }\n item.detectChanges();\n });\n this.timelineItems = this.thyReverse() ? [...listOfItems].reverse() : [...listOfItems];\n }\n this.cdr.markForCheck();\n }\n}\n\nfunction getTimelineItemPosition(index: number, mode: ThyTimeMode): ThyTimeMode | undefined {\n return mode === 'left' ? 'left' : mode === 'right' ? 'right' : mode === 'center' && index % 2 === 0 ? 'left' : 'right';\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ThySharedModule } from 'ngx-tethys/shared';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyTimeline } from './timeline.component';\nimport { ThyTimelineItem } from './timeline-item.component';\n\n@NgModule({\n imports: [CommonModule, ThySharedModule, ThyIconModule, ThyTimeline, ThyTimelineItem],\n exports: [ThyTimeline, ThyTimelineItem],\n providers: []\n})\nexport class ThyTimelineModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}