ngx-tethys 19.0.13 → 19.1.0-next.0

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 (280) hide show
  1. package/CHANGELOG.md +29 -2
  2. package/action/action.component.d.ts +12 -20
  3. package/action/actions.component.d.ts +5 -7
  4. package/affix/affix.component.d.ts +7 -10
  5. package/alert/alert.component.d.ts +1 -1
  6. package/anchor/anchor-link.component.d.ts +8 -8
  7. package/anchor/anchor.component.d.ts +15 -21
  8. package/arrow-switcher/arrow-switcher.component.d.ts +15 -22
  9. package/autocomplete/autocomplete.component.d.ts +10 -17
  10. package/autocomplete/autocomplete.trigger.directive.d.ts +10 -18
  11. package/avatar/avatar-list/avatar-list.component.d.ts +8 -14
  12. package/avatar/avatar.component.d.ts +25 -39
  13. package/back-top/back-top.component.d.ts +9 -12
  14. package/badge/badge.component.d.ts +19 -59
  15. package/breadcrumb/breadcrumb.component.d.ts +15 -20
  16. package/button/button-icon.component.d.ts +3 -2
  17. package/button/button.component.d.ts +3 -2
  18. package/calendar/calendar-header.component.d.ts +9 -8
  19. package/calendar/calendar.component.d.ts +16 -16
  20. package/card/card.component.d.ts +5 -11
  21. package/card/content.component.d.ts +3 -8
  22. package/card/header.component.d.ts +7 -8
  23. package/carousel/carousel.component.d.ts +22 -27
  24. package/cascader/cascader-li.component.d.ts +13 -21
  25. package/cascader/cascader-search-option.component.d.ts +8 -16
  26. package/cascader/cascader.component.d.ts +58 -80
  27. package/checkbox/checkbox.component.d.ts +2 -5
  28. package/collapse/collapse-item.component.d.ts +12 -19
  29. package/collapse/collapse.component.d.ts +6 -12
  30. package/collapse/collapse.token.d.ts +3 -3
  31. package/color-picker/color-picker-custom-panel.component.d.ts +5 -5
  32. package/color-picker/color-picker-panel.component.d.ts +7 -11
  33. package/color-picker/color-picker.component.d.ts +19 -35
  34. package/color-picker/parts/alpha/alpha.component.d.ts +8 -8
  35. package/color-picker/parts/hue/hue.component.d.ts +6 -6
  36. package/color-picker/parts/indicator/indicator.component.d.ts +4 -3
  37. package/color-picker/parts/inputs/inputs.component.d.ts +9 -9
  38. package/color-picker/parts/saturation/saturation.component.d.ts +9 -9
  39. package/comment/comment.component.d.ts +4 -5
  40. package/copy/copy.directive.d.ts +8 -9
  41. package/date-picker/abstract-picker.component.d.ts +8 -7
  42. package/date-picker/lib/calendar/calendar-footer.component.d.ts +2 -1
  43. package/date-picker/lib/popups/inner-popup.component.d.ts +2 -1
  44. package/date-picker/picker.component.d.ts +2 -1
  45. package/date-range/date-range.component.d.ts +2 -2
  46. package/dialog/body/dialog-body.component.d.ts +2 -6
  47. package/dialog/confirm/confirm.component.d.ts +2 -2
  48. package/dialog/footer/dialog-footer.component.d.ts +6 -9
  49. package/dialog/header/dialog-header.component.d.ts +9 -11
  50. package/divider/divider.component.d.ts +12 -16
  51. package/dot/dot.component.d.ts +5 -13
  52. package/drag-drop/drag-handle.directive.d.ts +2 -1
  53. package/drag-drop/drag.directive.d.ts +2 -1
  54. package/drag-drop/drop-container.directive.d.ts +2 -1
  55. package/dropdown/dropdown-menu-item.directive.d.ts +3 -2
  56. package/dropdown/dropdown-menu.component.d.ts +2 -1
  57. package/dropdown/dropdown.directive.d.ts +2 -1
  58. package/empty/empty.component.d.ts +21 -27
  59. package/fesm2022/ngx-tethys-action.mjs +54 -91
  60. package/fesm2022/ngx-tethys-action.mjs.map +1 -1
  61. package/fesm2022/ngx-tethys-affix.mjs +29 -26
  62. package/fesm2022/ngx-tethys-affix.mjs.map +1 -1
  63. package/fesm2022/ngx-tethys-anchor.mjs +91 -118
  64. package/fesm2022/ngx-tethys-anchor.mjs.map +1 -1
  65. package/fesm2022/ngx-tethys-arrow-switcher.mjs +51 -77
  66. package/fesm2022/ngx-tethys-arrow-switcher.mjs.map +1 -1
  67. package/fesm2022/ngx-tethys-autocomplete.mjs +69 -103
  68. package/fesm2022/ngx-tethys-autocomplete.mjs.map +1 -1
  69. package/fesm2022/ngx-tethys-avatar.mjs +117 -162
  70. package/fesm2022/ngx-tethys-avatar.mjs.map +1 -1
  71. package/fesm2022/ngx-tethys-back-top.mjs +33 -46
  72. package/fesm2022/ngx-tethys-back-top.mjs.map +1 -1
  73. package/fesm2022/ngx-tethys-badge.mjs +104 -208
  74. package/fesm2022/ngx-tethys-badge.mjs.map +1 -1
  75. package/fesm2022/ngx-tethys-breadcrumb.mjs +66 -70
  76. package/fesm2022/ngx-tethys-breadcrumb.mjs.map +1 -1
  77. package/fesm2022/ngx-tethys-calendar.mjs +85 -87
  78. package/fesm2022/ngx-tethys-calendar.mjs.map +1 -1
  79. package/fesm2022/ngx-tethys-card.mjs +72 -77
  80. package/fesm2022/ngx-tethys-card.mjs.map +1 -1
  81. package/fesm2022/ngx-tethys-carousel.mjs +82 -99
  82. package/fesm2022/ngx-tethys-carousel.mjs.map +1 -1
  83. package/fesm2022/ngx-tethys-cascader.mjs +313 -468
  84. package/fesm2022/ngx-tethys-cascader.mjs.map +1 -1
  85. package/fesm2022/ngx-tethys-checkbox.mjs +10 -17
  86. package/fesm2022/ngx-tethys-checkbox.mjs.map +1 -1
  87. package/fesm2022/ngx-tethys-collapse.mjs +66 -71
  88. package/fesm2022/ngx-tethys-collapse.mjs.map +1 -1
  89. package/fesm2022/ngx-tethys-color-picker.mjs +187 -246
  90. package/fesm2022/ngx-tethys-color-picker.mjs.map +1 -1
  91. package/fesm2022/ngx-tethys-comment.mjs +16 -10
  92. package/fesm2022/ngx-tethys-comment.mjs.map +1 -1
  93. package/fesm2022/ngx-tethys-copy.mjs +25 -28
  94. package/fesm2022/ngx-tethys-copy.mjs.map +1 -1
  95. package/fesm2022/ngx-tethys-dialog.mjs +81 -82
  96. package/fesm2022/ngx-tethys-dialog.mjs.map +1 -1
  97. package/fesm2022/ngx-tethys-divider.mjs +49 -58
  98. package/fesm2022/ngx-tethys-divider.mjs.map +1 -1
  99. package/fesm2022/ngx-tethys-dot.mjs +45 -68
  100. package/fesm2022/ngx-tethys-dot.mjs.map +1 -1
  101. package/fesm2022/ngx-tethys-empty.mjs +107 -95
  102. package/fesm2022/ngx-tethys-empty.mjs.map +1 -1
  103. package/fesm2022/ngx-tethys-form.mjs +161 -200
  104. package/fesm2022/ngx-tethys-form.mjs.map +1 -1
  105. package/fesm2022/ngx-tethys-fullscreen.mjs +21 -23
  106. package/fesm2022/ngx-tethys-fullscreen.mjs.map +1 -1
  107. package/fesm2022/ngx-tethys-grid.mjs +160 -152
  108. package/fesm2022/ngx-tethys-grid.mjs.map +1 -1
  109. package/fesm2022/ngx-tethys-i18n.mjs +25 -25
  110. package/fesm2022/ngx-tethys-i18n.mjs.map +1 -1
  111. package/fesm2022/ngx-tethys-input-number.mjs +101 -114
  112. package/fesm2022/ngx-tethys-input-number.mjs.map +1 -1
  113. package/fesm2022/ngx-tethys-input.mjs +268 -271
  114. package/fesm2022/ngx-tethys-input.mjs.map +1 -1
  115. package/fesm2022/ngx-tethys-list.mjs +1 -1
  116. package/fesm2022/ngx-tethys-list.mjs.map +1 -1
  117. package/fesm2022/ngx-tethys-loading.mjs +17 -35
  118. package/fesm2022/ngx-tethys-loading.mjs.map +1 -1
  119. package/fesm2022/ngx-tethys-mention.mjs +52 -74
  120. package/fesm2022/ngx-tethys-mention.mjs.map +1 -1
  121. package/fesm2022/ngx-tethys-menu.mjs +106 -179
  122. package/fesm2022/ngx-tethys-menu.mjs.map +1 -1
  123. package/fesm2022/ngx-tethys-nav.mjs +169 -201
  124. package/fesm2022/ngx-tethys-nav.mjs.map +1 -1
  125. package/fesm2022/ngx-tethys-pagination.mjs +230 -294
  126. package/fesm2022/ngx-tethys-pagination.mjs.map +1 -1
  127. package/fesm2022/ngx-tethys-popover.mjs +67 -70
  128. package/fesm2022/ngx-tethys-popover.mjs.map +1 -1
  129. package/fesm2022/ngx-tethys-progress.mjs +196 -244
  130. package/fesm2022/ngx-tethys-progress.mjs.map +1 -1
  131. package/fesm2022/ngx-tethys-property.mjs +102 -105
  132. package/fesm2022/ngx-tethys-property.mjs.map +1 -1
  133. package/fesm2022/ngx-tethys-radio.mjs +34 -38
  134. package/fesm2022/ngx-tethys-radio.mjs.map +1 -1
  135. package/fesm2022/ngx-tethys-result.mjs +46 -28
  136. package/fesm2022/ngx-tethys-result.mjs.map +1 -1
  137. package/fesm2022/ngx-tethys-skeleton.mjs +339 -342
  138. package/fesm2022/ngx-tethys-skeleton.mjs.map +1 -1
  139. package/fesm2022/ngx-tethys-slider.mjs +75 -108
  140. package/fesm2022/ngx-tethys-slider.mjs.map +1 -1
  141. package/fesm2022/ngx-tethys-space.mjs +26 -46
  142. package/fesm2022/ngx-tethys-space.mjs.map +1 -1
  143. package/fesm2022/ngx-tethys-statistic.mjs +114 -151
  144. package/fesm2022/ngx-tethys-statistic.mjs.map +1 -1
  145. package/fesm2022/ngx-tethys-stepper.mjs +74 -107
  146. package/fesm2022/ngx-tethys-stepper.mjs.map +1 -1
  147. package/fesm2022/ngx-tethys-switch.mjs +80 -140
  148. package/fesm2022/ngx-tethys-switch.mjs.map +1 -1
  149. package/fesm2022/ngx-tethys-table.mjs +1 -1
  150. package/fesm2022/ngx-tethys-table.mjs.map +1 -1
  151. package/fesm2022/ngx-tethys-tabs.mjs +69 -87
  152. package/fesm2022/ngx-tethys-tabs.mjs.map +1 -1
  153. package/fesm2022/ngx-tethys-tag.mjs +42 -64
  154. package/fesm2022/ngx-tethys-tag.mjs.map +1 -1
  155. package/fesm2022/ngx-tethys-timeline.mjs +104 -129
  156. package/fesm2022/ngx-tethys-timeline.mjs.map +1 -1
  157. package/fesm2022/ngx-tethys-typography.mjs +36 -33
  158. package/fesm2022/ngx-tethys-typography.mjs.map +1 -1
  159. package/fesm2022/ngx-tethys-upload.mjs +91 -130
  160. package/fesm2022/ngx-tethys-upload.mjs.map +1 -1
  161. package/fesm2022/ngx-tethys-util.mjs.map +1 -1
  162. package/fesm2022/ngx-tethys-watermark.mjs +36 -40
  163. package/fesm2022/ngx-tethys-watermark.mjs.map +1 -1
  164. package/fesm2022/ngx-tethys.mjs +1 -1
  165. package/fesm2022/ngx-tethys.mjs.map +1 -1
  166. package/form/form-group-error/form-group-error.component.d.ts +2 -3
  167. package/form/form-group-label.directive.d.ts +2 -1
  168. package/form/form-group.component.d.ts +17 -24
  169. package/form/form-submit.directive.d.ts +2 -2
  170. package/form/form.directive.d.ts +6 -8
  171. package/form/from-group-footer/form-group-footer.component.d.ts +2 -2
  172. package/form/validator/confirm-validator.directive.d.ts +2 -2
  173. package/form/validator/unique-validator.directive.d.ts +2 -2
  174. package/fullscreen/fullscreen.component.d.ts +7 -7
  175. package/grid/flex.d.ts +14 -19
  176. package/grid/thy-col.directive.d.ts +6 -9
  177. package/grid/thy-grid-item.component.d.ts +3 -4
  178. package/grid/thy-grid.component.d.ts +11 -12
  179. package/grid/thy-row.directive.d.ts +12 -12
  180. package/icon/icon.component.d.ts +3 -2
  181. package/image/image.directive.d.ts +3 -2
  182. package/input/input-count.component.d.ts +4 -5
  183. package/input/input-group.component.d.ts +20 -20
  184. package/input/input-search.component.d.ts +15 -20
  185. package/input/input.component.d.ts +20 -21
  186. package/input/input.directive.d.ts +4 -6
  187. package/input-number/input-number.component.d.ts +21 -29
  188. package/layout/header.component.d.ts +4 -9
  189. package/layout/sidebar-header.component.d.ts +2 -1
  190. package/layout/sidebar.component.d.ts +8 -7
  191. package/list/list.component.d.ts +2 -1
  192. package/list/selection/selection-list.d.ts +4 -3
  193. package/loading/loading.component.d.ts +4 -10
  194. package/mention/mention.directive.d.ts +6 -7
  195. package/mention/suggestions/suggestions.component.d.ts +8 -9
  196. package/menu/group/menu-group.component.d.ts +16 -33
  197. package/menu/item/action/menu-item-action.component.d.ts +7 -8
  198. package/menu/item/icon/menu-item-icon.component.d.ts +2 -2
  199. package/menu/item/menu-item.component.d.ts +4 -4
  200. package/menu/item/name/menu-item-name.component.d.ts +2 -3
  201. package/menu/menu.component.d.ts +3 -7
  202. package/nav/icon-nav/icon-nav-link.directive.d.ts +3 -7
  203. package/nav/icon-nav/icon-nav.component.d.ts +3 -8
  204. package/nav/nav-ink-bar.directive.d.ts +4 -6
  205. package/nav/nav-item.directive.d.ts +7 -10
  206. package/nav/nav.component.d.ts +20 -48
  207. package/package.json +1 -1
  208. package/pagination/pagination.component.d.ts +48 -109
  209. package/popover/header/popover-header.component.d.ts +7 -6
  210. package/popover/popover.directive.d.ts +11 -18
  211. package/progress/progress-circle.component.d.ts +32 -21
  212. package/progress/progress-strip.component.d.ts +10 -14
  213. package/progress/progress.component.d.ts +15 -23
  214. package/property/examples/single/single.component.scss +6 -0
  215. package/property/properties.component.d.ts +6 -13
  216. package/property/property-item.component.d.ts +21 -26
  217. package/property/styles/properties.scss +124 -52
  218. package/property-operation/property-operation.component.d.ts +6 -5
  219. package/radio/button/radio-button.component.d.ts +2 -2
  220. package/radio/group/radio-group.component.d.ts +8 -7
  221. package/radio/radio.component.d.ts +2 -2
  222. package/radio/radio.token.d.ts +2 -2
  223. package/rate/rate-item.component.d.ts +2 -1
  224. package/rate/rate.component.d.ts +4 -3
  225. package/resizable/resizable.directive.d.ts +4 -9
  226. package/resizable/resize-handle.component.d.ts +2 -1
  227. package/resizable/resize-handles.component.d.ts +2 -1
  228. package/result/result.component.d.ts +9 -10
  229. package/schematics/version.d.ts +1 -1
  230. package/schematics/version.js +1 -1
  231. package/segment/segment-item.component.d.ts +2 -1
  232. package/segment/segment.component.d.ts +2 -1
  233. package/select/custom-select/custom-select.component.d.ts +11 -10
  234. package/select/native-select/native-select.component.d.ts +2 -1
  235. package/shared/base-form-check.component.d.ts +3 -2
  236. package/shared/directives/thy-autofocus.directive.d.ts +3 -2
  237. package/shared/directives/thy-scroll.directive.d.ts +2 -1
  238. package/shared/directives/thy-show.d.ts +2 -1
  239. package/shared/option/group/option-group.component.d.ts +2 -1
  240. package/shared/option/list-option/list-option.component.d.ts +2 -7
  241. package/shared/option/option.component.d.ts +2 -1
  242. package/shared/select/select-control/select-control.component.d.ts +7 -6
  243. package/skeleton/skeleton-circle.component.d.ts +16 -19
  244. package/skeleton/skeleton-rectangle.component.d.ts +20 -23
  245. package/skeleton/skeleton.component.d.ts +5 -6
  246. package/skeleton/stylized/bullet-list.component.d.ts +11 -13
  247. package/skeleton/stylized/list.component.d.ts +10 -12
  248. package/skeleton/stylized/paragraph.component.d.ts +12 -14
  249. package/slide/slide-body/slide-body-section.component.d.ts +2 -1
  250. package/slider/slider.component.d.ts +17 -24
  251. package/space/space.component.d.ts +8 -8
  252. package/statistic/statistic.component.d.ts +35 -40
  253. package/stepper/step-header.component.d.ts +6 -10
  254. package/stepper/step.component.d.ts +6 -6
  255. package/stepper/stepper.component.d.ts +15 -20
  256. package/switch/switch.component.d.ts +24 -35
  257. package/table/table-column.component.d.ts +6 -5
  258. package/table/table-skeleton.component.d.ts +3 -10
  259. package/table/table.component.d.ts +11 -10
  260. package/tabs/tab-content.component.d.ts +4 -4
  261. package/tabs/tab.component.d.ts +4 -5
  262. package/tabs/tabs.component.d.ts +13 -15
  263. package/tag/tag.component.d.ts +10 -16
  264. package/time-picker/time-picker-panel.component.d.ts +3 -2
  265. package/time-picker/time-picker.component.d.ts +6 -5
  266. package/timeline/timeline-item.component.d.ts +9 -13
  267. package/timeline/timeline.component.d.ts +13 -17
  268. package/tooltip/tooltip.directive.d.ts +3 -2
  269. package/tree/tree-node.component.d.ts +6 -15
  270. package/tree/tree.component.d.ts +8 -7
  271. package/tree-select/tree-select.component.d.ts +8 -7
  272. package/typography/bg-color.directive.d.ts +3 -3
  273. package/typography/text/text.component.d.ts +2 -2
  274. package/typography/text-color.directive.d.ts +3 -3
  275. package/upload/file-drop.directive.d.ts +9 -11
  276. package/upload/file-select-base.d.ts +6 -10
  277. package/upload/file-select.component.d.ts +10 -20
  278. package/util/helpers/helpers.d.ts +2 -1
  279. package/vote/vote.component.d.ts +4 -3
  280. package/watermark/watermark.directive.d.ts +7 -9
