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,12 +1,12 @@
1
+ import { NgStyle, CommonModule } from '@angular/common';
1
2
  import * as i0 from '@angular/core';
2
- import { inject, ChangeDetectorRef, NgZone, ElementRef, EventEmitter, forwardRef, numberAttribute, Output, Input, ViewChild, HostBinding, Component, NgModule } from '@angular/core';
3
+ import { inject, ChangeDetectorRef, NgZone, ElementRef, input, viewChild, signal, numberAttribute, output, effect, forwardRef, Input, Component, NgModule } from '@angular/core';
3
4
  import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
5
+ import { useHostRenderer } from '@tethys/cdk/dom';
6
+ import { TabIndexDisabledControlValueAccessorMixin } from 'ngx-tethys/core';
7
+ import { coerceBooleanProperty, clamp } from 'ngx-tethys/util';
4
8
  import { fromEvent } from 'rxjs';
5
- import { clamp, coerceBooleanProperty } from 'ngx-tethys/util';
6
9
  import { pluck, map, tap, distinctUntilChanged, takeUntil } from 'rxjs/operators';
7
- import { TabIndexDisabledControlValueAccessorMixin } from 'ngx-tethys/core';
8
- import { useHostRenderer } from '@tethys/cdk/dom';
9
- import { NgStyle, CommonModule } from '@angular/common';
10
10
 
