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 +1 @@
1
- {"version":3,"file":"ngx-tethys-progress.mjs","sources":["../../../src/progress/progress-circle.component.ts","../../../src/progress/progress-circle.component.html","../../../src/progress/progress-strip.component.ts","../../../src/progress/progress-strip.component.html","../../../src/progress/progress.component.ts","../../../src/progress/progress.component.html","../../../src/progress/progress.module.ts","../../../src/progress/ngx-tethys-progress.ts"],"sourcesContent":["import { isString } from 'ngx-tethys/util';\n\nimport { Component, Input, OnChanges, OnInit, SimpleChanges, TemplateRef, ViewEncapsulation, numberAttribute } from '@angular/core';\nimport { useHostRenderer } from '@tethys/cdk/dom';\n\nimport {\n ThyProgressCirclePath,\n ThyProgressGapPositionType,\n ThyProgressPathStyle,\n ThyProgressShapeType,\n ThyProgressStackedValue,\n ThyProgressType\n} from './interfaces';\nimport { NgClass, NgStyle } from '@angular/common';\nimport { ThyTooltipDirective } from 'ngx-tethys/tooltip';\n\n/**\n * @private\n */\n@Component({\n selector: 'thy-progress-circle',\n templateUrl: './progress-circle.component.html',\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'progress-circle'\n },\n imports: [ThyTooltipDirective, NgClass, NgStyle]\n})\nexport class ThyProgressCircle implements OnInit, OnChanges {\n private hostRenderer = useHostRenderer();\n\n @Input() set thyType(type: ThyProgressType) {\n this.hostRenderer.updateClass(type ? [`progress-circle-${type}`] : []);\n }\n\n @Input() set thySize(size: string | number) {\n if (size) {\n if (isString(size)) {\n this.progressSize = `progress-circle-inner-${size}`;\n } else {\n this.width = size;\n }\n }\n }\n\n @Input() thyValue: number | ThyProgressStackedValue[];\n\n @Input({ transform: numberAttribute }) thyMax: number;\n\n @Input() thyTips: string | TemplateRef<unknown>;\n\n @Input() thyShape: ThyProgressShapeType = 'strip';\n\n @Input({ transform: numberAttribute }) thyGapDegree?: number = undefined;\n\n @Input() thyGapPosition: ThyProgressGapPositionType = 'top';\n\n @Input({ transform: numberAttribute }) thyStrokeWidth: number;\n\n public trailPathStyle: ThyProgressPathStyle | null = null;\n\n public progressCirclePath: ThyProgressCirclePath[];\n\n public pathString?: string;\n\n public width: number = 112;\n\n public progressSize: string;\n\n get strokeWidth(): number {\n return this.thyStrokeWidth || 6;\n }\n\n public value: number | ThyProgressStackedValue[];\n\n constructor() {}\n\n ngOnInit() {\n this.createCircleProgress();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const { thyGapDegree, thyValue, thyGapPosition } = changes;\n\n if (thyGapDegree || thyValue || thyGapPosition) {\n this.createCircleProgress();\n }\n }\n\n private createCircleProgress(): void {\n let values: ThyProgressStackedValue[] = [];\n\n if (Array.isArray(this.thyValue)) {\n let totalValue = 0;\n values = (this.thyValue as unknown as ThyProgressStackedValue[]).map((item, index) => {\n totalValue += item.value;\n const currentValue = +((totalValue / this.thyMax) * 100).toFixed(2);\n return { ...item, value: currentValue };\n });\n } else {\n values = [{ value: this.thyValue }];\n }\n\n const radius = 50 - this.strokeWidth / 2;\n const gapPosition = this.thyGapPosition || 'top';\n const len = Math.PI * 2 * radius;\n const gapDegree = this.thyGapDegree || 0;\n\n let beginPositionX = 0;\n let beginPositionY = -radius;\n let endPositionX = 0;\n let endPositionY = radius * -2;\n\n switch (gapPosition) {\n case 'left':\n beginPositionX = -radius;\n beginPositionY = 0;\n endPositionX = radius * 2;\n endPositionY = 0;\n break;\n case 'right':\n beginPositionX = radius;\n beginPositionY = 0;\n endPositionX = radius * -2;\n endPositionY = 0;\n break;\n case 'bottom':\n beginPositionY = radius;\n endPositionY = radius * 2;\n break;\n default:\n }\n\n this.pathString = `M 50,50 m ${beginPositionX},${beginPositionY} a ${radius},${radius} 0 1 1 ${endPositionX},${-endPositionY} a ${radius},${radius} 0 1 1 ${-endPositionX},${endPositionY}`;\n\n this.trailPathStyle = {\n strokeDasharray: `${len - gapDegree}px ${len}px`,\n strokeDashoffset: `-${gapDegree / 2}px`,\n transition: 'stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s'\n };\n\n this.progressCirclePath = values\n .map((item, index) => {\n return {\n stroke: null,\n value: +item.value,\n className: item.type ? `progress-circle-path-${item.type}` : null,\n strokePathStyle: {\n stroke: item?.color ? item?.color : null,\n transition: 'stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s',\n strokeDasharray: `${((item.value || 0) / 100) * (len - gapDegree)}px ${len}px`,\n strokeDashoffset: `-${gapDegree / 2}px`\n }\n };\n })\n .reverse();\n }\n}\n","<div\n [thyTooltip]=\"thyTips\"\n [thyTooltipDisabled]=\"!thyTips\"\n [style.width.px]=\"width\"\n [style.height.px]=\"width\"\n [ngClass]=\"progressSize\"\n class=\"progress-circle-inner\">\n <svg class=\"progress-circle-svg\" viewBox=\"0 0 100 100\">\n <path\n class=\"progress-circle-trail\"\n fill-opacity=\"0\"\n [attr.d]=\"pathString\"\n [ngStyle]=\"trailPathStyle\"\n [attr.stroke-width]=\"strokeWidth\"></path>\n @for (p of progressCirclePath; track $index) {\n <path\n class=\"progress-circle-path\"\n [ngClass]=\"p.className\"\n fill-opacity=\"0\"\n [attr.d]=\"pathString\"\n [attr.stroke-linecap]=\"'round'\"\n [attr.stroke]=\"p.stroke\"\n [attr.stroke-width]=\"p.value ? strokeWidth : 0\"\n [ngStyle]=\"p.strokePathStyle\"></path>\n }\n </svg>\n <span class=\"progress-circle-content\">\n <ng-content></ng-content>\n </span>\n</div>\n","import { Component, HostBinding, InjectionToken, Input, TemplateRef, ViewEncapsulation, numberAttribute, inject } from '@angular/core';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { ThyProgressType } from './interfaces';\nimport { NgStyle } from '@angular/common';\n\nexport interface ThyParentProgress {\n max: number;\n bars: ThyProgressStrip[];\n}\nexport const THY_PROGRESS_COMPONENT = new InjectionToken<ThyParentProgress>('THY_PROGRESS_COMPONENT');\n\n/**\n * @private\n */\n@Component({\n selector: 'thy-progress-bar',\n templateUrl: './progress-strip.component.html',\n encapsulation: ViewEncapsulation.None,\n imports: [NgStyle]\n})\nexport class ThyProgressStrip {\n private progress = inject(THY_PROGRESS_COMPONENT);\n\n private value: number;\n\n private hostRenderer = useHostRenderer();\n\n color: string;\n\n @HostBinding(`class.progress-bar`) isProgressBar = true;\n\n @HostBinding('style.width.%') percent = 0;\n\n @Input() thyTips: string | TemplateRef<HTMLElement>;\n\n @Input() set thyType(type: ThyProgressType) {\n this.hostRenderer.updateClass(type ? [`progress-bar-${type}`] : []);\n }\n\n @Input({ transform: numberAttribute })\n set thyValue(value: number) {\n if (!value && value !== 0) {\n return;\n }\n this.value = value;\n this.recalculatePercentage();\n }\n\n @Input() set thyColor(color: string) {\n this.color = color || '';\n }\n\n recalculatePercentage(): void {\n this.percent = +((this.value / this.progress.max) * 100).toFixed(2);\n }\n}\n","<div class=\"progress-bar-inner\" [ngStyle]=\"{ 'background-color': color }\">\n <ng-content></ng-content>\n</div>\n","import { isNumber } from 'ngx-tethys/util';\n\nimport {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n OnChanges,\n OnInit,\n QueryList,\n SimpleChanges,\n TemplateRef,\n ViewChildren,\n ViewEncapsulation,\n numberAttribute\n} from '@angular/core';\nimport { useHostRenderer } from '@tethys/cdk/dom';\n\nimport { ThyProgressGapPositionType, ThyProgressShapeType, ThyProgressStackedValue, ThyProgressType } from './interfaces';\nimport { THY_PROGRESS_COMPONENT, ThyParentProgress, ThyProgressStrip } from './progress-strip.component';\nimport { ThyProgressCircle } from './progress-circle.component';\nimport { ThyTooltipDirective } from 'ngx-tethys/tooltip';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\n\n/**\n * 进度条组件\n * @name thy-progress\n */\n@Component({\n selector: 'thy-progress',\n templateUrl: './progress.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: THY_PROGRESS_COMPONENT,\n useExisting: ThyProgress\n }\n ],\n host: {\n class: `thy-progress progress`,\n '[class.thy-progress-strip]': `thyShape === 'strip'`,\n '[class.thy-progress-circle]': `thyShape === 'circle'`\n },\n imports: [ThyProgressStrip, NgClass, ThyTooltipDirective, NgTemplateOutlet, ThyProgressCircle]\n})\nexport class ThyProgress implements ThyParentProgress, OnInit, OnChanges {\n value: number | ThyProgressStackedValue[];\n\n bars: ThyProgressStrip[] = [];\n\n barsTotalValue: number;\n\n private settedMax: number;\n\n private hostRenderer = useHostRenderer();\n\n @HostBinding('attr.max') max = 100;\n\n @HostBinding(`class.progress-stacked`) isStacked = false;\n\n @ViewChildren(ThyProgressStrip)\n set barsQueryList(value: QueryList<ThyProgressStrip>) {\n this.bars = value.toArray();\n }\n\n /**\n * 进度条类型: `primary` | `success` | `info` | `warning` | `danger`\n */\n @Input() thyType: ThyProgressType = 'primary';\n\n /**\n * 进度条大小\n * @type xs | sm | md\n * @default md\n */\n @Input() set thySize(size: string | number) {\n this.size = size;\n this.hostRenderer.updateClass(size ? [`progress-${size}`] : []);\n }\n\n /**\n * 进度值,传入数字时显示百分比 = value / max * 100,当传入数组时显示多个 bar,stacked 模式的进度条\n * @type number | ThyProgressStackedValue[]\n */\n @Input() set thyValue(value: number | ThyProgressStackedValue[]) {\n // 自动求和计算 max\n if (Array.isArray(value)) {\n this.isStacked = true;\n this.value = [...value].filter(item => item.value !== 0);\n this.barsTotalValue = this.value.reduce((total, item) => {\n return total + item.value;\n }, 0);\n this.calculateMax();\n } else {\n this.value = value;\n }\n }\n\n /**\n * 最大值,主要计算百分比进度的分母使用,当 thyValue 传入数组时,自动累加数组中的 value 之和为 max\n */\n @Input({ transform: numberAttribute })\n set thyMax(max: number) {\n this.settedMax = max;\n this.calculateMax();\n }\n\n /**\n * 鼠标移入进度条时显示的提示文案或者模板\n */\n @Input() thyTips: string | TemplateRef<unknown>;\n\n /**\n * 进度形状\n * @type strip | circle\n */\n @Input() thyShape: ThyProgressShapeType = 'strip';\n\n /**\n * 圆形进度条缺口角度,可取值 0 ~ 360\n */\n @Input({ transform: numberAttribute }) thyGapDegree?: number = undefined;\n\n /**\n * 圆形进度条缺口位置\n * @type top | bottom | left | right\n */\n @Input() thyGapPosition: ThyProgressGapPositionType = 'top';\n\n /**\n * \t圆形进度条线的宽度\n */\n @Input({ transform: numberAttribute }) thyStrokeWidth: number;\n\n size: string | number;\n\n constructor() {}\n\n ngOnInit() {}\n\n ngOnChanges(changes: SimpleChanges): void {}\n\n calculateMax() {\n if (isNumber(this.settedMax) && this.settedMax > 0) {\n this.max = this.settedMax;\n } else {\n this.max = this.barsTotalValue;\n }\n if (this.max < this.barsTotalValue) {\n this.max = this.barsTotalValue;\n }\n this.bars.forEach(bar => {\n bar.recalculatePercentage();\n });\n }\n}\n","<ng-container>\n @if (thyShape === 'strip') {\n <div class=\"thy-progress-strip-outer\">\n @if (isStacked) {\n @for (item of value; track $index) {\n <thy-progress-bar\n [thyType]=\"item.type\"\n [ngClass]=\"{ 'cursor-pointer': item.tips || thyTips }\"\n [thyTooltip]=\"item.tips || thyTips\"\n [thyTooltipTemplateContext]=\"item\"\n [thyTooltipDisabled]=\"!thyTips && !item.tips\"\n [thyColor]=\"item.color\"\n [thyValue]=\"item.value\"\n >{{ item.label }}\n </thy-progress-bar>\n }\n } @else {\n @if (value) {\n <thy-progress-bar\n [thyType]=\"thyType\"\n [ngClass]=\"{ 'cursor-pointer': thyTips }\"\n [thyTooltip]=\"thyTips\"\n [thyTooltipTemplateContext]=\"value\"\n [thyTooltipDisabled]=\"!thyTips\"\n [thyValue]=\"value\">\n </thy-progress-bar>\n }\n }\n </div>\n @if (thyShape === 'strip') {\n <div class=\"thy-progress-strip-text\">\n <ng-template [ngTemplateOutlet]=\"contentTemplate\"></ng-template>\n </div>\n }\n } @else {\n <thy-progress-circle\n [thyType]=\"thyType\"\n [thyTooltip]=\"thyTips\"\n [thyTooltipDisabled]=\"!thyTips\"\n [thyTooltipTemplateContext]=\"value\"\n [thyValue]=\"value\"\n [thySize]=\"size\"\n [thyMax]=\"max\"\n [thyGapDegree]=\"thyGapDegree\"\n [thyGapPosition]=\"thyGapPosition\"\n [thyStrokeWidth]=\"thyStrokeWidth\">\n <ng-template [ngTemplateOutlet]=\"contentTemplate\"></ng-template\n ></thy-progress-circle>\n }\n</ng-container>\n\n<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>\n","import { ThyTooltipModule } from 'ngx-tethys/tooltip';\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { ThyProgressCircle } from './progress-circle.component';\nimport { ThyProgressStrip } from './progress-strip.component';\nimport { ThyProgress } from './progress.component';\n\n@NgModule({\n imports: [CommonModule, ThyTooltipModule, ThyProgress, ThyProgressStrip, ThyProgressCircle],\n exports: [ThyProgress]\n})\nexport class ThyProgressModule {}\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-progress.mjs","sources":["../../../src/progress/progress-circle.component.ts","../../../src/progress/progress-circle.component.html","../../../src/progress/progress-strip.component.ts","../../../src/progress/progress-strip.component.html","../../../src/progress/progress.component.ts","../../../src/progress/progress.component.html","../../../src/progress/progress.module.ts","../../../src/progress/ngx-tethys-progress.ts"],"sourcesContent":["import { isNumber, isString } from 'ngx-tethys/util';\n\nimport {\n Component,\n OnChanges,\n OnInit,\n SimpleChanges,\n TemplateRef,\n ViewEncapsulation,\n numberAttribute,\n input,\n effect,\n computed\n} from '@angular/core';\nimport { useHostRenderer } from '@tethys/cdk/dom';\n\nimport {\n ThyProgressCirclePath,\n ThyProgressGapPositionType,\n ThyProgressPathStyle,\n ThyProgressShapeType,\n ThyProgressStackedValue,\n ThyProgressType\n} from './interfaces';\nimport { NgClass, NgStyle } from '@angular/common';\nimport { ThyTooltipDirective } from 'ngx-tethys/tooltip';\n\n/**\n * @private\n */\n@Component({\n selector: 'thy-progress-circle',\n templateUrl: './progress-circle.component.html',\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'progress-circle'\n },\n imports: [ThyTooltipDirective, NgClass, NgStyle]\n})\nexport class ThyProgressCircle implements OnInit, OnChanges {\n private hostRenderer = useHostRenderer();\n\n readonly thyType = input<ThyProgressType>(undefined);\n\n readonly thySize = input<string | number>(undefined);\n\n readonly thyValue = input<number | ThyProgressStackedValue[]>(undefined);\n\n readonly thyMax = input<number, unknown>(undefined, { transform: numberAttribute });\n\n readonly thyTips = input<string | TemplateRef<unknown>>(undefined);\n\n readonly thyShape = input<ThyProgressShapeType>('strip');\n\n readonly thyGapDegree = input<number, unknown>(undefined, { transform: numberAttribute });\n\n readonly thyGapPosition = input<ThyProgressGapPositionType>('top');\n\n readonly thyStrokeWidth = input<number, unknown>(undefined, { transform: numberAttribute });\n\n get strokeWidth(): number {\n return this.thyStrokeWidth() || 6;\n }\n\n readonly progressSize = computed(() => {\n const size = this.thySize();\n if (size && isString(size)) {\n return `progress-circle-inner-${size}`;\n }\n return '';\n });\n\n readonly width = computed(() => {\n const size = this.thySize();\n if (size && isNumber(size)) {\n return size;\n }\n return 112;\n });\n\n readonly circle = computed(() => {\n let values: ThyProgressStackedValue[] = [];\n\n const thyValue = this.thyValue();\n if (Array.isArray(thyValue)) {\n let totalValue = 0;\n values = (thyValue as ThyProgressStackedValue[]).map((item, index) => {\n totalValue += item.value;\n const currentValue = +((totalValue / this.thyMax()) * 100).toFixed(2);\n return { ...item, value: currentValue };\n });\n } else {\n values = [{ value: thyValue }];\n }\n\n const radius = 50 - this.strokeWidth / 2;\n const gapPosition = this.thyGapPosition() || 'top';\n const len = Math.PI * 2 * radius;\n const gapDegree = this.thyGapDegree() || 0;\n\n let beginPositionX = 0;\n let beginPositionY = -radius;\n let endPositionX = 0;\n let endPositionY = radius * -2;\n\n switch (gapPosition) {\n case 'left':\n beginPositionX = -radius;\n beginPositionY = 0;\n endPositionX = radius * 2;\n endPositionY = 0;\n break;\n case 'right':\n beginPositionX = radius;\n beginPositionY = 0;\n endPositionX = radius * -2;\n endPositionY = 0;\n break;\n case 'bottom':\n beginPositionY = radius;\n endPositionY = radius * 2;\n break;\n default:\n }\n\n const pathString = `M 50,50 m ${beginPositionX},${beginPositionY} a ${radius},${radius} 0 1 1 ${endPositionX},${-endPositionY} a ${radius},${radius} 0 1 1 ${-endPositionX},${endPositionY}`;\n\n const trailPathStyle = {\n strokeDasharray: `${len - gapDegree}px ${len}px`,\n strokeDashoffset: `-${gapDegree / 2}px`,\n transition: 'stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s'\n };\n\n const progressCirclePath = values\n .map((item, index) => {\n return {\n stroke: '',\n value: +item.value,\n className: item.type ? `progress-circle-path-${item.type}` : null,\n strokePathStyle: {\n stroke: item?.color ? item?.color : null,\n transition: 'stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s',\n strokeDasharray: `${((item.value || 0) / 100) * (len - gapDegree)}px ${len}px`,\n strokeDashoffset: `-${gapDegree / 2}px`\n }\n };\n })\n .reverse();\n return { pathString, trailPathStyle, progressCirclePath };\n });\n\n constructor() {\n effect(() => {\n const type = this.thyType();\n this.hostRenderer.updateClass(type ? [`progress-circle-${type}`] : []);\n });\n }\n\n ngOnInit() {}\n\n ngOnChanges(changes: SimpleChanges): void {}\n}\n","@let tips = thyTips();\n@let circleAttr = circle();\n<div\n [thyTooltip]=\"tips\"\n [thyTooltipDisabled]=\"!tips\"\n [style.width.px]=\"width()\"\n [style.height.px]=\"width()\"\n [ngClass]=\"progressSize()\"\n class=\"progress-circle-inner\">\n <svg class=\"progress-circle-svg\" viewBox=\"0 0 100 100\">\n <path\n class=\"progress-circle-trail\"\n fill-opacity=\"0\"\n [attr.d]=\"circleAttr.pathString\"\n [ngStyle]=\"circleAttr.trailPathStyle\"\n [attr.stroke-width]=\"strokeWidth\"></path>\n @for (p of circleAttr.progressCirclePath; track $index) {\n <path\n class=\"progress-circle-path\"\n [ngClass]=\"p.className\"\n fill-opacity=\"0\"\n [attr.d]=\"circleAttr.pathString\"\n [attr.stroke-linecap]=\"'round'\"\n [attr.stroke]=\"p.stroke\"\n [attr.stroke-width]=\"p.value ? strokeWidth : 0\"\n [ngStyle]=\"p.strokePathStyle\"></path>\n }\n </svg>\n <span class=\"progress-circle-content\">\n <ng-content></ng-content>\n </span>\n</div>\n","import {\n Component,\n InjectionToken,\n computed,\n TemplateRef,\n ViewEncapsulation,\n numberAttribute,\n inject,\n input,\n effect,\n Signal\n} from '@angular/core';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { ThyProgressType } from './interfaces';\nimport { NgStyle } from '@angular/common';\n\nexport interface ThyParentProgress {\n readonly max: Signal<number>;\n readonly bars: Signal<readonly ThyProgressStrip[]>;\n}\nexport const THY_PROGRESS_COMPONENT = new InjectionToken<ThyParentProgress>('THY_PROGRESS_COMPONENT');\n\n/**\n * @private\n */\n@Component({\n selector: 'thy-progress-bar',\n templateUrl: './progress-strip.component.html',\n encapsulation: ViewEncapsulation.None,\n imports: [NgStyle],\n host: {\n class: 'progress-bar',\n '[style.width.%]': 'percent()'\n }\n})\nexport class ThyProgressStrip {\n private progress = inject(THY_PROGRESS_COMPONENT);\n\n private hostRenderer = useHostRenderer();\n\n readonly thyTips = input<string | TemplateRef<HTMLElement>>(undefined);\n\n readonly thyType = input<ThyProgressType>();\n\n readonly thyValue = input(0, {\n transform: numberAttribute\n });\n\n readonly thyColor = input<string>();\n\n protected readonly percent = computed(() => {\n const value = this.thyValue();\n if (!value && value !== 0) {\n return 0;\n }\n return +((value / this.progress.max()) * 100).toFixed(2);\n });\n\n constructor() {\n effect(() => {\n const type = this.thyType();\n this.hostRenderer.updateClass(type ? [`progress-bar-${type}`] : []);\n });\n }\n}\n","<div class=\"progress-bar-inner\" [ngStyle]=\"{ 'background-color': thyColor() }\">\n <ng-content></ng-content>\n</div>\n","import { isNumber } from 'ngx-tethys/util';\n\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n Input,\n OnChanges,\n OnInit,\n QueryList,\n SimpleChanges,\n TemplateRef,\n ViewChildren,\n ViewEncapsulation,\n numberAttribute,\n input,\n signal,\n viewChildren,\n effect\n} from '@angular/core';\nimport { useHostRenderer } from '@tethys/cdk/dom';\n\nimport { ThyProgressGapPositionType, ThyProgressShapeType, ThyProgressStackedValue, ThyProgressType } from './interfaces';\nimport { THY_PROGRESS_COMPONENT, ThyParentProgress, ThyProgressStrip } from './progress-strip.component';\nimport { ThyProgressCircle } from './progress-circle.component';\nimport { ThyTooltipDirective } from 'ngx-tethys/tooltip';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\n\n/**\n * 进度条组件\n * @name thy-progress\n */\n@Component({\n selector: 'thy-progress',\n templateUrl: './progress.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: THY_PROGRESS_COMPONENT,\n useExisting: ThyProgress\n }\n ],\n host: {\n class: `thy-progress progress`,\n '[class.thy-progress-strip]': `thyShape() === 'strip'`,\n '[class.thy-progress-circle]': `thyShape() === 'circle'`,\n '[class.progress-stacked]': 'isStacked()',\n '[attr.max]': 'max()'\n },\n imports: [ThyProgressStrip, NgClass, ThyTooltipDirective, NgTemplateOutlet, ThyProgressCircle]\n})\nexport class ThyProgress implements ThyParentProgress, OnInit, OnChanges {\n private hostRenderer = useHostRenderer();\n\n readonly barsTotalValue = computed(() => {\n const value = this.thyValue();\n if (Array.isArray(value)) {\n return value.reduce((total, item) => {\n return total + item.value;\n }, 0);\n }\n return undefined;\n });\n\n readonly max = computed(() => {\n const setMax = this.thyMax();\n const barsTotalValue = this.barsTotalValue();\n let result: number = 100;\n if (isNumber(setMax) && setMax > 0) {\n result = setMax;\n } else if (isNumber(barsTotalValue)) {\n result = barsTotalValue;\n }\n if (result < barsTotalValue) {\n result = barsTotalValue;\n }\n return result;\n });\n\n readonly isStacked = computed(() => {\n return Array.isArray(this.thyValue());\n });\n\n readonly bars = viewChildren(ThyProgressStrip);\n\n /**\n * 进度条类型: `primary` | `success` | `info` | `warning` | `danger`\n */\n readonly thyType = input<ThyProgressType>('primary');\n\n /**\n * 进度条大小\n * @type xs | sm | md\n * @default md\n */\n readonly thySize = input<string | number>('md');\n\n /**\n * 进度值,传入数字时显示百分比 = value / max * 100,当传入数组时显示多个 bar,stacked 模式的进度条\n * @type number | ThyProgressStackedValue[]\n */\n readonly thyValue = input<number | ThyProgressStackedValue[], number | ThyProgressStackedValue[]>(undefined, {\n transform: (value: number | ThyProgressStackedValue[]) => {\n if (Array.isArray(value)) {\n return [...value].filter(item => item.value !== 0);\n } else {\n return value;\n }\n }\n });\n\n /**\n * 最大值,主要计算百分比进度的分母使用,当 thyValue 传入数组时,自动累加数组中的 value 之和为 max\n */\n readonly thyMax = input<number, number | string | unknown>(undefined, { transform: numberAttribute });\n\n /**\n * 鼠标移入进度条时显示的提示文案或者模板\n */\n readonly thyTips = input<string | TemplateRef<unknown>>(undefined);\n\n /**\n * 进度形状\n * @type strip | circle\n */\n readonly thyShape = input<ThyProgressShapeType>('strip');\n\n /**\n * 圆形进度条缺口角度,可取值 0 ~ 360\n */\n readonly thyGapDegree = input<number, unknown>(undefined, { transform: numberAttribute });\n\n /**\n * 圆形进度条缺口位置\n * @type top | bottom | left | right\n */\n readonly thyGapPosition = input<ThyProgressGapPositionType>('top');\n\n /**\n * \t圆形进度条线的宽度\n */\n readonly thyStrokeWidth = input<number, unknown>(undefined, { transform: numberAttribute });\n\n constructor() {\n effect(() => {\n const size = this.thySize();\n this.hostRenderer.updateClass(size ? [`progress-${size}`] : []);\n });\n }\n\n ngOnInit() {}\n\n ngOnChanges(changes: SimpleChanges): void {}\n}\n","<ng-container>\n @if (thyShape()=== 'strip') {\n <div class=\"thy-progress-strip-outer\">\n @if (isStacked()) {\n @for (item of thyValue(); track $index) {\n <thy-progress-bar\n [thyType]=\"item.type\"\n [ngClass]=\"{ 'cursor-pointer': item.tips || thyTips()}\"\n [thyTooltip]=\"item.tips || thyTips()\"\n [thyTooltipTemplateContext]=\"item\"\n [thyTooltipDisabled]=\"!thyTips() && !item.tips\"\n [thyColor]=\"item.color\"\n [thyValue]=\"item.value\"\n >{{ item.label }}\n </thy-progress-bar>\n }\n } @else {\n @let value = thyValue();\n @if (value) {\n <thy-progress-bar\n [thyType]=\"thyType()\"\n [ngClass]=\"{ 'cursor-pointer': thyTips()}\"\n [thyTooltip]=\"thyTips()\"\n [thyTooltipTemplateContext]=\"value\"\n [thyTooltipDisabled]=\"!thyTips()\"\n [thyValue]=\"value\">\n </thy-progress-bar>\n }\n }\n </div>\n @if (thyShape()=== 'strip') {\n <div class=\"thy-progress-strip-text\">\n <ng-template [ngTemplateOutlet]=\"contentTemplate\"></ng-template>\n </div>\n }\n } @else {\n @let value = thyValue();\n <thy-progress-circle\n [thyType]=\"thyType()\"\n [thyTooltip]=\"thyTips()\"\n [thyTooltipDisabled]=\"!thyTips()\"\n [thyTooltipTemplateContext]=\"value\"\n [thyValue]=\"value\"\n [thySize]=\"thySize()\"\n [thyMax]=\"max()\"\n [thyGapDegree]=\"thyGapDegree()\"\n [thyGapPosition]=\"thyGapPosition()\"\n [thyStrokeWidth]=\"thyStrokeWidth()\">\n <ng-template [ngTemplateOutlet]=\"contentTemplate\"></ng-template\n ></thy-progress-circle>\n }\n</ng-container>\n\n<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>\n","import { ThyTooltipModule } from 'ngx-tethys/tooltip';\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { ThyProgressCircle } from './progress-circle.component';\nimport { ThyProgressStrip } from './progress-strip.component';\nimport { ThyProgress } from './progress.component';\n\n@NgModule({\n imports: [CommonModule, ThyTooltipModule, ThyProgress, ThyProgressStrip, ThyProgressCircle],\n exports: [ThyProgress]\n})\nexport class ThyProgressModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- import { BehaviorSubject, Subject, fromEvent, combineLatest, timer } from 'rxjs';
2
1
  import * as i0 from '@angular/core';
3
- import { numberAttribute, HostBinding, Input, ChangeDetectionStrategy, Component, inject, ChangeDetectorRef, NgZone, EventEmitter, ViewChild, ContentChild, Output, NgModule } from '@angular/core';
2
+ import { input, numberAttribute, computed, ChangeDetectionStrategy, Component, inject, NgZone, output, contentChild, viewChild, signal, effect, NgModule } from '@angular/core';
4
3
  import { ThyClickDispatcher } from 'ngx-tethys/core';
5
4
  import { ThyFlexibleText, ThyFlexibleTextModule } from 'ngx-tethys/flexible-text';
5
+ import { Subject, fromEvent, combineLatest, timer } from 'rxjs';
6
6
  import { takeUntil, delay, take, filter } from 'rxjs/operators';
7
7
  import { OverlayOutsideClickDispatcher } from '@angular/cdk/overlay';
8
8
  import { NgTemplateOutlet, CommonModule } from '@angular/common';
@@ -14,117 +14,138 @@ import { ThyTooltipModule } from 'ngx-tethys/tooltip';
14
14
  * @name thy-properties
15
15
  */
16
16
  class ThyProperties {
17
- /**
18
- * 展示布局
19
- * @type "horizontal" | "vertical"
20
- * @default horizontal
21
- */
22
- set thyLayout(layout) {
23
- this.layout = layout;
24
- this.layout$.next(layout);
25
- }
26
- get gridTemplateColumns() {
27
- return `repeat(${this.thyColumn}, 1fr)`;
28
- }
29
17
  constructor() {
30
- this.layout$ = new BehaviorSubject('horizontal');
31
- this.layout = 'horizontal';
18
+ /**
19
+ * 展示布局
20
+ * @type "horizontal" | "vertical"
21
+ * @default horizontal
22
+ */
23
+ this.layout = input('horizontal', { alias: 'thyLayout' });
32
24
  /**
33
25
  * 设置一行的可以 property-item 的数量
34
26
  * @type number
35
27
  */
36
- this.thyColumn = 1;
28
+ this.thyColumn = input(1, { transform: numberAttribute });
37
29
  /**
38
30
  * 设置编辑状态触发方法
39
31
  * @type 'hover' | 'click'
40
32
  */
41
- this.thyEditTrigger = 'hover';
33
+ this.thyEditTrigger = input('hover');
34
+ this.gridTemplateColumns = computed(() => {
35
+ return `repeat(${this.thyColumn()}, 1fr)`;
36
+ });
42
37
  }
43
- ngOnInit() { }
44
38
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyProperties, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
45
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "19.2.8", type: ThyProperties, isStandalone: true, selector: "thy-properties", inputs: { thyLayout: "thyLayout", thyColumn: ["thyColumn", "thyColumn", numberAttribute], thyEditTrigger: "thyEditTrigger" }, host: { properties: { "class.thy-properties-vertical": "layout === \"vertical\"", "class.thy-properties-horizontal": "layout === \"horizontal\"", "class.thy-properties-edit-trigger-hover": "thyEditTrigger === \"hover\"", "class.thy-properties-edit-trigger-click": "thyEditTrigger === \"click\"", "style.grid-template-columns": "this.gridTemplateColumns" }, classAttribute: "thy-properties" }, ngImport: i0, template: "<ng-content></ng-content>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
39
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.8", type: ThyProperties, isStandalone: true, selector: "thy-properties", inputs: { layout: { classPropertyName: "layout", publicName: "thyLayout", isSignal: true, isRequired: false, transformFunction: null }, thyColumn: { classPropertyName: "thyColumn", publicName: "thyColumn", isSignal: true, isRequired: false, transformFunction: null }, thyEditTrigger: { classPropertyName: "thyEditTrigger", publicName: "thyEditTrigger", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.thy-properties-vertical": "layout() === \"vertical\"", "class.thy-properties-horizontal": "layout() === \"horizontal\"", "class.thy-property-edit-trigger-hover": "thyEditTrigger() === \"hover\"", "class.thy-property-edit-trigger-click": "thyEditTrigger() === \"click\"", "style.grid-template-columns": "gridTemplateColumns()" }, classAttribute: "thy-properties" }, ngImport: i0, template: "<ng-content></ng-content>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
46
40
  }
47
41
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyProperties, decorators: [{
48
42
  type: Component,
49
43
  args: [{ selector: 'thy-properties', changeDetection: ChangeDetectionStrategy.OnPush, host: {
50
44
  class: 'thy-properties',
51
- '[class.thy-properties-vertical]': 'layout === "vertical"',
52
- '[class.thy-properties-horizontal]': 'layout === "horizontal"',
53
- '[class.thy-properties-edit-trigger-hover]': 'thyEditTrigger === "hover"',
54
- '[class.thy-properties-edit-trigger-click]': 'thyEditTrigger === "click"'
45
+ '[class.thy-properties-vertical]': 'layout() === "vertical"',
46
+ '[class.thy-properties-horizontal]': 'layout() === "horizontal"',
47
+ '[class.thy-property-edit-trigger-hover]': 'thyEditTrigger() === "hover"',
48
+ '[class.thy-property-edit-trigger-click]': 'thyEditTrigger() === "click"',
49
+ '[style.grid-template-columns]': 'gridTemplateColumns()'
55
50
  }, template: "<ng-content></ng-content>\n" }]
56
- }], ctorParameters: () => [], propDecorators: { thyLayout: [{
57
- type: Input
58
- }], thyColumn: [{
59
- type: Input,
60
- args: [{ transform: numberAttribute }]
61
- }], thyEditTrigger: [{
62
- type: Input
63
- }], gridTemplateColumns: [{
64
- type: HostBinding,
65
- args: ['style.grid-template-columns']
66
- }] } });
51
+ }] });
67
52
 