@@ -1,6 +1,6 @@
1
1
  import { NgClass, NgTemplateOutlet, CommonModule } from '@angular/common';
2
2
  import * as i0 from '@angular/core';
3
- import { HostBinding, Component, inject, EventEmitter, Input, Output, ContentChild, ViewChild, ChangeDetectionStrategy, Renderer2, ElementRef, NgModule } from '@angular/core';
3
+ import { HostBinding, Component, inject, viewChild, contentChild, input, model, output, ChangeDetectionStrategy, Renderer2, ElementRef, effect, NgModule } from '@angular/core';
4
4
  import { ThyIcon, ThyIconModule } from 'ngx-tethys/icon';
5
5
  import { ThyPopover, ThyPopoverModule } from 'ngx-tethys/popover';
6
6
  import { trigger, state, transition, style, animate } from '@angular/animations';
@@ -34,86 +34,69 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
34
34
  class ThyMenuGroup {
35
35
  constructor() {
36
36
  this.popover = inject(ThyPopover);
37
- this.rightIconClass = 'more';
38
- this.iconClass = 'folder-bold';
39
37
  this.groupHeaderPaddingLeft = 0;
40
- this.isThyMenuGroup = true;
41
- this.showIcon = false;
42
- this.isCollapsed = false;
38
+ this._thyMenuGroup = viewChild('thyMenuGroup');
39
+ this.headerContentTemplateRef = contentChild('headerContent');
43
40
  /**
44
41
  * 分组标题
45
42
  */
46
- this.thyTitle = '';
43
+ this.thyTitle = input('');
44
+ /**
45
+ * 是否处于收起状态
46
+ */
47
+ this.thyCollapsed = model(false);
47
48
  /**
48
49
  * 是否支持展开收起
49
50
  */
50
- this.thyCollapsible = false;
51
+ this.thyCollapsible = input(false, { transform: coerceBooleanProperty });
52
+ /**
53
+ * 是否显示 Icon
54
+ */
55
+ this.thyShowIcon = input(false, { transform: coerceBooleanProperty });
56
+ /**
57
+ * 图标
58
+ */
59
+ this.thyIcon = input('folder-bold', {
60
+ transform: (value) => value || 'folder-bold'
61
+ });
62
+ /**
63
+ * 操作图标
64
+ */
65
+ this.thyActionIcon = input('more', {
66
+ transform: (value) => value || 'more'
67
+ });
51
68
  /**
52
69
  *是否显示操作
53
70
  */
54
- this.thyShowAction = false;
71
+ this.thyShowAction = input(false, { transform: coerceBooleanProperty });
55
72
  /**
56
73
  * 操作阻止冒泡事件
57
74
  */
58
- this.thyActionStopPropagation = true;
75
+ this.thyActionStopPropagation = input(true, { transform: coerceBooleanProperty });
59
76
  /**
60
77
  * Action 点击事件
61
78
  */
62
- this.thyOnActionClick = new EventEmitter();
63
- this.thyCollapsedChange = new EventEmitter();
64
- }
65
- /**
66
- * 已废弃,请使用 thyCollapsed
67
- * @deprecated
68
- */
69
- set thyExpand(value) {
70
- this.isCollapsed = !!!value;
71
- }
72
- /**
73
- * 是否处于收起状态
74
- * @default false
75
- */
76
- set thyCollapsed(value) {
77
- this.isCollapsed = value;
78
- }
79
- /**
80
- * 是否显示 Icon
81
- */
82
- set thyShowIcon(value) {
83
- this.showIcon = value;
84
- }
85
- /**
86
- * 图标
87
- */
88
- set thyIcon(value) {
89
- this.iconClass = value;
90
- }
91
- /**
92
- * 操作图标
93
- */
94
- set thyActionIcon(value) {
95
- this.rightIconClass = value;
96
- }
97
- /**
98
- * 设置 Action 菜单
99
- */
100
- set thyActionMenu(value) {
101
- this._actionMenu = value;
79
+ this.thyOnActionClick = output();
80
+ this.thyCollapsedChange = output();
81
+ /**
82
+ * 设置 Action 菜单
83
+ */
84
+ this.thyActionMenu = input();
102
85
  }
103
86
  ngOnInit() { }
104
87
  collapseGroup() {
105
- if (!this.thyCollapsible) {
88
+ if (!this.thyCollapsible()) {
106
89
  return;
107
90
  }
108
- this.isCollapsed = !this.isCollapsed;
109
- this.thyCollapsedChange.emit(this.isCollapsed);
91
+ this.thyCollapsed.set(!this.thyCollapsed());
92
+ this.thyCollapsedChange.emit(this.thyCollapsed());
110
93
  }
111
94
  onActionClick(event) {
112
- if (this.thyActionStopPropagation) {
95
+ if (this.thyActionStopPropagation()) {
113
96
  event.stopPropagation();
114
97
  }
115
- if (this._actionMenu) {
116
- this.popover.open(this._actionMenu, {
98
+ if (this.thyActionMenu()) {
99
+ this.popover.open(this.thyActionMenu(), {
117
100
  origin: event.currentTarget,
118
101
  insideClosable: true,
119
102
  placement: 'bottom'
@@ -124,7 +107,7 @@ class ThyMenuGroup {
124
107
  }
125
108
  }
126
109
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyMenuGroup, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
127
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.8", type: ThyMenuGroup, isStandalone: true, selector: "thy-menu-group,[thy-menu-group],[thyMenuGroup]", inputs: { thyTitle: "thyTitle", thyExpand: ["thyExpand", "thyExpand", coerceBooleanProperty], thyCollapsed: ["thyCollapsed", "thyCollapsed", coerceBooleanProperty], thyCollapsible: ["thyCollapsible", "thyCollapsible", coerceBooleanProperty], thyShowIcon: ["thyShowIcon", "thyShowIcon", coerceBooleanProperty], thyIcon: "thyIcon", thyActionIcon: "thyActionIcon", thyShowAction: ["thyShowAction", "thyShowAction", coerceBooleanProperty], thyActionStopPropagation: ["thyActionStopPropagation", "thyActionStopPropagation", coerceBooleanProperty], thyActionMenu: "thyActionMenu" }, outputs: { thyOnActionClick: "thyOnActionClick", thyCollapsedChange: "thyCollapsedChange" }, host: { properties: { "class.thy-menu-group": "this.isThyMenuGroup", "class.has-icon": "this.showIcon", "class.collapsed": "this.isCollapsed" } }, queries: [{ propertyName: "headerContentTemplateRef", first: true, predicate: ["headerContent"], descendants: true }], viewQueries: [{ propertyName: "_thyMenuGroup", first: true, predicate: ["thyMenuGroup"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"thy-menu-group-header\" [ngClass]=\"{ 'thy-menu-group-collapsible': thyCollapsible }\" (click)=\"collapseGroup()\">\n <div class=\"thy-menu-group-header-content\">\n @if (headerContentTemplateRef) {\n <ng-template [ngTemplateOutlet]=\"headerContentTemplateRef\"></ng-template>\n } @else {\n <span class=\"thy-menu-group-title\">\n @if (showIcon) {\n <thy-icon class=\"thy-menu-group-title-icon mr-2\" [thyIconName]=\"iconClass\"></thy-icon>\n }\n <span class=\"thy-menu-group-title-text\">{{ thyTitle }}</span>\n </span>\n }\n </div>\n @if (thyShowAction) {\n <thy-icon\n class=\"thy-menu-group-operation\"\n [thyIconName]=\"rightIconClass\"\n (click)=\"onActionClick($event)\"\n ></thy-icon>\n }\n @if (thyCollapsible) {\n <thy-icon thyIconName=\"angle-up\" class=\"thy-menu-group-arrow\"></thy-icon>\n }\n</div>\n<div class=\"thy-menu-group-body\" #thyMenuGroup [@detailsContentAnimation]=\"isCollapsed\">\n <ng-content></ng-content>\n</div>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ThyIcon, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }], animations: [
110
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.8", type: ThyMenuGroup, isStandalone: true, selector: "thy-menu-group,[thy-menu-group],[thyMenuGroup]", inputs: { thyTitle: { classPropertyName: "thyTitle", publicName: "thyTitle", isSignal: true, isRequired: false, transformFunction: null }, thyCollapsed: { classPropertyName: "thyCollapsed", publicName: "thyCollapsed", isSignal: true, isRequired: false, transformFunction: null }, thyCollapsible: { classPropertyName: "thyCollapsible", publicName: "thyCollapsible", isSignal: true, isRequired: false, transformFunction: null }, thyShowIcon: { classPropertyName: "thyShowIcon", publicName: "thyShowIcon", isSignal: true, isRequired: false, transformFunction: null }, thyIcon: { classPropertyName: "thyIcon", publicName: "thyIcon", isSignal: true, isRequired: false, transformFunction: null }, thyActionIcon: { classPropertyName: "thyActionIcon", publicName: "thyActionIcon", isSignal: true, isRequired: false, transformFunction: null }, thyShowAction: { classPropertyName: "thyShowAction", publicName: "thyShowAction", isSignal: true, isRequired: false, transformFunction: null }, thyActionStopPropagation: { classPropertyName: "thyActionStopPropagation", publicName: "thyActionStopPropagation", isSignal: true, isRequired: false, transformFunction: null }, thyActionMenu: { classPropertyName: "thyActionMenu", publicName: "thyActionMenu", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { thyCollapsed: "thyCollapsedChange", thyOnActionClick: "thyOnActionClick", thyCollapsedChange: "thyCollapsedChange" }, host: { properties: { "class.thy-menu-group": "true", "class.collapsed": "thyCollapsed()", "class.has-icon": "thyShowIcon()" } }, queries: [{ propertyName: "headerContentTemplateRef", first: true, predicate: ["headerContent"], descendants: true, isSignal: true }], viewQueries: [{ propertyName: "_thyMenuGroup", first: true, predicate: ["thyMenuGroup"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"thy-menu-group-header\" [ngClass]=\"{ 'thy-menu-group-collapsible': thyCollapsible() }\" (click)=\"collapseGroup()\">\n <div class=\"thy-menu-group-header-content\">\n @if (headerContentTemplateRef()) {\n <ng-template [ngTemplateOutlet]=\"headerContentTemplateRef()\"></ng-template>\n } @else {\n <span class=\"thy-menu-group-title\">\n @if (thyShowIcon()) {\n <thy-icon class=\"thy-menu-group-title-icon mr-2\" [thyIconName]=\"thyIcon()\"></thy-icon>\n }\n <span class=\"thy-menu-group-title-text\">{{ thyTitle() }}</span>\n </span>\n }\n </div>\n @if (thyShowAction()) {\n <thy-icon class=\"thy-menu-group-operation\" [thyIconName]=\"thyActionIcon()\" (click)=\"onActionClick($event)\"></thy-icon>\n }\n @if (thyCollapsible()) {\n <thy-icon thyIconName=\"angle-up\" class=\"thy-menu-group-arrow\"></thy-icon>\n }\n</div>\n<div class=\"thy-menu-group-body\" #thyMenuGroup [@detailsContentAnimation]=\"thyCollapsed()\">\n <ng-content></ng-content>\n</div>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ThyIcon, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }], animations: [
128
111
  trigger('detailsContentAnimation', [
129
112
  state('void', style({
130
113
  height: '*'
@@ -156,55 +139,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
156
139
  })),
157
140
  transition('* => *', animate('0ms ease-out'))
158
141
  ])
159
- ], changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgClass, NgTemplateOutlet, ThyIcon], template: "<div class=\"thy-menu-group-header\" [ngClass]=\"{ 'thy-menu-group-collapsible': thyCollapsible }\" (click)=\"collapseGroup()\">\n <div class=\"thy-menu-group-header-content\">\n @if (headerContentTemplateRef) {\n <ng-template [ngTemplateOutlet]=\"headerContentTemplateRef\"></ng-template>\n } @else {\n <span class=\"thy-menu-group-title\">\n @if (showIcon) {\n <thy-icon class=\"thy-menu-group-title-icon mr-2\" [thyIconName]=\"iconClass\"></thy-icon>\n }\n <span class=\"thy-menu-group-title-text\">{{ thyTitle }}</span>\n </span>\n }\n </div>\n @if (thyShowAction) {\n <thy-icon\n class=\"thy-menu-group-operation\"\n [thyIconName]=\"rightIconClass\"\n (click)=\"onActionClick($event)\"\n ></thy-icon>\n }\n @if (thyCollapsible) {\n <thy-icon thyIconName=\"angle-up\" class=\"thy-menu-group-arrow\"></thy-icon>\n }\n</div>\n<div class=\"thy-menu-group-body\" #thyMenuGroup [@detailsContentAnimation]=\"isCollapsed\">\n <ng-content></ng-content>\n</div>\n" }]
160
- }], propDecorators: { _thyMenuGroup: [{
161
- type: ViewChild,
162
- args: ['thyMenuGroup', { static: true }]
163
- }], headerContentTemplateRef: [{
164
- type: ContentChild,
165
- args: ['headerContent']
166
- }], isThyMenuGroup: [{
167
- type: HostBinding,
168
- args: ['class.thy-menu-group']
169
- }], showIcon: [{
170
- type: HostBinding,
171
- args: ['class.has-icon']
172
- }], isCollapsed: [{
173
- type: HostBinding,
174
- args: ['class.collapsed']
175
- }], thyTitle: [{
176
- type: Input
177
- }], thyExpand: [{
178
- type: Input,
179
- args: [{ transform: coerceBooleanProperty }]
180
- }], thyCollapsed: [{
181
- type: Input,
182
- args: [{ transform: coerceBooleanProperty }]
183
- }], thyCollapsible: [{
184
- type: Input,
185
- args: [{ transform: coerceBooleanProperty }]
186
- }], thyShowIcon: [{
187
- type: Input,
188
- args: [{ transform: coerceBooleanProperty }]
189
- }], thyIcon: [{
190
- type: Input,
191
- args: ['thyIcon']
192
- }], thyActionIcon: [{
193
- type: Input,
194
- args: ['thyActionIcon']
195
- }], thyShowAction: [{
196
- type: Input,
197
- args: [{ transform: coerceBooleanProperty }]
198
- }], thyActionStopPropagation: [{
199
- type: Input,
200
- args: [{ transform: coerceBooleanProperty }]
201
- }], thyOnActionClick: [{
202
- type: Output
203
- }], thyCollapsedChange: [{
204
- type: Output
205
- }], thyActionMenu: [{
206
- type: Input
207
- }] } });
142
+ ], host: {
143
+ '[class.thy-menu-group]': 'true',
144
+ '[class.collapsed]': 'thyCollapsed()',
145
+ '[class.has-icon]': 'thyShowIcon()'
146
+ }, changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgClass, NgTemplateOutlet, ThyIcon], template: "<div class=\"thy-menu-group-header\" [ngClass]=\"{ 'thy-menu-group-collapsible': thyCollapsible() }\" (click)=\"collapseGroup()\">\n <div class=\"thy-menu-group-header-content\">\n @if (headerContentTemplateRef()) {\n <ng-template [ngTemplateOutlet]=\"headerContentTemplateRef()\"></ng-template>\n } @else {\n <span class=\"thy-menu-group-title\">\n @if (thyShowIcon()) {\n <thy-icon class=\"thy-menu-group-title-icon mr-2\" [thyIconName]=\"thyIcon()\"></thy-icon>\n }\n <span class=\"thy-menu-group-title-text\">{{ thyTitle() }}</span>\n </span>\n }\n </div>\n @if (thyShowAction()) {\n <thy-icon class=\"thy-menu-group-operation\" [thyIconName]=\"thyActionIcon()\" (click)=\"onActionClick($event)\"></thy-icon>\n }\n @if (thyCollapsible()) {\n <thy-icon thyIconName=\"angle-up\" class=\"thy-menu-group-arrow\"></thy-icon>\n }\n</div>\n<div class=\"thy-menu-group-body\" #thyMenuGroup [@detailsContentAnimation]=\"thyCollapsed()\">\n <ng-content></ng-content>\n</div>\n" }]
147
+ }], ctorParameters: () => [] });
208
148
 
