ngx-tethys 20.0.1 → 20.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (239) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/action/index.d.ts +3 -3
  3. package/affix/index.d.ts +1 -1
  4. package/alert/index.d.ts +3 -3
  5. package/anchor/index.d.ts +3 -3
  6. package/arrow-switcher/index.d.ts +6 -6
  7. package/autocomplete/index.d.ts +7 -7
  8. package/avatar/index.d.ts +9 -9
  9. package/back-top/index.d.ts +3 -3
  10. package/badge/index.d.ts +6 -6
  11. package/breadcrumb/index.d.ts +7 -7
  12. package/button/index.d.ts +19 -19
  13. package/calendar/index.d.ts +8 -8
  14. package/card/index.d.ts +6 -6
  15. package/carousel/index.d.ts +4 -4
  16. package/cascader/index.d.ts +24 -24
  17. package/collapse/index.d.ts +4 -4
  18. package/color-picker/index.d.ts +16 -16
  19. package/comment/index.d.ts +3 -3
  20. package/copy/index.d.ts +2 -2
  21. package/core/index.d.ts +22 -22
  22. package/date-picker/index.d.ts +111 -111
  23. package/date-range/index.d.ts +5 -5
  24. package/dialog/index.d.ts +18 -18
  25. package/divider/index.d.ts +3 -3
  26. package/drag-drop/index.d.ts +7 -7
  27. package/dropdown/index.d.ts +10 -10
  28. package/empty/index.d.ts +12 -12
  29. package/fesm2022/ngx-tethys-action.mjs +14 -12
  30. package/fesm2022/ngx-tethys-action.mjs.map +1 -1
  31. package/fesm2022/ngx-tethys-affix.mjs +7 -7
  32. package/fesm2022/ngx-tethys-affix.mjs.map +1 -1
  33. package/fesm2022/ngx-tethys-alert.mjs +10 -10
  34. package/fesm2022/ngx-tethys-anchor.mjs +11 -11
  35. package/fesm2022/ngx-tethys-anchor.mjs.map +1 -1
  36. package/fesm2022/ngx-tethys-arrow-switcher.mjs +7 -7
  37. package/fesm2022/ngx-tethys-arrow-switcher.mjs.map +1 -1
  38. package/fesm2022/ngx-tethys-autocomplete.mjs +19 -18
  39. package/fesm2022/ngx-tethys-autocomplete.mjs.map +1 -1
  40. package/fesm2022/ngx-tethys-avatar.mjs +23 -22
  41. package/fesm2022/ngx-tethys-avatar.mjs.map +1 -1
  42. package/fesm2022/ngx-tethys-back-top.mjs +7 -7
  43. package/fesm2022/ngx-tethys-badge.mjs +7 -7
  44. package/fesm2022/ngx-tethys-badge.mjs.map +1 -1
  45. package/fesm2022/ngx-tethys-breadcrumb.mjs +10 -10
  46. package/fesm2022/ngx-tethys-breadcrumb.mjs.map +1 -1
  47. package/fesm2022/ngx-tethys-button.mjs +16 -16
  48. package/fesm2022/ngx-tethys-button.mjs.map +1 -1
  49. package/fesm2022/ngx-tethys-calendar.mjs +16 -16
  50. package/fesm2022/ngx-tethys-calendar.mjs.map +1 -1
  51. package/fesm2022/ngx-tethys-card.mjs +13 -13
  52. package/fesm2022/ngx-tethys-card.mjs.map +1 -1
  53. package/fesm2022/ngx-tethys-carousel.mjs +15 -15
  54. package/fesm2022/ngx-tethys-carousel.mjs.map +1 -1
  55. package/fesm2022/ngx-tethys-cascader.mjs +41 -34
  56. package/fesm2022/ngx-tethys-cascader.mjs.map +1 -1
  57. package/fesm2022/ngx-tethys-checkbox.mjs +7 -7
  58. package/fesm2022/ngx-tethys-collapse.mjs +10 -10
  59. package/fesm2022/ngx-tethys-color-picker.mjs +65 -57
  60. package/fesm2022/ngx-tethys-color-picker.mjs.map +1 -1
  61. package/fesm2022/ngx-tethys-comment.mjs +13 -13
  62. package/fesm2022/ngx-tethys-copy.mjs +10 -10
  63. package/fesm2022/ngx-tethys-copy.mjs.map +1 -1
  64. package/fesm2022/ngx-tethys-core.mjs +30 -25
  65. package/fesm2022/ngx-tethys-core.mjs.map +1 -1
  66. package/fesm2022/ngx-tethys-date-picker.mjs +184 -174
  67. package/fesm2022/ngx-tethys-date-picker.mjs.map +1 -1
  68. package/fesm2022/ngx-tethys-date-range.mjs +16 -16
  69. package/fesm2022/ngx-tethys-date-range.mjs.map +1 -1
  70. package/fesm2022/ngx-tethys-dialog.mjs +24 -24
  71. package/fesm2022/ngx-tethys-dialog.mjs.map +1 -1
  72. package/fesm2022/ngx-tethys-divider.mjs +7 -7
  73. package/fesm2022/ngx-tethys-divider.mjs.map +1 -1
  74. package/fesm2022/ngx-tethys-dot.mjs +7 -7
  75. package/fesm2022/ngx-tethys-drag-drop.mjs +24 -24
  76. package/fesm2022/ngx-tethys-drag-drop.mjs.map +1 -1
  77. package/fesm2022/ngx-tethys-dropdown.mjs +48 -47
  78. package/fesm2022/ngx-tethys-dropdown.mjs.map +1 -1
  79. package/fesm2022/ngx-tethys-empty.mjs +13 -13
  80. package/fesm2022/ngx-tethys-empty.mjs.map +1 -1
  81. package/fesm2022/ngx-tethys-flexible-text.mjs +7 -7
  82. package/fesm2022/ngx-tethys-flexible-text.mjs.map +1 -1
  83. package/fesm2022/ngx-tethys-form.mjs +64 -61
  84. package/fesm2022/ngx-tethys-form.mjs.map +1 -1
  85. package/fesm2022/ngx-tethys-fullscreen.mjs +18 -15
  86. package/fesm2022/ngx-tethys-fullscreen.mjs.map +1 -1
  87. package/fesm2022/ngx-tethys-grid.mjs +34 -33
  88. package/fesm2022/ngx-tethys-grid.mjs.map +1 -1
  89. package/fesm2022/ngx-tethys-guider.mjs +25 -24
  90. package/fesm2022/ngx-tethys-guider.mjs.map +1 -1
  91. package/fesm2022/ngx-tethys-i18n.mjs +3 -3
  92. package/fesm2022/ngx-tethys-i18n.mjs.map +1 -1
  93. package/fesm2022/ngx-tethys-icon.mjs +15 -13
  94. package/fesm2022/ngx-tethys-icon.mjs.map +1 -1
  95. package/fesm2022/ngx-tethys-image.mjs +31 -29
  96. package/fesm2022/ngx-tethys-image.mjs.map +1 -1
  97. package/fesm2022/ngx-tethys-input-number.mjs +17 -10
  98. package/fesm2022/ngx-tethys-input-number.mjs.map +1 -1
  99. package/fesm2022/ngx-tethys-input.mjs +28 -27
  100. package/fesm2022/ngx-tethys-input.mjs.map +1 -1
  101. package/fesm2022/ngx-tethys-layout.mjs +63 -63
  102. package/fesm2022/ngx-tethys-layout.mjs.map +1 -1
  103. package/fesm2022/ngx-tethys-list.mjs +21 -18
  104. package/fesm2022/ngx-tethys-list.mjs.map +1 -1
  105. package/fesm2022/ngx-tethys-loading.mjs +7 -7
  106. package/fesm2022/ngx-tethys-mention.mjs +35 -31
  107. package/fesm2022/ngx-tethys-mention.mjs.map +1 -1
  108. package/fesm2022/ngx-tethys-menu.mjs +26 -26
  109. package/fesm2022/ngx-tethys-menu.mjs.map +1 -1
  110. package/fesm2022/ngx-tethys-message.mjs +24 -24
  111. package/fesm2022/ngx-tethys-message.mjs.map +1 -1
  112. package/fesm2022/ngx-tethys-nav.mjs +27 -27
  113. package/fesm2022/ngx-tethys-nav.mjs.map +1 -1
  114. package/fesm2022/ngx-tethys-notify.mjs +20 -20
  115. package/fesm2022/ngx-tethys-notify.mjs.map +1 -1
  116. package/fesm2022/ngx-tethys-pagination.mjs +18 -18
  117. package/fesm2022/ngx-tethys-pagination.mjs.map +1 -1
  118. package/fesm2022/ngx-tethys-popover.mjs +22 -21
  119. package/fesm2022/ngx-tethys-popover.mjs.map +1 -1
  120. package/fesm2022/ngx-tethys-progress.mjs +17 -17
  121. package/fesm2022/ngx-tethys-progress.mjs.map +1 -1
  122. package/fesm2022/ngx-tethys-property-operation.mjs +11 -11
  123. package/fesm2022/ngx-tethys-property-operation.mjs.map +1 -1
  124. package/fesm2022/ngx-tethys-property.mjs +12 -11
  125. package/fesm2022/ngx-tethys-property.mjs.map +1 -1
  126. package/fesm2022/ngx-tethys-radio.mjs +17 -17
  127. package/fesm2022/ngx-tethys-radio.mjs.map +1 -1
  128. package/fesm2022/ngx-tethys-rate.mjs +12 -12
  129. package/fesm2022/ngx-tethys-rate.mjs.map +1 -1
  130. package/fesm2022/ngx-tethys-resizable.mjs +21 -18
  131. package/fesm2022/ngx-tethys-resizable.mjs.map +1 -1
  132. package/fesm2022/ngx-tethys-result.mjs +11 -11
  133. package/fesm2022/ngx-tethys-result.mjs.map +1 -1
  134. package/fesm2022/ngx-tethys-segment.mjs +19 -16
  135. package/fesm2022/ngx-tethys-segment.mjs.map +1 -1
  136. package/fesm2022/ngx-tethys-select.mjs +60 -38
  137. package/fesm2022/ngx-tethys-select.mjs.map +1 -1
  138. package/fesm2022/ngx-tethys-shared.mjs +82 -79
  139. package/fesm2022/ngx-tethys-shared.mjs.map +1 -1
  140. package/fesm2022/ngx-tethys-skeleton.mjs +32 -32
  141. package/fesm2022/ngx-tethys-skeleton.mjs.map +1 -1
  142. package/fesm2022/ngx-tethys-slide.mjs +37 -36
  143. package/fesm2022/ngx-tethys-slide.mjs.map +1 -1
  144. package/fesm2022/ngx-tethys-slider.mjs +11 -11
  145. package/fesm2022/ngx-tethys-slider.mjs.map +1 -1
  146. package/fesm2022/ngx-tethys-space.mjs +10 -10
  147. package/fesm2022/ngx-tethys-statistic.mjs +7 -7
  148. package/fesm2022/ngx-tethys-statistic.mjs.map +1 -1
  149. package/fesm2022/ngx-tethys-stepper.mjs +22 -22
  150. package/fesm2022/ngx-tethys-stepper.mjs.map +1 -1
  151. package/fesm2022/ngx-tethys-strength.mjs +7 -7
  152. package/fesm2022/ngx-tethys-strength.mjs.map +1 -1
  153. package/fesm2022/ngx-tethys-switch.mjs +7 -7
  154. package/fesm2022/ngx-tethys-switch.mjs.map +1 -1
  155. package/fesm2022/ngx-tethys-table.mjs +28 -28
  156. package/fesm2022/ngx-tethys-table.mjs.map +1 -1
  157. package/fesm2022/ngx-tethys-tabs.mjs +13 -13
  158. package/fesm2022/ngx-tethys-tabs.mjs.map +1 -1
  159. package/fesm2022/ngx-tethys-tag.mjs +11 -11
  160. package/fesm2022/ngx-tethys-tag.mjs.map +1 -1
  161. package/fesm2022/ngx-tethys-testing.mjs +1 -1
  162. package/fesm2022/ngx-tethys-testing.mjs.map +1 -1
  163. package/fesm2022/ngx-tethys-time-picker.mjs +22 -22
  164. package/fesm2022/ngx-tethys-time-picker.mjs.map +1 -1
  165. package/fesm2022/ngx-tethys-timeline.mjs +14 -14
  166. package/fesm2022/ngx-tethys-timeline.mjs.map +1 -1
  167. package/fesm2022/ngx-tethys-tooltip.mjs +19 -16
  168. package/fesm2022/ngx-tethys-tooltip.mjs.map +1 -1
  169. package/fesm2022/ngx-tethys-transfer.mjs +15 -15
  170. package/fesm2022/ngx-tethys-transfer.mjs.map +1 -1
  171. package/fesm2022/ngx-tethys-tree-select.mjs +17 -17
  172. package/fesm2022/ngx-tethys-tree-select.mjs.map +1 -1
  173. package/fesm2022/ngx-tethys-tree.mjs +50 -43
  174. package/fesm2022/ngx-tethys-tree.mjs.map +1 -1
  175. package/fesm2022/ngx-tethys-typography.mjs +16 -16
  176. package/fesm2022/ngx-tethys-typography.mjs.map +1 -1
  177. package/fesm2022/ngx-tethys-upload.mjs +26 -25
  178. package/fesm2022/ngx-tethys-upload.mjs.map +1 -1
  179. package/fesm2022/ngx-tethys-util.mjs +11 -5
  180. package/fesm2022/ngx-tethys-util.mjs.map +1 -1
  181. package/fesm2022/ngx-tethys-vote.mjs +7 -7
  182. package/fesm2022/ngx-tethys-watermark.mjs +18 -15
  183. package/fesm2022/ngx-tethys-watermark.mjs.map +1 -1
  184. package/fesm2022/ngx-tethys.mjs +1 -1
  185. package/fesm2022/ngx-tethys.mjs.map +1 -1
  186. package/flexible-text/index.d.ts +5 -5
  187. package/form/index.d.ts +26 -22
  188. package/fullscreen/index.d.ts +4 -4
  189. package/grid/index.d.ts +12 -12
  190. package/guider/index.d.ts +10 -10
  191. package/i18n/index.d.ts +1 -1
  192. package/icon/index.d.ts +3 -3
  193. package/image/index.d.ts +12 -12
  194. package/input/index.d.ts +22 -22
  195. package/input-number/index.d.ts +4 -4
  196. package/layout/index.d.ts +16 -16
  197. package/list/index.d.ts +16 -15
  198. package/mention/index.d.ts +4 -4
  199. package/menu/index.d.ts +7 -7
  200. package/message/index.d.ts +5 -5
  201. package/nav/index.d.ts +12 -12
  202. package/notify/index.d.ts +1 -1
  203. package/package.json +1 -1
  204. package/pagination/index.d.ts +21 -17
  205. package/popover/index.d.ts +8 -8
  206. package/progress/index.d.ts +18 -18
  207. package/property/index.d.ts +6 -6
  208. package/property-operation/index.d.ts +3 -3
  209. package/radio/index.d.ts +6 -6
  210. package/rate/index.d.ts +5 -5
  211. package/resizable/index.d.ts +2 -2
  212. package/result/index.d.ts +8 -8
  213. package/schematics/testing/test-workspace.js +1 -0
  214. package/schematics/version.d.ts +1 -1
  215. package/schematics/version.js +1 -1
  216. package/segment/index.d.ts +9 -9
  217. package/select/index.d.ts +21 -21
  218. package/shared/index.d.ts +29 -29
  219. package/skeleton/index.d.ts +52 -52
  220. package/slide/index.d.ts +5 -5
  221. package/slider/index.d.ts +6 -6
  222. package/space/index.d.ts +1 -1
  223. package/statistic/index.d.ts +18 -18
  224. package/stepper/index.d.ts +8 -8
  225. package/switch/index.d.ts +2 -2
  226. package/table/index.d.ts +24 -24
  227. package/tabs/index.d.ts +6 -6
  228. package/testing/index.d.ts +1 -1
  229. package/time-picker/index.d.ts +21 -21
  230. package/timeline/index.d.ts +8 -8
  231. package/tooltip/index.d.ts +12 -12
  232. package/transfer/index.d.ts +16 -16
  233. package/tree/index.d.ts +28 -28
  234. package/tree-select/index.d.ts +13 -13
  235. package/typography/index.d.ts +3 -3
  236. package/upload/index.d.ts +4 -4
  237. package/util/index.d.ts +17 -7
  238. package/vote/index.d.ts +2 -2
  239. package/watermark/index.d.ts +2 -2