11
11
  /**
12
12
  * 滑动输入条组件
@@ -24,34 +24,6 @@ class ThySlider extends TabIndexDisabledControlValueAccessorMixin {
24
24
  get thyDisabled() {
25
25
  return this.disabled;
26
26
  }
27
- /**
28
- * 切换主题类型
29
- * @type primary | success | info | warning | danger
30
- * @default success
31
- */
32
- set thyType(type) {
33
- if (type) {
34
- if (this.typeClassName) {
35
- this.hostRenderer.removeClass(this.typeClassName);
36
- }
37
- this.hostRenderer.addClass(type ? `thy-slider-${type}` : '');
38
- this.typeClassName = `thy-slider-${type}`;
39
- }
40
- }
41
- /**
42
- * 滑动输入条大小
43
- * @type sm | md | lg
44
- * @default sm
45
- */
46
- set thySize(size) {
47
- if (size) {
48
- if (this.sizeClassName) {
49
- this.hostRenderer.removeClass(this.sizeClassName);
50
- }
51
- this.hostRenderer.addClass(size ? `thy-slider-${size}` : '');
52
- this.sizeClassName = `thy-slider-${size}`;
53
- }
54
- }
55
27
  constructor() {
56
28
  super();
57
29
  this.cdr = inject(ChangeDetectorRef);
@@ -60,31 +32,62 @@ class ThySlider extends TabIndexDisabledControlValueAccessorMixin {
60
32
  /**
61
33
  * 是否切换为纵轴模式
62
34
  */
63
- this.thyVertical = false;
35
+ this.thyVertical = input(false, { transform: coerceBooleanProperty });
64
36
  this.disabled = false;
65
- this._thySlider = true;
66
- this._pointer = true;
37
+ this.sliderRail = viewChild('sliderRail');
38
+ this.sliderTrack = viewChild('sliderTrack');
39
+ this.sliderPointer = viewChild('sliderPointer');
40
+ this.typeClassName = signal('');
41
+ this.sizeClassName = signal('');
67
42
  /**
68
43
  * 最大值
69
44
  */
70
- this.thyMax = 100;
45
+ this.thyMax = input(100, { transform: numberAttribute });
71
46
  /**
72
47
  * 最小值
73
48
  */
74
- this.thyMin = 0;
49
+ this.thyMin = input(0, { transform: numberAttribute });
75
50
  /**
76
51
  * 步长,需要被 thyMax - thyMin 的差值整除。
77
52
  */
78
- this.thyStep = 1;
53
+ this.thyStep = input(1, { transform: numberAttribute });
54
+ /**
55
+ * 切换主题类型
56
+ * @type primary | success | info | warning | danger
57
+ */
58
+ this.thyType = input('success');
59
+ /**
60
+ * 通过变量设置颜色
61
+ */
62
+ this.thyColor = input();
63
+ /**
64
+ * 滑动输入条大小
65
+ * @type sm | md | lg
66
+ */
67
+ this.thySize = input('sm');
79
68
  /**
80
69
  * 移动结束后的回调,参数为当前值
81
70
  */
82
- this.thyAfterChange = new EventEmitter();
83
- this.typeClassName = '';
84
- this.sizeClassName = '';
71
+ this.thyAfterChange = output();
85
72
  this.hostRenderer = useHostRenderer();
86
73
  this.onChangeCallback = (v) => { };
87
74
  this.onTouchedCallback = (v) => { };
75
+ effect(() => {
76
+ if (this.thyType()) {
77
+ const typeName = `thy-slider-${this.thyType() || 'success'}`;
78
+ this.typeClassName() && this.hostRenderer.removeClass(this.typeClassName());
79
+ this.hostRenderer.addClass(typeName);
80
+ this.typeClassName.set(typeName);
81
+ }
82
+ });
83
+ effect(() => {
84
+ if (this.thySize()) {
85
+ const sizeName = `thy-slider-${this.thySize() || 'sm'}`;
86
+ this.sizeClassName() && this.hostRenderer.removeClass(this.sizeClassName());
87
+ this.hostRenderer.addClass(sizeName);
88
+ this.sizeClassName.set(sizeName);
89
+ }
90
+ });
88
91
  }
89
92
  ngOnInit() {
90
93
  if (typeof ngDevMode === 'undefined' || ngDevMode) {
@@ -137,9 +140,9 @@ class ThySlider extends TabIndexDisabledControlValueAccessorMixin {
137
140
  }
138
141
  ensureValueInRange(value) {
139
142
  if (!this.valueMustBeValid(value)) {
140
- return this.thyMin;
143
+ return this.thyMin();
141
144
  }
142
- return clamp(value, this.thyMin, this.thyMax);
145
+ return clamp(value, this.thyMin(), this.thyMax());
143
146
  }
144
147
  valueMustBeValid(value) {
145
148
  return !isNaN(typeof value !== 'number' ? parseFloat(value) : value);
@@ -150,13 +153,13 @@ class ThySlider extends TabIndexDisabledControlValueAccessorMixin {
150
153
  this.cdr.markForCheck();
151
154
  }
152
155
  valueToOffset(value) {
153
- return ((value - this.thyMin) * 100) / (this.thyMax - this.thyMin);
156
+ return ((value - this.thyMin()) * 100) / (this.thyMax() - this.thyMin());
154
157
  }
155
158
  updateStyle(offsetPercentage) {
156
159
  const percentage = Math.min(1, Math.max(0, offsetPercentage));
157
- const orientFields = this.thyVertical ? ['height', 'bottom'] : ['width', 'left'];
158
- this.sliderTrack.nativeElement.style[orientFields[0]] = `${percentage * 100}%`;
159
- this.sliderPointer.nativeElement.style[orientFields[1]] = `${percentage * 100}%`;
160
+ const orientFields = this.thyVertical() ? ['height', 'bottom'] : ['width', 'left'];
161
+ this.sliderTrack().nativeElement.style[orientFields[0]] = `${percentage * 100}%`;
162
+ this.sliderPointer().nativeElement.style[orientFields[1]] = `${percentage * 100}%`;
160
163
  }
161
164
  unsubscribeMouseListeners(actions = ['start', 'move', 'end']) {
162
165
  if (actions.includes('start') && this.dragStartHandler) {
@@ -205,7 +208,7 @@ class ThySlider extends TabIndexDisabledControlValueAccessorMixin {
205
208
  }
206
209
  }
207
210
  registerMouseEventsListeners() {
208
- const orientField = this.thyVertical ? 'pageY' : 'pageX';
211
+ const orientField = this.thyVertical() ? 'pageY' : 'pageX';
209
212
  this.dragStartListener = this.ngZone.runOutsideAngular(() => {
210
213
  return fromEvent(this.ref.nativeElement, 'mousedown').pipe(pluck(orientField), map((position, index) => this.mousePositionToAdaptiveValue(position)));
211
214
  });
@@ -227,37 +230,37 @@ class ThySlider extends TabIndexDisabledControlValueAccessorMixin {
227
230
  }
228
231
  const ratio = this.convertPointerPositionToRatio(position, sliderStartPosition, sliderLength);
229
232
  const value = this.ratioToValue(ratio);
230
- return parseFloat(value.toFixed(this.getDecimals(this.thyStep)));
233
+ return parseFloat(value.toFixed(this.getDecimals(this.thyStep())));
231
234
  }
232
235
  getSliderPagePosition() {
233
236
  const rect = this.ref.nativeElement.getBoundingClientRect();
234
237
  const window = this.ref.nativeElement.ownerDocument.defaultView;
235
- const orientFields = this.thyVertical ? ['bottom', 'pageYOffset'] : ['left', 'pageXOffset'];
238
+ const orientFields = this.thyVertical() ? ['bottom', 'pageYOffset'] : ['left', 'pageXOffset'];
236
239
  return rect[orientFields[0]] + window[orientFields[1]];
237
240
  }
238
241
  getRailLength() {
239
- const orientFiled = this.thyVertical ? 'clientHeight' : 'clientWidth';
240
- return this.sliderRail.nativeElement[orientFiled];
242
+ const orientFiled = this.thyVertical() ? 'clientHeight' : 'clientWidth';
243
+ return this.sliderRail().nativeElement[orientFiled];
241
244
  }
242
245
  convertPointerPositionToRatio(pointerPosition, startPosition, totalLength) {
243
- if (this.thyVertical) {
246
+ if (this.thyVertical()) {
244
247
  return clamp((startPosition - pointerPosition) / totalLength, 0, 1);
245
248
  }
246
249
  return clamp((pointerPosition - startPosition) / totalLength, 0, 1);
247
250
  }
248
251
  ratioToValue(ratio) {
249
- let value = (this.thyMax - this.thyMin) * ratio + this.thyMin;
250
- const step = this.thyStep;
252
+ let value = (this.thyMax() - this.thyMin()) * ratio + this.thyMin();
253
+ const step = this.thyStep();
251
254
  if (ratio === 0) {
252
- value = this.thyMin;
255
+ value = this.thyMin();
253
256
  }
254
257
  else if (ratio === 1) {
255
- value = this.thyMax;
258
+ value = this.thyMax();
256
259
  }
257
260
  else {
258
261
  value = Math.round(value / step) * step;
259
262
  }
260
- return clamp(value, this.thyMin, this.thyMax);
263
+ return clamp(value, this.thyMin(), this.thyMax());
261
264
  }
262
265
  getDecimals(value) {
263
266
  const valueString = value.toString();
@@ -265,13 +268,13 @@ class ThySlider extends TabIndexDisabledControlValueAccessorMixin {
265
268
  return integerLength >= 0 ? valueString.length - integerLength : 0;
266
269
  }
267
270
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThySlider, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
268
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "19.2.8", type: ThySlider, isStandalone: true, selector: "thy-slider", inputs: { thyVertical: ["thyVertical", "thyVertical", coerceBooleanProperty], thyDisabled: ["thyDisabled", "thyDisabled", coerceBooleanProperty], thyMax: ["thyMax", "thyMax", numberAttribute], thyMin: ["thyMin", "thyMin", numberAttribute], thyStep: ["thyStep", "thyStep", numberAttribute], thyType: "thyType", thyColor: "thyColor", thySize: "thySize" }, outputs: { thyAfterChange: "thyAfterChange" }, host: { properties: { "attr.tabindex": "tabIndex", "class.slider-vertical": "this.thyVertical", "class.slider-disabled": "this.thyDisabled", "class.thy-slider": "this._thySlider", "class.cursor-pointer": "this._pointer" } }, providers: [
271
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.2.8", type: ThySlider, isStandalone: true, selector: "thy-slider", inputs: { thyVertical: { classPropertyName: "thyVertical", publicName: "thyVertical", isSignal: true, isRequired: false, transformFunction: null }, thyDisabled: { classPropertyName: "thyDisabled", publicName: "thyDisabled", isSignal: false, isRequired: false, transformFunction: coerceBooleanProperty }, thyMax: { classPropertyName: "thyMax", publicName: "thyMax", isSignal: true, isRequired: false, transformFunction: null }, thyMin: { classPropertyName: "thyMin", publicName: "thyMin", isSignal: true, isRequired: false, transformFunction: null }, thyStep: { classPropertyName: "thyStep", publicName: "thyStep", isSignal: true, isRequired: false, transformFunction: null }, thyType: { classPropertyName: "thyType", publicName: "thyType", isSignal: true, isRequired: false, transformFunction: null }, thyColor: { classPropertyName: "thyColor", publicName: "thyColor", isSignal: true, isRequired: false, transformFunction: null }, thySize: { classPropertyName: "thySize", publicName: "thySize", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { thyAfterChange: "thyAfterChange" }, host: { properties: { "attr.tabindex": "tabIndex", "class.slider-vertical": "thyVertical()", "class.slider-disabled": "!!disabled", "class.thy-slider": "true", "class.cursor-pointer": "true" } }, providers: [
269
272
  {
270
273
  provide: NG_VALUE_ACCESSOR,
271
274
  useExisting: forwardRef(() => ThySlider),
272
275
  multi: true
273
276
  }
274
- ], viewQueries: [{ propertyName: "sliderRail", first: true, predicate: ["sliderRail"], descendants: true, static: true }, { propertyName: "sliderTrack", first: true, predicate: ["sliderTrack"], descendants: true, static: true }, { propertyName: "sliderPointer", first: true, predicate: ["sliderPointer"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"thy-slider-rail\" #sliderRail>\n <div class=\"thy-slider-track\" #sliderTrack [ngStyle]=\"{ 'background-color': thyColor }\"></div>\n <div class=\"thy-slider-pointer\" #sliderPointer [ngStyle]=\"{ 'border-color': thyColor }\"></div>\n</div>\n", dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
277
+ ], viewQueries: [{ propertyName: "sliderRail", first: true, predicate: ["sliderRail"], descendants: true, isSignal: true }, { propertyName: "sliderTrack", first: true, predicate: ["sliderTrack"], descendants: true, isSignal: true }, { propertyName: "sliderPointer", first: true, predicate: ["sliderPointer"], descendants: true, isSignal: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"thy-slider-rail\" #sliderRail>\n <div class=\"thy-slider-track\" #sliderTrack [ngStyle]=\"{ 'background-color': thyColor() }\"></div>\n <div class=\"thy-slider-pointer\" #sliderPointer [ngStyle]=\"{ 'border-color': thyColor() }\"></div>\n</div>\n", dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
275
278
  }
276
279
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThySlider, decorators: [{
277
280
  type: Component,
@@ -282,65 +285,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
282
285
  multi: true
283
286
  }
284
287
  ], host: {
285
- '[attr.tabindex]': `tabIndex`
286
- }, imports: [NgStyle], template: "<div class=\"thy-slider-rail\" #sliderRail>\n <div class=\"thy-slider-track\" #sliderTrack [ngStyle]=\"{ 'background-color': thyColor }\"></div>\n <div class=\"thy-slider-pointer\" #sliderPointer [ngStyle]=\"{ 'border-color': thyColor }\"></div>\n</div>\n" }]
287
- }], ctorParameters: () => [], propDecorators: { thyVertical: [{
288
- type: HostBinding,
289
- args: ['class.slider-vertical']
290
- }, {
291
- type: Input,
292
- args: [{ transform: coerceBooleanProperty }]
293
- }], thyDisabled: [{
294
- type: HostBinding,
295
- args: ['class.slider-disabled']
296
- }, {
288
+ '[attr.tabindex]': `tabIndex`,
289
+ '[class.slider-vertical]': 'thyVertical()',
290
+ '[class.slider-disabled]': '!!disabled',
291
+ '[class.thy-slider]': 'true',
292
+ '[class.cursor-pointer]': 'true'
293
+ }, imports: [NgStyle], template: "<div class=\"thy-slider-rail\" #sliderRail>\n <div class=\"thy-slider-track\" #sliderTrack [ngStyle]=\"{ 'background-color': thyColor() }\"></div>\n <div class=\"thy-slider-pointer\" #sliderPointer [ngStyle]=\"{ 'border-color': thyColor() }\"></div>\n</div>\n" }]
294
+ }], ctorParameters: () => [], propDecorators: { thyDisabled: [{
297
295
  type: Input,
298
296
  args: [{ transform: coerceBooleanProperty }]
299
- }], _thySlider: [{
300
- type: HostBinding,
301
- args: ['class.thy-slider']
302
- }], _pointer: [{
303
- type: HostBinding,
304
- args: ['class.cursor-pointer']
305
- }], sliderRail: [{
306
- type: ViewChild,
307
- args: ['sliderRail', { static: true }]
308
- }], sliderTrack: [{
309
- type: ViewChild,
310
- args: ['sliderTrack', { static: true }]
311
- }], sliderPointer: [{
312
- type: ViewChild,
313
- args: ['sliderPointer', { static: true }]
314
- }], thyMax: [{
315
- type: Input,
316
- args: [{ transform: numberAttribute }]
317
- }], thyMin: [{
318
- type: Input,
319
- args: [{ transform: numberAttribute }]
320
- }], thyStep: [{
321
- type: Input,
322
- args: [{ transform: numberAttribute }]
323
- }], thyType: [{
324
- type: Input
325
- }], thyColor: [{
326
- type: Input
327
- }], thySize: [{
328
- type: Input
329
- }], thyAfterChange: [{
330
- type: Output
331
297
  }] } });
332
298
  // Note: keep `verifyMinAndMax` and `verifyStepValues` as separate functions (not as class properties)
333
299
  // so they're tree-shakable in production mode.
334
300
  function verifyMinAndMax(ctx) {
335
- if (ctx.thyMin >= ctx.thyMax) {
301
+ if (ctx.thyMin() >= ctx.thyMax()) {
336
302
  throw new Error('min value must less than max value.');
337
303
  }
338
304
  }
339
305
  function verifyStepValues(ctx) {
340
- if (ctx.thyStep <= 0 || !ctx.thyStep) {
306
+ const thyStep = ctx.thyStep();
307
+ if (ctx.thyStep() <= 0 || !thyStep) {
341
308
  throw new Error('step value must be greater than 0.');
342
309
  }
343
- else if (Number.isInteger(ctx.thyStep) && (ctx.thyMax - ctx.thyMin) % ctx.thyStep) {
310
+ else if (Number.isInteger(thyStep) && (ctx.thyMax() - ctx.thyMin()) % thyStep) {
344
311
  throw new Error('(max - min) must be divisible by step.');
345
312
  }
346
313
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-tethys-slider.mjs","sources":["../../../src/slider/slider.component.ts","../../../src/slider/slider.component.html","../../../src/slider/slider.module.ts","../../../src/slider/ngx-tethys-slider.ts"],"sourcesContent":["import {\n Component,\n OnInit,\n OnChanges,\n OnDestroy,\n AfterViewInit,\n SimpleChanges,\n forwardRef,\n Input,\n EventEmitter,\n ChangeDetectorRef,\n ViewChild,\n ElementRef,\n HostBinding,\n Output,\n NgZone,\n numberAttribute,\n inject\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { Observable, Subscription, fromEvent } from 'rxjs';\nimport { clamp, coerceBooleanProperty } from 'ngx-tethys/util';\nimport { tap, pluck, map, distinctUntilChanged, takeUntil } from 'rxjs/operators';\nimport { TabIndexDisabledControlValueAccessorMixin } from 'ngx-tethys/core';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { NgStyle } from '@angular/common';\n\nexport type ThySliderType = 'primary' | 'success' | 'info' | 'warning' | 'danger';\n\nexport type ThySliderSize = 'sm' | 'md' | 'lg';\n\n/**\n * 滑动输入条组件\n * @name thy-slider\n * @order 10\n */\n@Component({\n selector: 'thy-slider',\n templateUrl: './slider.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ThySlider),\n multi: true\n }\n ],\n host: {\n '[attr.tabindex]': `tabIndex`\n },\n imports: [NgStyle]\n})\nexport class ThySlider\n extends TabIndexDisabledControlValueAccessorMixin\n implements OnInit, AfterViewInit, OnDestroy, OnChanges, ControlValueAccessor\n{\n private cdr = inject(ChangeDetectorRef);\n private ngZone = inject(NgZone);\n private ref = inject(ElementRef);\n\n /**\n * 是否切换为纵轴模式\n */\n @HostBinding('class.slider-vertical')\n @Input({ transform: coerceBooleanProperty })\n thyVertical = false;\n\n /**\n * 是否禁用\n */\n @HostBinding('class.slider-disabled')\n @Input({ transform: coerceBooleanProperty })\n override set thyDisabled(value: boolean) {\n this.disabled = value;\n this.toggleDisabled();\n }\n override get thyDisabled(): boolean {\n return this.disabled;\n }\n\n disabled = false;\n\n @HostBinding('class.thy-slider') _thySlider = true;\n\n @HostBinding('class.cursor-pointer') _pointer = true;\n\n @ViewChild('sliderRail', { static: true }) sliderRail: ElementRef;\n\n @ViewChild('sliderTrack', { static: true }) sliderTrack: ElementRef;\n\n @ViewChild('sliderPointer', { static: true }) sliderPointer: ElementRef;\n\n /**\n * 最大值\n */\n @Input({ transform: numberAttribute }) thyMax = 100;\n\n /**\n * 最小值\n */\n @Input({ transform: numberAttribute }) thyMin = 0;\n\n /**\n * 步长,需要被 thyMax - thyMin 的差值整除。\n */\n @Input({ transform: numberAttribute }) thyStep = 1;\n\n /**\n * 切换主题类型\n * @type primary | success | info | warning | danger\n * @default success\n */\n @Input() set thyType(type: ThySliderType) {\n if (type) {\n if (this.typeClassName) {\n this.hostRenderer.removeClass(this.typeClassName);\n }\n this.hostRenderer.addClass(type ? `thy-slider-${type}` : '');\n this.typeClassName = `thy-slider-${type}`;\n }\n }\n\n /**\n * 通过变量设置颜色\n */\n @Input() thyColor: string;\n\n /**\n * 滑动输入条大小\n * @type sm | md | lg\n * @default sm\n */\n @Input() set thySize(size: ThySliderSize) {\n if (size) {\n if (this.sizeClassName) {\n this.hostRenderer.removeClass(this.sizeClassName);\n }\n this.hostRenderer.addClass(size ? `thy-slider-${size}` : '');\n this.sizeClassName = `thy-slider-${size}`;\n }\n }\n\n /**\n * 移动结束后的回调,参数为当前值\n */\n @Output() thyAfterChange = new EventEmitter<{ value: number }>();\n\n public value: number;\n\n private typeClassName = '';\n\n private sizeClassName = '';\n\n private dragStartListener: Observable<number>;\n\n private dragMoveListener: Observable<number>;\n\n private dragEndListener: Observable<Event>;\n\n private dragStartHandler: Subscription | null;\n\n private dragMoveHandler: Subscription | null;\n\n private dragEndHandler: Subscription | null;\n\n private hostRenderer = useHostRenderer();\n\n private onChangeCallback = (v: any) => {};\n\n private onTouchedCallback = (v: any) => {};\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n verifyMinAndMax(this);\n verifyStepValues(this);\n }\n\n this.toggleDisabled();\n if (this.value === null || this.value === undefined) {\n this.setValue(this.ensureValueInRange(null));\n }\n }\n\n ngAfterViewInit() {\n this.registerMouseEventsListeners();\n this.toggleDisabled();\n }\n\n writeValue(newValue: number) {\n this.setValue(this.ensureValueInRange(newValue));\n }\n\n registerOnChange(fn: any) {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouchedCallback = fn;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (changes.hasOwnProperty('thyMin') || changes.hasOwnProperty('thyMax') || changes.hasOwnProperty('thyStep')) {\n verifyMinAndMax(this);\n verifyStepValues(this);\n }\n }\n }\n\n ngOnDestroy() {\n this.unsubscribeMouseListeners();\n }\n\n private toggleDisabled() {\n if (this.thyDisabled) {\n this.unsubscribeMouseListeners();\n } else {\n this.subscribeMouseListeners(['start']);\n }\n }\n\n private setValue(value: number) {\n if (this.value !== value) {\n this.value = value;\n this.updateTrackAndPointer();\n }\n this.onChangeCallback(this.value);\n }\n\n private ensureValueInRange(value: number): number {\n if (!this.valueMustBeValid(value)) {\n return this.thyMin;\n }\n return clamp(value, this.thyMin, this.thyMax);\n }\n\n private valueMustBeValid(value: number): boolean {\n return !isNaN(typeof value !== 'number' ? parseFloat(value) : value);\n }\n\n private updateTrackAndPointer() {\n const offset = this.valueToOffset(this.value);\n this.updateStyle(offset / 100);\n this.cdr.markForCheck();\n }\n\n private valueToOffset(value: number): number {\n return ((value - this.thyMin) * 100) / (this.thyMax - this.thyMin);\n }\n\n private updateStyle(offsetPercentage: number) {\n const percentage = Math.min(1, Math.max(0, offsetPercentage));\n const orientFields: string[] = this.thyVertical ? ['height', 'bottom'] : ['width', 'left'];\n this.sliderTrack.nativeElement.style[orientFields[0]] = `${percentage * 100}%`;\n this.sliderPointer.nativeElement.style[orientFields[1]] = `${percentage * 100}%`;\n }\n\n private unsubscribeMouseListeners(actions: string[] = ['start', 'move', 'end']) {\n if (actions.includes('start') && this.dragStartHandler) {\n this.dragStartHandler.unsubscribe();\n this.dragStartHandler = null;\n }\n if (actions.includes('move') && this.dragMoveHandler) {\n this.dragMoveHandler.unsubscribe();\n this.dragMoveHandler = null;\n }\n if (actions.includes('end') && this.dragEndHandler) {\n this.dragEndHandler.unsubscribe();\n this.dragEndHandler = null;\n }\n }\n\n private subscribeMouseListeners(actions: string[] = ['start', 'move', 'end']) {\n if (actions.includes('start') && this.dragStartListener && !this.dragStartHandler) {\n this.dragStartHandler = this.dragStartListener.subscribe(this.mouseStartMoving.bind(this));\n }\n\n if (actions.includes('move') && this.dragMoveListener && !this.dragMoveHandler) {\n this.dragMoveHandler = this.dragMoveListener.subscribe(this.mouseMoving.bind(this));\n }\n\n if (actions.includes('end') && this.dragEndListener && !this.dragEndHandler) {\n this.dragEndHandler = this.dragEndListener.subscribe(this.mouseStopMoving.bind(this));\n }\n }\n\n private mouseStartMoving(value: number) {\n this.pointerController(true);\n this.setValue(value);\n }\n\n private mouseMoving(value: number) {\n this.setValue(this.ensureValueInRange(value));\n this.cdr.markForCheck();\n }\n\n private mouseStopMoving(): void {\n this.pointerController(false);\n this.cdr.markForCheck();\n this.thyAfterChange.emit({ value: this.value });\n }\n\n private pointerController(movable: boolean) {\n if (movable) {\n this.subscribeMouseListeners(['move', 'end']);\n } else {\n this.unsubscribeMouseListeners(['move', 'end']);\n }\n }\n private registerMouseEventsListeners() {\n const orientField = this.thyVertical ? 'pageY' : 'pageX';\n\n this.dragStartListener = this.ngZone.runOutsideAngular(() => {\n return fromEvent(this.ref.nativeElement, 'mousedown').pipe(\n pluck(orientField),\n map((position: number, index) => this.mousePositionToAdaptiveValue(position))\n );\n });\n\n this.dragEndListener = this.ngZone.runOutsideAngular(() => {\n return fromEvent(document, 'mouseup');\n });\n\n this.dragMoveListener = this.ngZone.runOutsideAngular(() => {\n return fromEvent(document, 'mousemove').pipe(\n tap((e: Event) => {\n e.stopPropagation();\n e.preventDefault();\n }),\n pluck(orientField),\n distinctUntilChanged(),\n map((position: number) => this.mousePositionToAdaptiveValue(position)),\n distinctUntilChanged(),\n takeUntil(this.dragEndListener)\n );\n });\n }\n\n private mousePositionToAdaptiveValue(position: number): number {\n const sliderStartPosition = this.getSliderPagePosition();\n const sliderLength = this.getRailLength();\n if (!sliderLength) {\n return this.value;\n }\n const ratio = this.convertPointerPositionToRatio(position, sliderStartPosition, sliderLength);\n const value = this.ratioToValue(ratio);\n return parseFloat(value.toFixed(this.getDecimals(this.thyStep)));\n }\n\n private getSliderPagePosition(): number {\n const rect = this.ref.nativeElement.getBoundingClientRect();\n const window = this.ref.nativeElement.ownerDocument.defaultView;\n const orientFields: string[] = this.thyVertical ? ['bottom', 'pageYOffset'] : ['left', 'pageXOffset'];\n return rect[orientFields[0]] + window[orientFields[1]];\n }\n\n private getRailLength() {\n const orientFiled = this.thyVertical ? 'clientHeight' : 'clientWidth';\n\n return this.sliderRail.nativeElement[orientFiled];\n }\n\n private convertPointerPositionToRatio(pointerPosition: number, startPosition: number, totalLength: number) {\n if (this.thyVertical) {\n return clamp((startPosition - pointerPosition) / totalLength, 0, 1);\n }\n return clamp((pointerPosition - startPosition) / totalLength, 0, 1);\n }\n\n private ratioToValue(ratio: number) {\n let value = (this.thyMax - this.thyMin) * ratio + this.thyMin;\n const step = this.thyStep;\n if (ratio === 0) {\n value = this.thyMin;\n } else if (ratio === 1) {\n value = this.thyMax;\n } else {\n value = Math.round(value / step) * step;\n }\n return clamp(value, this.thyMin, this.thyMax);\n }\n\n private getDecimals(value: number): number {\n const valueString = value.toString();\n const integerLength = valueString.indexOf('.') + 1;\n return integerLength >= 0 ? valueString.length - integerLength : 0;\n }\n}\n\n// Note: keep `verifyMinAndMax` and `verifyStepValues` as separate functions (not as class properties)\n// so they're tree-shakable in production mode.\n\nfunction verifyMinAndMax(ctx: ThySlider): void | never {\n if (ctx.thyMin >= ctx.thyMax) {\n throw new Error('min value must less than max value.');\n }\n}\n\nfunction verifyStepValues(ctx: ThySlider): void | never {\n if (ctx.thyStep <= 0 || !ctx.thyStep) {\n throw new Error('step value must be greater than 0.');\n } else if (Number.isInteger(ctx.thyStep) && (ctx.thyMax - ctx.thyMin) % ctx.thyStep) {\n throw new Error('(max - min) must be divisible by step.');\n }\n}\n","<div class=\"thy-slider-rail\" #sliderRail>\n <div class=\"thy-slider-track\" #sliderTrack [ngStyle]=\"{ 'background-color': thyColor }\"></div>\n <div class=\"thy-slider-pointer\" #sliderPointer [ngStyle]=\"{ 'border-color': thyColor }\"></div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { ThySlider } from './slider.component';\n\n@NgModule({\n imports: [CommonModule, FormsModule, ThySlider],\n exports: [ThySlider],\n providers: []\n})\nexport class ThySliderModule {}\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-slider.mjs","sources":["../../../src/slider/slider.component.ts","../../../src/slider/slider.component.html","../../../src/slider/slider.module.ts","../../../src/slider/ngx-tethys-slider.ts"],"sourcesContent":["import { NgStyle } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n SimpleChanges,\n WritableSignal,\n effect,\n forwardRef,\n inject,\n input,\n numberAttribute,\n output,\n signal,\n viewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { TabIndexDisabledControlValueAccessorMixin } from 'ngx-tethys/core';\nimport { clamp, coerceBooleanProperty } from 'ngx-tethys/util';\nimport { Observable, Subscription, fromEvent } from 'rxjs';\nimport { distinctUntilChanged, map, pluck, takeUntil, tap } from 'rxjs/operators';\n\nexport type ThySliderType = 'primary' | 'success' | 'info' | 'warning' | 'danger';\n\nexport type ThySliderSize = 'sm' | 'md' | 'lg';\n\n/**\n * 滑动输入条组件\n * @name thy-slider\n * @order 10\n */\n@Component({\n selector: 'thy-slider',\n templateUrl: './slider.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ThySlider),\n multi: true\n }\n ],\n host: {\n '[attr.tabindex]': `tabIndex`,\n '[class.slider-vertical]': 'thyVertical()',\n '[class.slider-disabled]': '!!disabled',\n '[class.thy-slider]': 'true',\n '[class.cursor-pointer]': 'true'\n },\n imports: [NgStyle]\n})\nexport class ThySlider\n extends TabIndexDisabledControlValueAccessorMixin\n implements OnInit, AfterViewInit, OnDestroy, OnChanges, ControlValueAccessor\n{\n private cdr = inject(ChangeDetectorRef);\n private ngZone = inject(NgZone);\n private ref = inject(ElementRef);\n\n /**\n * 是否切换为纵轴模式\n */\n readonly thyVertical = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 是否禁用\n */\n @Input({ transform: coerceBooleanProperty })\n override set thyDisabled(value: boolean) {\n this.disabled = value;\n this.toggleDisabled();\n }\n override get thyDisabled(): boolean {\n return this.disabled;\n }\n\n disabled = false;\n\n readonly sliderRail = viewChild<ElementRef>('sliderRail');\n\n readonly sliderTrack = viewChild<ElementRef>('sliderTrack');\n\n readonly sliderPointer = viewChild<ElementRef>('sliderPointer');\n\n private typeClassName: WritableSignal<string> = signal('');\n\n private sizeClassName: WritableSignal<string> = signal('');\n\n /**\n * 最大值\n */\n readonly thyMax = input<number, unknown>(100, { transform: numberAttribute });\n\n /**\n * 最小值\n */\n readonly thyMin = input<number, unknown>(0, { transform: numberAttribute });\n\n /**\n * 步长,需要被 thyMax - thyMin 的差值整除。\n */\n readonly thyStep = input<number, unknown>(1, { transform: numberAttribute });\n\n /**\n * 切换主题类型\n * @type primary | success | info | warning | danger\n */\n readonly thyType = input<ThySliderType>('success');\n\n /**\n * 通过变量设置颜色\n */\n readonly thyColor = input<string>();\n\n /**\n * 滑动输入条大小\n * @type sm | md | lg\n */\n readonly thySize = input<ThySliderSize>('sm');\n\n /**\n * 移动结束后的回调,参数为当前值\n */\n readonly thyAfterChange = output<{ value: number }>();\n\n public value: number;\n\n private dragStartListener: Observable<number>;\n\n private dragMoveListener: Observable<number>;\n\n private dragEndListener: Observable<Event>;\n\n private dragStartHandler: Subscription | null;\n\n private dragMoveHandler: Subscription | null;\n\n private dragEndHandler: Subscription | null;\n\n private hostRenderer = useHostRenderer();\n\n private onChangeCallback = (v: any) => {};\n\n private onTouchedCallback = (v: any) => {};\n\n constructor() {\n super();\n effect(() => {\n if (this.thyType()) {\n const typeName = `thy-slider-${this.thyType() || 'success'}`;\n this.typeClassName() && this.hostRenderer.removeClass(this.typeClassName());\n this.hostRenderer.addClass(typeName);\n this.typeClassName.set(typeName);\n }\n });\n\n effect(() => {\n if (this.thySize()) {\n const sizeName = `thy-slider-${this.thySize() || 'sm'}`;\n this.sizeClassName() && this.hostRenderer.removeClass(this.sizeClassName());\n this.hostRenderer.addClass(sizeName);\n this.sizeClassName.set(sizeName);\n }\n });\n }\n\n ngOnInit() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n verifyMinAndMax(this);\n verifyStepValues(this);\n }\n\n this.toggleDisabled();\n if (this.value === null || this.value === undefined) {\n this.setValue(this.ensureValueInRange(null));\n }\n }\n\n ngAfterViewInit() {\n this.registerMouseEventsListeners();\n this.toggleDisabled();\n }\n\n writeValue(newValue: number) {\n this.setValue(this.ensureValueInRange(newValue));\n }\n\n registerOnChange(fn: any) {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouchedCallback = fn;\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n if (changes.hasOwnProperty('thyMin') || changes.hasOwnProperty('thyMax') || changes.hasOwnProperty('thyStep')) {\n verifyMinAndMax(this);\n verifyStepValues(this);\n }\n }\n }\n\n ngOnDestroy() {\n this.unsubscribeMouseListeners();\n }\n\n private toggleDisabled() {\n if (this.thyDisabled) {\n this.unsubscribeMouseListeners();\n } else {\n this.subscribeMouseListeners(['start']);\n }\n }\n\n private setValue(value: number) {\n if (this.value !== value) {\n this.value = value;\n this.updateTrackAndPointer();\n }\n this.onChangeCallback(this.value);\n }\n\n private ensureValueInRange(value: number): number {\n if (!this.valueMustBeValid(value)) {\n return this.thyMin();\n }\n return clamp(value, this.thyMin(), this.thyMax());\n }\n\n private valueMustBeValid(value: number): boolean {\n return !isNaN(typeof value !== 'number' ? parseFloat(value) : value);\n }\n\n private updateTrackAndPointer() {\n const offset = this.valueToOffset(this.value);\n this.updateStyle(offset / 100);\n this.cdr.markForCheck();\n }\n\n private valueToOffset(value: number): number {\n return ((value - this.thyMin()) * 100) / (this.thyMax() - this.thyMin());\n }\n\n private updateStyle(offsetPercentage: number) {\n const percentage = Math.min(1, Math.max(0, offsetPercentage));\n const orientFields: string[] = this.thyVertical() ? ['height', 'bottom'] : ['width', 'left'];\n this.sliderTrack().nativeElement.style[orientFields[0]] = `${percentage * 100}%`;\n this.sliderPointer().nativeElement.style[orientFields[1]] = `${percentage * 100}%`;\n }\n\n private unsubscribeMouseListeners(actions: string[] = ['start', 'move', 'end']) {\n if (actions.includes('start') && this.dragStartHandler) {\n this.dragStartHandler.unsubscribe();\n this.dragStartHandler = null;\n }\n if (actions.includes('move') && this.dragMoveHandler) {\n this.dragMoveHandler.unsubscribe();\n this.dragMoveHandler = null;\n }\n if (actions.includes('end') && this.dragEndHandler) {\n this.dragEndHandler.unsubscribe();\n this.dragEndHandler = null;\n }\n }\n\n private subscribeMouseListeners(actions: string[] = ['start', 'move', 'end']) {\n if (actions.includes('start') && this.dragStartListener && !this.dragStartHandler) {\n this.dragStartHandler = this.dragStartListener.subscribe(this.mouseStartMoving.bind(this));\n }\n\n if (actions.includes('move') && this.dragMoveListener && !this.dragMoveHandler) {\n this.dragMoveHandler = this.dragMoveListener.subscribe(this.mouseMoving.bind(this));\n }\n\n if (actions.includes('end') && this.dragEndListener && !this.dragEndHandler) {\n this.dragEndHandler = this.dragEndListener.subscribe(this.mouseStopMoving.bind(this));\n }\n }\n\n private mouseStartMoving(value: number) {\n this.pointerController(true);\n this.setValue(value);\n }\n\n private mouseMoving(value: number) {\n this.setValue(this.ensureValueInRange(value));\n this.cdr.markForCheck();\n }\n\n private mouseStopMoving(): void {\n this.pointerController(false);\n this.cdr.markForCheck();\n this.thyAfterChange.emit({ value: this.value });\n }\n\n private pointerController(movable: boolean) {\n if (movable) {\n this.subscribeMouseListeners(['move', 'end']);\n } else {\n this.unsubscribeMouseListeners(['move', 'end']);\n }\n }\n private registerMouseEventsListeners() {\n const orientField = this.thyVertical() ? 'pageY' : 'pageX';\n\n this.dragStartListener = this.ngZone.runOutsideAngular(() => {\n return fromEvent(this.ref.nativeElement, 'mousedown').pipe(\n pluck(orientField),\n map((position: number, index) => this.mousePositionToAdaptiveValue(position))\n );\n });\n\n this.dragEndListener = this.ngZone.runOutsideAngular(() => {\n return fromEvent(document, 'mouseup');\n });\n\n this.dragMoveListener = this.ngZone.runOutsideAngular(() => {\n return fromEvent(document, 'mousemove').pipe(\n tap((e: Event) => {\n e.stopPropagation();\n e.preventDefault();\n }),\n pluck(orientField),\n distinctUntilChanged(),\n map((position: number) => this.mousePositionToAdaptiveValue(position)),\n distinctUntilChanged(),\n takeUntil(this.dragEndListener)\n );\n });\n }\n\n private mousePositionToAdaptiveValue(position: number): number {\n const sliderStartPosition = this.getSliderPagePosition();\n const sliderLength = this.getRailLength();\n if (!sliderLength) {\n return this.value;\n }\n const ratio = this.convertPointerPositionToRatio(position, sliderStartPosition, sliderLength);\n const value = this.ratioToValue(ratio);\n return parseFloat(value.toFixed(this.getDecimals(this.thyStep())));\n }\n\n private getSliderPagePosition(): number {\n const rect = this.ref.nativeElement.getBoundingClientRect();\n const window = this.ref.nativeElement.ownerDocument.defaultView;\n const orientFields: string[] = this.thyVertical() ? ['bottom', 'pageYOffset'] : ['left', 'pageXOffset'];\n return rect[orientFields[0]] + window[orientFields[1]];\n }\n\n private getRailLength() {\n const orientFiled = this.thyVertical() ? 'clientHeight' : 'clientWidth';\n\n return this.sliderRail().nativeElement[orientFiled];\n }\n\n private convertPointerPositionToRatio(pointerPosition: number, startPosition: number, totalLength: number) {\n if (this.thyVertical()) {\n return clamp((startPosition - pointerPosition) / totalLength, 0, 1);\n }\n return clamp((pointerPosition - startPosition) / totalLength, 0, 1);\n }\n\n private ratioToValue(ratio: number) {\n let value = (this.thyMax() - this.thyMin()) * ratio + this.thyMin();\n const step = this.thyStep();\n if (ratio === 0) {\n value = this.thyMin();\n } else if (ratio === 1) {\n value = this.thyMax();\n } else {\n value = Math.round(value / step) * step;\n }\n return clamp(value, this.thyMin(), this.thyMax());\n }\n\n private getDecimals(value: number): number {\n const valueString = value.toString();\n const integerLength = valueString.indexOf('.') + 1;\n return integerLength >= 0 ? valueString.length - integerLength : 0;\n }\n}\n\n// Note: keep `verifyMinAndMax` and `verifyStepValues` as separate functions (not as class properties)\n// so they're tree-shakable in production mode.\n\nfunction verifyMinAndMax(ctx: ThySlider): void | never {\n if (ctx.thyMin() >= ctx.thyMax()) {\n throw new Error('min value must less than max value.');\n }\n}\n\nfunction verifyStepValues(ctx: ThySlider): void | never {\n const thyStep = ctx.thyStep();\n if (ctx.thyStep() <= 0 || !thyStep) {\n throw new Error('step value must be greater than 0.');\n } else if (Number.isInteger(thyStep) && (ctx.thyMax() - ctx.thyMin()) % thyStep) {\n throw new Error('(max - min) must be divisible by step.');\n }\n}\n","<div class=\"thy-slider-rail\" #sliderRail>\n <div class=\"thy-slider-track\" #sliderTrack [ngStyle]=\"{ 'background-color': thyColor() }\"></div>\n <div class=\"thy-slider-pointer\" #sliderPointer [ngStyle]=\"{ 'border-color': thyColor() }\"></div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { ThySlider } from './slider.component';\n\n@NgModule({\n imports: [CommonModule, FormsModule, ThySlider],\n exports: [ThySlider],\n providers: []\n})\nexport class ThySliderModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,8 +1,7 @@
1
1
  import { NgTemplateOutlet, CommonModule } from '@angular/common';
2
2
  import * as i0 from '@angular/core';
3
- import { Directive, inject, ChangeDetectorRef, DestroyRef, TemplateRef, ContentChildren, Input, HostBinding, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
3
+ import { Directive, input, computed, contentChildren, TemplateRef, effect, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
4
4
  import { useHostRenderer } from '@tethys/cdk/dom';
5
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
6
5
  import { getNumericSize } from 'ngx-tethys/core';
7
6
  import { coerceBooleanProperty } from 'ngx-tethys/util';
8
7
 
@@ -12,20 +11,13 @@ import { coerceBooleanProperty } from 'ngx-tethys/util';
12
11
  * @order 20
13
12
  */
14
13
  class ThySpaceItemDirective {
15
- constructor() { }
16
- ngOnInit() { }
17
14
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThySpaceItemDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
18
15
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.8", type: ThySpaceItemDirective, isStandalone: true, selector: "[thySpaceItem]", host: { classAttribute: "thy-space-item" }, ngImport: i0 }); }
19
16
  }
20
17
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThySpaceItemDirective, decorators: [{
21
18
  type: Directive,
22
- args: [{
23
- selector: '[thySpaceItem]',
24
- host: {
25
- class: 'thy-space-item'
26
- }
27
- }]
28
- }], ctorParameters: () => [] });
19
+ args: [{ selector: '[thySpaceItem]', host: { class: 'thy-space-item' } }]
20
+ }] });
29
21
  const DEFAULT_SIZE = 'md';
30
22
  /**
31
23
  * 间距组件
@@ -34,57 +26,39 @@ const DEFAULT_SIZE = 'md';
34
26
  */
35
27
  class ThySpace {
36
28
  constructor() {
37
- this.cdr = inject(ChangeDetectorRef);
38
- this.destroyRef = inject(DestroyRef);
39
- this.space = getNumericSize(DEFAULT_SIZE);
40
29
  this.hostRenderer = useHostRenderer();
30
+ /**
31
+ * 大小,支持 `zero` | `xxs` | `xs` | `sm` | `md` | `lg` | `xlg` 和自定义数字大小
32
+ * @type string | number
33
+ */
34
+ this.thySize = input(DEFAULT_SIZE);
35
+ this.space = computed(() => {
36
+ return getNumericSize(this.thySize(), DEFAULT_SIZE);
37
+ });
41
38
  /**
42
39
  * 间距垂直方向,默认是水平方向
43
40
  */
44
- this.thyVertical = false;
45
- }
46
- /**
47
- * 大小,支持 `zero` | `xxs` | `xs` | `sm` | `md` | `lg` | `xlg` 和自定义数字大小
48
- * @type string | number
49
- */
50
- set thySize(size) {
51
- this.space = getNumericSize(size, DEFAULT_SIZE);
52
- }
53
- // @ClassBinding(`align-items-{{value}}`)
54
- /**
55
- * 对齐方式,可选择 `start` | `end` | `baseline` | `center`
56
- */
57
- set thyAlign(align) {
58
- this.hostRenderer.updateClass(align ? [`align-items-${align}`] : []);
59
- }
60
- ngOnInit() { }
61
- ngAfterContentInit() {
62
- this.items.changes.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {
63
- this.cdr.markForCheck();
41
+ this.thyVertical = input(false, { transform: coerceBooleanProperty });
42
+ // @ClassBinding(`align-items-{{value}}`)
43
+ /**
44
+ * 对齐方式,可选择 `start` | `end` | `baseline` | `center`
45
+ */
46
+ this.thyAlign = input();
47
+ this.items = contentChildren(ThySpaceItemDirective, { read: (TemplateRef) });
48
+ effect(() => {
49
+ this.hostRenderer.updateClass(this.thyAlign() ? [`align-items-${this.thyAlign()}`] : []);
64
50
  });
65
51
  }
66
52
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThySpace, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
67
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.8", type: ThySpace, isStandalone: true, selector: "thy-space", inputs: { thySize: "thySize", thyVertical: ["thyVertical", "thyVertical", coerceBooleanProperty], thyAlign: "thyAlign" }, host: { properties: { "class.thy-space-vertical": "this.thyVertical" }, classAttribute: "thy-space" }, queries: [{ propertyName: "items", predicate: ThySpaceItemDirective, read: TemplateRef }], ngImport: i0, template: "<ng-content></ng-content>\n\n@for (item of items; track $index; let last = $last; let index = $index) {\n <div class=\"thy-space-item\" [style.margin-right.px]=\"last ? null : space\">\n <ng-container [ngTemplateOutlet]=\"item\"></ng-container>\n </div>\n}\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
53
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.8", type: ThySpace, isStandalone: true, selector: "thy-space", inputs: { thySize: { classPropertyName: "thySize", publicName: "thySize", isSignal: true, isRequired: false, transformFunction: null }, thyVertical: { classPropertyName: "thyVertical", publicName: "thyVertical", isSignal: true, isRequired: false, transformFunction: null }, thyAlign: { classPropertyName: "thyAlign", publicName: "thyAlign", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.thy-space": "true", "class.thy-space-vertical": "thyVertical()" } }, queries: [{ propertyName: "items", predicate: ThySpaceItemDirective, read: TemplateRef, isSignal: true }], ngImport: i0, template: "<ng-content></ng-content>\n\n@for (item of items(); track $index; let last = $last; let index = $index) {\n <div class=\"thy-space-item\" [style.margin-right.px]=\"last ? null : space()\">\n <ng-container [ngTemplateOutlet]=\"item\"></ng-container>\n </div>\n}\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
68
54
  }
69
55
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThySpace, decorators: [{
70
56
  type: Component,
71
57
  args: [{ selector: 'thy-space', changeDetection: ChangeDetectionStrategy.OnPush, host: {
72
- class: 'thy-space'
73
- }, imports: [NgTemplateOutlet], template: "<ng-content></ng-content>\n\n@for (item of items; track $index; let last = $last; let index = $index) {\n <div class=\"thy-space-item\" [style.margin-right.px]=\"last ? null : space\">\n <ng-container [ngTemplateOutlet]=\"item\"></ng-container>\n </div>\n}\n" }]
74
- }], propDecorators: { thySize: [{
75
- type: Input
76
- }], thyVertical: [{
77
- type: HostBinding,
78
- args: [`class.thy-space-vertical`]
79
- }, {
80
- type: Input,
81
- args: [{ transform: coerceBooleanProperty }]
82
- }], thyAlign: [{
83
- type: Input
84
- }], items: [{
85
- type: ContentChildren,
86
- args: [ThySpaceItemDirective, { read: TemplateRef }]
87
- }] } });
58
+ '[class.thy-space]': 'true',
59
+ '[class.thy-space-vertical]': 'thyVertical()'
60
+ }, imports: [NgTemplateOutlet], template: "<ng-content></ng-content>\n\n@for (item of items(); track $index; let last = $last; let index = $index) {\n <div class=\"thy-space-item\" [style.margin-right.px]=\"last ? null : space()\">\n <ng-container [ngTemplateOutlet]=\"item\"></ng-container>\n </div>\n}\n" }]
61
+ }], ctorParameters: () => [] });
88
62
 