209
149
  /**
210
150
  * 菜单项操作组件
@@ -217,65 +157,61 @@ class ThyMenuItemAction {
217
157
  this.renderer = inject(Renderer2);
218
158
  this.elementRef = inject(ElementRef);
219
159
  this._boundEvent = false;
160
+ /**
161
+ * 设置 Action 菜单
162
+ */
163
+ this.thyActionMenu = input();
220
164
  /**
221
165
  * 是否阻止事件冒泡
222
166
  */
223
- this.thyStopPropagation = true;
167
+ this.thyStopPropagation = input(true, { transform: coerceBooleanProperty });
168
+ /**
169
+ * 弹出框的参数
170
+ * @default { placement: "bottomLeft", insideClosable: true }
171
+ */
172
+ this.thyPopoverOptions = input();
224
173
  this.removeClickListenerFn = null;
225
174
  }
226
- /**
227
- * 设置 Action 菜单
228
- */
229
- set thyActionMenu(value) {
230
- this._actionMenu = value;
231
- if (this._actionMenu) {
232
- this.bindClickEvent();
233
- }
234
- }
235
175
  bindClickEvent() {
236
176
  if (this._boundEvent) {
237
177
  return;
238
178
  }
239
179
  this._boundEvent = true;
240
180
  this.removeClickListenerFn = this.renderer.listen(this.elementRef.nativeElement, 'click', event => {
241
- if (this.thyStopPropagation) {
181
+ if (this.thyStopPropagation()) {
242
182
  event.stopPropagation();
243
183
  }
244
- if (this._actionMenu) {
184
+ if (this.thyActionMenu()) {
245
185
  const activeClass = 'action-active';
246
186
  const wrapDOM = event.target.closest('.thy-menu-item');
247
187
  wrapDOM?.classList.add(activeClass);
248
- const popoverRef = this.popover.open(this._actionMenu, Object.assign({
188
+ const popoverRef = this.popover.open(this.thyActionMenu(), Object.assign({
249
189
  origin: event.currentTarget,
250
190
  insideClosable: true,
251
191
  placement: 'bottomLeft',
252
192
  originActiveClass: 'active'
253
- }, this.thyPopoverOptions));
193
+ }, this.thyPopoverOptions()));
254
194
  popoverRef?.afterClosed().subscribe(() => {
255
195
  wrapDOM?.classList.remove(activeClass);
256
196
  });
257
197
  }
258
198
  });
259
199
  }
200
+ ngOnInit() {
201
+ this.bindClickEvent();
202
+ }
260
203
  ngOnDestroy() {
261
204
  this.removeClickListenerFn?.();
262
205
  }
263
206
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyMenuItemAction, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
264
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "19.2.8", type: ThyMenuItemAction, isStandalone: true, selector: "thy-menu-item-action,[thy-menu-item-action],[thyMenuItemAction]", inputs: { thyActionMenu: "thyActionMenu", thyStopPropagation: ["thyStopPropagation", "thyStopPropagation", coerceBooleanProperty], thyPopoverOptions: "thyPopoverOptions" }, host: { classAttribute: "thy-menu-item-action" }, ngImport: i0, template: "<ng-content></ng-content>\n" }); }
207
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.8", type: ThyMenuItemAction, isStandalone: true, selector: "thy-menu-item-action,[thy-menu-item-action],[thyMenuItemAction]", inputs: { thyActionMenu: { classPropertyName: "thyActionMenu", publicName: "thyActionMenu", isSignal: true, isRequired: false, transformFunction: null }, thyStopPropagation: { classPropertyName: "thyStopPropagation", publicName: "thyStopPropagation", isSignal: true, isRequired: false, transformFunction: null }, thyPopoverOptions: { classPropertyName: "thyPopoverOptions", publicName: "thyPopoverOptions", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "thy-menu-item-action" }, ngImport: i0, template: "<ng-content></ng-content>\n" }); }
265
208
  }