@@ -4,7 +4,7 @@ import { NgClass, CommonModule } from '@angular/common';
4
4
  import { ThyIcon, ThyIconModule } from 'ngx-tethys/icon';
5
5
  import { ThyTooltipModule } from 'ngx-tethys/tooltip';
6
6
  import { thumbMotion } from 'ngx-tethys/core';
7
- import { coerceBooleanProperty, assertIconOnly } from 'ngx-tethys/util';
7
+ import { coerceBooleanProperty, assertIconOnly, isUndefinedOrNull } from 'ngx-tethys/util';
8
8
  import { fromEvent } from 'rxjs';
9
9
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
10
10
 
@@ -75,15 +75,15 @@ class ThySegmentItem {
75
75
  }
76
76
  });
77
77
  }
78
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ThySegmentItem, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
79
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: ThySegmentItem, isStandalone: true, selector: "thy-segment-item,[thy-segment-item]", inputs: { thyValue: { classPropertyName: "thyValue", publicName: "thyValue", isSignal: true, isRequired: false, transformFunction: null }, thyIcon: { classPropertyName: "thyIcon", publicName: "thyIcon", isSignal: true, isRequired: false, transformFunction: null }, thyDisabled: { classPropertyName: "thyDisabled", publicName: "thyDisabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.disabled": "thyDisabled()" }, classAttribute: "thy-segment-item" }, ngImport: i0, template: "<div\n class=\"thy-segment-item-label\"\n [ngClass]=\"{\n 'thy-segment-item-label-only-icon': isOnlyIcon()\n }\"\n >\n @if (thyIcon()) {\n <thy-icon class=\"thy-segment-item-icon\" [ngClass]=\"{ 'icon-with-text': isWithText() }\" [thyIconName]=\"thyIcon()\"></thy-icon>\n }\n <ng-content></ng-content>\n</div>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ThyIcon, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
78
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ThySegmentItem, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
79
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: ThySegmentItem, isStandalone: true, selector: "thy-segment-item,[thy-segment-item]", inputs: { thyValue: { classPropertyName: "thyValue", publicName: "thyValue", isSignal: true, isRequired: false, transformFunction: null }, thyIcon: { classPropertyName: "thyIcon", publicName: "thyIcon", isSignal: true, isRequired: false, transformFunction: null }, thyDisabled: { classPropertyName: "thyDisabled", publicName: "thyDisabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.disabled": "thyDisabled()" }, classAttribute: "thy-segment-item" }, ngImport: i0, template: "<div\n class=\"thy-segment-item-label\"\n [ngClass]=\"{\n 'thy-segment-item-label-only-icon': isOnlyIcon()\n }\">\n @if (thyIcon()) {\n <thy-icon class=\"thy-segment-item-icon\" [ngClass]=\"{ 'icon-with-text': isWithText() }\" [thyIconName]=\"thyIcon()\"></thy-icon>\n }\n <ng-content></ng-content>\n</div>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ThyIcon, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
80
80
  }