89
63
  class ThySpaceModule {
90
64
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThySpaceModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-tethys-space.mjs","sources":["../../../src/space/space.component.ts","../../../src/space/space.component.html","../../../src/space/space.module.ts","../../../src/space/ngx-tethys-space.ts"],"sourcesContent":["import { useHostRenderer } from '@tethys/cdk/dom';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n DestroyRef,\n Directive,\n HostBinding,\n inject,\n Input,\n OnInit,\n QueryList,\n TemplateRef\n} from '@angular/core';\nimport { ThySpacingSize, getNumericSize } from 'ngx-tethys/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\n\n/**\n * 间距组件项,使用结构性指令 *thySpaceItem 传入模板\n * @name thySpaceItem\n * @order 20\n */\n@Directive({\n selector: '[thySpaceItem]',\n host: {\n class: 'thy-space-item'\n }\n})\nexport class ThySpaceItemDirective implements OnInit {\n constructor() {}\n\n ngOnInit(): void {}\n}\n\nconst DEFAULT_SIZE: ThySpacingSize = 'md';\n\n/**\n * 间距组件\n * @name thy-space\n * @order 10\n */\n@Component({\n selector: 'thy-space',\n templateUrl: './space.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'thy-space'\n },\n imports: [NgTemplateOutlet]\n})\nexport class ThySpace implements OnInit, AfterContentInit {\n private cdr = inject(ChangeDetectorRef);\n\n private readonly destroyRef = inject(DestroyRef);\n\n public space: number = getNumericSize(DEFAULT_SIZE);\n\n private hostRenderer = useHostRenderer();\n\n /**\n * 大小,支持 `zero` | `xxs` | `xs` | `sm` | `md` | `lg` | `xlg` 和自定义数字大小\n * @type string | number\n */\n @Input() set thySize(size: ThySpacingSize) {\n this.space = getNumericSize(size, DEFAULT_SIZE);\n }\n\n /**\n * 间距垂直方向,默认是水平方向\n */\n @HostBinding(`class.thy-space-vertical`)\n @Input({ transform: coerceBooleanProperty })\n thyVertical: boolean = false;\n\n // @ClassBinding(`align-items-{{value}}`)\n /**\n * 对齐方式,可选择 `start` | `end` | `baseline` | `center`\n */\n @Input()\n set thyAlign(align: string) {\n this.hostRenderer.updateClass(align ? [`align-items-${align}`] : []);\n }\n\n @ContentChildren(ThySpaceItemDirective, { read: TemplateRef }) items!: QueryList<TemplateRef<HTMLElement>>;\n\n ngOnInit(): void {}\n\n ngAfterContentInit(): void {\n this.items.changes.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.cdr.markForCheck();\n });\n }\n}\n","<ng-content></ng-content>\n\n@for (item of items; track $index; let last = $last; let index = $index) {\n <div class=\"thy-space-item\" [style.margin-right.px]=\"last ? null : space\">\n <ng-container [ngTemplateOutlet]=\"item\"></ng-container>\n </div>\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { ThySpace, ThySpaceItemDirective } from './space.component';\n\n@NgModule({\n imports: [CommonModule, ThySpace, ThySpaceItemDirective],\n exports: [ThySpace, ThySpaceItemDirective]\n})\nexport class ThySpaceModule {}\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-space.mjs","sources":["../../../src/space/space.component.ts","../../../src/space/space.component.html","../../../src/space/space.module.ts","../../../src/space/ngx-tethys-space.ts"],"sourcesContent":["import { useHostRenderer } from '@tethys/cdk/dom';\n\nimport { ChangeDetectionStrategy, Component, Directive, input, TemplateRef, computed, effect, contentChildren } from '@angular/core';\nimport { ThySpacingSize, getNumericSize } from 'ngx-tethys/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\n\n/**\n * 间距组件项,使用结构性指令 *thySpaceItem 传入模板\n * @name thySpaceItem\n * @order 20\n */\n@Directive({ selector: '[thySpaceItem]', host: { class: 'thy-space-item' } })\nexport class ThySpaceItemDirective {}\n\nconst DEFAULT_SIZE: ThySpacingSize = 'md';\n\n/**\n * 间距组件\n * @name thy-space\n * @order 10\n */\n@Component({\n selector: 'thy-space',\n templateUrl: './space.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.thy-space]': 'true',\n '[class.thy-space-vertical]': 'thyVertical()'\n },\n imports: [NgTemplateOutlet]\n})\nexport class ThySpace {\n private hostRenderer = useHostRenderer();\n\n /**\n * 大小,支持 `zero` | `xxs` | `xs` | `sm` | `md` | `lg` | `xlg` 和自定义数字大小\n * @type string | number\n */\n readonly thySize = input<ThySpacingSize>(DEFAULT_SIZE);\n\n readonly space = computed(() => {\n return getNumericSize(this.thySize(), DEFAULT_SIZE);\n });\n\n /**\n * 间距垂直方向,默认是水平方向\n */\n readonly thyVertical = input<string | boolean, boolean>(false, { transform: coerceBooleanProperty });\n\n // @ClassBinding(`align-items-{{value}}`)\n /**\n * 对齐方式,可选择 `start` | `end` | `baseline` | `center`\n */\n readonly thyAlign = input<string>();\n\n readonly items = contentChildren(ThySpaceItemDirective, { read: TemplateRef<HTMLElement> });\n\n constructor() {\n effect(() => {\n this.hostRenderer.updateClass(this.thyAlign() ? [`align-items-${this.thyAlign()}`] : []);\n });\n }\n}\n","<ng-content></ng-content>\n\n@for (item of items(); track $index; let last = $last; let index = $index) {\n <div class=\"thy-space-item\" [style.margin-right.px]=\"last ? null : space()\">\n <ng-container [ngTemplateOutlet]=\"item\"></ng-container>\n </div>\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { ThySpace, ThySpaceItemDirective } from './space.component';\n\n@NgModule({\n imports: [CommonModule, ThySpace, ThySpaceItemDirective],\n exports: [ThySpace, ThySpaceItemDirective]\n})\nexport class ThySpaceModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}