266
209
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyMenuItemAction, decorators: [{
267
210
  type: Component,
268
211
  args: [{ selector: 'thy-menu-item-action,[thy-menu-item-action],[thyMenuItemAction]', host: {
269
212
  class: 'thy-menu-item-action'
270
213
  }, template: "<ng-content></ng-content>\n" }]
271
- }], propDecorators: { thyActionMenu: [{
272
- type: Input
273
- }], thyStopPropagation: [{
274
- type: Input,
275
- args: [{ transform: coerceBooleanProperty }]
276
- }], thyPopoverOptions: [{
277
- type: Input
278
- }] } });
214
+ }] });
279
215
 
280
216
  /**
281
217
  * 菜单项图标组件
@@ -283,29 +219,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
283
219
  * @order 15
284
220
  */
285
221
  class ThyMenuItemIcon {
286
- /**
287
- * 设置图标颜色
288
- */
289
- set thyColor(value) {
290
- if (value) {
291
- this.hostRenderer.setStyle('color', value);
292
- }
293
- }
294
222
  constructor() {
223
+ /**
224
+ * 设置图标颜色
225
+ */
226
+ this.thyColor = input();
295
227
  this.hostRenderer = useHostRenderer();
228
+ effect(() => {
229
+ if (this.thyColor()) {
230
+ this.hostRenderer.setStyle('color', this.thyColor());
231
+ }
232
+ });
296
233
  }
297
234
  ngOnInit() { }
298
235
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyMenuItemIcon, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
299
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.8", type: ThyMenuItemIcon, isStandalone: true, selector: "thy-menu-item-icon,[thy-menu-item-icon],[thyMenuItemIcon]", inputs: { thyColor: "thyColor" }, host: { classAttribute: "thy-menu-item-icon" }, ngImport: i0, template: "<ng-content></ng-content>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
236
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.8", type: ThyMenuItemIcon, isStandalone: true, selector: "thy-menu-item-icon,[thy-menu-item-icon],[thyMenuItemIcon]", inputs: { thyColor: { classPropertyName: "thyColor", publicName: "thyColor", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "thy-menu-item-icon" }, ngImport: i0, template: "<ng-content></ng-content>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
300
237
  }
301
238
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyMenuItemIcon, decorators: [{
302
239
  type: Component,
303
240
  args: [{ selector: 'thy-menu-item-icon,[thy-menu-item-icon],[thyMenuItemIcon]', host: {
304
241
  class: 'thy-menu-item-icon'
305
242
  }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content></ng-content>\n" }]
306
- }], ctorParameters: () => [], propDecorators: { thyColor: [{
307
- type: Input
308
- }] } });
243
+ }], ctorParameters: () => [] });
309
244
 
310
245
  /**
311
246
  * 菜单项组件
@@ -315,10 +250,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
315
250
  class ThyMenuItem {
316
251
  constructor() {
317
252
  this.renderer = inject(Renderer2);
253
+ this.content = viewChild('content', { read: ElementRef });
254
+ /**
255
+ * 菜单项的图标
256
+ */
257
+ this.thyIcon = input();
318
258
  }
319
259
  ngOnInit() { }
320
260
  ngAfterViewInit() {
321
- this.wrapSpanForText(this.content.nativeElement.childNodes);
261
+ this.wrapSpanForText(this.content().nativeElement.childNodes);
322
262
  }
323
263
  wrapSpanForText(nodes) {
324
264
  nodes.forEach(node => {
@@ -332,19 +272,14 @@ class ThyMenuItem {
332
272
  });
333
273
  }
334
274
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyMenuItem, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
335
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.8", type: ThyMenuItem, isStandalone: true, selector: "thy-menu-item,[thy-menu-item],[thyMenuItem]", inputs: { thyIcon: "thyIcon" }, host: { classAttribute: "thy-menu-item" }, viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"thy-menu-item-content\" #content>\n @if (thyIcon) {\n <thy-icon class=\"thy-menu-item-icon\" [thyIconName]=\"thyIcon\"></thy-icon>\n }\n <ng-content></ng-content>\n</div>\n", dependencies: [{ kind: "component", type: ThyIcon, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
275
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.8", type: ThyMenuItem, isStandalone: true, selector: "thy-menu-item,[thy-menu-item],[thyMenuItem]", inputs: { thyIcon: { classPropertyName: "thyIcon", publicName: "thyIcon", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "thy-menu-item" }, viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: "<div class=\"thy-menu-item-content\" #content>\n @if (thyIcon()) {\n <thy-icon class=\"thy-menu-item-icon\" [thyIconName]=\"thyIcon()\"></thy-icon>\n }\n <ng-content></ng-content>\n</div>\n", dependencies: [{ kind: "component", type: ThyIcon, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
336
276
  }
337
277
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyMenuItem, decorators: [{
338
278
  type: Component,
339
279
  args: [{ selector: 'thy-menu-item,[thy-menu-item],[thyMenuItem]', changeDetection: ChangeDetectionStrategy.OnPush, host: {
340
280
  class: 'thy-menu-item'
341
- }, imports: [ThyIcon], template: "<div class=\"thy-menu-item-content\" #content>\n @if (thyIcon) {\n <thy-icon class=\"thy-menu-item-icon\" [thyIconName]=\"thyIcon\"></thy-icon>\n }\n <ng-content></ng-content>\n</div>\n" }]
342
- }], propDecorators: { content: [{
343
- type: ViewChild,
344
- args: ['content', { read: ElementRef }]
345
- }], thyIcon: [{
346
- type: Input
347
- }] } });
281
+ }, imports: [ThyIcon], template: "<div class=\"thy-menu-item-content\" #content>\n @if (thyIcon()) {\n <thy-icon class=\"thy-menu-item-icon\" [thyIconName]=\"thyIcon()\"></thy-icon>\n }\n <ng-content></ng-content>\n</div>\n" }]
282
+ }] });
348
283
 
349
284
  /**
350
285
  * 菜单项名称
@@ -356,24 +291,19 @@ class ThyMenuItemName {
356
291
  /**
357
292
  * 是否 ellipsis
358
293
  */
359
- this.thyOverflowEllipsis = true;
294
+ this.thyOverflowEllipsis = input(true, { transform: coerceBooleanProperty });
360
295
  }
361
296
  ngOnInit() { }
362
297
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyMenuItemName, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
363
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "19.2.8", type: ThyMenuItemName, isStandalone: true, selector: "thy-menu-item-name,[thy-menu-item-name],[thyMenuItemName]", inputs: { thyOverflowEllipsis: ["thyOverflowEllipsis", "thyOverflowEllipsis", coerceBooleanProperty] }, host: { properties: { "class.thy-menu-item-name-ellipsis": "this.thyOverflowEllipsis" }, classAttribute: "thy-menu-item-name" }, ngImport: i0, template: "<ng-content></ng-content>\n" }); }
298
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.8", type: ThyMenuItemName, isStandalone: true, selector: "thy-menu-item-name,[thy-menu-item-name],[thyMenuItemName]", inputs: { thyOverflowEllipsis: { classPropertyName: "thyOverflowEllipsis", publicName: "thyOverflowEllipsis", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.thy-menu-item-name-ellipsis": "thyOverflowEllipsis()" }, classAttribute: "thy-menu-item-name" }, ngImport: i0, template: "<ng-content></ng-content>\n" }); }
364
299
  }
365
300
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyMenuItemName, decorators: [{
366
301
  type: Component,
367
302
  args: [{ selector: 'thy-menu-item-name,[thy-menu-item-name],[thyMenuItemName]', host: {
368
- class: 'thy-menu-item-name'
303
+ class: 'thy-menu-item-name',
304
+ '[class.thy-menu-item-name-ellipsis]': 'thyOverflowEllipsis()'
369
305
  }, template: "<ng-content></ng-content>\n" }]
370
- }], ctorParameters: () => [], propDecorators: { thyOverflowEllipsis: [{
371
- type: HostBinding,
372
- args: ['class.thy-menu-item-name-ellipsis']
373
- }, {
374
- type: Input,
375
- args: [{ transform: coerceBooleanProperty }]
376
- }] } });
306
+ }], ctorParameters: () => [] });
377
307
 