81
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ThySegmentItem, decorators: [{
81
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ThySegmentItem, decorators: [{
82
82
  type: Component,
83
83
  args: [{ selector: 'thy-segment-item,[thy-segment-item]', changeDetection: ChangeDetectionStrategy.OnPush, host: {
84
84
  class: 'thy-segment-item',
85
85
  '[class.disabled]': 'thyDisabled()'
86
- }, imports: [NgClass, ThyIcon], template: "<div\n class=\"thy-segment-item-label\"\n [ngClass]=\"{\n 'thy-segment-item-label-only-icon': isOnlyIcon()\n }\"\n >\n @if (thyIcon()) {\n <thy-icon class=\"thy-segment-item-icon\" [ngClass]=\"{ 'icon-with-text': isWithText() }\" [thyIconName]=\"thyIcon()\"></thy-icon>\n }\n <ng-content></ng-content>\n</div>\n" }]
86
+ }, imports: [NgClass, ThyIcon], template: "<div\n class=\"thy-segment-item-label\"\n [ngClass]=\"{\n 'thy-segment-item-label-only-icon': isOnlyIcon()\n }\">\n @if (thyIcon()) {\n <thy-icon class=\"thy-segment-item-icon\" [ngClass]=\"{ 'icon-with-text': isWithText() }\" [thyIconName]=\"thyIcon()\"></thy-icon>\n }\n <ng-content></ng-content>\n</div>\n" }]
87
87
  }], ctorParameters: () => [], propDecorators: { thyValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyValue", required: false }] }], thyIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyIcon", required: false }] }], thyDisabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyDisabled", required: false }] }] } });