68
53
  /**
69
54
  * 属性组件
70
55
  * @name thy-property-item
71
56
  */
72
57
  class ThyPropertyItem {
73
- get gridColumn() {
74
- return `span ${Math.min(this.thySpan, this.parent.thyColumn)}`;
75
- }
76
58
  constructor() {
77
- this.cdr = inject(ChangeDetectorRef);
78
59
  this.clickDispatcher = inject(ThyClickDispatcher);
79
60
  this.ngZone = inject(NgZone);
80
61
  this.overlayOutsideClickDispatcher = inject(OverlayOutsideClickDispatcher);
81
- this.parent = inject(ThyProperties);
62
+ this.parent = inject(ThyProperties, { optional: true });
63
+ /**
64
+ * 属性名称
65
+ * @type sting
66
+ * @default thyLabelText
67
+ */
68
+ this.thyLabelText = input();
69
+ /**
70
+ * 设置属性是否是可编辑的
71
+ * @type sting
72
+ * @default false
73
+ */
74
+ this.thyEditable = input(false, { transform: coerceBooleanProperty });
82
75
  /**
83
76
  * 设置跨列的数量
84
77
  * @type number
85
78
  */
86
- this.thySpan = 1;
79
+ this.thySpan = input(1, { transform: numberAttribute });
80
+ /**
81
+ * 设置编辑状态触发方法
82
+ * @type 'hover' | 'click'
83
+ */
84
+ this.thyEditTrigger = input();
87
85
  /**
88
86
  * 设置属性操作现实触发方式,默认 always 一直显示
89
87
  * @type 'hover' | 'always'
90
88
  */
91
- this.thyOperationTrigger = 'always';
92
- this.thyEditingChange = new EventEmitter();
89
+ this.thyOperationTrigger = input('always');
90
+ this.thyEditingChange = output();
91
+ /**
92
+ * 属性名称自定义模板
93
+ * @type TemplateRef
94
+ */
95
+ this.label = contentChild('label');
96
+ /**
97
+ * 属性内容编辑模板,只有在 thyEditable 为 true 时生效
98
+ * @type TemplateRef
99
+ */
100
+ this.editor = contentChild('editor');
101
+ /**
102
+ * 操作区模板
103
+ * @type TemplateRef
104
+ */
105
+ this.operation = contentChild('operation');
106
+ /**
107
+ * @private
108
+ */
109
+ this.content = viewChild('contentTemplate');
110
+ /**
111
+ * @private
112
+ */
113
+ this.itemContent = viewChild('item');
114
+ this.editing = signal(false);
93
115
  this.changes$ = new Subject();
94
116
  this.destroy$ = new Subject();
95
117
  this.eventDestroy$ = new Subject();
96
118
  this.originOverlays = [];
97
- this.isVertical = false;
98
- this.originOverlays = [...this.overlayOutsideClickDispatcher._attachedOverlays];
99
- }
100
- ngOnInit() {
101
- this.subscribeClick();
102
- this.parent.layout$.pipe(takeUntil(this.destroy$)).subscribe(layout => {
103
- this.isVertical = layout === 'vertical';
104
- this.cdr.markForCheck();
119
+ this.gridColumn = computed(() => {
120
+ return `span ${Math.min(this.thySpan(), this.parent?.thyColumn())}`;
105
121
  });
106
- }
107
- ngOnChanges(changes) {
108
- if (changes.thyEditable && changes.thyEditable.currentValue) {
109
- this.subscribeClick();
110
- }
111
- else {
112
- this.setEditing(false);
113
- this.eventDestroy$.next();
114
- this.eventDestroy$.complete();
115
- if (this.clickEventSubscription) {
116
- this.clickEventSubscription.unsubscribe();
117
- this.clickEventSubscription = null;
122
+ this.isVertical = signal(false);
123
+ this.originOverlays = [...this.overlayOutsideClickDispatcher._attachedOverlays];
124
+ effect(() => {
125
+ if (this.thyEditable()) {
126
+ this.subscribeClick();
118
127
  }
119
- }
128
+ else {
129
+ this.setEditing(false);
130
+ this.eventDestroy$.next();
131
+ this.eventDestroy$.complete();
132
+ if (this.clickEventSubscription) {
133
+ this.clickEventSubscription.unsubscribe();
134
+ this.clickEventSubscription = null;
135
+ }
136
+ }
137
+ });
138
+ effect(() => {
139
+ const layout = this.parent?.layout();
140
+ this.isVertical.set(layout === 'vertical');
141
+ });
120
142
  }
121
143
  setEditing(editing) {
122
144
  this.ngZone.run(() => {
123
- if (!!this.editing !== !!editing) {
145
+ if (!!this.editing() !== !!editing) {
124
146
  this.thyEditingChange.emit(editing);
125
147
  }
126
- this.editing = editing;
127
- this.cdr.markForCheck();
148
+ this.editing.set(editing);
128
149
  });
129
150
  }
130
151
  /**
@@ -137,16 +158,18 @@ class ThyPropertyItem {
137
158
  return !!this.overlayOutsideClickDispatcher._attachedOverlays.filter(overlay => !this.originOverlays.includes(overlay)).length;
138
159
  }
139
160
  subscribeClick() {
140
- if (this.thyEditable === true) {
161
+ if (this.thyEditable() === true) {
141
162
  this.ngZone.runOutsideAngular(() => {
142
163
  if (this.clickEventSubscription) {
143
164
  return;
144
165
  }
145
- this.clickEventSubscription = fromEvent(this.itemContent.nativeElement, 'click')
166
+ const itemElement = this.itemContent().nativeElement;
167
+ this.clickEventSubscription = fromEvent(itemElement, 'click')
146
168
  .pipe(takeUntil(this.eventDestroy$))
147
169
  .subscribe(() => {
148
170
  this.setEditing(true);
149
- this.bindEditorBlurEvent(this.itemContent.nativeElement);
171
+ this.bindEditorBlurEvent(itemElement);
172
+ itemElement.querySelector('input')?.focus();
150
173
  });
151
174
  });
152
175
  }
@@ -189,46 +212,20 @@ class ThyPropertyItem {
189
212
  this.eventDestroy$.complete();
190
213
  }
191
214
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyPropertyItem, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
192
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.8", type: ThyPropertyItem, isStandalone: true, selector: "thy-property-item", inputs: { thyLabelText: "thyLabelText", thyEditable: ["thyEditable", "thyEditable", coerceBooleanProperty], thySpan: ["thySpan", "thySpan", numberAttribute], thyOperationTrigger: "thyOperationTrigger" }, outputs: { thyEditingChange: "thyEditingChange" }, host: { properties: { "class.thy-property-item-operational": "!!operation", "class.thy-property-item-operational-hover": "thyOperationTrigger === 'hover'", "style.grid-column": "this.gridColumn" }, classAttribute: "thy-property-item" }, queries: [{ propertyName: "label", first: true, predicate: ["label"], descendants: true, static: true }, { propertyName: "editor", first: true, predicate: ["editor"], descendants: true, static: true }, { propertyName: "operation", first: true, predicate: ["operation"], descendants: true, static: true }], viewQueries: [{ propertyName: "content", first: true, predicate: ["contentTemplate"], descendants: true, static: true }, { propertyName: "itemContent", first: true, predicate: ["item"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>\n<div class=\"thy-property-item-label\">\n @if (thyLabelText) {\n <span thyFlexibleText [thyTooltipContent]=\"thyLabelText\">{{ thyLabelText }}</span>\n }\n @if (label) {\n <span> <ng-template [ngTemplateOutlet]=\"label\"></ng-template></span>\n }\n @if (operation && isVertical) {\n <div class=\"thy-property-item-operation\">\n <ng-template [ngTemplateOutlet]=\"operation\"></ng-template>\n </div>\n }\n</div>\n<div class=\"thy-property-item-wrapper\">\n <div\n #item\n class=\"thy-property-item-content\"\n [class.thy-property-item-content-editable]=\"thyEditable\"\n [class.thy-property-item-content-editing]=\"editing\">\n <div class=\"thy-property-item-content-text\">\n @if (content) {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n }\n </div>\n @if (thyEditable) {\n <div class=\"thy-property-item-content-editor\">\n @if (editor) {\n <ng-template [ngTemplateOutlet]=\"editor\"></ng-template>\n }\n </div>\n }\n </div>\n @if (operation && !isVertical) {\n <div class=\"thy-property-item-operation\">\n <ng-template [ngTemplateOutlet]=\"operation\"></ng-template>\n </div>\n }\n</div>\n", dependencies: [{ kind: "component", type: ThyFlexibleText, selector: "thy-flexible-text,[thyFlexibleText]", inputs: ["thyTooltipTrigger", "thyContainerClass", "thyTooltipContent", "thyTooltipPlacement", "thyTooltipOffset"], exportAs: ["thyFlexibleText"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
215
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.8", type: ThyPropertyItem, isStandalone: true, selector: "thy-property-item", inputs: { thyLabelText: { classPropertyName: "thyLabelText", publicName: "thyLabelText", isSignal: true, isRequired: false, transformFunction: null }, thyEditable: { classPropertyName: "thyEditable", publicName: "thyEditable", isSignal: true, isRequired: false, transformFunction: null }, thySpan: { classPropertyName: "thySpan", publicName: "thySpan", isSignal: true, isRequired: false, transformFunction: null }, thyEditTrigger: { classPropertyName: "thyEditTrigger", publicName: "thyEditTrigger", isSignal: true, isRequired: false, transformFunction: null }, thyOperationTrigger: { classPropertyName: "thyOperationTrigger", publicName: "thyOperationTrigger", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { thyEditingChange: "thyEditingChange" }, host: { properties: { "class.thy-property-edit-trigger-hover": "thyEditTrigger() === \"hover\"", "class.thy-property-edit-trigger-click": "thyEditTrigger() === \"click\"", "class.thy-property-item-operational": "!!operation()", "class.thy-property-item-operational-hover": "thyOperationTrigger() === 'hover'", "style.grid-column": "gridColumn()", "class.thy-property-item-single": "!parent" }, classAttribute: "thy-property-item" }, queries: [{ propertyName: "label", first: true, predicate: ["label"], descendants: true, isSignal: true }, { propertyName: "editor", first: true, predicate: ["editor"], descendants: true, isSignal: true }, { propertyName: "operation", first: true, predicate: ["operation"], descendants: true, isSignal: true }], viewQueries: [{ propertyName: "content", first: true, predicate: ["contentTemplate"], descendants: true, isSignal: true }, { propertyName: "itemContent", first: true, predicate: ["item"], descendants: true, isSignal: true }], ngImport: i0, template: "<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>\n\n@let labelText = thyLabelText();\n@let labelTemplate = label();\n@let operationTemplate = operation();\n\n@if (labelText || labelTemplate || (operationTemplate && isVertical())) {\n <div class=\"thy-property-item-label\">\n @if (labelText) {\n <span thyFlexibleText [thyTooltipContent]=\"labelText\">{{ labelText }}</span>\n }\n @if (labelTemplate) {\n <span> <ng-template [ngTemplateOutlet]=\"labelTemplate\"></ng-template></span>\n }\n @if (operationTemplate && isVertical()) {\n <div class=\"thy-property-item-operation\">\n <ng-template [ngTemplateOutlet]=\"operationTemplate\"></ng-template>\n </div>\n }\n </div>\n}\n\n<div class=\"thy-property-item-wrapper\">\n <div\n #item\n class=\"thy-property-item-content\"\n [class.thy-property-item-content-editable]=\"thyEditable()\"\n [class.thy-property-item-content-editing]=\"editing()\">\n <div class=\"thy-property-item-content-text\">\n @if (content()) {\n <ng-template [ngTemplateOutlet]=\"content()\"></ng-template>\n }\n </div>\n @if (thyEditable()) {\n <div class=\"thy-property-item-content-editor\">\n @if (editor()) {\n <ng-template [ngTemplateOutlet]=\"editor()\"></ng-template>\n }\n </div>\n }\n </div>\n @if (operation() && !isVertical()) {\n <div class=\"thy-property-item-operation\">\n <ng-template [ngTemplateOutlet]=\"operation()\"></ng-template>\n </div>\n }\n</div>\n", dependencies: [{ kind: "component", type: ThyFlexibleText, selector: "thy-flexible-text,[thyFlexibleText]", inputs: ["thyTooltipTrigger", "thyContainerClass", "thyTooltipContent", "thyTooltipPlacement", "thyTooltipOffset"], exportAs: ["thyFlexibleText"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
193
216
  }
194
217
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyPropertyItem, decorators: [{
195
218
  type: Component,
196
219
  args: [{ selector: 'thy-property-item', host: {
197
220
  class: 'thy-property-item',
198
- '[class.thy-property-item-operational]': '!!operation',
199
- '[class.thy-property-item-operational-hover]': "thyOperationTrigger === 'hover'"
200
- }, changeDetection: ChangeDetectionStrategy.OnPush, imports: [ThyFlexibleText, NgTemplateOutlet], template: "<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>\n<div class=\"thy-property-item-label\">\n @if (thyLabelText) {\n <span thyFlexibleText [thyTooltipContent]=\"thyLabelText\">{{ thyLabelText }}</span>\n }\n @if (label) {\n <span> <ng-template [ngTemplateOutlet]=\"label\"></ng-template></span>\n }\n @if (operation && isVertical) {\n <div class=\"thy-property-item-operation\">\n <ng-template [ngTemplateOutlet]=\"operation\"></ng-template>\n </div>\n }\n</div>\n<div class=\"thy-property-item-wrapper\">\n <div\n #item\n class=\"thy-property-item-content\"\n [class.thy-property-item-content-editable]=\"thyEditable\"\n [class.thy-property-item-content-editing]=\"editing\">\n <div class=\"thy-property-item-content-text\">\n @if (content) {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n }\n </div>\n @if (thyEditable) {\n <div class=\"thy-property-item-content-editor\">\n @if (editor) {\n <ng-template [ngTemplateOutlet]=\"editor\"></ng-template>\n }\n </div>\n }\n </div>\n @if (operation && !isVertical) {\n <div class=\"thy-property-item-operation\">\n <ng-template [ngTemplateOutlet]=\"operation\"></ng-template>\n </div>\n }\n</div>\n" }]
201
- }], ctorParameters: () => [], propDecorators: { thyLabelText: [{
202
- type: Input
203
- }], thyEditable: [{
204
- type: Input,
205
- args: [{ transform: coerceBooleanProperty }]
206
- }], thySpan: [{
207
- type: Input,
208
- args: [{ transform: numberAttribute }]
209
- }], thyOperationTrigger: [{
210
- type: Input
211
- }], thyEditingChange: [{
212
- type: Output
213
- }], label: [{
214
- type: ContentChild,
215
- args: ['label', { static: true }]
216
- }], editor: [{
217
- type: ContentChild,
218
- args: ['editor', { static: true }]
219
- }], operation: [{
220
- type: ContentChild,
221
- args: ['operation', { static: true }]
222
- }], content: [{
223
- type: ViewChild,
224
- args: ['contentTemplate', { static: true }]
225
- }], itemContent: [{
226
- type: ViewChild,
227
- args: ['item', { static: true }]
228
- }], gridColumn: [{
229
- type: HostBinding,
230
- args: ['style.grid-column']
231
- }] } });
221
+ '[class.thy-property-edit-trigger-hover]': 'thyEditTrigger() === "hover"',
222
+ '[class.thy-property-edit-trigger-click]': 'thyEditTrigger() === "click"',
223
+ '[class.thy-property-item-operational]': '!!operation()',
224
+ '[class.thy-property-item-operational-hover]': "thyOperationTrigger() === 'hover'",
225
+ '[style.grid-column]': 'gridColumn()',
226
+ '[class.thy-property-item-single]': '!parent'
227
+ }, changeDetection: ChangeDetectionStrategy.OnPush, imports: [ThyFlexibleText, NgTemplateOutlet], template: "<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>\n\n@let labelText = thyLabelText();\n@let labelTemplate = label();\n@let operationTemplate = operation();\n\n@if (labelText || labelTemplate || (operationTemplate && isVertical())) {\n <div class=\"thy-property-item-label\">\n @if (labelText) {\n <span thyFlexibleText [thyTooltipContent]=\"labelText\">{{ labelText }}</span>\n }\n @if (labelTemplate) {\n <span> <ng-template [ngTemplateOutlet]=\"labelTemplate\"></ng-template></span>\n }\n @if (operationTemplate && isVertical()) {\n <div class=\"thy-property-item-operation\">\n <ng-template [ngTemplateOutlet]=\"operationTemplate\"></ng-template>\n </div>\n }\n </div>\n}\n\n<div class=\"thy-property-item-wrapper\">\n <div\n #item\n class=\"thy-property-item-content\"\n [class.thy-property-item-content-editable]=\"thyEditable()\"\n [class.thy-property-item-content-editing]=\"editing()\">\n <div class=\"thy-property-item-content-text\">\n @if (content()) {\n <ng-template [ngTemplateOutlet]=\"content()\"></ng-template>\n }\n </div>\n @if (thyEditable()) {\n <div class=\"thy-property-item-content-editor\">\n @if (editor()) {\n <ng-template [ngTemplateOutlet]=\"editor()\"></ng-template>\n }\n </div>\n }\n </div>\n @if (operation() && !isVertical()) {\n <div class=\"thy-property-item-operation\">\n <ng-template [ngTemplateOutlet]=\"operation()\"></ng-template>\n </div>\n }\n</div>\n" }]
228
+ }], ctorParameters: () => [] });
232
229
 
233
230
  class ThyPropertyModule {
234
231
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyPropertyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-tethys-property.mjs","sources":["../../../src/property/properties.component.ts","../../../src/property/properties.component.html","../../../src/property/property-item.component.ts","../../../src/property/property-item.component.html","../../../src/property/module.ts","../../../src/property/ngx-tethys-property.ts"],"sourcesContent":["import { BehaviorSubject } from 'rxjs';\n\nimport { ChangeDetectionStrategy, Component, HostBinding, Input, OnInit, numberAttribute } from '@angular/core';\n\nexport type ThyPropertiesLayout = 'horizontal' | 'vertical';\n\n/**\n * 属性列表组件\n * @name thy-properties\n */\n@Component({\n selector: 'thy-properties',\n templateUrl: './properties.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'thy-properties',\n '[class.thy-properties-vertical]': 'layout === \"vertical\"',\n '[class.thy-properties-horizontal]': 'layout === \"horizontal\"',\n '[class.thy-properties-edit-trigger-hover]': 'thyEditTrigger === \"hover\"',\n '[class.thy-properties-edit-trigger-click]': 'thyEditTrigger === \"click\"'\n }\n})\nexport class ThyProperties implements OnInit {\n layout$ = new BehaviorSubject<ThyPropertiesLayout>('horizontal');\n\n layout: ThyPropertiesLayout = 'horizontal';\n\n /**\n * 展示布局\n * @type \"horizontal\" | \"vertical\"\n * @default horizontal\n */\n @Input() set thyLayout(layout: ThyPropertiesLayout) {\n this.layout = layout;\n this.layout$.next(layout);\n }\n\n /**\n * 设置一行的可以 property-item 的数量\n * @type number\n */\n @Input({ transform: numberAttribute }) thyColumn: number = 1;\n\n /**\n * 设置编辑状态触发方法\n * @type 'hover' | 'click'\n */\n @Input() thyEditTrigger: 'hover' | 'click' = 'hover';\n\n @HostBinding('style.grid-template-columns')\n get gridTemplateColumns() {\n return `repeat(${this.thyColumn}, 1fr)`;\n }\n\n constructor() {}\n\n ngOnInit() {}\n}\n","<ng-content></ng-content>\n","import { ThyClickDispatcher } from 'ngx-tethys/core';\nimport { ThyFlexibleText } from 'ngx-tethys/flexible-text';\nimport { combineLatest, fromEvent, Subject, Subscription, timer } from 'rxjs';\nimport { delay, filter, take, takeUntil } from 'rxjs/operators';\n\nimport { OverlayOutsideClickDispatcher, OverlayRef } from '@angular/cdk/overlay';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n NgZone,\n numberAttribute,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n inject\n} from '@angular/core';\n\nimport { ThyProperties } from './properties.component';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\n\nexport type ThyPropertyItemOperationTrigger = 'hover' | 'always';\n\n/**\n * 属性组件\n * @name thy-property-item\n */\n@Component({\n selector: 'thy-property-item',\n templateUrl: './property-item.component.html',\n host: {\n class: 'thy-property-item',\n '[class.thy-property-item-operational]': '!!operation',\n '[class.thy-property-item-operational-hover]': \"thyOperationTrigger === 'hover'\"\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ThyFlexibleText, NgTemplateOutlet]\n})\nexport class ThyPropertyItem implements OnInit, OnChanges, OnDestroy {\n private cdr = inject(ChangeDetectorRef);\n private clickDispatcher = inject(ThyClickDispatcher);\n private ngZone = inject(NgZone);\n private overlayOutsideClickDispatcher = inject(OverlayOutsideClickDispatcher);\n private parent = inject(ThyProperties);\n\n /**\n * 属性名称\n * @type sting\n * @default thyLabelText\n */\n @Input() thyLabelText: string;\n\n /**\n * 设置属性是否是可编辑的\n * @type sting\n * @default false\n */\n @Input({ transform: coerceBooleanProperty }) thyEditable: boolean;\n\n /**\n * 设置跨列的数量\n * @type number\n */\n @Input({ transform: numberAttribute }) thySpan: number = 1;\n\n /**\n * 设置属性操作现实触发方式,默认 always 一直显示\n * @type 'hover' | 'always'\n */\n @Input() thyOperationTrigger: ThyPropertyItemOperationTrigger = 'always';\n\n @Output() thyEditingChange: EventEmitter<boolean> = new EventEmitter<boolean>();\n\n /**\n * 属性名称自定义模板\n * @type TemplateRef\n */\n @ContentChild('label', { static: true }) label!: TemplateRef<void>;\n\n /**\n * 属性内容编辑模板,只有在 thyEditable 为 true 时生效\n * @type TemplateRef\n */\n @ContentChild('editor', { static: true }) editor!: TemplateRef<void>;\n\n /**\n * 操作区模板\n * @type TemplateRef\n */\n @ContentChild('operation', { static: true }) operation!: TemplateRef<void>;\n\n /**\n * @private\n */\n @ViewChild('contentTemplate', { static: true }) content!: TemplateRef<void>;\n\n /**\n * @private\n */\n @ViewChild('item', { static: true }) itemContent: ElementRef<HTMLElement>;\n\n editing: boolean;\n\n changes$ = new Subject<SimpleChanges>();\n\n private destroy$ = new Subject<void>();\n\n private eventDestroy$ = new Subject<void>();\n\n private originOverlays: OverlayRef[] = [];\n\n private clickEventSubscription: Subscription;\n\n @HostBinding('style.grid-column')\n get gridColumn() {\n return `span ${Math.min(this.thySpan, this.parent.thyColumn)}`;\n }\n\n isVertical = false;\n\n constructor() {\n this.originOverlays = [...this.overlayOutsideClickDispatcher._attachedOverlays] as OverlayRef[];\n }\n\n ngOnInit() {\n this.subscribeClick();\n this.parent.layout$.pipe(takeUntil(this.destroy$)).subscribe(layout => {\n this.isVertical = layout === 'vertical';\n this.cdr.markForCheck();\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.thyEditable && changes.thyEditable.currentValue) {\n this.subscribeClick();\n } else {\n this.setEditing(false);\n this.eventDestroy$.next();\n this.eventDestroy$.complete();\n\n if (this.clickEventSubscription) {\n this.clickEventSubscription.unsubscribe();\n this.clickEventSubscription = null;\n }\n }\n }\n\n setEditing(editing: boolean) {\n this.ngZone.run(() => {\n if (!!this.editing !== !!editing) {\n this.thyEditingChange.emit(editing);\n }\n this.editing = editing;\n this.cdr.markForCheck();\n });\n }\n\n /**\n * @deprecated please use setEditing(editing: boolean)\n */\n setKeepEditing(keep: boolean) {\n this.setEditing(keep);\n }\n\n private hasOverlay() {\n return !!this.overlayOutsideClickDispatcher._attachedOverlays.filter(overlay => !this.originOverlays.includes(overlay)).length;\n }\n\n private subscribeClick() {\n if (this.thyEditable === true) {\n this.ngZone.runOutsideAngular(() => {\n if (this.clickEventSubscription) {\n return;\n }\n this.clickEventSubscription = fromEvent(this.itemContent.nativeElement, 'click')\n .pipe(takeUntil(this.eventDestroy$))\n .subscribe(() => {\n this.setEditing(true);\n this.bindEditorBlurEvent(this.itemContent.nativeElement);\n });\n });\n }\n }\n\n private subscribeOverlayDetach() {\n const openedOverlays = this.overlayOutsideClickDispatcher._attachedOverlays.filter(\n overlay => !this.originOverlays.includes(overlay)\n );\n const overlaysDetachments$ = openedOverlays.map(overlay => overlay.detachments());\n if (overlaysDetachments$.length) {\n combineLatest(overlaysDetachments$)\n .pipe(delay(50), take(1), takeUntil(this.destroy$))\n .subscribe(() => {\n this.setEditing(false);\n });\n }\n }\n\n private subscribeDocumentClick(editorElement: HTMLElement) {\n this.clickDispatcher\n .clicked(0)\n .pipe(\n filter(event => {\n return !editorElement.contains(event.target as HTMLElement);\n }),\n take(1),\n takeUntil(this.destroy$)\n )\n .subscribe(() => {\n this.setEditing(false);\n });\n }\n\n private bindEditorBlurEvent(editorElement: HTMLElement) {\n timer(0).subscribe(() => {\n if (this.hasOverlay()) {\n this.subscribeOverlayDetach();\n } else {\n this.subscribeDocumentClick(editorElement);\n }\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n\n this.eventDestroy$.next();\n this.eventDestroy$.complete();\n }\n}\n","<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>\n<div class=\"thy-property-item-label\">\n @if (thyLabelText) {\n <span thyFlexibleText [thyTooltipContent]=\"thyLabelText\">{{ thyLabelText }}</span>\n }\n @if (label) {\n <span> <ng-template [ngTemplateOutlet]=\"label\"></ng-template></span>\n }\n @if (operation && isVertical) {\n <div class=\"thy-property-item-operation\">\n <ng-template [ngTemplateOutlet]=\"operation\"></ng-template>\n </div>\n }\n</div>\n<div class=\"thy-property-item-wrapper\">\n <div\n #item\n class=\"thy-property-item-content\"\n [class.thy-property-item-content-editable]=\"thyEditable\"\n [class.thy-property-item-content-editing]=\"editing\">\n <div class=\"thy-property-item-content-text\">\n @if (content) {\n <ng-template [ngTemplateOutlet]=\"content\"></ng-template>\n }\n </div>\n @if (thyEditable) {\n <div class=\"thy-property-item-content-editor\">\n @if (editor) {\n <ng-template [ngTemplateOutlet]=\"editor\"></ng-template>\n }\n </div>\n }\n </div>\n @if (operation && !isVertical) {\n <div class=\"thy-property-item-operation\">\n <ng-template [ngTemplateOutlet]=\"operation\"></ng-template>\n </div>\n }\n</div>\n","import { ThyFlexibleTextModule } from 'ngx-tethys/flexible-text';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ThyProperties } from './properties.component';\nimport { ThyPropertyItem } from './property-item.component';\nimport { ThyTooltipModule } from 'ngx-tethys/tooltip';\n\n@NgModule({\n imports: [CommonModule, ThyFlexibleTextModule, ThyTooltipModule, ThyProperties, ThyPropertyItem],\n exports: [ThyProperties, ThyPropertyItem]\n})\nexport class ThyPropertyModule {}\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-property.mjs","sources":["../../../src/property/properties.component.ts","../../../src/property/properties.component.html","../../../src/property/property-item.component.ts","../../../src/property/property-item.component.html","../../../src/property/module.ts","../../../src/property/ngx-tethys-property.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, numberAttribute, input, computed, effect } from '@angular/core';\n\nexport type ThyPropertiesLayout = 'horizontal' | 'vertical';\n\n/**\n * 属性列表组件\n * @name thy-properties\n */\n@Component({\n selector: 'thy-properties',\n templateUrl: './properties.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'thy-properties',\n '[class.thy-properties-vertical]': 'layout() === \"vertical\"',\n '[class.thy-properties-horizontal]': 'layout() === \"horizontal\"',\n '[class.thy-property-edit-trigger-hover]': 'thyEditTrigger() === \"hover\"',\n '[class.thy-property-edit-trigger-click]': 'thyEditTrigger() === \"click\"',\n '[style.grid-template-columns]': 'gridTemplateColumns()'\n }\n})\nexport class ThyProperties {\n /**\n * 展示布局\n * @type \"horizontal\" | \"vertical\"\n * @default horizontal\n */\n readonly layout = input<ThyPropertiesLayout>('horizontal', { alias: 'thyLayout' });\n\n /**\n * 设置一行的可以 property-item 的数量\n * @type number\n */\n readonly thyColumn = input(1, { transform: numberAttribute });\n\n /**\n * 设置编辑状态触发方法\n * @type 'hover' | 'click'\n */\n readonly thyEditTrigger = input<'hover' | 'click'>('hover');\n\n protected readonly gridTemplateColumns = computed(() => {\n return `repeat(${this.thyColumn()}, 1fr)`;\n });\n}\n","<ng-content></ng-content>\n","import { ThyClickDispatcher } from 'ngx-tethys/core';\nimport { ThyFlexibleText } from 'ngx-tethys/flexible-text';\nimport { combineLatest, fromEvent, Subject, Subscription, timer } from 'rxjs';\nimport { delay, filter, take, takeUntil } from 'rxjs/operators';\n\nimport { OverlayOutsideClickDispatcher, OverlayRef } from '@angular/cdk/overlay';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n NgZone,\n numberAttribute,\n OnDestroy,\n OnInit,\n SimpleChanges,\n TemplateRef,\n inject,\n input,\n computed,\n effect,\n output,\n contentChild,\n viewChild,\n signal\n} from '@angular/core';\n\nimport { ThyProperties } from './properties.component';\nimport { coerceBooleanProperty, ThyBooleanInput } from 'ngx-tethys/util';\n\nexport type ThyPropertyItemOperationTrigger = 'hover' | 'always';\n\n/**\n * 属性组件\n * @name thy-property-item\n */\n@Component({\n selector: 'thy-property-item',\n templateUrl: './property-item.component.html',\n host: {\n class: 'thy-property-item',\n '[class.thy-property-edit-trigger-hover]': 'thyEditTrigger() === \"hover\"',\n '[class.thy-property-edit-trigger-click]': 'thyEditTrigger() === \"click\"',\n '[class.thy-property-item-operational]': '!!operation()',\n '[class.thy-property-item-operational-hover]': \"thyOperationTrigger() === 'hover'\",\n '[style.grid-column]': 'gridColumn()',\n '[class.thy-property-item-single]': '!parent'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ThyFlexibleText, NgTemplateOutlet]\n})\nexport class ThyPropertyItem implements OnDestroy {\n private clickDispatcher = inject(ThyClickDispatcher);\n private ngZone = inject(NgZone);\n private overlayOutsideClickDispatcher = inject(OverlayOutsideClickDispatcher);\n private parent = inject(ThyProperties, { optional: true });\n\n /**\n * 属性名称\n * @type sting\n * @default thyLabelText\n */\n readonly thyLabelText = input<string>();\n\n /**\n * 设置属性是否是可编辑的\n * @type sting\n * @default false\n */\n readonly thyEditable = input<boolean, ThyBooleanInput>(false, { transform: coerceBooleanProperty });\n\n /**\n * 设置跨列的数量\n * @type number\n */\n readonly thySpan = input(1, { transform: numberAttribute });\n\n /**\n * 设置编辑状态触发方法\n * @type 'hover' | 'click'\n */\n readonly thyEditTrigger = input<'hover' | 'click'>();\n\n /**\n * 设置属性操作现实触发方式,默认 always 一直显示\n * @type 'hover' | 'always'\n */\n readonly thyOperationTrigger = input<ThyPropertyItemOperationTrigger>('always');\n\n readonly thyEditingChange = output<boolean>();\n\n /**\n * 属性名称自定义模板\n * @type TemplateRef\n */\n readonly label = contentChild<TemplateRef<void>>('label');\n\n /**\n * 属性内容编辑模板,只有在 thyEditable 为 true 时生效\n * @type TemplateRef\n */\n readonly editor = contentChild<TemplateRef<void>>('editor');\n\n /**\n * 操作区模板\n * @type TemplateRef\n */\n readonly operation = contentChild<TemplateRef<void>>('operation');\n\n /**\n * @private\n */\n readonly content = viewChild<TemplateRef<void>>('contentTemplate');\n\n /**\n * @private\n */\n readonly itemContent = viewChild<ElementRef<HTMLElement>>('item');\n\n editing = signal(false);\n\n changes$ = new Subject<SimpleChanges>();\n\n private destroy$ = new Subject<void>();\n\n private eventDestroy$ = new Subject<void>();\n\n private originOverlays: OverlayRef[] = [];\n\n private clickEventSubscription: Subscription;\n\n protected readonly gridColumn = computed(() => {\n return `span ${Math.min(this.thySpan(), this.parent?.thyColumn())}`;\n });\n\n isVertical = signal(false);\n\n constructor() {\n this.originOverlays = [...this.overlayOutsideClickDispatcher._attachedOverlays] as OverlayRef[];\n\n effect(() => {\n if (this.thyEditable()) {\n this.subscribeClick();\n } else {\n this.setEditing(false);\n this.eventDestroy$.next();\n this.eventDestroy$.complete();\n\n if (this.clickEventSubscription) {\n this.clickEventSubscription.unsubscribe();\n this.clickEventSubscription = null;\n }\n }\n });\n\n effect(() => {\n const layout = this.parent?.layout();\n this.isVertical.set(layout === 'vertical');\n });\n }\n\n setEditing(editing: boolean) {\n this.ngZone.run(() => {\n if (!!this.editing() !== !!editing) {\n this.thyEditingChange.emit(editing);\n }\n this.editing.set(editing);\n });\n }\n\n /**\n * @deprecated please use setEditing(editing: boolean)\n */\n setKeepEditing(keep: boolean) {\n this.setEditing(keep);\n }\n\n private hasOverlay() {\n return !!this.overlayOutsideClickDispatcher._attachedOverlays.filter(overlay => !this.originOverlays.includes(overlay)).length;\n }\n\n private subscribeClick() {\n if (this.thyEditable() === true) {\n this.ngZone.runOutsideAngular(() => {\n if (this.clickEventSubscription) {\n return;\n }\n const itemElement = this.itemContent().nativeElement;\n this.clickEventSubscription = fromEvent(itemElement, 'click')\n .pipe(takeUntil(this.eventDestroy$))\n .subscribe(() => {\n this.setEditing(true);\n this.bindEditorBlurEvent(itemElement);\n itemElement.querySelector('input')?.focus();\n });\n });\n }\n }\n\n private subscribeOverlayDetach() {\n const openedOverlays = this.overlayOutsideClickDispatcher._attachedOverlays.filter(\n overlay => !this.originOverlays.includes(overlay)\n );\n const overlaysDetachments$ = openedOverlays.map(overlay => overlay.detachments());\n if (overlaysDetachments$.length) {\n combineLatest(overlaysDetachments$)\n .pipe(delay(50), take(1), takeUntil(this.destroy$))\n .subscribe(() => {\n this.setEditing(false);\n });\n }\n }\n\n private subscribeDocumentClick(editorElement: HTMLElement) {\n this.clickDispatcher\n .clicked(0)\n .pipe(\n filter(event => {\n return !editorElement.contains(event.target as HTMLElement);\n }),\n take(1),\n takeUntil(this.destroy$)\n )\n .subscribe(() => {\n this.setEditing(false);\n });\n }\n\n private bindEditorBlurEvent(editorElement: HTMLElement) {\n timer(0).subscribe(() => {\n if (this.hasOverlay()) {\n this.subscribeOverlayDetach();\n } else {\n this.subscribeDocumentClick(editorElement);\n }\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n\n this.eventDestroy$.next();\n this.eventDestroy$.complete();\n }\n}\n","<ng-template #contentTemplate>\n <ng-content></ng-content>\n</ng-template>\n\n@let labelText = thyLabelText();\n@let labelTemplate = label();\n@let operationTemplate = operation();\n\n@if (labelText || labelTemplate || (operationTemplate && isVertical())) {\n <div class=\"thy-property-item-label\">\n @if (labelText) {\n <span thyFlexibleText [thyTooltipContent]=\"labelText\">{{ labelText }}</span>\n }\n @if (labelTemplate) {\n <span> <ng-template [ngTemplateOutlet]=\"labelTemplate\"></ng-template></span>\n }\n @if (operationTemplate && isVertical()) {\n <div class=\"thy-property-item-operation\">\n <ng-template [ngTemplateOutlet]=\"operationTemplate\"></ng-template>\n </div>\n }\n </div>\n}\n\n<div class=\"thy-property-item-wrapper\">\n <div\n #item\n class=\"thy-property-item-content\"\n [class.thy-property-item-content-editable]=\"thyEditable()\"\n [class.thy-property-item-content-editing]=\"editing()\">\n <div class=\"thy-property-item-content-text\">\n @if (content()) {\n <ng-template [ngTemplateOutlet]=\"content()\"></ng-template>\n }\n </div>\n @if (thyEditable()) {\n <div class=\"thy-property-item-content-editor\">\n @if (editor()) {\n <ng-template [ngTemplateOutlet]=\"editor()\"></ng-template>\n }\n </div>\n }\n </div>\n @if (operation() && !isVertical()) {\n <div class=\"thy-property-item-operation\">\n <ng-template [ngTemplateOutlet]=\"operation()\"></ng-template>\n </div>\n }\n</div>\n","import { ThyFlexibleTextModule } from 'ngx-tethys/flexible-text';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ThyProperties } from './properties.component';\nimport { ThyPropertyItem } from './property-item.component';\nimport { ThyTooltipModule } from 'ngx-tethys/tooltip';\n\n@NgModule({\n imports: [CommonModule, ThyFlexibleTextModule, ThyTooltipModule, ThyProperties, ThyPropertyItem],\n exports: [ThyProperties, ThyPropertyItem]\n})\nexport class ThyPropertyModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}