378
308
  /**
379
309
  * 菜单组件
@@ -381,35 +311,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
381
311
  * @order 5
382
312
  */
383
313
  class ThyMenu {
384
- /**
385
- * 主题
386
- * @type compact | loose
387
- * @default compact
388
- */
389
- set thyTheme(value) {
390
- this.theme = value;
391
- }
392
314
  constructor() {
393
- this.theme = 'compact';
315
+ /**
316
+ * 主题
317
+ * @type compact | loose
318
+ */
319
+ this.thyTheme = input('compact', {
320
+ transform: (value) => value || 'compact'
321
+ });
322
+ /**
323
+ * 是否收起
324
+ */
325
+ this.thyCollapsed = input(false, { transform: coerceBooleanProperty });
394
326
  }
395
327
  ngOnInit() { }
396
328
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyMenu, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
397
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "19.2.8", type: ThyMenu, isStandalone: true, selector: "thy-menu,[thy-menu],[thyMenu]", inputs: { thyTheme: "thyTheme", thyCollapsed: ["thyCollapsed", "thyCollapsed", coerceBooleanProperty] }, host: { properties: { "class.thy-menu-collapsed": "thyCollapsed", "class.thy-menu-theme-loose": "theme === \"loose\"", "class.thy-menu-theme-dark": "theme === \"dark\"" }, classAttribute: "thy-menu" }, ngImport: i0, template: "<ng-content></ng-content>\n" }); }
329
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.8", type: ThyMenu, isStandalone: true, selector: "thy-menu,[thy-menu],[thyMenu]", inputs: { thyTheme: { classPropertyName: "thyTheme", publicName: "thyTheme", isSignal: true, isRequired: false, transformFunction: null }, thyCollapsed: { classPropertyName: "thyCollapsed", publicName: "thyCollapsed", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.thy-menu-collapsed": "thyCollapsed()", "class.thy-menu-theme-loose": "thyTheme() === \"loose\"", "class.thy-menu-theme-dark": "thyTheme() === \"dark\"" }, classAttribute: "thy-menu" }, ngImport: i0, template: "<ng-content></ng-content>\n" }); }
398
330
  }
399
331
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyMenu, decorators: [{
400
332
  type: Component,
401
333
  args: [{ selector: 'thy-menu,[thy-menu],[thyMenu]', host: {
402
334
  class: 'thy-menu',
403
- '[class.thy-menu-collapsed]': 'thyCollapsed',
404
- '[class.thy-menu-theme-loose]': 'theme === "loose"',
405
- '[class.thy-menu-theme-dark]': 'theme === "dark"'
335
+ '[class.thy-menu-collapsed]': 'thyCollapsed()',
336
+ '[class.thy-menu-theme-loose]': 'thyTheme() === "loose"',
337
+ '[class.thy-menu-theme-dark]': 'thyTheme() === "dark"'
406
338
  }, template: "<ng-content></ng-content>\n" }]
407
- }], ctorParameters: () => [], propDecorators: { thyTheme: [{
408
- type: Input
409
- }], thyCollapsed: [{
410
- type: Input,
411
- args: [{ transform: coerceBooleanProperty }]
412
- }] } });
339
+ }], ctorParameters: () => [] });
413
340
 