88
88
 
89
89
  /**
@@ -120,12 +120,13 @@ class ThySegment {
120
120
  * 选项被选中的回调事件
121
121
  */
122
122
  this.thySelectChange = output();
123
+ this.selectedItem = null;
123
124
  this.animationState = signal(null, ...(ngDevMode ? [{ debugName: "animationState" }] : []));
124
125
  this.transitionedTo = null;
125
126
  effect(() => {
126
127
  const value = this.thyActiveIndex();
127
128
  this.newActiveIndex = value;
128
- if (value < 0 || value === this.activeIndex) {
129
+ if (isUndefinedOrNull(value) || value < 0 || value === this.activeIndex) {
129
130
  return;
130
131
  }
131
132
  setTimeout(() => {
@@ -145,14 +146,16 @@ class ThySegment {
145
146
  (options || []).forEach(item => {
146
147
  item.unselect();
147
148
  });
148
- this.selectedItem = options?.[this.newActiveIndex] || options?.[0];
149
+ this.selectedItem = (!isUndefinedOrNull(this.newActiveIndex) && options?.[this.newActiveIndex]) || options?.[0];
149
150
  this.selectedItem?.select();
150
151
  });
151
152
  }
153
+ // @ts-ignore
152
154
  changeSelectedItem(item, event) {
153
155
  const options = this.options();
154
156
  this.animationState.set({
155
157
  value: 'from',
158
+ // eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain
156
159
  params: getThumbAnimationProps(options?.[this.activeIndex || 0]?.elementRef.nativeElement)
157
160
  });
158
161
  this.selectedItem = null;
@@ -175,15 +178,15 @@ class ThySegment {
175
178
  this.animationState.set(null);
176
179
  }
177
180
  }
178
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ThySegment, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
179
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.14", type: ThySegment, isStandalone: true, selector: "thy-segment", inputs: { thySize: { classPropertyName: "thySize", publicName: "thySize", isSignal: true, isRequired: false, transformFunction: null }, thyMode: { classPropertyName: "thyMode", publicName: "thyMode", isSignal: true, isRequired: false, transformFunction: null }, thyDisabled: { classPropertyName: "thyDisabled", publicName: "thyDisabled", isSignal: true, isRequired: false, transformFunction: null }, thyActiveIndex: { classPropertyName: "thyActiveIndex", publicName: "thyActiveIndex", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { thySelectChange: "thySelectChange" }, host: { properties: { "class.thy-segment-xs": "thySize() === 'xs'", "class.thy-segment-sm": "thySize() === 'sm'", "class.thy-segment-md": "thySize() === 'md'", "class.thy-segment-default": "!thySize() || thySize() === 'default'", "class.thy-segment-block": "thyMode() === 'block'", "class.disabled": "thyDisabled()" }, classAttribute: "thy-segment" }, providers: [
181
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ThySegment, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
182
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: ThySegment, isStandalone: true, selector: "thy-segment", inputs: { thySize: { classPropertyName: "thySize", publicName: "thySize", isSignal: true, isRequired: false, transformFunction: null }, thyMode: { classPropertyName: "thyMode", publicName: "thyMode", isSignal: true, isRequired: false, transformFunction: null }, thyDisabled: { classPropertyName: "thyDisabled", publicName: "thyDisabled", isSignal: true, isRequired: false, transformFunction: null }, thyActiveIndex: { classPropertyName: "thyActiveIndex", publicName: "thyActiveIndex", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { thySelectChange: "thySelectChange" }, host: { properties: { "class.thy-segment-xs": "thySize() === 'xs'", "class.thy-segment-sm": "thySize() === 'sm'", "class.thy-segment-md": "thySize() === 'md'", "class.thy-segment-default": "!thySize() || thySize() === 'default'", "class.thy-segment-block": "thyMode() === 'block'", "class.disabled": "thyDisabled()" }, classAttribute: "thy-segment" }, providers: [
180
183
  {
181
184
  provide: THY_SEGMENTED_COMPONENT,
182
185
  useExisting: ThySegment
183
186
  }
184
- ], queries: [{ propertyName: "options", predicate: ThySegmentItem, isSignal: true }], exportAs: ["thySegment"], ngImport: i0, template: "<div class=\"thy-segment-group\">\n @if (animationState()) {\n <div\n class=\"thy-segment-thumb thy-segment-thumb-motion\"\n [@thumbMotion]=\"animationState()\"\n (@thumbMotion.done)=\"handleThumbAnimationDone($event)\"\n ></div>\n }\n\n <ng-content></ng-content>\n</div>\n", animations: [thumbMotion], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
187
+ ], queries: [{ propertyName: "options", predicate: ThySegmentItem, isSignal: true }], exportAs: ["thySegment"], ngImport: i0, template: "<div class=\"thy-segment-group\">\n @if (animationState()) {\n <div\n class=\"thy-segment-thumb thy-segment-thumb-motion\"\n [@thumbMotion]=\"animationState()\"\n (@thumbMotion.done)=\"handleThumbAnimationDone($event)\"></div>\n }\n\n <ng-content></ng-content>\n</div>\n", animations: [thumbMotion], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
185
188
  }
186
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ThySegment, decorators: [{
189
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ThySegment, decorators: [{
187
190
  type: Component,
188
191
  args: [{ selector: 'thy-segment', exportAs: 'thySegment', animations: [thumbMotion], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
189
192
  {
@@ -198,7 +201,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
198
201
  '[class.thy-segment-default]': `!thySize() || thySize() === 'default'`,
199
202
  '[class.thy-segment-block]': `thyMode() === 'block'`,
200
203
  '[class.disabled]': 'thyDisabled()'
201
- }, imports: [], template: "<div class=\"thy-segment-group\">\n @if (animationState()) {\n <div\n class=\"thy-segment-thumb thy-segment-thumb-motion\"\n [@thumbMotion]=\"animationState()\"\n (@thumbMotion.done)=\"handleThumbAnimationDone($event)\"\n ></div>\n }\n\n <ng-content></ng-content>\n</div>\n" }]
204
+ }, imports: [], template: "<div class=\"thy-segment-group\">\n @if (animationState()) {\n <div\n class=\"thy-segment-thumb thy-segment-thumb-motion\"\n [@thumbMotion]=\"animationState()\"\n (@thumbMotion.done)=\"handleThumbAnimationDone($event)\"></div>\n }\n\n <ng-content></ng-content>\n</div>\n" }]
202
205
  }], ctorParameters: () => [], propDecorators: { options: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => ThySegmentItem), { isSignal: true }] }], thySize: [{ type: i0.Input, args: [{ isSignal: true, alias: "thySize", required: false }] }], thyMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyMode", required: false }] }], thyDisabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyDisabled", required: false }] }], thyActiveIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyActiveIndex", required: false }] }], thySelectChange: [{ type: i0.Output, args: ["thySelectChange"] }] } });
203
206
  function getThumbAnimationProps(element) {
204
207
  return {
@@ -208,11 +211,11 @@ function getThumbAnimationProps(element) {
208
211
  }
209
212
 
210
213
  class ThySegmentModule {
211
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ThySegmentModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
212
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.14", ngImport: i0, type: ThySegmentModule, imports: [CommonModule, ThyIconModule, ThyTooltipModule, ThySegment, ThySegmentItem], exports: [ThySegment, ThySegmentItem] }); }
213
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ThySegmentModule, imports: [CommonModule, ThyIconModule, ThyTooltipModule, ThySegmentItem] }); }
214
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ThySegmentModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
215
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: ThySegmentModule, imports: [CommonModule, ThyIconModule, ThyTooltipModule, ThySegment, ThySegmentItem], exports: [ThySegment, ThySegmentItem] }); }
216
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ThySegmentModule, imports: [CommonModule, ThyIconModule, ThyTooltipModule, ThySegmentItem] }); }
214
217
  }
215
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImport: i0, type: ThySegmentModule, decorators: [{
218
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ThySegmentModule, decorators: [{
216
219
  type: NgModule,
217
220
  args: [{
218
221
  imports: [CommonModule, ThyIconModule, ThyTooltipModule, ThySegment, ThySegmentItem],
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-tethys-segment.mjs","sources":["../../../src/segment/segment.token.ts","../../../src/segment/segment-item.component.ts","../../../src/segment/segment-item.component.html","../../../src/segment/segment.component.ts","../../../src/segment/segment.component.html","../../../src/segment/segment.module.ts","../../../src/segment/ngx-tethys-segment.ts"],"sourcesContent":["import { ElementRef, InjectionToken, InputSignal, InputSignalWithTransform } from '@angular/core';\nimport { SafeAny } from 'ngx-tethys/types';\nimport { ThyBooleanInput } from 'ngx-tethys/util';\n\nexport interface IThySegmentItemComponent {\n elementRef: ElementRef<HTMLElement>;\n thyValue: SafeAny;\n unselect: () => void;\n select: () => void;\n}\n\nexport interface IThySegmentComponent {\n thyMode: InputSignal<string>;\n thyDisabled: InputSignalWithTransform<boolean, ThyBooleanInput> | InputSignal<boolean>;\n selectedItem: IThySegmentItemComponent;\n changeSelectedItem: (item: IThySegmentItemComponent, event?: Event) => void;\n}\n\nexport const THY_SEGMENTED_COMPONENT = new InjectionToken<IThySegmentComponent>('THY_SEGMENTED_COMPONENT');\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n NgZone,\n Renderer2,\n afterNextRender,\n inject,\n input,\n signal\n} from '@angular/core';\nimport { IThySegmentItemComponent, THY_SEGMENTED_COMPONENT } from './segment.token';\nimport { assertIconOnly, coerceBooleanProperty } from 'ngx-tethys/util';\nimport { fromEvent } from 'rxjs';\nimport { SafeAny } from 'ngx-tethys/types';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { NgClass } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n/**\n * 分段控制器的选项组件\n * @name thy-segment-item,[thy-segment-item]\n */\n@Component({\n selector: 'thy-segment-item,[thy-segment-item]',\n templateUrl: './segment-item.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'thy-segment-item',\n '[class.disabled]': 'thyDisabled()'\n },\n imports: [NgClass, ThyIcon]\n})\nexport class ThySegmentItem implements IThySegmentItemComponent {\n elementRef = inject(ElementRef);\n private ngZone = inject(NgZone);\n private renderer = inject(Renderer2);\n private parent = inject(THY_SEGMENTED_COMPONENT, { optional: true })!;\n\n /**\n * 选项的值\n */\n readonly thyValue = input<SafeAny>();\n\n /**\n * 选项的图标\n */\n readonly thyIcon = input<string>();\n\n /**\n * 是否禁用该选项\n */\n readonly thyDisabled = input(false, { transform: coerceBooleanProperty });\n\n public isOnlyIcon = signal(false);\n\n public isWithText = signal(false);\n\n private destroyRef = inject(DestroyRef);\n\n constructor() {\n const elementRef = this.elementRef;\n const ngZone = this.ngZone;\n\n ngZone.runOutsideAngular(() =>\n fromEvent(elementRef.nativeElement, 'click')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event: Event) => {\n if (\n !this.thyDisabled() &&\n !this.parent.thyDisabled() &&\n this.parent.selectedItem &&\n this.parent.selectedItem !== this\n ) {\n ngZone.run(() => {\n this.parent.selectedItem.unselect();\n this.parent.changeSelectedItem(this, event);\n });\n }\n })\n );\n\n afterNextRender(() => {\n const labelDiv = this.elementRef.nativeElement.children[0];\n this.isOnlyIcon.set(assertIconOnly(labelDiv) && this.parent.thyMode() === 'inline');\n this.wrapSpanForText(labelDiv.childNodes);\n });\n }\n\n public select(): void {\n this.elementRef.nativeElement.classList.add('active');\n }\n\n public unselect(): void {\n this.elementRef.nativeElement.classList.remove('active');\n }\n\n private wrapSpanForText(nodes: NodeList): void {\n nodes.forEach(node => {\n if (node.nodeName === '#text') {\n const span = this.renderer.createElement('span');\n const parent = this.renderer.parentNode(node);\n this.renderer.insertBefore(parent, span, node);\n this.renderer.appendChild(span, node);\n }\n\n if (node.nodeName === '#text' || node.nodeName === 'SPAN') {\n this.isWithText.set(true);\n }\n });\n }\n}\n","<div\n class=\"thy-segment-item-label\"\n [ngClass]=\"{\n 'thy-segment-item-label-only-icon': isOnlyIcon()\n }\"\n >\n @if (thyIcon()) {\n <thy-icon class=\"thy-segment-item-icon\" [ngClass]=\"{ 'icon-with-text': isWithText() }\" [thyIconName]=\"thyIcon()\"></thy-icon>\n }\n <ng-content></ng-content>\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ViewEncapsulation,\n numberAttribute,\n inject,\n input,\n signal,\n effect,\n output,\n contentChildren\n} from '@angular/core';\nimport { ThumbAnimationProps } from 'ngx-tethys/core';\nimport { thumbMotion } from 'ngx-tethys/core';\nimport { ThySegmentItem } from './segment-item.component';\nimport { IThySegmentComponent, THY_SEGMENTED_COMPONENT } from './segment.token';\nimport { ThySegmentEvent } from './types';\nimport { AnimationEvent } from '@angular/animations';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\n\nexport type ThySegmentSize = 'xs' | 'sm' | 'md' | 'default';\n\nexport type ThySegmentMode = 'block' | 'inline';\n\n/**\n * 分段控制器组件\n * @name thy-segment\n */\n@Component({\n selector: 'thy-segment',\n templateUrl: './segment.component.html',\n exportAs: 'thySegment',\n animations: [thumbMotion],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: THY_SEGMENTED_COMPONENT,\n useExisting: ThySegment\n }\n ],\n host: {\n class: 'thy-segment',\n '[class.thy-segment-xs]': `thySize() === 'xs'`,\n '[class.thy-segment-sm]': `thySize() === 'sm'`,\n '[class.thy-segment-md]': `thySize() === 'md'`,\n '[class.thy-segment-default]': `!thySize() || thySize() === 'default'`,\n '[class.thy-segment-block]': `thyMode() === 'block'`,\n '[class.disabled]': 'thyDisabled()'\n },\n imports: []\n})\nexport class ThySegment implements IThySegmentComponent {\n private cdr = inject(ChangeDetectorRef);\n private destroyRef = inject(DestroyRef);\n\n /**\n * @internal\n */\n readonly options = contentChildren(ThySegmentItem);\n\n /**\n * 大小\n * @type xs | sm | md | default\n */\n readonly thySize = input<ThySegmentSize>('default');\n\n /**\n * 模式\n * @type block | inline\n */\n readonly thyMode = input<ThySegmentMode>('block');\n\n /**\n * 是否禁用分段控制器\n */\n readonly thyDisabled = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 选中选项的索引\n */\n readonly thyActiveIndex = input(undefined, { transform: numberAttribute });\n\n /**\n * 选项被选中的回调事件\n */\n readonly thySelectChange = output<ThySegmentEvent>();\n\n public selectedItem: ThySegmentItem;\n\n private newActiveIndex: number;\n\n private activeIndex: number;\n\n public animationState = signal<{ value: string; params: ThumbAnimationProps }>(null);\n\n public transitionedTo: any = null;\n\n constructor() {\n effect(() => {\n const value = this.thyActiveIndex();\n this.newActiveIndex = value;\n if (value < 0 || value === this.activeIndex) {\n return;\n }\n setTimeout(() => {\n const options = this.options();\n const selectedItem = options?.[this.activeIndex];\n if (selectedItem) {\n selectedItem.unselect();\n this.changeSelectedItem(options?.[value]);\n } else {\n this.activeIndex = value;\n }\n });\n });\n\n effect(() => {\n const options = this.options();\n (options || []).forEach(item => {\n item.unselect();\n });\n this.selectedItem = options?.[this.newActiveIndex] || options?.[0];\n this.selectedItem?.select();\n });\n }\n\n public changeSelectedItem(item: ThySegmentItem, event?: Event): void {\n const options = this.options();\n this.animationState.set({\n value: 'from',\n params: getThumbAnimationProps(options?.[this.activeIndex || 0]?.elementRef.nativeElement!)\n });\n this.selectedItem = null;\n this.cdr.detectChanges();\n\n this.animationState.set({\n value: 'to',\n params: getThumbAnimationProps(item.elementRef.nativeElement!)\n });\n this.transitionedTo = item;\n this.activeIndex = options.findIndex(option => {\n return option.thyValue() === item?.thyValue();\n });\n this.thySelectChange.emit({ event: event, value: item.thyValue(), activeIndex: this.activeIndex });\n }\n\n public handleThumbAnimationDone(event: AnimationEvent): void {\n if (event.fromState === 'from') {\n this.selectedItem = this.transitionedTo;\n this.selectedItem?.select();\n this.transitionedTo = null;\n this.animationState.set(null);\n }\n }\n}\n\nfunction getThumbAnimationProps(element: HTMLElement): ThumbAnimationProps {\n return {\n transform: element.offsetLeft,\n width: element.clientWidth\n };\n}\n","<div class=\"thy-segment-group\">\n @if (animationState()) {\n <div\n class=\"thy-segment-thumb thy-segment-thumb-motion\"\n [@thumbMotion]=\"animationState()\"\n (@thumbMotion.done)=\"handleThumbAnimationDone($event)\"\n ></div>\n }\n\n <ng-content></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyTooltipModule } from 'ngx-tethys/tooltip';\nimport { ThySegment } from './segment.component';\nimport { ThySegmentItem } from './segment-item.component';\n\n@NgModule({\n imports: [CommonModule, ThyIconModule, ThyTooltipModule, ThySegment, ThySegmentItem],\n exports: [ThySegment, ThySegmentItem]\n})\nexport class ThySegmentModule {}\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-segment.mjs","sources":["../../../src/segment/segment.token.ts","../../../src/segment/segment-item.component.ts","../../../src/segment/segment-item.component.html","../../../src/segment/segment.component.ts","../../../src/segment/segment.component.html","../../../src/segment/segment.module.ts","../../../src/segment/ngx-tethys-segment.ts"],"sourcesContent":["import { ElementRef, InjectionToken, InputSignal, InputSignalWithTransform } from '@angular/core';\nimport { SafeAny } from 'ngx-tethys/types';\nimport { ThyBooleanInput } from 'ngx-tethys/util';\n\nexport interface IThySegmentItemComponent {\n elementRef: ElementRef<HTMLElement>;\n thyValue: SafeAny;\n unselect: () => void;\n select: () => void;\n}\n\nexport interface IThySegmentComponent {\n thyMode: InputSignal<string>;\n thyDisabled: InputSignalWithTransform<boolean, ThyBooleanInput> | InputSignal<boolean>;\n selectedItem: IThySegmentItemComponent | null;\n changeSelectedItem: (item: IThySegmentItemComponent, event?: Event) => void;\n}\n\nexport const THY_SEGMENTED_COMPONENT = new InjectionToken<IThySegmentComponent>('THY_SEGMENTED_COMPONENT');\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n NgZone,\n Renderer2,\n afterNextRender,\n inject,\n input,\n signal\n} from '@angular/core';\nimport { IThySegmentItemComponent, THY_SEGMENTED_COMPONENT } from './segment.token';\nimport { assertIconOnly, coerceBooleanProperty } from 'ngx-tethys/util';\nimport { fromEvent } from 'rxjs';\nimport { SafeAny } from 'ngx-tethys/types';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { NgClass } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n/**\n * 分段控制器的选项组件\n * @name thy-segment-item,[thy-segment-item]\n */\n@Component({\n selector: 'thy-segment-item,[thy-segment-item]',\n templateUrl: './segment-item.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'thy-segment-item',\n '[class.disabled]': 'thyDisabled()'\n },\n imports: [NgClass, ThyIcon]\n})\nexport class ThySegmentItem implements IThySegmentItemComponent {\n elementRef = inject(ElementRef);\n private ngZone = inject(NgZone);\n private renderer = inject(Renderer2);\n private parent = inject(THY_SEGMENTED_COMPONENT, { optional: true })!;\n\n /**\n * 选项的值\n */\n readonly thyValue = input<SafeAny>();\n\n /**\n * 选项的图标\n */\n readonly thyIcon = input<string>();\n\n /**\n * 是否禁用该选项\n */\n readonly thyDisabled = input(false, { transform: coerceBooleanProperty });\n\n public isOnlyIcon = signal(false);\n\n public isWithText = signal(false);\n\n private destroyRef = inject(DestroyRef);\n\n constructor() {\n const elementRef = this.elementRef;\n const ngZone = this.ngZone;\n\n ngZone.runOutsideAngular(() =>\n fromEvent<Event>(elementRef.nativeElement, 'click')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event: Event) => {\n if (\n !this.thyDisabled() &&\n !this.parent.thyDisabled() &&\n this.parent.selectedItem &&\n this.parent.selectedItem !== this\n ) {\n ngZone.run(() => {\n this.parent.selectedItem!.unselect();\n this.parent.changeSelectedItem(this, event);\n });\n }\n })\n );\n\n afterNextRender(() => {\n const labelDiv = this.elementRef.nativeElement.children[0];\n this.isOnlyIcon.set(assertIconOnly(labelDiv) && this.parent.thyMode() === 'inline');\n this.wrapSpanForText(labelDiv.childNodes);\n });\n }\n\n public select(): void {\n this.elementRef.nativeElement.classList.add('active');\n }\n\n public unselect(): void {\n this.elementRef.nativeElement.classList.remove('active');\n }\n\n private wrapSpanForText(nodes: NodeList): void {\n nodes.forEach(node => {\n if (node.nodeName === '#text') {\n const span = this.renderer.createElement('span');\n const parent = this.renderer.parentNode(node);\n this.renderer.insertBefore(parent, span, node);\n this.renderer.appendChild(span, node);\n }\n\n if (node.nodeName === '#text' || node.nodeName === 'SPAN') {\n this.isWithText.set(true);\n }\n });\n }\n}\n","<div\n class=\"thy-segment-item-label\"\n [ngClass]=\"{\n 'thy-segment-item-label-only-icon': isOnlyIcon()\n }\">\n @if (thyIcon()) {\n <thy-icon class=\"thy-segment-item-icon\" [ngClass]=\"{ 'icon-with-text': isWithText() }\" [thyIconName]=\"thyIcon()\"></thy-icon>\n }\n <ng-content></ng-content>\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ViewEncapsulation,\n numberAttribute,\n inject,\n input,\n signal,\n effect,\n output,\n contentChildren\n} from '@angular/core';\nimport { ThumbAnimationProps, thumbMotion } from 'ngx-tethys/core';\nimport { ThySegmentItem } from './segment-item.component';\nimport { IThySegmentComponent, THY_SEGMENTED_COMPONENT } from './segment.token';\nimport { ThySegmentEvent } from './types';\nimport { AnimationEvent } from '@angular/animations';\n\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { coerceBooleanProperty, isUndefined, isUndefinedOrNull } from 'ngx-tethys/util';\n\nexport type ThySegmentSize = 'xs' | 'sm' | 'md' | 'default';\n\nexport type ThySegmentMode = 'block' | 'inline';\n\n/**\n * 分段控制器组件\n * @name thy-segment\n */\n@Component({\n selector: 'thy-segment',\n templateUrl: './segment.component.html',\n exportAs: 'thySegment',\n animations: [thumbMotion],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: THY_SEGMENTED_COMPONENT,\n useExisting: ThySegment\n }\n ],\n host: {\n class: 'thy-segment',\n '[class.thy-segment-xs]': `thySize() === 'xs'`,\n '[class.thy-segment-sm]': `thySize() === 'sm'`,\n '[class.thy-segment-md]': `thySize() === 'md'`,\n '[class.thy-segment-default]': `!thySize() || thySize() === 'default'`,\n '[class.thy-segment-block]': `thyMode() === 'block'`,\n '[class.disabled]': 'thyDisabled()'\n },\n imports: []\n})\nexport class ThySegment implements IThySegmentComponent {\n private cdr = inject(ChangeDetectorRef);\n private destroyRef = inject(DestroyRef);\n\n /**\n * @internal\n */\n readonly options = contentChildren(ThySegmentItem);\n\n /**\n * 大小\n * @type xs | sm | md | default\n */\n readonly thySize = input<ThySegmentSize>('default');\n\n /**\n * 模式\n * @type block | inline\n */\n readonly thyMode = input<ThySegmentMode | string>('block');\n\n /**\n * 是否禁用分段控制器\n */\n readonly thyDisabled = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 选中选项的索引\n */\n readonly thyActiveIndex = input(undefined, { transform: numberAttribute });\n\n /**\n * 选项被选中的回调事件\n */\n readonly thySelectChange = output<ThySegmentEvent>();\n\n public selectedItem: ThySegmentItem | null = null;\n\n private newActiveIndex?: number;\n\n private activeIndex?: number;\n\n public animationState = signal<{ value: string; params: ThumbAnimationProps } | null>(null);\n\n public transitionedTo: any = null;\n\n constructor() {\n effect(() => {\n const value = this.thyActiveIndex();\n this.newActiveIndex = value;\n if (isUndefinedOrNull(value) || value < 0 || value === this.activeIndex) {\n return;\n }\n setTimeout(() => {\n const options = this.options();\n const selectedItem = options?.[this.activeIndex!];\n if (selectedItem) {\n selectedItem.unselect();\n this.changeSelectedItem(options?.[value]);\n } else {\n this.activeIndex = value;\n }\n });\n });\n\n effect(() => {\n const options = this.options();\n (options || []).forEach(item => {\n item.unselect();\n });\n this.selectedItem = (!isUndefinedOrNull(this.newActiveIndex) && options?.[this.newActiveIndex]) || options?.[0];\n this.selectedItem?.select();\n });\n }\n\n // @ts-ignore\n public changeSelectedItem(item: ThySegmentItem, event?: Event): void {\n const options = this.options();\n this.animationState.set({\n value: 'from',\n // eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain\n params: getThumbAnimationProps(options?.[this.activeIndex || 0]?.elementRef.nativeElement!)\n });\n this.selectedItem = null;\n this.cdr.detectChanges();\n\n this.animationState.set({\n value: 'to',\n params: getThumbAnimationProps(item.elementRef.nativeElement!)\n });\n this.transitionedTo = item;\n this.activeIndex = options.findIndex(option => {\n return option.thyValue() === item?.thyValue();\n });\n this.thySelectChange.emit({ event: event, value: item.thyValue(), activeIndex: this.activeIndex });\n }\n\n public handleThumbAnimationDone(event: AnimationEvent): void {\n if (event.fromState === 'from') {\n this.selectedItem = this.transitionedTo;\n this.selectedItem?.select();\n this.transitionedTo = null;\n this.animationState.set(null);\n }\n }\n}\n\nfunction getThumbAnimationProps(element: HTMLElement): ThumbAnimationProps {\n return {\n transform: element.offsetLeft,\n width: element.clientWidth\n };\n}\n","<div class=\"thy-segment-group\">\n @if (animationState()) {\n <div\n class=\"thy-segment-thumb thy-segment-thumb-motion\"\n [@thumbMotion]=\"animationState()\"\n (@thumbMotion.done)=\"handleThumbAnimationDone($event)\"></div>\n }\n\n <ng-content></ng-content>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyTooltipModule } from 'ngx-tethys/tooltip';\nimport { ThySegment } from './segment.component';\nimport { ThySegmentItem } from './segment-item.component';\n\n@NgModule({\n imports: [CommonModule, ThyIconModule, ThyTooltipModule, ThySegment, ThySegmentItem],\n exports: [ThySegment, ThySegmentItem]\n})\nexport class ThySegmentModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}