414
341
  class ThyMenuModule {
415
342
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-tethys-menu.mjs","sources":["../../../src/menu/divider/menu-divider.component.ts","../../../src/menu/divider/menu-divider.component.html","../../../src/menu/group/menu-group.component.ts","../../../src/menu/group/menu-group.component.html","../../../src/menu/item/action/menu-item-action.component.ts","../../../src/menu/item/action/menu-item-action.component.html","../../../src/menu/item/icon/menu-item-icon.component.ts","../../../src/menu/item/icon/menu-item-icon.component.html","../../../src/menu/item/menu-item.component.ts","../../../src/menu/item/menu-item.component.html","../../../src/menu/item/name/menu-item-name.component.ts","../../../src/menu/item/name/menu-item-name.component.html","../../../src/menu/menu.component.ts","../../../src/menu/menu.component.html","../../../src/menu/menu.module.ts","../../../src/menu/ngx-tethys-menu.ts"],"sourcesContent":["import { Component, OnInit, HostBinding } from '@angular/core';\n\n/**\n * @name thy-menu-divider,[thy-menu-divider],[thyMenuDivider]\n */\n@Component({\n selector: 'thy-menu-divider,[thy-menu-divider],[thyMenuDivider]',\n templateUrl: './menu-divider.component.html'\n})\nexport class ThyMenuDivider implements OnInit {\n @HostBinding('class.thy-menu-divider') isThyMenuDivider = true;\n\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<ng-content></ng-content>\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { ComponentType } from '@angular/cdk/portal';\nimport {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n OnInit,\n Output,\n TemplateRef,\n ViewChild,\n inject\n} from '@angular/core';\nimport { ThyPopover } from 'ngx-tethys/popover';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\n\n/**\n * 菜单分组组件\n * @name thy-menu-group,[thy-menu-group],[thyMenuGroup]\n * @order 30\n */\n@Component({\n selector: 'thy-menu-group,[thy-menu-group],[thyMenuGroup]',\n templateUrl: './menu-group.component.html',\n animations: [\n trigger('detailsContentAnimation', [\n state(\n 'void',\n style({\n height: '*'\n })\n ),\n state(\n '1',\n style({\n height: 0,\n overflow: 'hidden'\n })\n ),\n state(\n '0',\n style({\n height: '*'\n })\n ),\n transition('* => *', animate('0ms ease-out'))\n ])\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass, NgTemplateOutlet, ThyIcon]\n})\nexport class ThyMenuGroup implements OnInit {\n private popover = inject(ThyPopover);\n\n public _actionMenu: ComponentType<any> | TemplateRef<any>;\n\n public rightIconClass = 'more';\n\n public iconClass = 'folder-bold';\n\n public groupHeaderPaddingLeft = 0;\n\n @ViewChild('thyMenuGroup', { static: true }) _thyMenuGroup: ElementRef;\n\n @ContentChild('headerContent')\n headerContentTemplateRef: TemplateRef<any>;\n\n @HostBinding('class.thy-menu-group') isThyMenuGroup = true;\n\n @HostBinding('class.has-icon') showIcon = false;\n\n @HostBinding('class.collapsed') isCollapsed = false;\n\n /**\n * 分组标题\n */\n @Input() thyTitle = '';\n\n /**\n * 已废弃,请使用 thyCollapsed\n * @deprecated\n */\n @Input({ transform: coerceBooleanProperty })\n set thyExpand(value: boolean) {\n this.isCollapsed = !!!value;\n }\n\n /**\n * 是否处于收起状态\n * @default false\n */\n @Input({ transform: coerceBooleanProperty })\n set thyCollapsed(value: boolean) {\n this.isCollapsed = value;\n }\n\n /**\n * 是否支持展开收起\n */\n @Input({ transform: coerceBooleanProperty }) thyCollapsible: boolean = false;\n\n /**\n * 是否显示 Icon\n */\n @Input({ transform: coerceBooleanProperty })\n set thyShowIcon(value: boolean) {\n this.showIcon = value;\n }\n\n /**\n * 图标\n */\n @Input('thyIcon')\n set thyIcon(value: string) {\n this.iconClass = value;\n }\n\n /**\n * 操作图标\n */\n @Input('thyActionIcon')\n set thyActionIcon(value: string) {\n this.rightIconClass = value;\n }\n\n /**\n *是否显示操作\n */\n @Input({ transform: coerceBooleanProperty }) thyShowAction = false;\n\n /**\n * 操作阻止冒泡事件\n */\n @Input({ transform: coerceBooleanProperty }) thyActionStopPropagation = true;\n\n /**\n * Action 点击事件\n */\n @Output() thyOnActionClick: EventEmitter<Event> = new EventEmitter<Event>();\n\n @Output() thyCollapsedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /**\n * 设置 Action 菜单\n */\n @Input()\n set thyActionMenu(value: ComponentType<any> | TemplateRef<any>) {\n this._actionMenu = value;\n }\n\n ngOnInit(): void {}\n\n collapseGroup(): void {\n if (!this.thyCollapsible) {\n return;\n }\n this.isCollapsed = !this.isCollapsed;\n this.thyCollapsedChange.emit(this.isCollapsed);\n }\n\n onActionClick(event: Event): void {\n if (this.thyActionStopPropagation) {\n event.stopPropagation();\n }\n if (this._actionMenu) {\n this.popover.open(this._actionMenu, {\n origin: event.currentTarget as HTMLElement,\n insideClosable: true,\n placement: 'bottom'\n });\n } else {\n this.thyOnActionClick.emit(event);\n }\n }\n}\n","<div class=\"thy-menu-group-header\" [ngClass]=\"{ 'thy-menu-group-collapsible': thyCollapsible }\" (click)=\"collapseGroup()\">\n <div class=\"thy-menu-group-header-content\">\n @if (headerContentTemplateRef) {\n <ng-template [ngTemplateOutlet]=\"headerContentTemplateRef\"></ng-template>\n } @else {\n <span class=\"thy-menu-group-title\">\n @if (showIcon) {\n <thy-icon class=\"thy-menu-group-title-icon mr-2\" [thyIconName]=\"iconClass\"></thy-icon>\n }\n <span class=\"thy-menu-group-title-text\">{{ thyTitle }}</span>\n </span>\n }\n </div>\n @if (thyShowAction) {\n <thy-icon\n class=\"thy-menu-group-operation\"\n [thyIconName]=\"rightIconClass\"\n (click)=\"onActionClick($event)\"\n ></thy-icon>\n }\n @if (thyCollapsible) {\n <thy-icon thyIconName=\"angle-up\" class=\"thy-menu-group-arrow\"></thy-icon>\n }\n</div>\n<div class=\"thy-menu-group-body\" #thyMenuGroup [@detailsContentAnimation]=\"isCollapsed\">\n <ng-content></ng-content>\n</div>\n","import { ThyPopover, ThyPopoverConfig } from 'ngx-tethys/popover';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\n\nimport { ComponentType } from '@angular/cdk/portal';\nimport { Component, ElementRef, Input, OnDestroy, Renderer2, TemplateRef, inject } from '@angular/core';\n\n/**\n * 菜单项操作组件\n * @name thy-menu-item-action,[thy-menu-item-action],[thyMenuItemAction]\n * @order 25\n */\n@Component({\n selector: 'thy-menu-item-action,[thy-menu-item-action],[thyMenuItemAction]',\n templateUrl: './menu-item-action.component.html',\n host: {\n class: 'thy-menu-item-action'\n }\n})\nexport class ThyMenuItemAction implements OnDestroy {\n private popover = inject(ThyPopover);\n private renderer = inject(Renderer2);\n private elementRef = inject(ElementRef);\n\n _boundEvent = false;\n\n _actionMenu: ComponentType<any> | TemplateRef<any>;\n\n /**\n * 设置 Action 菜单\n */\n @Input()\n set thyActionMenu(value: ComponentType<any> | TemplateRef<any>) {\n this._actionMenu = value;\n if (this._actionMenu) {\n this.bindClickEvent();\n }\n }\n\n /**\n * 是否阻止事件冒泡\n */\n @Input({ transform: coerceBooleanProperty }) thyStopPropagation = true;\n\n /**\n * 弹出框的参数\n * @default { placement: \"bottomLeft\", insideClosable: true }\n */\n @Input() thyPopoverOptions: ThyPopoverConfig;\n\n private bindClickEvent() {\n if (this._boundEvent) {\n return;\n }\n this._boundEvent = true;\n this.removeClickListenerFn = this.renderer.listen(this.elementRef.nativeElement, 'click', event => {\n if (this.thyStopPropagation) {\n event.stopPropagation();\n }\n if (this._actionMenu) {\n const activeClass = 'action-active';\n const wrapDOM = (event.target as HTMLElement).closest('.thy-menu-item');\n wrapDOM?.classList.add(activeClass);\n const popoverRef = this.popover.open(\n this._actionMenu,\n Object.assign(\n {\n origin: event.currentTarget as HTMLElement,\n insideClosable: true,\n placement: 'bottomLeft',\n originActiveClass: 'active'\n },\n this.thyPopoverOptions\n )\n );\n popoverRef?.afterClosed().subscribe(() => {\n wrapDOM?.classList.remove(activeClass);\n });\n }\n });\n }\n\n private removeClickListenerFn: VoidFunction | null = null;\n\n ngOnDestroy(): void {\n this.removeClickListenerFn?.();\n }\n}\n","<ng-content></ng-content>\n","import { Component, OnInit, Input, ChangeDetectionStrategy } from '@angular/core';\nimport { useHostRenderer } from '@tethys/cdk/dom';\n\n/**\n * 菜单项图标组件\n * @name thy-menu-item-icon,[thy-menu-item-icon],[thyMenuItemIcon]\n * @order 15\n */\n@Component({\n selector: 'thy-menu-item-icon,[thy-menu-item-icon],[thyMenuItemIcon]',\n templateUrl: './menu-item-icon.component.html',\n host: {\n class: 'thy-menu-item-icon'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ThyMenuItemIcon implements OnInit {\n /**\n * 设置图标颜色\n */\n @Input()\n set thyColor(value: string) {\n if (value) {\n this.hostRenderer.setStyle('color', value);\n }\n }\n\n private hostRenderer = useHostRenderer();\n\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<ng-content></ng-content>\n","import { Component, OnInit, AfterViewInit, ChangeDetectionStrategy, Input, Renderer2, ElementRef, ViewChild, inject } from '@angular/core';\nimport { ThyIcon } from 'ngx-tethys/icon';\n\n/**\n * 菜单项组件\n * @name thy-menu-item,[thy-menu-item],[thyMenuItem]\n * @order 10\n */\n@Component({\n selector: 'thy-menu-item,[thy-menu-item],[thyMenuItem]',\n templateUrl: './menu-item.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'thy-menu-item'\n },\n imports: [ThyIcon]\n})\nexport class ThyMenuItem implements OnInit, AfterViewInit {\n private renderer = inject(Renderer2);\n\n @ViewChild('content', { read: ElementRef }) content: ElementRef<HTMLElement>;\n /**\n * 菜单项的图标\n */\n @Input() thyIcon: string;\n\n ngOnInit(): void {}\n\n ngAfterViewInit() {\n this.wrapSpanForText(this.content.nativeElement.childNodes);\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.addClass(span, 'thy-menu-item-name');\n this.renderer.insertBefore(parent, span, node);\n this.renderer.appendChild(span, node);\n }\n });\n }\n}\n","<div class=\"thy-menu-item-content\" #content>\n @if (thyIcon) {\n <thy-icon class=\"thy-menu-item-icon\" [thyIconName]=\"thyIcon\"></thy-icon>\n }\n <ng-content></ng-content>\n</div>\n","import { Component, OnInit, HostBinding, Input } from '@angular/core';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\n\n/**\n * 菜单项名称\n * @name thy-menu-item-name,[thy-menu-item-name],[thyMenuItemName]\n * @order 20\n */\n@Component({\n selector: 'thy-menu-item-name,[thy-menu-item-name],[thyMenuItemName]',\n templateUrl: './menu-item-name.component.html',\n host: {\n class: 'thy-menu-item-name'\n }\n})\nexport class ThyMenuItemName implements OnInit {\n /**\n * 是否 ellipsis\n */\n @HostBinding('class.thy-menu-item-name-ellipsis')\n @Input({ transform: coerceBooleanProperty })\n thyOverflowEllipsis = true;\n\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<ng-content></ng-content>\n","import { Component, OnInit, Input } from '@angular/core';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\n\nexport type ThyMenuTheme = 'compact' | 'loose' | 'dark';\n\n/**\n * 菜单组件\n * @name thy-menu,[thy-menu],[thyMenu]\n * @order 5\n */\n@Component({\n selector: 'thy-menu,[thy-menu],[thyMenu]',\n templateUrl: './menu.component.html',\n host: {\n class: 'thy-menu',\n '[class.thy-menu-collapsed]': 'thyCollapsed',\n '[class.thy-menu-theme-loose]': 'theme === \"loose\"',\n '[class.thy-menu-theme-dark]': 'theme === \"dark\"'\n }\n})\nexport class ThyMenu implements OnInit {\n theme: ThyMenuTheme = 'compact';\n\n /**\n * 主题\n * @type compact | loose\n * @default compact\n */\n @Input() set thyTheme(value: ThyMenuTheme) {\n this.theme = value;\n }\n\n /**\n * 是否收起\n * @default false\n */\n @Input({ transform: coerceBooleanProperty }) thyCollapsed: boolean;\n\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<ng-content></ng-content>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyPopoverModule } from 'ngx-tethys/popover';\nimport { ThyMenuDivider } from './divider/menu-divider.component';\nimport { ThyMenuGroup } from './group/menu-group.component';\nimport { ThyMenuItemAction } from './item/action/menu-item-action.component';\nimport { ThyMenuItemIcon } from './item/icon/menu-item-icon.component';\nimport { ThyMenuItem } from './item/menu-item.component';\nimport { ThyMenuItemName } from './item/name/menu-item-name.component';\nimport { ThyMenu } from './menu.component';\n\n@NgModule({\n imports: [\n CommonModule,\n ThyIconModule,\n ThyPopoverModule,\n ThyMenu,\n ThyMenuGroup,\n ThyMenuItem,\n ThyMenuItemName,\n ThyMenuItemIcon,\n ThyMenuItemAction,\n ThyMenuDivider\n ],\n exports: [ThyMenu, ThyMenuGroup, ThyMenuItem, ThyMenuItemName, ThyMenuItemIcon, ThyMenuItemAction, ThyMenuDivider]\n})\nexport class ThyMenuModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;AAEA;;AAEG;MAKU,cAAc,CAAA;AAGvB,IAAA,WAAA,GAAA;QAFuC,IAAgB,CAAA,gBAAA,GAAG,IAAI;;AAI9D,IAAA,QAAQ;8GALC,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,6LCT3B,6BACA,EAAA,CAAA,CAAA;;2FDQa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAJ1B,SAAS;+BACI,sDAAsD,EAAA,QAAA,EAAA,6BAAA,EAAA;wDAIzB,gBAAgB,EAAA,CAAA;sBAAtD,WAAW;uBAAC,wBAAwB;;;AEWzC;;;;AAIG;MA+BU,YAAY,CAAA;AA9BzB,IAAA,WAAA,GAAA;AA+BY,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC;QAI7B,IAAc,CAAA,cAAA,GAAG,MAAM;QAEvB,IAAS,CAAA,SAAA,GAAG,aAAa;QAEzB,IAAsB,CAAA,sBAAA,GAAG,CAAC;QAOI,IAAc,CAAA,cAAA,GAAG,IAAI;QAE3B,IAAQ,CAAA,QAAA,GAAG,KAAK;QAEf,IAAW,CAAA,WAAA,GAAG,KAAK;AAEnD;;AAEG;QACM,IAAQ,CAAA,QAAA,GAAG,EAAE;AAoBtB;;AAEG;QAC0C,IAAc,CAAA,cAAA,GAAY,KAAK;AA0B5E;;AAEG;QAC0C,IAAa,CAAA,aAAA,GAAG,KAAK;AAElE;;AAEG;QAC0C,IAAwB,CAAA,wBAAA,GAAG,IAAI;AAE5E;;AAEG;AACO,QAAA,IAAA,CAAA,gBAAgB,GAAwB,IAAI,YAAY,EAAS;AAEjE,QAAA,IAAA,CAAA,kBAAkB,GAA0B,IAAI,YAAY,EAAW;AAkCpF;AAhGG;;;AAGG;IACH,IACI,SAAS,CAAC,KAAc,EAAA;AACxB,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,KAAK;;AAG/B;;;AAGG;IACH,IACI,YAAY,CAAC,KAAc,EAAA;AAC3B,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;;AAQ5B;;AAEG;IACH,IACI,WAAW,CAAC,KAAc,EAAA;AAC1B,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;;AAGzB;;AAEG;IACH,IACI,OAAO,CAAC,KAAa,EAAA;AACrB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;;AAG1B;;AAEG;IACH,IACI,aAAa,CAAC,KAAa,EAAA;AAC3B,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;;AAoB/B;;AAEG;IACH,IACI,aAAa,CAAC,KAA4C,EAAA;AAC1D,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;;AAG5B,IAAA,QAAQ;IAER,aAAa,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACtB;;AAEJ,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,WAAW;QACpC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;;AAGlD,IAAA,aAAa,CAAC,KAAY,EAAA;AACtB,QAAA,IAAI,IAAI,CAAC,wBAAwB,EAAE;YAC/B,KAAK,CAAC,eAAe,EAAE;;AAE3B,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBAChC,MAAM,EAAE,KAAK,CAAC,aAA4B;AAC1C,gBAAA,cAAc,EAAE,IAAI;AACpB,gBAAA,SAAS,EAAE;AACd,aAAA,CAAC;;aACC;AACH,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;;;8GAxHhC,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gDAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,CAAA,WAAA,EAAA,WAAA,EA+BD,qBAAqB,CASrB,EAAA,YAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EAAA,qBAAqB,wDAQrB,qBAAqB,CAAA,EAAA,WAAA,EAAA,CAAA,aAAA,EAAA,aAAA,EAKrB,qBAAqB,CAwBrB,EAAA,OAAA,EAAA,SAAA,EAAA,aAAA,EAAA,eAAA,EAAA,aAAA,EAAA,CAAA,eAAA,EAAA,eAAA,EAAA,qBAAqB,sFAKrB,qBAAqB,CAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,0BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1I7C,qhCA2BA,ED2Bc,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,OAAO,oFAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAzBhC,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,uBAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA;YACR,OAAO,CAAC,yBAAyB,EAAE;AAC/B,gBAAA,KAAK,CACD,MAAM,EACN,KAAK,CAAC;AACF,oBAAA,MAAM,EAAE;AACX,iBAAA,CAAC,CACL;AACD,gBAAA,KAAK,CACD,GAAG,EACH,KAAK,CAAC;AACF,oBAAA,MAAM,EAAE,CAAC;AACT,oBAAA,QAAQ,EAAE;AACb,iBAAA,CAAC,CACL;AACD,gBAAA,KAAK,CACD,GAAG,EACH,KAAK,CAAC;AACF,oBAAA,MAAM,EAAE;AACX,iBAAA,CAAC,CACL;AACD,gBAAA,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,cAAc,CAAC;aAC/C;AACJ,SAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAIQ,YAAY,EAAA,UAAA,EAAA,CAAA;kBA9BxB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gDAAgD,EAE9C,UAAA,EAAA;wBACR,OAAO,CAAC,yBAAyB,EAAE;AAC/B,4BAAA,KAAK,CACD,MAAM,EACN,KAAK,CAAC;AACF,gCAAA,MAAM,EAAE;AACX,6BAAA,CAAC,CACL;AACD,4BAAA,KAAK,CACD,GAAG,EACH,KAAK,CAAC;AACF,gCAAA,MAAM,EAAE,CAAC;AACT,gCAAA,QAAQ,EAAE;AACb,6BAAA,CAAC,CACL;AACD,4BAAA,KAAK,CACD,GAAG,EACH,KAAK,CAAC;AACF,gCAAA,MAAM,EAAE;AACX,6BAAA,CAAC,CACL;AACD,4BAAA,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,cAAc,CAAC;yBAC/C;qBACJ,EACgB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACtC,OAAA,EAAA,CAAC,OAAO,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAA,QAAA,EAAA,qhCAAA,EAAA;8BAaA,aAAa,EAAA,CAAA;sBAAzD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,cAAc,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;gBAG3C,wBAAwB,EAAA,CAAA;sBADvB,YAAY;uBAAC,eAAe;gBAGQ,cAAc,EAAA,CAAA;sBAAlD,WAAW;uBAAC,sBAAsB;gBAEJ,QAAQ,EAAA,CAAA;sBAAtC,WAAW;uBAAC,gBAAgB;gBAEG,WAAW,EAAA,CAAA;sBAA1C,WAAW;uBAAC,iBAAiB;gBAKrB,QAAQ,EAAA,CAAA;sBAAhB;gBAOG,SAAS,EAAA,CAAA;sBADZ,KAAK;uBAAC,EAAE,SAAS,EAAE,qBAAqB,EAAE;gBAUvC,YAAY,EAAA,CAAA;sBADf,KAAK;uBAAC,EAAE,SAAS,EAAE,qBAAqB,EAAE;gBAQE,cAAc,EAAA,CAAA;sBAA1D,KAAK;uBAAC,EAAE,SAAS,EAAE,qBAAqB,EAAE;gBAMvC,WAAW,EAAA,CAAA;sBADd,KAAK;uBAAC,EAAE,SAAS,EAAE,qBAAqB,EAAE;gBASvC,OAAO,EAAA,CAAA;sBADV,KAAK;uBAAC,SAAS;gBASZ,aAAa,EAAA,CAAA;sBADhB,KAAK;uBAAC,eAAe;gBAQuB,aAAa,EAAA,CAAA;sBAAzD,KAAK;uBAAC,EAAE,SAAS,EAAE,qBAAqB,EAAE;gBAKE,wBAAwB,EAAA,CAAA;sBAApE,KAAK;uBAAC,EAAE,SAAS,EAAE,qBAAqB,EAAE;gBAKjC,gBAAgB,EAAA,CAAA;sBAAzB;gBAES,kBAAkB,EAAA,CAAA;sBAA3B;gBAMG,aAAa,EAAA,CAAA;sBADhB;;;AEhJL;;;;AAIG;MAQU,iBAAiB,CAAA;AAP9B,IAAA,WAAA,GAAA;AAQY,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC;AAC5B,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAC5B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QAEvC,IAAW,CAAA,WAAA,GAAG,KAAK;AAenB;;AAEG;QAC0C,IAAkB,CAAA,kBAAA,GAAG,IAAI;QAwC9D,IAAqB,CAAA,qBAAA,GAAwB,IAAI;AAK5D;AA3DG;;AAEG;IACH,IACI,aAAa,CAAC,KAA4C,EAAA;AAC1D,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AACxB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,cAAc,EAAE;;;IAerB,cAAc,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB;;AAEJ,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,OAAO,EAAE,KAAK,IAAG;AAC9F,YAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE;gBACzB,KAAK,CAAC,eAAe,EAAE;;AAE3B,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE;gBAClB,MAAM,WAAW,GAAG,eAAe;gBACnC,MAAM,OAAO,GAAI,KAAK,CAAC,MAAsB,CAAC,OAAO,CAAC,gBAAgB,CAAC;AACvE,gBAAA,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC;AACnC,gBAAA,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAChC,IAAI,CAAC,WAAW,EAChB,MAAM,CAAC,MAAM,CACT;oBACI,MAAM,EAAE,KAAK,CAAC,aAA4B;AAC1C,oBAAA,cAAc,EAAE,IAAI;AACpB,oBAAA,SAAS,EAAE,YAAY;AACvB,oBAAA,iBAAiB,EAAE;AACtB,iBAAA,EACD,IAAI,CAAC,iBAAiB,CACzB,CACJ;AACD,gBAAA,UAAU,EAAE,WAAW,EAAE,CAAC,SAAS,CAAC,MAAK;AACrC,oBAAA,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC;AAC1C,iBAAC,CAAC;;AAEV,SAAC,CAAC;;IAKN,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,qBAAqB,IAAI;;8GAlEzB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iEAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,EAuBN,qBAAqB,CAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzC7C,6BACA,EAAA,CAAA,CAAA;;2FDiBa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iEAAiE,EAErE,IAAA,EAAA;AACF,wBAAA,KAAK,EAAE;AACV,qBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA;8BAeG,aAAa,EAAA,CAAA;sBADhB;gBAW4C,kBAAkB,EAAA,CAAA;sBAA9D,KAAK;uBAAC,EAAE,SAAS,EAAE,qBAAqB,EAAE;gBAMlC,iBAAiB,EAAA,CAAA;sBAAzB;;;AE5CL;;;;AAIG;MASU,eAAe,CAAA;AACxB;;AAEG;IACH,IACI,QAAQ,CAAC,KAAa,EAAA;QACtB,IAAI,KAAK,EAAE;YACP,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;;;AAMlD,IAAA,WAAA,GAAA;QAFQ,IAAY,CAAA,YAAA,GAAG,eAAe,EAAE;;AAIxC,IAAA,QAAQ;8GAfC,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,uMChB5B,6BACA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FDea,eAAe,EAAA,UAAA,EAAA,CAAA;kBAR3B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2DAA2D,EAE/D,IAAA,EAAA;AACF,wBAAA,KAAK,EAAE;qBACV,EACgB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,6BAAA,EAAA;wDAO3C,QAAQ,EAAA,CAAA;sBADX;;;AEjBL;;;;AAIG;MAUU,WAAW,CAAA;AATxB,IAAA,WAAA,GAAA;AAUY,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAyBvC;AAjBG,IAAA,QAAQ;IAER,eAAe,GAAA;QACX,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC;;AAGvD,IAAA,eAAe,CAAC,KAAe,EAAA;AACnC,QAAA,KAAK,CAAC,OAAO,CAAC,IAAI,IAAG;AACjB,YAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,EAAE;gBAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;gBAChD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC;gBAC7C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;gBAClD,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC;gBAC9C,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC;;AAE7C,SAAC,CAAC;;8GAxBG,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,EAGU,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,eAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,UAAU,ECpB5C,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,iMAMA,4CDSc,OAAO,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,uBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAER,WAAW,EAAA,UAAA,EAAA,CAAA;kBATvB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,6CAA6C,EAEtC,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACzC,IAAA,EAAA;AACF,wBAAA,KAAK,EAAE;qBACV,EACQ,OAAA,EAAA,CAAC,OAAO,CAAC,EAAA,QAAA,EAAA,iMAAA,EAAA;8BAK0B,OAAO,EAAA,CAAA;sBAAlD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,SAAS,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;gBAIjC,OAAO,EAAA,CAAA;sBAAf;;;AErBL;;;;AAIG;MAQU,eAAe,CAAA;AAQxB,IAAA,WAAA,GAAA;AAPA;;AAEG;QAGH,IAAmB,CAAA,mBAAA,GAAG,IAAI;;AAI1B,IAAA,QAAQ;8GAVC,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2DAAA,EAAA,MAAA,EAAA,EAAA,mBAAA,EAAA,CAAA,qBAAA,EAAA,qBAAA,EAKJ,qBAAqB,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mCAAA,EAAA,0BAAA,EAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpB7C,6BACA,EAAA,CAAA,CAAA;;2FDca,eAAe,EAAA,UAAA,EAAA,CAAA;kBAP3B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2DAA2D,EAE/D,IAAA,EAAA;AACF,wBAAA,KAAK,EAAE;AACV,qBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA;wDAQD,mBAAmB,EAAA,CAAA;sBAFlB,WAAW;uBAAC,mCAAmC;;sBAC/C,KAAK;uBAAC,EAAE,SAAS,EAAE,qBAAqB,EAAE;;;AEf/C;;;;AAIG;MAWU,OAAO,CAAA;AAGhB;;;;AAIG;IACH,IAAa,QAAQ,CAAC,KAAmB,EAAA;AACrC,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;;AAStB,IAAA,WAAA,GAAA;QAjBA,IAAK,CAAA,KAAA,GAAiB,SAAS;;AAmB/B,IAAA,QAAQ;8GApBC,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAP,OAAO,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,CAAA,cAAA,EAAA,cAAA,EAgBI,qBAAqB,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,0BAAA,EAAA,cAAA,EAAA,4BAAA,EAAA,qBAAA,EAAA,2BAAA,EAAA,oBAAA,EAAA,EAAA,cAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpC7C,6BACA,EAAA,CAAA,CAAA;;2FDmBa,OAAO,EAAA,UAAA,EAAA,CAAA;kBAVnB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,+BAA+B,EAEnC,IAAA,EAAA;AACF,wBAAA,KAAK,EAAE,UAAU;AACjB,wBAAA,4BAA4B,EAAE,cAAc;AAC5C,wBAAA,8BAA8B,EAAE,mBAAmB;AACnD,wBAAA,6BAA6B,EAAE;AAClC,qBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA;wDAUY,QAAQ,EAAA,CAAA;sBAApB;gBAQ4C,YAAY,EAAA,CAAA;sBAAxD,KAAK;uBAAC,EAAE,SAAS,EAAE,qBAAqB,EAAE;;;METlC,aAAa,CAAA;8GAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,YAblB,YAAY;YACZ,aAAa;YACb,gBAAgB;YAChB,OAAO;YACP,YAAY;YACZ,WAAW;YACX,eAAe;YACf,eAAe;YACf,iBAAiB;AACjB,YAAA,cAAc,CAER,EAAA,OAAA,EAAA,CAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,eAAe,EAAE,iBAAiB,EAAE,cAAc,CAAA,EAAA,CAAA,CAAA;AAExG,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,YAblB,YAAY;YACZ,aAAa;YACb,gBAAgB;YAEhB,YAAY;YACZ,WAAW,CAAA,EAAA,CAAA,CAAA;;2FAQN,aAAa,EAAA,UAAA,EAAA,CAAA;kBAfzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,aAAa;wBACb,gBAAgB;wBAChB,OAAO;wBACP,YAAY;wBACZ,WAAW;wBACX,eAAe;wBACf,eAAe;wBACf,iBAAiB;wBACjB;AACH,qBAAA;AACD,oBAAA,OAAO,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,eAAe,EAAE,iBAAiB,EAAE,cAAc;AACpH,iBAAA;;;AC1BD;;AAEG;;;;"}
1
+ {"version":3,"file":"ngx-tethys-menu.mjs","sources":["../../../src/menu/divider/menu-divider.component.ts","../../../src/menu/divider/menu-divider.component.html","../../../src/menu/group/menu-group.component.ts","../../../src/menu/group/menu-group.component.html","../../../src/menu/item/action/menu-item-action.component.ts","../../../src/menu/item/action/menu-item-action.component.html","../../../src/menu/item/icon/menu-item-icon.component.ts","../../../src/menu/item/icon/menu-item-icon.component.html","../../../src/menu/item/menu-item.component.ts","../../../src/menu/item/menu-item.component.html","../../../src/menu/item/name/menu-item-name.component.ts","../../../src/menu/item/name/menu-item-name.component.html","../../../src/menu/menu.component.ts","../../../src/menu/menu.component.html","../../../src/menu/menu.module.ts","../../../src/menu/ngx-tethys-menu.ts"],"sourcesContent":["import { Component, OnInit, HostBinding } from '@angular/core';\n\n/**\n * @name thy-menu-divider,[thy-menu-divider],[thyMenuDivider]\n */\n@Component({\n selector: 'thy-menu-divider,[thy-menu-divider],[thyMenuDivider]',\n templateUrl: './menu-divider.component.html'\n})\nexport class ThyMenuDivider implements OnInit {\n @HostBinding('class.thy-menu-divider') isThyMenuDivider = true;\n\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<ng-content></ng-content>\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { ComponentType } from '@angular/cdk/portal';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n ModelSignal,\n OnInit,\n TemplateRef,\n contentChild,\n inject,\n input,\n model,\n output,\n viewChild\n} from '@angular/core';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { ThyPopover } from 'ngx-tethys/popover';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\n\n/**\n * 菜单分组组件\n * @name thy-menu-group,[thy-menu-group],[thyMenuGroup]\n * @order 30\n */\n@Component({\n selector: 'thy-menu-group,[thy-menu-group],[thyMenuGroup]',\n templateUrl: './menu-group.component.html',\n animations: [\n trigger('detailsContentAnimation', [\n state(\n 'void',\n style({\n height: '*'\n })\n ),\n state(\n '1',\n style({\n height: 0,\n overflow: 'hidden'\n })\n ),\n state(\n '0',\n style({\n height: '*'\n })\n ),\n transition('* => *', animate('0ms ease-out'))\n ])\n ],\n host: {\n '[class.thy-menu-group]': 'true',\n '[class.collapsed]': 'thyCollapsed()',\n '[class.has-icon]': 'thyShowIcon()'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgClass, NgTemplateOutlet, ThyIcon]\n})\nexport class ThyMenuGroup implements OnInit {\n private popover = inject(ThyPopover);\n\n public groupHeaderPaddingLeft = 0;\n\n readonly _thyMenuGroup = viewChild<ElementRef>('thyMenuGroup');\n\n readonly headerContentTemplateRef = contentChild<TemplateRef<any>>('headerContent');\n\n /**\n * 分组标题\n */\n readonly thyTitle = input<string>('');\n\n /**\n * 是否处于收起状态\n */\n readonly thyCollapsed: ModelSignal<boolean> = model(false);\n\n /**\n * 是否支持展开收起\n */\n readonly thyCollapsible = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 是否显示 Icon\n */\n readonly thyShowIcon = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 图标\n */\n readonly thyIcon = input<string, string>('folder-bold', {\n transform: (value: string) => value || 'folder-bold'\n });\n\n /**\n * 操作图标\n */\n readonly thyActionIcon = input<string, string>('more', {\n transform: (value: string) => value || 'more'\n });\n\n /**\n *是否显示操作\n */\n readonly thyShowAction = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 操作阻止冒泡事件\n */\n readonly thyActionStopPropagation = input(true, { transform: coerceBooleanProperty });\n\n /**\n * Action 点击事件\n */\n readonly thyOnActionClick = output<Event>();\n\n readonly thyCollapsedChange = output<boolean>();\n\n /**\n * 设置 Action 菜单\n */\n readonly thyActionMenu = input<ComponentType<any> | TemplateRef<any>>();\n\n constructor() {}\n\n ngOnInit(): void {}\n\n collapseGroup(): void {\n if (!this.thyCollapsible()) {\n return;\n }\n this.thyCollapsed.set(!this.thyCollapsed());\n this.thyCollapsedChange.emit(this.thyCollapsed());\n }\n\n onActionClick(event: Event): void {\n if (this.thyActionStopPropagation()) {\n event.stopPropagation();\n }\n if (this.thyActionMenu()) {\n this.popover.open(this.thyActionMenu(), {\n origin: event.currentTarget as HTMLElement,\n insideClosable: true,\n placement: 'bottom'\n });\n } else {\n this.thyOnActionClick.emit(event);\n }\n }\n}\n","<div class=\"thy-menu-group-header\" [ngClass]=\"{ 'thy-menu-group-collapsible': thyCollapsible() }\" (click)=\"collapseGroup()\">\n <div class=\"thy-menu-group-header-content\">\n @if (headerContentTemplateRef()) {\n <ng-template [ngTemplateOutlet]=\"headerContentTemplateRef()\"></ng-template>\n } @else {\n <span class=\"thy-menu-group-title\">\n @if (thyShowIcon()) {\n <thy-icon class=\"thy-menu-group-title-icon mr-2\" [thyIconName]=\"thyIcon()\"></thy-icon>\n }\n <span class=\"thy-menu-group-title-text\">{{ thyTitle() }}</span>\n </span>\n }\n </div>\n @if (thyShowAction()) {\n <thy-icon class=\"thy-menu-group-operation\" [thyIconName]=\"thyActionIcon()\" (click)=\"onActionClick($event)\"></thy-icon>\n }\n @if (thyCollapsible()) {\n <thy-icon thyIconName=\"angle-up\" class=\"thy-menu-group-arrow\"></thy-icon>\n }\n</div>\n<div class=\"thy-menu-group-body\" #thyMenuGroup [@detailsContentAnimation]=\"thyCollapsed()\">\n <ng-content></ng-content>\n</div>\n","import { ThyPopover, ThyPopoverConfig } from 'ngx-tethys/popover';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\n\nimport { ComponentType } from '@angular/cdk/portal';\nimport { Component, ElementRef, OnDestroy, OnInit, Renderer2, TemplateRef, inject, input } from '@angular/core';\n\n/**\n * 菜单项操作组件\n * @name thy-menu-item-action,[thy-menu-item-action],[thyMenuItemAction]\n * @order 25\n */\n@Component({\n selector: 'thy-menu-item-action,[thy-menu-item-action],[thyMenuItemAction]',\n templateUrl: './menu-item-action.component.html',\n host: {\n class: 'thy-menu-item-action'\n }\n})\nexport class ThyMenuItemAction implements OnInit, OnDestroy {\n private popover = inject(ThyPopover);\n private renderer = inject(Renderer2);\n private elementRef = inject(ElementRef);\n\n _boundEvent = false;\n\n /**\n * 设置 Action 菜单\n */\n readonly thyActionMenu = input<ComponentType<any> | TemplateRef<any>>();\n\n /**\n * 是否阻止事件冒泡\n */\n readonly thyStopPropagation = input(true, { transform: coerceBooleanProperty });\n\n /**\n * 弹出框的参数\n * @default { placement: \"bottomLeft\", insideClosable: true }\n */\n readonly thyPopoverOptions = input<ThyPopoverConfig>();\n\n private bindClickEvent() {\n if (this._boundEvent) {\n return;\n }\n this._boundEvent = true;\n this.removeClickListenerFn = this.renderer.listen(this.elementRef.nativeElement, 'click', event => {\n if (this.thyStopPropagation()) {\n event.stopPropagation();\n }\n if (this.thyActionMenu()) {\n const activeClass = 'action-active';\n const wrapDOM = (event.target as HTMLElement).closest('.thy-menu-item');\n wrapDOM?.classList.add(activeClass);\n const popoverRef = this.popover.open(\n this.thyActionMenu(),\n Object.assign(\n {\n origin: event.currentTarget as HTMLElement,\n insideClosable: true,\n placement: 'bottomLeft',\n originActiveClass: 'active'\n },\n this.thyPopoverOptions()\n )\n );\n popoverRef?.afterClosed().subscribe(() => {\n wrapDOM?.classList.remove(activeClass);\n });\n }\n });\n }\n\n private removeClickListenerFn: VoidFunction | null = null;\n\n ngOnInit(): void {\n this.bindClickEvent();\n }\n\n ngOnDestroy(): void {\n this.removeClickListenerFn?.();\n }\n}\n","<ng-content></ng-content>\n","import { ChangeDetectionStrategy, Component, effect, input, OnInit } from '@angular/core';\nimport { useHostRenderer } from '@tethys/cdk/dom';\n\n/**\n * 菜单项图标组件\n * @name thy-menu-item-icon,[thy-menu-item-icon],[thyMenuItemIcon]\n * @order 15\n */\n@Component({\n selector: 'thy-menu-item-icon,[thy-menu-item-icon],[thyMenuItemIcon]',\n templateUrl: './menu-item-icon.component.html',\n host: {\n class: 'thy-menu-item-icon'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ThyMenuItemIcon implements OnInit {\n /**\n * 设置图标颜色\n */\n readonly thyColor = input<string>();\n\n private hostRenderer = useHostRenderer();\n\n constructor() {\n effect(() => {\n if (this.thyColor()) {\n this.hostRenderer.setStyle('color', this.thyColor());\n }\n });\n }\n\n ngOnInit(): void {}\n}\n","<ng-content></ng-content>\n","import { AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, OnInit, Renderer2, inject, input, viewChild } from '@angular/core';\nimport { ThyIcon } from 'ngx-tethys/icon';\n\n/**\n * 菜单项组件\n * @name thy-menu-item,[thy-menu-item],[thyMenuItem]\n * @order 10\n */\n@Component({\n selector: 'thy-menu-item,[thy-menu-item],[thyMenuItem]',\n templateUrl: './menu-item.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'thy-menu-item'\n },\n imports: [ThyIcon]\n})\nexport class ThyMenuItem implements OnInit, AfterViewInit {\n private renderer = inject(Renderer2);\n\n readonly content = viewChild('content', { read: ElementRef });\n /**\n * 菜单项的图标\n */\n readonly thyIcon = input<string>();\n\n ngOnInit(): void {}\n\n ngAfterViewInit() {\n this.wrapSpanForText(this.content().nativeElement.childNodes);\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.addClass(span, 'thy-menu-item-name');\n this.renderer.insertBefore(parent, span, node);\n this.renderer.appendChild(span, node);\n }\n });\n }\n}\n","<div class=\"thy-menu-item-content\" #content>\n @if (thyIcon()) {\n <thy-icon class=\"thy-menu-item-icon\" [thyIconName]=\"thyIcon()\"></thy-icon>\n }\n <ng-content></ng-content>\n</div>\n","import { Component, input, OnInit } from '@angular/core';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\n\n/**\n * 菜单项名称\n * @name thy-menu-item-name,[thy-menu-item-name],[thyMenuItemName]\n * @order 20\n */\n@Component({\n selector: 'thy-menu-item-name,[thy-menu-item-name],[thyMenuItemName]',\n templateUrl: './menu-item-name.component.html',\n host: {\n class: 'thy-menu-item-name',\n '[class.thy-menu-item-name-ellipsis]': 'thyOverflowEllipsis()'\n }\n})\nexport class ThyMenuItemName implements OnInit {\n /**\n * 是否 ellipsis\n */\n readonly thyOverflowEllipsis = input(true, { transform: coerceBooleanProperty });\n\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<ng-content></ng-content>\n","import { Component, input, OnInit } from '@angular/core';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\n\nexport type ThyMenuTheme = 'compact' | 'loose' | 'dark';\n\n/**\n * 菜单组件\n * @name thy-menu,[thy-menu],[thyMenu]\n * @order 5\n */\n@Component({\n selector: 'thy-menu,[thy-menu],[thyMenu]',\n templateUrl: './menu.component.html',\n host: {\n class: 'thy-menu',\n '[class.thy-menu-collapsed]': 'thyCollapsed()',\n '[class.thy-menu-theme-loose]': 'thyTheme() === \"loose\"',\n '[class.thy-menu-theme-dark]': 'thyTheme() === \"dark\"'\n }\n})\nexport class ThyMenu implements OnInit {\n /**\n * 主题\n * @type compact | loose\n */\n readonly thyTheme = input<ThyMenuTheme, ThyMenuTheme>('compact', {\n transform: (value: ThyMenuTheme) => value || 'compact'\n });\n\n /**\n * 是否收起\n */\n readonly thyCollapsed = input(false, { transform: coerceBooleanProperty });\n\n constructor() {}\n\n ngOnInit(): void {}\n}\n","<ng-content></ng-content>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyPopoverModule } from 'ngx-tethys/popover';\nimport { ThyMenuDivider } from './divider/menu-divider.component';\nimport { ThyMenuGroup } from './group/menu-group.component';\nimport { ThyMenuItemAction } from './item/action/menu-item-action.component';\nimport { ThyMenuItemIcon } from './item/icon/menu-item-icon.component';\nimport { ThyMenuItem } from './item/menu-item.component';\nimport { ThyMenuItemName } from './item/name/menu-item-name.component';\nimport { ThyMenu } from './menu.component';\n\n@NgModule({\n imports: [\n CommonModule,\n ThyIconModule,\n ThyPopoverModule,\n ThyMenu,\n ThyMenuGroup,\n ThyMenuItem,\n ThyMenuItemName,\n ThyMenuItemIcon,\n ThyMenuItemAction,\n ThyMenuDivider\n ],\n exports: [ThyMenu, ThyMenuGroup, ThyMenuItem, ThyMenuItemName, ThyMenuItemIcon, ThyMenuItemAction, ThyMenuDivider]\n})\nexport class ThyMenuModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}