ngx-tethys 20.0.1 → 20.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (239) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/action/index.d.ts +3 -3
  3. package/affix/index.d.ts +1 -1
  4. package/alert/index.d.ts +3 -3
  5. package/anchor/index.d.ts +3 -3
  6. package/arrow-switcher/index.d.ts +6 -6
  7. package/autocomplete/index.d.ts +7 -7
  8. package/avatar/index.d.ts +9 -9
  9. package/back-top/index.d.ts +3 -3
  10. package/badge/index.d.ts +6 -6
  11. package/breadcrumb/index.d.ts +7 -7
  12. package/button/index.d.ts +19 -19
  13. package/calendar/index.d.ts +8 -8
  14. package/card/index.d.ts +6 -6
  15. package/carousel/index.d.ts +4 -4
  16. package/cascader/index.d.ts +24 -24
  17. package/collapse/index.d.ts +4 -4
  18. package/color-picker/index.d.ts +16 -16
  19. package/comment/index.d.ts +3 -3
  20. package/copy/index.d.ts +2 -2
  21. package/core/index.d.ts +22 -22
  22. package/date-picker/index.d.ts +111 -111
  23. package/date-range/index.d.ts +5 -5
  24. package/dialog/index.d.ts +18 -18
  25. package/divider/index.d.ts +3 -3
  26. package/drag-drop/index.d.ts +7 -7
  27. package/dropdown/index.d.ts +10 -10
  28. package/empty/index.d.ts +12 -12
  29. package/fesm2022/ngx-tethys-action.mjs +14 -12
  30. package/fesm2022/ngx-tethys-action.mjs.map +1 -1
  31. package/fesm2022/ngx-tethys-affix.mjs +7 -7
  32. package/fesm2022/ngx-tethys-affix.mjs.map +1 -1
  33. package/fesm2022/ngx-tethys-alert.mjs +10 -10
  34. package/fesm2022/ngx-tethys-anchor.mjs +11 -11
  35. package/fesm2022/ngx-tethys-anchor.mjs.map +1 -1
  36. package/fesm2022/ngx-tethys-arrow-switcher.mjs +7 -7
  37. package/fesm2022/ngx-tethys-arrow-switcher.mjs.map +1 -1
  38. package/fesm2022/ngx-tethys-autocomplete.mjs +19 -18
  39. package/fesm2022/ngx-tethys-autocomplete.mjs.map +1 -1
  40. package/fesm2022/ngx-tethys-avatar.mjs +23 -22
  41. package/fesm2022/ngx-tethys-avatar.mjs.map +1 -1
  42. package/fesm2022/ngx-tethys-back-top.mjs +7 -7
  43. package/fesm2022/ngx-tethys-badge.mjs +7 -7
  44. package/fesm2022/ngx-tethys-badge.mjs.map +1 -1
  45. package/fesm2022/ngx-tethys-breadcrumb.mjs +10 -10
  46. package/fesm2022/ngx-tethys-breadcrumb.mjs.map +1 -1
  47. package/fesm2022/ngx-tethys-button.mjs +16 -16
  48. package/fesm2022/ngx-tethys-button.mjs.map +1 -1
  49. package/fesm2022/ngx-tethys-calendar.mjs +16 -16
  50. package/fesm2022/ngx-tethys-calendar.mjs.map +1 -1
  51. package/fesm2022/ngx-tethys-card.mjs +13 -13
  52. package/fesm2022/ngx-tethys-card.mjs.map +1 -1
  53. package/fesm2022/ngx-tethys-carousel.mjs +15 -15
  54. package/fesm2022/ngx-tethys-carousel.mjs.map +1 -1
  55. package/fesm2022/ngx-tethys-cascader.mjs +41 -34
  56. package/fesm2022/ngx-tethys-cascader.mjs.map +1 -1
  57. package/fesm2022/ngx-tethys-checkbox.mjs +7 -7
  58. package/fesm2022/ngx-tethys-collapse.mjs +10 -10
  59. package/fesm2022/ngx-tethys-color-picker.mjs +65 -57
  60. package/fesm2022/ngx-tethys-color-picker.mjs.map +1 -1
  61. package/fesm2022/ngx-tethys-comment.mjs +13 -13
  62. package/fesm2022/ngx-tethys-copy.mjs +10 -10
  63. package/fesm2022/ngx-tethys-copy.mjs.map +1 -1
  64. package/fesm2022/ngx-tethys-core.mjs +30 -25
  65. package/fesm2022/ngx-tethys-core.mjs.map +1 -1
  66. package/fesm2022/ngx-tethys-date-picker.mjs +184 -174
  67. package/fesm2022/ngx-tethys-date-picker.mjs.map +1 -1
  68. package/fesm2022/ngx-tethys-date-range.mjs +16 -16
  69. package/fesm2022/ngx-tethys-date-range.mjs.map +1 -1
  70. package/fesm2022/ngx-tethys-dialog.mjs +24 -24
  71. package/fesm2022/ngx-tethys-dialog.mjs.map +1 -1
  72. package/fesm2022/ngx-tethys-divider.mjs +7 -7
  73. package/fesm2022/ngx-tethys-divider.mjs.map +1 -1
  74. package/fesm2022/ngx-tethys-dot.mjs +7 -7
  75. package/fesm2022/ngx-tethys-drag-drop.mjs +24 -24
  76. package/fesm2022/ngx-tethys-drag-drop.mjs.map +1 -1
  77. package/fesm2022/ngx-tethys-dropdown.mjs +48 -47
  78. package/fesm2022/ngx-tethys-dropdown.mjs.map +1 -1
  79. package/fesm2022/ngx-tethys-empty.mjs +13 -13
  80. package/fesm2022/ngx-tethys-empty.mjs.map +1 -1
  81. package/fesm2022/ngx-tethys-flexible-text.mjs +7 -7
  82. package/fesm2022/ngx-tethys-flexible-text.mjs.map +1 -1
  83. package/fesm2022/ngx-tethys-form.mjs +64 -61
  84. package/fesm2022/ngx-tethys-form.mjs.map +1 -1
  85. package/fesm2022/ngx-tethys-fullscreen.mjs +18 -15
  86. package/fesm2022/ngx-tethys-fullscreen.mjs.map +1 -1
  87. package/fesm2022/ngx-tethys-grid.mjs +34 -33
  88. package/fesm2022/ngx-tethys-grid.mjs.map +1 -1
  89. package/fesm2022/ngx-tethys-guider.mjs +25 -24
  90. package/fesm2022/ngx-tethys-guider.mjs.map +1 -1
  91. package/fesm2022/ngx-tethys-i18n.mjs +3 -3
  92. package/fesm2022/ngx-tethys-i18n.mjs.map +1 -1
  93. package/fesm2022/ngx-tethys-icon.mjs +15 -13
  94. package/fesm2022/ngx-tethys-icon.mjs.map +1 -1
  95. package/fesm2022/ngx-tethys-image.mjs +31 -29
  96. package/fesm2022/ngx-tethys-image.mjs.map +1 -1
  97. package/fesm2022/ngx-tethys-input-number.mjs +17 -10
  98. package/fesm2022/ngx-tethys-input-number.mjs.map +1 -1
  99. package/fesm2022/ngx-tethys-input.mjs +28 -27
  100. package/fesm2022/ngx-tethys-input.mjs.map +1 -1
  101. package/fesm2022/ngx-tethys-layout.mjs +63 -63
  102. package/fesm2022/ngx-tethys-layout.mjs.map +1 -1
  103. package/fesm2022/ngx-tethys-list.mjs +21 -18
  104. package/fesm2022/ngx-tethys-list.mjs.map +1 -1
  105. package/fesm2022/ngx-tethys-loading.mjs +7 -7
  106. package/fesm2022/ngx-tethys-mention.mjs +35 -31
  107. package/fesm2022/ngx-tethys-mention.mjs.map +1 -1
  108. package/fesm2022/ngx-tethys-menu.mjs +26 -26
  109. package/fesm2022/ngx-tethys-menu.mjs.map +1 -1
  110. package/fesm2022/ngx-tethys-message.mjs +24 -24
  111. package/fesm2022/ngx-tethys-message.mjs.map +1 -1
  112. package/fesm2022/ngx-tethys-nav.mjs +27 -27
  113. package/fesm2022/ngx-tethys-nav.mjs.map +1 -1
  114. package/fesm2022/ngx-tethys-notify.mjs +20 -20
  115. package/fesm2022/ngx-tethys-notify.mjs.map +1 -1
  116. package/fesm2022/ngx-tethys-pagination.mjs +18 -18
  117. package/fesm2022/ngx-tethys-pagination.mjs.map +1 -1
  118. package/fesm2022/ngx-tethys-popover.mjs +22 -21
  119. package/fesm2022/ngx-tethys-popover.mjs.map +1 -1
  120. package/fesm2022/ngx-tethys-progress.mjs +17 -17
  121. package/fesm2022/ngx-tethys-progress.mjs.map +1 -1
  122. package/fesm2022/ngx-tethys-property-operation.mjs +11 -11
  123. package/fesm2022/ngx-tethys-property-operation.mjs.map +1 -1
  124. package/fesm2022/ngx-tethys-property.mjs +12 -11
  125. package/fesm2022/ngx-tethys-property.mjs.map +1 -1
  126. package/fesm2022/ngx-tethys-radio.mjs +17 -17
  127. package/fesm2022/ngx-tethys-radio.mjs.map +1 -1
  128. package/fesm2022/ngx-tethys-rate.mjs +12 -12
  129. package/fesm2022/ngx-tethys-rate.mjs.map +1 -1
  130. package/fesm2022/ngx-tethys-resizable.mjs +21 -18
  131. package/fesm2022/ngx-tethys-resizable.mjs.map +1 -1
  132. package/fesm2022/ngx-tethys-result.mjs +11 -11
  133. package/fesm2022/ngx-tethys-result.mjs.map +1 -1
  134. package/fesm2022/ngx-tethys-segment.mjs +19 -16
  135. package/fesm2022/ngx-tethys-segment.mjs.map +1 -1
  136. package/fesm2022/ngx-tethys-select.mjs +60 -38
  137. package/fesm2022/ngx-tethys-select.mjs.map +1 -1
  138. package/fesm2022/ngx-tethys-shared.mjs +82 -79
  139. package/fesm2022/ngx-tethys-shared.mjs.map +1 -1
  140. package/fesm2022/ngx-tethys-skeleton.mjs +32 -32
  141. package/fesm2022/ngx-tethys-skeleton.mjs.map +1 -1
  142. package/fesm2022/ngx-tethys-slide.mjs +37 -36
  143. package/fesm2022/ngx-tethys-slide.mjs.map +1 -1
  144. package/fesm2022/ngx-tethys-slider.mjs +11 -11
  145. package/fesm2022/ngx-tethys-slider.mjs.map +1 -1
  146. package/fesm2022/ngx-tethys-space.mjs +10 -10
  147. package/fesm2022/ngx-tethys-statistic.mjs +7 -7
  148. package/fesm2022/ngx-tethys-statistic.mjs.map +1 -1
  149. package/fesm2022/ngx-tethys-stepper.mjs +22 -22
  150. package/fesm2022/ngx-tethys-stepper.mjs.map +1 -1
  151. package/fesm2022/ngx-tethys-strength.mjs +7 -7
  152. package/fesm2022/ngx-tethys-strength.mjs.map +1 -1
  153. package/fesm2022/ngx-tethys-switch.mjs +7 -7
  154. package/fesm2022/ngx-tethys-switch.mjs.map +1 -1
  155. package/fesm2022/ngx-tethys-table.mjs +28 -28
  156. package/fesm2022/ngx-tethys-table.mjs.map +1 -1
  157. package/fesm2022/ngx-tethys-tabs.mjs +13 -13
  158. package/fesm2022/ngx-tethys-tabs.mjs.map +1 -1
  159. package/fesm2022/ngx-tethys-tag.mjs +11 -11
  160. package/fesm2022/ngx-tethys-tag.mjs.map +1 -1
  161. package/fesm2022/ngx-tethys-testing.mjs +1 -1
  162. package/fesm2022/ngx-tethys-testing.mjs.map +1 -1
  163. package/fesm2022/ngx-tethys-time-picker.mjs +22 -22
  164. package/fesm2022/ngx-tethys-time-picker.mjs.map +1 -1
  165. package/fesm2022/ngx-tethys-timeline.mjs +14 -14
  166. package/fesm2022/ngx-tethys-timeline.mjs.map +1 -1
  167. package/fesm2022/ngx-tethys-tooltip.mjs +19 -16
  168. package/fesm2022/ngx-tethys-tooltip.mjs.map +1 -1
  169. package/fesm2022/ngx-tethys-transfer.mjs +15 -15
  170. package/fesm2022/ngx-tethys-transfer.mjs.map +1 -1
  171. package/fesm2022/ngx-tethys-tree-select.mjs +17 -17
  172. package/fesm2022/ngx-tethys-tree-select.mjs.map +1 -1
  173. package/fesm2022/ngx-tethys-tree.mjs +50 -43
  174. package/fesm2022/ngx-tethys-tree.mjs.map +1 -1
  175. package/fesm2022/ngx-tethys-typography.mjs +16 -16
  176. package/fesm2022/ngx-tethys-typography.mjs.map +1 -1
  177. package/fesm2022/ngx-tethys-upload.mjs +26 -25
  178. package/fesm2022/ngx-tethys-upload.mjs.map +1 -1
  179. package/fesm2022/ngx-tethys-util.mjs +11 -5
  180. package/fesm2022/ngx-tethys-util.mjs.map +1 -1
  181. package/fesm2022/ngx-tethys-vote.mjs +7 -7
  182. package/fesm2022/ngx-tethys-watermark.mjs +18 -15
  183. package/fesm2022/ngx-tethys-watermark.mjs.map +1 -1
  184. package/fesm2022/ngx-tethys.mjs +1 -1
  185. package/fesm2022/ngx-tethys.mjs.map +1 -1
  186. package/flexible-text/index.d.ts +5 -5
  187. package/form/index.d.ts +26 -22
  188. package/fullscreen/index.d.ts +4 -4
  189. package/grid/index.d.ts +12 -12
  190. package/guider/index.d.ts +10 -10
  191. package/i18n/index.d.ts +1 -1
  192. package/icon/index.d.ts +3 -3
  193. package/image/index.d.ts +12 -12
  194. package/input/index.d.ts +22 -22
  195. package/input-number/index.d.ts +4 -4
  196. package/layout/index.d.ts +16 -16
  197. package/list/index.d.ts +16 -15
  198. package/mention/index.d.ts +4 -4
  199. package/menu/index.d.ts +7 -7
  200. package/message/index.d.ts +5 -5
  201. package/nav/index.d.ts +12 -12
  202. package/notify/index.d.ts +1 -1
  203. package/package.json +1 -1
  204. package/pagination/index.d.ts +21 -17
  205. package/popover/index.d.ts +8 -8
  206. package/progress/index.d.ts +18 -18
  207. package/property/index.d.ts +6 -6
  208. package/property-operation/index.d.ts +3 -3
  209. package/radio/index.d.ts +6 -6
  210. package/rate/index.d.ts +5 -5
  211. package/resizable/index.d.ts +2 -2
  212. package/result/index.d.ts +8 -8
  213. package/schematics/testing/test-workspace.js +1 -0
  214. package/schematics/version.d.ts +1 -1
  215. package/schematics/version.js +1 -1
  216. package/segment/index.d.ts +9 -9
  217. package/select/index.d.ts +21 -21
  218. package/shared/index.d.ts +29 -29
  219. package/skeleton/index.d.ts +52 -52
  220. package/slide/index.d.ts +5 -5
  221. package/slider/index.d.ts +6 -6
  222. package/space/index.d.ts +1 -1
  223. package/statistic/index.d.ts +18 -18
  224. package/stepper/index.d.ts +8 -8
  225. package/switch/index.d.ts +2 -2
  226. package/table/index.d.ts +24 -24
  227. package/tabs/index.d.ts +6 -6
  228. package/testing/index.d.ts +1 -1
  229. package/time-picker/index.d.ts +21 -21
  230. package/timeline/index.d.ts +8 -8
  231. package/tooltip/index.d.ts +12 -12
  232. package/transfer/index.d.ts +16 -16
  233. package/tree/index.d.ts +28 -28
  234. package/tree-select/index.d.ts +13 -13
  235. package/typography/index.d.ts +3 -3
  236. package/upload/index.d.ts +4 -4
  237. package/util/index.d.ts +17 -7
  238. package/vote/index.d.ts +2 -2
  239. package/watermark/index.d.ts +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-tethys-table.mjs","sources":["../../../src/table/table.interface.ts","../../../src/table/table-column.component.ts","../../../src/table/pipes/drag.pipe.ts","../../../src/table/pipes/table.pipe.ts","../../../src/table/enums/column-skeleton-type.ts","../../../src/table/table-skeleton.component.ts","../../../src/table/table-skeleton.component.html","../../../src/table/table.component.ts","../../../src/table/table.component.html","../../../src/table/table.module.ts","../../../src/table/ngx-tethys-table.ts"],"sourcesContent":["import { EventEmitter, TemplateRef } from '@angular/core';\nimport { ThyTableColumnSkeletonType } from './enums';\n\nexport enum ThyTableSortDirection {\n default = '',\n asc = 'asc',\n desc = 'desc'\n}\nexport interface ThyTableColumn {\n key: string;\n model: string;\n title: string;\n type: string;\n selections: any;\n width: string | number;\n className: string;\n headerClassName: string;\n disabled: boolean;\n defaultText: string;\n expand: boolean;\n templateRef: TemplateRef<any>;\n headerTemplateRef: TemplateRef<any>;\n fixed?: 'left' | 'right';\n left?: number;\n right?: number;\n sortable?: boolean;\n // 操作列\n operational?: boolean;\n // 次要列\n secondary?: boolean;\n sortDirection?: ThyTableSortDirection;\n sortChange?: EventEmitter<ThyTableSortEvent>;\n}\n\nexport interface ThyPage {\n index?: number;\n size?: number;\n total?: number;\n sizeOptions?: number[];\n}\n\nexport interface ThyTableEmptyOptions {\n message?: string;\n translationKey?: string;\n translationValues?: any;\n entityName?: string;\n entityNameTranslateKey?: string;\n iconName?: string;\n size?: string;\n marginTop?: string;\n topAuto?: string;\n container?: TemplateRef<any>;\n}\n\nexport type PageChangedEvent = ThyPageChangedEvent;\nexport interface ThyPageChangedEvent {\n itemsPerPage: number;\n page: number;\n}\n\nexport interface ThyTableEvent {\n event: Event;\n row: any;\n}\n\nexport interface ThyMultiSelectEvent extends ThyTableEvent {\n rows: any[];\n}\n\nexport interface ThyRadioSelectEvent {\n event: Event;\n row: any;\n}\n\nexport interface ThySwitchEvent extends ThyTableEvent {\n refresh?: Function;\n}\n\nexport interface ThyTableDraggableEvent {\n oldIndex?: number;\n newIndex?: number;\n model?: any;\n models?: Array<any>;\n [key: string]: any;\n}\n\nexport interface ThyTableSortEvent {\n event: Event;\n key: string;\n direction: ThyTableSortDirection;\n}\n\nexport interface ThyTableRowEvent {\n event: Event;\n row: any;\n}\n\nexport interface ThyTableSkeletonColumn {\n width: number | string;\n type: ThyTableColumnSkeletonType;\n}\n","import {\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n InjectionToken,\n Input,\n OnInit,\n Output,\n TemplateRef,\n ViewEncapsulation,\n inject\n} from '@angular/core';\nimport { coerceBooleanProperty, coerceCssPixelValue, isArray, isObject } from 'ngx-tethys/util';\nimport { ThyTableSortDirection, ThyTableSortEvent } from './table.interface';\n\nexport interface IThyTableColumnParentComponent {\n rowKey: string;\n updateColumnSelections(key: string, selections: any): void;\n}\n\n/**\n * Injection token used to provide the parent component to options.\n */\nexport const THY_TABLE_COLUMN_PARENT_COMPONENT = new InjectionToken<IThyTableColumnParentComponent>('THY_TABLE_COLUMN_PARENT_COMPONENT');\n\nexport type FixedDirection = 'left' | 'right';\n\n/**\n * 表格列组件\n * @name thy-table-column\n * @order 20\n */\n@Component({\n selector: 'thy-table-column',\n template: '<ng-content></ng-content>',\n encapsulation: ViewEncapsulation.None\n})\nexport class ThyTableColumnComponent implements OnInit {\n private el = inject(ElementRef);\n parent = inject(THY_TABLE_COLUMN_PARENT_COMPONENT, { optional: true })!;\n\n /**\n * 设置数据属性 Key,读取数组中对象的当前 Key 值\n * @type string\n */\n @Input('thyModelKey') model = '';\n\n /**\n * 设置列名,显示在表头\n * @type string\n */\n @Input('thyTitle') title = '';\n\n /**\n * 设置列的特殊类型,序列号、选择框、单选框、切换按钮\n * @type string\n */\n @Input('thyType') type = '';\n\n public width: string = '';\n\n /**\n * 设置列的宽度\n */\n @Input()\n set thyWidth(value: string | number) {\n this.width = coerceCssPixelValue(value);\n }\n\n public minWidth: string = '';\n\n /**\n * 设置列的最小宽度\n */\n @Input()\n set thyMinWidth(value: string | number) {\n this.minWidth = coerceCssPixelValue(value);\n }\n\n /**\n * 设置列的样式\n */\n @Input('thyClassName') className = '';\n\n /**\n * 设置列头部的 Class,即 th 元素上的样式\n * @type string\n */\n @Input('thyHeaderClassName') headerClassName = '';\n\n /**\n * 设置自定义类型的禁用状态\n * @type boolean\n */\n @Input({ alias: 'thyDisabled', transform: coerceBooleanProperty }) disabled = false;\n\n /**\n * thyType 为 checkbox 或者 radio 类型时选中的数据 ,支持单个对象,单个 Id,同时支持多个 Id,多个对象\n */\n @Input('thySelections')\n set selections(value: any) {\n if (value) {\n this._selections = isArray(value) ? value : [value];\n this._selections = this._selections.map((item: string | number | object) => {\n return isObject(item) ? item[this.parent.rowKey] : item;\n });\n if (!this._firstChange) {\n this.parent.updateColumnSelections(this.key, this._selections);\n }\n }\n }\n\n get selections() {\n return this._selections;\n }\n /**\n * 设置数据为空的时候显示的文本\n * @type string\n */\n @Input('thyDefaultText') defaultText = '';\n\n /**\n * 设置 Tree 模式下折叠展开按钮展示列,不传默认第一列\n */\n @Input({ alias: 'thyExpand', transform: coerceBooleanProperty }) expand = false;\n\n public sortable: boolean;\n\n /**\n * 是否开启列排序功能(开启时 thyModelKey 为 必传)\n * @default false\n */\n @Input({ transform: coerceBooleanProperty })\n set thySortable(value: boolean) {\n if (value) {\n if (this.model) {\n this.sortable = true;\n } else {\n throw new Error(`thyModelKey is required when sortable`);\n }\n } else {\n this.sortable = false;\n }\n }\n\n /**\n * 默认列排序顺序\n * @type 'asc' | 'desc' | ''\n */\n @Input('thySortDirection') sortDirection = ThyTableSortDirection.default;\n\n /**\n * 设置固定列\n */\n @Input('thyFixed') fixed: FixedDirection;\n\n /**\n * 当前列是否是操作列,设置为 true 时会追加 thy-operation-links 样式类,文字居中\n * @default false\n */\n @Input({ alias: 'thyOperational', transform: coerceBooleanProperty }) operational: boolean;\n\n /**\n * 当前列是否是次要列,设置为 true 时会追加 thy-table-column-secondary 样式类,文字颜色为 $gray-600\n * @default false\n */\n @Input({ alias: 'thySecondary', transform: coerceBooleanProperty }) secondary: boolean;\n\n /**\n * 列排序修改事件\n */\n @Output('thySortChange') sortChange: EventEmitter<ThyTableSortEvent> = new EventEmitter<ThyTableSortEvent>();\n\n @ContentChild('header', { static: true }) headerTemplateRef: TemplateRef<any>;\n\n @ContentChild('cell', { static: true }) cellTemplateRef: TemplateRef<any>;\n\n @ContentChild(TemplateRef, { static: true })\n set templateRef(value: TemplateRef<any>) {\n if (value) {\n if (!this.headerTemplateRef && !this.cellTemplateRef) {\n this.cellTemplateRef = value;\n }\n }\n }\n\n public key?: string;\n\n public left: number;\n\n public right: number;\n\n private _selections: any;\n\n private _firstChange = true;\n\n ngOnInit() {\n this.key = this._generateKey();\n this._firstChange = false;\n }\n\n private _generateKey() {\n return '[$$column]' + Math.random().toString(16).slice(2, 10);\n }\n}\n","import { SafeAny } from 'ngx-tethys/types';\n\nimport { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * @private\n */\n@Pipe({\n name: 'tableRowDragDisabled'\n})\nexport class TableRowDragDisabledPipe implements PipeTransform {\n transform(item: SafeAny, dragDisabledPredicate: (item: SafeAny) => boolean): boolean {\n return dragDisabledPredicate(item);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * @private\n */\n@Pipe({\n name: 'isValidModelValue'\n})\nexport class TableIsValidModelValuePipe implements PipeTransform {\n transform(value: any): boolean {\n return value !== '' && value !== undefined && value !== null;\n }\n}\n","export enum ThyTableColumnSkeletonType {\n title = 'title',\n member = 'member',\n default = 'default',\n checkbox = 'checkbox'\n}\n","import { NgClass, NgStyle } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n ViewChild,\n ViewEncapsulation,\n inject\n} from '@angular/core';\nimport { InputCssPixel } from 'ngx-tethys/core';\nimport { ThySkeletonCircle, ThySkeletonRectangle } from 'ngx-tethys/skeleton';\nimport { ThyTableSkeletonColumn } from './table.interface';\nimport { ThyViewOutletDirective } from 'ngx-tethys/shared';\nimport { ThyTableColumnSkeletonType } from './enums';\nimport { ThyTableSize, ThyTableTheme } from './table.type';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\n\nconst COLUMN_COUNT = 5;\n\n/**\n * 表格的骨架屏组件\n * @name thy-table-skeleton\n */\n@Component({\n selector: 'thy-table-skeleton',\n templateUrl: './table-skeleton.component.html',\n host: {\n class: 'thy-table-skeleton'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [NgClass, NgStyle, ThyViewOutletDirective, ThySkeletonRectangle, ThySkeletonCircle]\n})\nexport class ThyTableSkeleton implements AfterViewInit {\n private cdr = inject(ChangeDetectorRef);\n\n @ViewChild('titleTemplate') titleTemplate: ElementRef<HTMLElement>;\n\n @ViewChild('memberTemplate') memberTemplate: ElementRef<HTMLElement>;\n\n @ViewChild('defaultTemplate') defaultTemplate: ElementRef<HTMLElement>;\n\n @ViewChild('checkboxTemplate') checkboxTemplate: ElementRef<HTMLElement>;\n\n /**\n * 骨架边框圆角\n */\n @Input()\n @InputCssPixel()\n thyBorderRadius: string | number;\n\n /**\n * 表格内容骨架高度\n */\n @Input()\n @InputCssPixel()\n thyRowHeight: string | number = '20px';\n\n /**\n * 是否开启动画\n * @default true\n */\n @Input({ transform: coerceBooleanProperty })\n thyAnimated: boolean = true;\n\n /**\n * 动画速度\n */\n @Input() thyAnimatedInterval: string;\n\n /**\n * 骨架主色\n */\n @Input() thyPrimaryColor: string;\n\n /**\n * 骨架次色\n */\n @Input() thySecondaryColor: string;\n\n rowCount: number[] = [];\n\n /**\n * 行数\n */\n @Input()\n set thyRowCount(value: number | string) {\n this.rowCount = Array.from({ length: +value });\n }\n\n /**\n * 是否展示骨架头\n * @default false\n */\n @Input({ transform: coerceBooleanProperty }) thyHeadless = false;\n\n /**\n * 骨架屏的风格\n * @type default | bordered | boxed\n */\n @Input() thyTheme: ThyTableTheme = 'default';\n\n /**\n * 骨架屏的大小\n * @type xs | sm | md | lg | xlg | default\n * @default md\n */\n @Input() thySize: ThyTableSize = 'md';\n\n /**\n * 设置表格最小宽度\n */\n @Input()\n @InputCssPixel()\n thyMinWidth: string | number;\n\n /**\n * 表格列骨架的配置项,支持配置列宽、骨架类型\n * @type ThyTableSkeletonColumn[]\n */\n @Input() set thyColumns(columns: ThyTableSkeletonColumn[]) {\n if (columns && columns.length) {\n this.columns = columns;\n } else {\n this.columns = [...this.defaultColumns];\n }\n }\n\n public titleHeight = '20px';\n\n public titleWidth = '50px';\n\n public checkboxWidth = '20px';\n\n public avatarSize = '24px';\n\n public columnType = ThyTableColumnSkeletonType;\n\n public skeletonColumnsMap: {\n [key: string]: ElementRef<HTMLElement>;\n } = {};\n\n get tableClassMap() {\n return {\n table: true,\n 'table-bordered': this.thyTheme === 'bordered',\n 'table-boxed': this.thyTheme === 'boxed',\n [`table-${this.thySize}`]: !!this.thySize\n };\n }\n\n private defaultColumns = Array.from({ length: COLUMN_COUNT }).map((item, index: number) => {\n if (index === 0) {\n return {\n width: '40%',\n type: ThyTableColumnSkeletonType.title\n };\n } else if (index === 1) {\n return {\n width: '17%',\n type: ThyTableColumnSkeletonType.member\n };\n } else {\n return {\n width: 'auto',\n type: ThyTableColumnSkeletonType.default\n };\n }\n });\n\n public columns: ThyTableSkeletonColumn[] = [...this.defaultColumns];\n\n ngAfterViewInit(): void {\n this.skeletonColumnsMap = {\n [ThyTableColumnSkeletonType.title]: this.titleTemplate,\n [ThyTableColumnSkeletonType.member]: this.memberTemplate,\n [ThyTableColumnSkeletonType.checkbox]: this.checkboxTemplate\n };\n this.cdr.detectChanges();\n }\n}\n","<table [ngClass]=\"tableClassMap\" [ngStyle]=\"{ 'min-width': thyMinWidth }\">\n <colgroup>\n @for (column of columns; track $index) {\n <col [width]=\"column.width\" />\n }\n </colgroup>\n @if (!thyHeadless) {\n <thead>\n <tr>\n @for (column of columns; track $index) {\n <th>\n <thy-skeleton-rectangle\n [thyRowWidth]=\"column?.type === columnType.checkbox ? checkboxWidth : titleWidth\"\n [thyRowHeight]=\"titleHeight\"\n [thyBorderRadius]=\"thyBorderRadius\"\n [thyAnimated]=\"thyAnimated\"\n [thyAnimatedInterval]=\"thyAnimatedInterval\"\n [thyPrimaryColor]=\"thyTheme === 'bordered' || thyTheme === 'boxed' ? 'var(--gray-200, #eee)' : thyPrimaryColor\"\n [thySecondaryColor]=\"thySecondaryColor\"></thy-skeleton-rectangle>\n </th>\n }\n </tr>\n </thead>\n }\n <tbody>\n @for (item of rowCount; track $index; let i = $index) {\n <tr>\n @for (column of columns; track $index) {\n <td>\n <ng-container\n *thyViewOutlet=\"\n skeletonColumnsMap[column.type] || defaultTemplate;\n context: {\n trIndex: i\n }\n \">\n </ng-container>\n </td>\n }\n </tr>\n }\n </tbody>\n</table>\n\n<ng-template #titleTemplate let-trIndex=\"trIndex\">\n <div class=\"d-flex align-items-center\">\n <thy-skeleton-rectangle\n class=\"mr-2 flex-shrink-0\"\n [thyRowWidth]=\"checkboxWidth\"\n [thyRowHeight]=\"thyRowHeight\"\n [thyBorderRadius]=\"thyBorderRadius\"\n [thyAnimated]=\"thyAnimated\"\n [thyAnimatedInterval]=\"thyAnimatedInterval\"\n [thyPrimaryColor]=\"thyPrimaryColor\"\n [thySecondaryColor]=\"thySecondaryColor\"></thy-skeleton-rectangle>\n\n <ng-container\n *thyViewOutlet=\"\n defaultTemplate;\n context: {\n rowWidth: trIndex % 3 === 0 ? '75%' : trIndex % 3 === 1 ? '100%' : trIndex % 3 === 2 ? '65%' : ''\n }\n \"></ng-container>\n </div>\n</ng-template>\n\n<ng-template #checkboxTemplate>\n <thy-skeleton-rectangle\n [thyRowWidth]=\"checkboxWidth\"\n [thyRowHeight]=\"thyRowHeight\"\n [thyBorderRadius]=\"thyBorderRadius\"\n [thyAnimated]=\"thyAnimated\"\n [thyAnimatedInterval]=\"thyAnimatedInterval\"\n [thyPrimaryColor]=\"thyPrimaryColor\"\n [thySecondaryColor]=\"thySecondaryColor\"></thy-skeleton-rectangle>\n</ng-template>\n\n<ng-template #memberTemplate>\n <div class=\"d-flex align-items-center\">\n <thy-skeleton-circle\n class=\"mr-2 flex-shrink-0\"\n [thySize]=\"avatarSize\"\n [thyAnimated]=\"thyAnimated\"\n [thyAnimatedInterval]=\"thyAnimatedInterval\"\n [thyPrimaryColor]=\"thyPrimaryColor\"\n [thySecondaryColor]=\"thySecondaryColor\"></thy-skeleton-circle>\n\n <ng-container *thyViewOutlet=\"defaultTemplate\"></ng-container>\n </div>\n</ng-template>\n\n<ng-template #defaultTemplate let-rowWidth=\"rowWidth\">\n <thy-skeleton-rectangle\n [thyRowWidth]=\"rowWidth\"\n [thyRowHeight]=\"thyRowHeight\"\n [thyBorderRadius]=\"thyBorderRadius\"\n [thyAnimated]=\"thyAnimated\"\n [thyAnimatedInterval]=\"thyAnimatedInterval\"\n [thyPrimaryColor]=\"thyPrimaryColor\"\n [thySecondaryColor]=\"thySecondaryColor\"></thy-skeleton-rectangle>\n</ng-template>\n","import { InputCssPixel, UpdateHostClassService } from 'ngx-tethys/core';\nimport { Dictionary, SafeAny } from 'ngx-tethys/types';\nimport { coerceBooleanProperty, get, helpers, isString, keyBy, set } from 'ngx-tethys/util';\nimport { EMPTY, fromEvent, merge, Observable, of } from 'rxjs';\nimport { delay, startWith, switchMap } from 'rxjs/operators';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { CdkDrag, CdkDragDrop, CdkDragEnd, CdkDragStart, CdkDropList, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { ViewportRuler } from '@angular/cdk/overlay';\nimport { normalizePassiveListenerOptions } from '@angular/cdk/platform';\nimport { isPlatformServer, NgClass, NgTemplateOutlet, NgStyle } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n DestroyRef,\n ElementRef,\n EventEmitter,\n HostBinding,\n inject,\n Input,\n IterableChangeRecord,\n IterableChanges,\n IterableDiffer,\n IterableDiffers,\n NgZone,\n numberAttribute,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n PLATFORM_ID,\n QueryList,\n Renderer2,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewChildren,\n ViewEncapsulation,\n DOCUMENT\n} from '@angular/core';\n\nimport { IThyTableColumnParentComponent, THY_TABLE_COLUMN_PARENT_COMPONENT, ThyTableColumnComponent } from './table-column.component';\nimport {\n PageChangedEvent,\n ThyMultiSelectEvent,\n ThyPage,\n ThyRadioSelectEvent,\n ThySwitchEvent,\n ThyTableSkeletonColumn,\n ThyTableDraggableEvent,\n ThyTableEmptyOptions,\n ThyTableEvent,\n ThyTableRowEvent,\n ThyTableSortDirection,\n ThyTableSortEvent\n} from './table.interface';\nimport { TableRowDragDisabledPipe } from './pipes/drag.pipe';\nimport { TableIsValidModelValuePipe } from './pipes/table.pipe';\nimport { ThyPagination } from 'ngx-tethys/pagination';\nimport { ThyTableSkeleton } from './table-skeleton.component';\nimport { ThyEmpty } from 'ngx-tethys/empty';\nimport { ThySwitch } from 'ngx-tethys/switch';\nimport { FormsModule } from '@angular/forms';\nimport { ThyDragDropDirective, ThyContextMenuDirective } from 'ngx-tethys/shared';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { ThyTableColumnSkeletonType } from './enums';\nimport { ThyTableTheme, ThyTableMode, ThyTableSize } from './table.type';\n\nexport enum ThyFixedDirection {\n left = 'left',\n right = 'right'\n}\n\ninterface ThyTableGroup<T = unknown> {\n id?: string;\n expand?: boolean;\n children?: object[];\n origin?: T;\n}\n\nconst tableThemeMap = {\n default: 'table-default',\n bordered: 'table-bordered',\n boxed: 'table-boxed'\n};\n\nconst customType = {\n index: 'index',\n checkbox: 'checkbox',\n radio: 'radio',\n switch: 'switch'\n};\n\nconst css = {\n tableBody: 'thy-table-body',\n tableScrollLeft: 'thy-table-scroll-left',\n tableScrollRight: 'thy-table-scroll-right',\n tableScrollMiddle: 'thy-table-scroll-middle'\n};\n\nconst passiveEventListenerOptions = normalizePassiveListenerOptions({ passive: true });\n\n/**\n * 表格组件\n * @name thy-table\n * @order 10\n */\n@Component({\n selector: 'thy-table',\n templateUrl: './table.component.html',\n providers: [\n {\n provide: THY_TABLE_COLUMN_PARENT_COMPONENT,\n useExisting: ThyTable\n },\n UpdateHostClassService\n ],\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'thy-table',\n '[class.thy-table-bordered]': `theme === 'bordered'`,\n '[class.thy-table-boxed]': `theme === 'boxed'`,\n '[class.thy-table-fixed-header]': 'thyHeaderFixed'\n },\n imports: [\n CdkScrollable,\n NgClass,\n NgTemplateOutlet,\n ThyIcon,\n ThyDragDropDirective,\n CdkDropList,\n CdkDrag,\n ThyContextMenuDirective,\n NgStyle,\n FormsModule,\n ThySwitch,\n ThyEmpty,\n ThyTableSkeleton,\n ThyPagination,\n TableIsValidModelValuePipe,\n TableRowDragDisabledPipe\n ]\n})\nexport class ThyTable implements OnInit, OnChanges, AfterViewInit, OnDestroy, IThyTableColumnParentComponent {\n elementRef = inject(ElementRef);\n private _differs = inject(IterableDiffers);\n private viewportRuler = inject(ViewportRuler);\n private updateHostClassService = inject(UpdateHostClassService);\n private document = inject(DOCUMENT);\n private platformId = inject(PLATFORM_ID);\n private ngZone = inject(NgZone);\n private renderer = inject(Renderer2);\n private cdr = inject(ChangeDetectorRef);\n\n private readonly destroyRef = inject(DestroyRef);\n\n public customType = customType;\n\n public model: object[] = [];\n\n public groups: ThyTableGroup[] = [];\n\n public rowKey = '_id';\n\n public groupBy: string;\n\n public mode: ThyTableMode = 'list';\n\n public theme: ThyTableTheme = 'default';\n\n public className = '';\n\n public size: ThyTableSize = 'md';\n\n public rowClassName: string | Function;\n\n public loadingDone = true;\n\n public loadingText: string;\n\n public emptyOptions: ThyTableEmptyOptions = {};\n\n public draggable = false;\n\n public selectedRadioRow: SafeAny = null;\n\n public pagination: ThyPage = { index: 1, size: 20, total: 0, sizeOptions: [20, 50, 100] };\n\n public trackByFn: SafeAny;\n\n public wholeRowSelect = false;\n\n public fixedDirection = ThyFixedDirection;\n\n public hasFixed = false;\n\n public columns: ThyTableColumnComponent[] = [];\n\n private _diff: IterableDiffer<SafeAny>;\n\n private initialized = false;\n\n private _oldThyClassName = '';\n\n private scrollClassName = css.tableScrollLeft;\n\n private get tableScrollElement(): HTMLElement {\n return this.elementRef.nativeElement.getElementsByClassName(css.tableBody)[0] as HTMLElement;\n }\n\n private get scroll$() {\n return merge(this.tableScrollElement ? fromEvent<MouseEvent>(this.tableScrollElement, 'scroll') : EMPTY);\n }\n\n /**\n * 设置数据为空时展示的模板\n * @type TemplateRef\n */\n @ContentChild('empty') emptyTemplate: TemplateRef<SafeAny>;\n\n @ViewChild('table', { static: true }) tableElementRef: ElementRef<SafeAny>;\n\n @ViewChildren('rows', { read: ElementRef }) rows: QueryList<ElementRef<HTMLElement>>;\n\n /**\n * 表格展示方式,列表/分组/树\n * @type list | group | tree\n * @default list\n */\n @Input()\n set thyMode(value: ThyTableMode) {\n this.mode = value || this.mode;\n }\n\n /**\n * thyMode的值为 `group` 时分组的 Key\n */\n @Input()\n set thyGroupBy(value: string) {\n this.groupBy = value;\n }\n\n /**\n * 设置每行数据的唯一标识属性名\n * @default _id\n */\n @Input()\n set thyRowKey(value: SafeAny) {\n this.rowKey = value || this.rowKey;\n }\n\n /**\n * 分组数据源\n */\n @Input()\n set thyGroups(value: SafeAny) {\n if (this.mode === 'group') {\n this.buildGroups(value);\n }\n }\n\n /**\n * 数据源\n */\n @Input()\n set thyModel(value: SafeAny) {\n this.model = value || [];\n this._diff = this._differs.find(this.model).create();\n this._initializeDataModel();\n\n if (this.mode === 'group') {\n this.buildModel();\n }\n }\n\n /**\n * 表格的显示风格,`bordered` 时头部有背景色且分割线区别明显\n * @type default | bordered | boxed\n * @default default\n */\n @Input()\n set thyTheme(value: ThyTableTheme) {\n this.theme = value || this.theme;\n this._setClass();\n }\n\n /**\n * 表格的大小\n * @type xs | sm | md | lg | xlg | default\n * @default md\n */\n @Input()\n set thySize(value: ThyTableSize) {\n this.size = value || this.size;\n this._setClass();\n }\n\n /**\n * 设置表格最小宽度,一般是适用于设置列宽为百分之或auto时限制表格最小宽度'\n */\n @Input()\n @InputCssPixel()\n thyMinWidth: string | number;\n\n /**\n * 设置为 fixed 布局表格,设置 fixed 后,列宽将严格按照设置宽度展示,列宽将不会根据表格内容自动调整\n * @default false\n */\n @Input({ transform: coerceBooleanProperty }) thyLayoutFixed: boolean;\n\n /**\n * 是否表头固定,若设置为 true, 需要同步设置 thyHeight\n * @default false\n */\n @Input({ transform: coerceBooleanProperty }) thyHeaderFixed: boolean;\n\n /**\n * 表格的高度\n */\n @HostBinding('style.height')\n @Input()\n @InputCssPixel()\n thyHeight: string;\n\n /**\n * 设置表格的样式\n */\n @Input()\n set thyClassName(value: string) {\n const list = this.className.split(' ').filter(a => a.trim());\n const index: number = list.findIndex(item => item === this._oldThyClassName);\n if (index !== -1) {\n list.splice(index, 1, value);\n } else {\n list.push(value);\n }\n this._oldThyClassName = value;\n this.className = list.join(' ');\n }\n\n /**\n * 设置表格行的样式,传入函数,支持 row、index\n * @type string | (row, index) => string\n */\n @Input()\n set thyRowClassName(value: string | Function) {\n this.rowClassName = value;\n }\n\n /**\n * 设置加载状态\n * @default true\n */\n @Input({ transform: coerceBooleanProperty })\n set thyLoadingDone(value: boolean) {\n this.loadingDone = value;\n }\n\n /**\n * 设置加载时显示的文本,已废弃\n * @deprecated\n */\n @Input()\n set thyLoadingText(value: string) {\n this.loadingText = value;\n }\n\n /**\n * 配置空状态组件\n */\n @Input()\n set thyEmptyOptions(value: ThyTableEmptyOptions) {\n this.emptyOptions = value;\n }\n\n /**\n * 是否开启行拖拽\n * @default false\n */\n @Input({ transform: coerceBooleanProperty })\n set thyDraggable(value: boolean) {\n this.draggable = value;\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && this.draggable && this.mode === 'tree') {\n throw new Error('Tree mode sorting is not supported');\n }\n }\n\n /**\n * 设置当前页码\n * @default 1\n */\n @Input({ transform: numberAttribute })\n set thyPageIndex(value: number) {\n this.pagination.index = value;\n }\n\n /**\n * 设置每页显示数量\n * @default 20\n */\n @Input({ transform: numberAttribute })\n set thyPageSize(value: number) {\n this.pagination.size = value;\n }\n\n /**\n * 设置总页数\n */\n @Input({ transform: numberAttribute })\n set thyPageTotal(value: number) {\n this.pagination.total = value;\n }\n\n /**\n * 选中当前行是否自动选中 Checkbox,不开启时只有点击 Checkbox 列时才会触发选中\n * @default false\n */\n @Input({ transform: coerceBooleanProperty })\n set thyWholeRowSelect(value: boolean) {\n if (value) {\n this.className += ' table-hover';\n }\n this.wholeRowSelect = value;\n }\n\n /**\n * 是否显示表格头\n * @default false\n */\n @Input({ transform: coerceBooleanProperty }) thyHeadless = false;\n\n /**\n * 是否显示表格头,已废弃,请使用 thyHeadless\n * @deprecated please use thyHeadless\n */\n @Input({ transform: coerceBooleanProperty })\n set thyShowHeader(value: boolean) {\n this.thyHeadless = !value;\n }\n\n /**\n * 是否显示左侧 Total\n */\n @Input({ alias: 'thyShowTotal', transform: coerceBooleanProperty }) showTotal = false;\n\n /**\n * 是否显示调整每页显示条数下拉框\n */\n @Input({ alias: 'thyShowSizeChanger', transform: coerceBooleanProperty }) showSizeChanger = false;\n\n /**\n * 每页显示条数下拉框可选项\n * @type number[]\n */\n @Input('thyPageSizeOptions')\n set pageSizeOptions(value: number[]) {\n this.pagination.sizeOptions = value;\n }\n\n /**\n * thyMode 为 tree 时,设置 Tree 树状数据展示时的缩进\n */\n @Input({ transform: numberAttribute }) thyIndent = 20;\n\n /**\n * thyMode 为 tree 时,设置 Tree 树状数据对象中的子节点 Key\n * @type string\n */\n @Input() thyChildrenKey = 'children';\n\n /**\n * 开启 Hover 后显示操作,默认不显示操作区内容,鼠标 Hover 时展示\n * @default false\n */\n @HostBinding('class.thy-table-hover-display-operation')\n @Input({ transform: coerceBooleanProperty })\n thyHoverDisplayOperation: boolean;\n\n @Input() thyDragDisabledPredicate: (item: SafeAny) => boolean = () => false;\n\n /**\n * 表格列的骨架类型\n * @type ThyTableColumnSkeletonType[]\n */\n @Input() thyColumnSkeletonTypes: ThyTableColumnSkeletonType[] = [\n ThyTableColumnSkeletonType.title,\n ThyTableColumnSkeletonType.member,\n ThyTableColumnSkeletonType.default\n ];\n\n /**\n * 切换组件回调事件\n */\n @Output() thyOnSwitchChange: EventEmitter<ThySwitchEvent> = new EventEmitter<ThySwitchEvent>();\n\n /**\n * 表格分页回调事件\n */\n @Output() thyOnPageChange: EventEmitter<PageChangedEvent> = new EventEmitter<PageChangedEvent>();\n\n /**\n * 表格分页当前页改变回调事件\n */\n @Output() thyOnPageIndexChange: EventEmitter<number> = new EventEmitter<number>();\n\n @Output() thyOnPageSizeChange: EventEmitter<number> = new EventEmitter<number>();\n\n /**\n * 多选回调事件\n */\n @Output() thyOnMultiSelectChange: EventEmitter<ThyMultiSelectEvent> = new EventEmitter<ThyMultiSelectEvent>();\n\n /**\n * 单选回调事件\n */\n @Output() thyOnRadioSelectChange: EventEmitter<ThyRadioSelectEvent> = new EventEmitter<ThyRadioSelectEvent>();\n\n /**\n * 拖动修改事件\n */\n @Output() thyOnDraggableChange: EventEmitter<ThyTableDraggableEvent> = new EventEmitter<ThyTableDraggableEvent>();\n\n /**\n * 表格行点击触发事件\n */\n @Output() thyOnRowClick: EventEmitter<ThyTableRowEvent> = new EventEmitter<ThyTableRowEvent>();\n\n /**\n * 列排序修改事件\n */\n @Output() thySortChange: EventEmitter<ThyTableSortEvent> = new EventEmitter<ThyTableSortEvent>();\n\n @Output() thyOnRowContextMenu: EventEmitter<ThyTableEvent> = new EventEmitter<ThyTableEvent>();\n\n @ContentChild('group', { static: true }) groupTemplate: TemplateRef<SafeAny>;\n\n @ContentChildren(ThyTableColumnComponent)\n set listOfColumnComponents(components: QueryList<ThyTableColumnComponent>) {\n if (components) {\n this.columns = components.toArray();\n this.hasFixed = !!this.columns.find(item => {\n return item.fixed === this.fixedDirection.left || item.fixed === this.fixedDirection.right;\n });\n this.buildSkeletonColumns();\n this._initializeColumns();\n this._initializeDataModel();\n }\n }\n\n // 数据的折叠展开状态\n public expandStatusMap: Dictionary<boolean> = {};\n\n public expandStatusMapOfGroup: Dictionary<boolean> = {};\n\n private expandStatusMapOfGroupBeforeDrag: Dictionary<boolean> = {};\n\n dragPreviewClass = 'thy-table-drag-preview';\n\n public skeletonColumns: ThyTableSkeletonColumn[] = [];\n\n constructor() {\n this._bindTrackFn();\n }\n\n private _initializeColumns() {\n if (!this.columns.some(item => item.expand === true) && this.columns.length > 0) {\n this.columns[0].expand = true;\n }\n this._initializeColumnFixedPositions();\n }\n\n private _initializeColumnFixedPositions() {\n const leftFixedColumns = this.columns.filter(item => item.fixed === ThyFixedDirection.left);\n leftFixedColumns.forEach((item, index) => {\n const previous = leftFixedColumns[index - 1];\n item.left = previous ? previous.left + parseInt(previous.width.toString(), 10) : 0;\n });\n const rightFixedColumns = this.columns.filter(item => item.fixed === ThyFixedDirection.right).reverse();\n rightFixedColumns.forEach((item, index) => {\n const previous = rightFixedColumns[index - 1];\n item.right = previous ? previous.right + parseInt(previous.width.toString(), 10) : 0;\n });\n }\n\n private _initializeDataModel() {\n this.model.forEach(row => {\n this.columns.forEach(column => {\n this._initialSelections(row, column);\n this._initialCustomModelValue(row, column);\n });\n });\n }\n\n private _initialSelections(row: object, column: ThyTableColumnComponent) {\n if (column.selections) {\n if (column.type === 'checkbox') {\n row[column.key] = column.selections.includes(row[this.rowKey]);\n this.onModelChange(row, column);\n }\n if (column.type === 'radio') {\n if (column.selections.includes(row[this.rowKey])) {\n this.selectedRadioRow = row;\n }\n }\n }\n }\n\n private _initialCustomModelValue(row: object, column: ThyTableColumnComponent) {\n if (column.type === customType.switch) {\n row[column.key] = get(row, column.model);\n }\n }\n\n private _refreshCustomModelValue(row: SafeAny) {\n this.columns.forEach(column => {\n this._initialCustomModelValue(row, column);\n });\n }\n\n private _applyDiffChanges(changes: IterableChanges<SafeAny>) {\n if (changes) {\n changes.forEachAddedItem((record: IterableChangeRecord<SafeAny>) => {\n this._refreshCustomModelValue(record.item);\n });\n }\n }\n\n private _bindTrackFn() {\n this.trackByFn = function (this: SafeAny, index: number, row: SafeAny): SafeAny {\n return row && this.rowKey ? row[this.rowKey] : index;\n }.bind(this);\n }\n\n private _destroyInvalidAttribute() {\n this.model.forEach(row => {\n for (const key in row) {\n if (key.includes('[$$column]')) {\n delete row[key];\n }\n }\n });\n }\n\n private _setClass(first = false) {\n if (!first && !this.initialized) {\n return;\n }\n const classNames: string[] = [];\n if (this.size) {\n classNames.push(`table-${this.size}`);\n }\n if (tableThemeMap[this.theme]) {\n classNames.push(tableThemeMap[this.theme]);\n }\n\n this.updateHostClassService.updateClass(classNames);\n }\n\n public updateColumnSelections(key: string, selections: SafeAny): void {\n const column = this.columns.find(item => item.key === key);\n this.model.forEach(row => {\n this._initialSelections(row, column);\n });\n }\n\n public isTemplateRef(ref: SafeAny) {\n return ref instanceof TemplateRef;\n }\n\n public getModelValue(row: SafeAny, path: string) {\n return get(row, path);\n }\n\n public renderRowClassName(row: SafeAny, index: number) {\n if (!this.rowClassName) {\n return null;\n }\n if (isString(this.rowClassName)) {\n return this.rowClassName;\n } else {\n return (this.rowClassName as Function)(row, index);\n }\n }\n\n public onModelChange(row: SafeAny, column: ThyTableColumnComponent) {\n if (column.model) {\n set(row, column.model, row[column.key]);\n }\n }\n\n public onStopPropagation(event: Event) {\n if (this.wholeRowSelect) {\n event.stopPropagation();\n }\n }\n\n public onPageChange(event: PageChangedEvent) {\n this.thyOnPageChange.emit(event);\n }\n\n public onPageIndexChange(event: number) {\n this.thyOnPageIndexChange.emit(event);\n }\n\n public onPageSizeChange(event: number) {\n this.thyOnPageSizeChange.emit(event);\n }\n\n public onCheckboxChange(row: SafeAny, column: ThyTableColumnComponent) {\n this.onModelChange(row, column);\n this.onMultiSelectChange(null, row, column);\n }\n\n public onMultiSelectChange(event: Event, row: SafeAny, column: ThyTableColumnComponent) {\n const rows = this.model.filter(item => {\n return item[column.key];\n });\n const multiSelectEvent: ThyMultiSelectEvent = {\n event: event,\n row: row,\n rows: rows\n };\n this.thyOnMultiSelectChange.emit(multiSelectEvent);\n }\n\n public onRadioSelectChange(event: Event, row: SafeAny) {\n const radioSelectEvent: ThyRadioSelectEvent = {\n event: event,\n row: row\n };\n this.thyOnRadioSelectChange.emit(radioSelectEvent);\n }\n\n public onSwitchChange(event: Event, row: SafeAny, column: SafeAny) {\n const switchEvent: ThySwitchEvent = {\n event: event,\n row: row,\n refresh: (value: SafeAny) => {\n value = value || row;\n setTimeout(() => {\n value[column.key] = get(value, column.model);\n });\n }\n };\n this.thyOnSwitchChange.emit(switchEvent);\n }\n\n showExpand(row: SafeAny) {\n return row[this.thyChildrenKey] && row[this.thyChildrenKey].length > 0;\n }\n\n isExpanded(row: SafeAny) {\n return this.expandStatusMap[row[this.rowKey]];\n }\n\n iconIndentComputed(level: number) {\n if (this.mode === 'tree') {\n return level * this.thyIndent - 5;\n }\n }\n\n tdIndentComputed(level: number, column: SafeAny) {\n return {\n left: `${column.left}px`,\n right: `${column.right}px`,\n position: 'relative',\n paddingLeft: `${(level + 1) * this.thyIndent - 5}px`\n };\n }\n\n expandChildren(row: SafeAny) {\n if (this.isExpanded(row)) {\n this.expandStatusMap[row[this.rowKey]] = false;\n } else {\n this.expandStatusMap[row[this.rowKey]] = true;\n }\n }\n\n onDragGroupStarted(event: CdkDragStart<unknown>) {\n this.expandStatusMapOfGroupBeforeDrag = { ...this.expandStatusMapOfGroup };\n const groups = this.groups.filter(group => group.expand);\n this.foldGroups(groups);\n this.onDragStarted(event);\n this.cdr.detectChanges();\n }\n\n onDragGroupEnd(event: CdkDragEnd<unknown>) {\n const groups = this.groups.filter(group => this.expandStatusMapOfGroupBeforeDrag[group.id]);\n this.expandGroups(groups);\n this.cdr.detectChanges();\n }\n\n private onDragGroupDropped(event: CdkDragDrop<unknown>) {\n const group = this.groups.find(group => {\n return event.item.data.id === group.id;\n });\n if (group) {\n // drag group\n const dragEvent: ThyTableDraggableEvent = {\n model: event.item,\n models: this.groups,\n oldIndex: event.previousIndex,\n newIndex: event.currentIndex\n };\n moveItemInArray(this.groups, event.previousIndex, event.currentIndex);\n this.thyOnDraggableChange.emit(dragEvent);\n } else {\n // drag group children\n const group = this.groups.find(group => {\n return event.item.data[this.groupBy] === group.id;\n });\n const groupIndex =\n event.container.getSortedItems().findIndex(item => {\n return item.data.id === event.item.data[this.groupBy];\n }) + 1;\n const dragEvent: ThyTableDraggableEvent = {\n model: event.item,\n models: group.children,\n oldIndex: event.previousIndex - groupIndex,\n newIndex: event.currentIndex - groupIndex\n };\n moveItemInArray(group.children, dragEvent.oldIndex, dragEvent.newIndex);\n this.thyOnDraggableChange.emit(dragEvent);\n }\n }\n\n onDragStarted(event: CdkDragStart<unknown>) {\n this.ngZone.runOutsideAngular(() =>\n setTimeout(() => {\n const preview = this.document.getElementsByClassName(this.dragPreviewClass)[0];\n const originalTds: HTMLCollection = event.source._dragRef.getPlaceholderElement()?.children;\n if (preview) {\n Array.from(preview?.children).forEach((element: HTMLElement, index: number) => {\n element.style.width = `${originalTds[index]?.clientWidth}px`;\n });\n }\n })\n );\n }\n\n dropListEnterPredicate = (index: number, drag: CdkDrag, drop: CdkDropList) => {\n return drop.getSortedItems()[index].data.group_id === drag.data.group_id;\n };\n\n private onDragModelDropped(event: CdkDragDrop<unknown>) {\n const dragEvent: ThyTableDraggableEvent = {\n model: event.item,\n models: this.model,\n oldIndex: event.previousIndex,\n newIndex: event.currentIndex\n };\n moveItemInArray(this.model, event.previousIndex, event.currentIndex);\n this.thyOnDraggableChange.emit(dragEvent);\n }\n\n onDragDropped(event: CdkDragDrop<unknown>) {\n if (this.mode === 'group') {\n this.onDragGroupDropped(event);\n } else if (this.mode === 'list') {\n this.onDragModelDropped(event);\n }\n }\n\n onColumnHeaderClick(event: Event, column: ThyTableColumnComponent) {\n if (column.sortable) {\n const { sortDirection, model, sortChange } = column;\n let direction;\n if (sortDirection === ThyTableSortDirection.default) {\n direction = ThyTableSortDirection.desc;\n } else if (sortDirection === ThyTableSortDirection.desc) {\n direction = ThyTableSortDirection.asc;\n } else {\n direction = ThyTableSortDirection.default;\n }\n column.sortDirection = direction;\n const sortEvent = { event, key: model, direction };\n sortChange.emit(sortEvent);\n this.thySortChange.emit(sortEvent);\n }\n }\n\n public onRowClick(event: Event, row: SafeAny) {\n const next = this.onRowClickPropagationEventHandler(event, row);\n if (next) {\n if (this.wholeRowSelect) {\n const column = this.columns.find(item => {\n return item.type === customType.checkbox || item.type === customType.radio;\n });\n if (column && !column.disabled) {\n if (column.type === customType.checkbox) {\n row[column.key] = !row[column.key];\n this.onModelChange(row, column);\n this.onMultiSelectChange(event, row, column);\n }\n if (column.type === customType.radio) {\n this.selectedRadioRow = row;\n this.onRadioSelectChange(event, row);\n }\n }\n }\n const rowEvent = {\n event: event,\n row: row\n };\n this.thyOnRowClick.emit(rowEvent);\n }\n }\n\n private onRowClickPropagationEventHandler(event: Event, row: SafeAny): boolean {\n if ((event.target as Element).closest('.tree-expand-icon')) {\n this.expandChildren(row);\n return false;\n }\n return true;\n }\n\n public onRowContextMenu(event: Event, row: SafeAny) {\n const contextMenuEvent: ThyTableEvent = {\n event: event,\n row: row\n };\n this.thyOnRowContextMenu.emit(contextMenuEvent);\n }\n\n private _refreshColumns() {\n const components = this.columns || [];\n const _columns = components.map(component => {\n return {\n width: component.width,\n className: component.className\n };\n });\n\n this.columns.forEach((n, i) => {\n Object.assign(n, _columns[i]);\n });\n }\n\n private buildGroups(originGroups: SafeAny) {\n const originGroupsMap = helpers.keyBy(originGroups, 'id');\n this.groups = [];\n originGroups.forEach((origin: SafeAny) => {\n const group: ThyTableGroup = { id: origin[this.rowKey], children: [], origin };\n\n if (this.expandStatusMapOfGroup.hasOwnProperty(group.id)) {\n group.expand = this.expandStatusMapOfGroup[group.id];\n } else {\n group.expand = !!(originGroupsMap[group.id] as SafeAny).expand;\n }\n\n this.groups.push(group);\n });\n }\n\n private buildModel() {\n const groupsMap = keyBy(this.groups, 'id');\n this.model.forEach(row => {\n const group = groupsMap[row[this.groupBy]];\n if (group) {\n group.children.push(row);\n }\n });\n }\n\n public expandGroup(group: ThyTableGroup) {\n group.expand = !group.expand;\n this.expandStatusMapOfGroup[group.id] = group.expand;\n }\n\n private expandGroups(groups: ThyTableGroup[]) {\n groups.forEach(group => {\n this.expandGroup(group);\n });\n }\n\n private foldGroups(groups: ThyTableGroup[]) {\n groups.forEach(group => {\n this.expandGroup(group);\n });\n }\n\n private updateScrollClass() {\n const scrollElement = this.tableScrollElement;\n const maxScrollLeft = scrollElement.scrollWidth - scrollElement.offsetWidth;\n const scrollX = scrollElement.scrollLeft;\n const lastScrollClassName = this.scrollClassName;\n this.scrollClassName = '';\n if (scrollElement.scrollWidth > scrollElement.clientWidth) {\n if (scrollX >= maxScrollLeft) {\n this.scrollClassName = css.tableScrollRight;\n } else if (scrollX === 0) {\n this.scrollClassName = css.tableScrollLeft;\n } else {\n this.scrollClassName = css.tableScrollMiddle;\n }\n }\n if (lastScrollClassName) {\n this.renderer.removeClass(this.tableScrollElement, lastScrollClassName);\n }\n if (this.scrollClassName) {\n this.renderer.addClass(this.tableScrollElement, this.scrollClassName);\n }\n }\n\n ngOnInit() {\n this.updateHostClassService.initializeElement(this.tableElementRef.nativeElement);\n this._setClass(true);\n this.initialized = true;\n\n merge(this.viewportRuler.change(200), of(null).pipe(delay(200)))\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this._refreshColumns();\n this.updateScrollClass();\n this.cdr.detectChanges();\n });\n\n this.ngZone.runOutsideAngular(() => {\n this.scroll$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.updateScrollClass();\n });\n });\n }\n\n private buildSkeletonColumns() {\n this.skeletonColumns = [];\n\n this.columns.forEach((column: ThyTableColumnComponent, index: number) => {\n const item = {\n type: this.thyColumnSkeletonTypes[index] || ThyTableColumnSkeletonType.default,\n width: column.width || 'auto'\n };\n this.skeletonColumns = [...this.skeletonColumns, item];\n });\n }\n\n ngAfterViewInit(): void {\n if (isPlatformServer(this.platformId)) {\n return;\n }\n\n this.rows.changes\n .pipe(\n startWith(this.rows),\n switchMap(\n () =>\n new Observable<Event>(subscriber =>\n this.ngZone.runOutsideAngular(() =>\n merge(\n ...this.rows.map(row =>\n fromEvent(\n row.nativeElement,\n // Note: there's no need to add touch, pointer and mouse event listeners together.\n // There can be any number of rows, which will lead to adding N * 3 event listeners.\n // According to the spec (https://www.w3.org/TR/pointerevents/#examples), we can use feature detection\n // to determine if pointer events are available. If pointer events are available, we have to listen only\n // to the `pointerdown` event. Otherwise, we have to determine if we're on a touch device or not.\n // Touch events are handled earlier than mouse events, tho not all user agents dispatch mouse events\n // after touch events. See the spec: https://www.w3.org/TR/touch-events/#mouse-events.\n window.PointerEvent\n ? 'pointerdown'\n : 'ontouchstart' in row.nativeElement\n ? 'touchstart'\n : 'mousedown',\n // Note: since Chrome 56 defaults document level `touchstart` listener to passive.\n // The element `touchstart` listener is not passive by default\n // We never call `preventDefault()` on it, so we're safe making it passive too.\n <AddEventListenerOptions>passiveEventListenerOptions\n )\n )\n ).subscribe(subscriber)\n )\n )\n ),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(event => {\n if (!this.draggable) {\n event.stopPropagation();\n }\n });\n }\n\n ngOnChanges(simpleChanges: SimpleChanges) {\n const modeChange = simpleChanges.thyMode;\n const thyGroupsChange = simpleChanges.thyGroups;\n const isGroupMode = modeChange && modeChange.currentValue === 'group';\n if (isGroupMode && thyGroupsChange && thyGroupsChange.firstChange) {\n this.buildGroups(thyGroupsChange.currentValue);\n this.buildModel();\n }\n\n if (this._diff) {\n const changes = this._diff.diff(this.model);\n this._applyDiffChanges(changes);\n }\n }\n\n ngOnDestroy() {\n this._destroyInvalidAttribute();\n }\n}\n","<div\n class=\"thy-table-body\"\n cdkScrollable\n [ngClass]=\"{\n 'thy-table-fixed': hasFixed,\n 'thy-table-bordered-theme': theme === 'bordered' && hasFixed,\n 'thy-table-body-empty': loadingDone && model?.length === 0 && groups?.length === 0\n }\">\n <table\n #table\n class=\"table\"\n [ngClass]=\"[className]\"\n [class.table-fixed]=\"thyLayoutFixed\"\n [class.table-draggable]=\"draggable\"\n [class.table-group]=\"mode === 'group'\"\n [ngStyle]=\"{ 'min-width': thyMinWidth }\">\n <colgroup>\n @for (column of columns; track $index) {\n <col [width]=\"column.width\" [ngStyle]=\"{ minWidth: hasFixed ? column.width : column.minWidth }\" />\n }\n </colgroup>\n\n @if (!thyHeadless) {\n <thead>\n <tr>\n @for (column of columns; track $index) {\n <th\n [ngClass]=\"column.headerClassName\"\n [class.thy-table-column-sortable]=\"column.sortable\"\n [class.thy-table-fixed-column-left]=\"column.fixed === fixedDirection.left\"\n [class.thy-table-fixed-column-right]=\"column.fixed === fixedDirection.right\"\n [ngStyle]=\"{ left: column.left + 'px', right: column.right + 'px' }\"\n (click)=\"onColumnHeaderClick($event, column)\">\n @if (!column.headerTemplateRef) {\n <span>{{ column.title }}</span>\n }\n @if (column.headerTemplateRef) {\n <ng-template [ngTemplateOutlet]=\"column.headerTemplateRef\" [ngTemplateOutletContext]=\"{ $implicit: column }\"></ng-template>\n }\n @if (column.sortable) {\n <thy-icon [ngClass]=\"['thy-table-column-sortable-icon', 'px-1', column.sortDirection]\" thyIconName=\"sort-vertical-tt\">\n </thy-icon>\n }\n </th>\n }\n </tr>\n </thead>\n }\n\n @if (loadingDone) {\n <tbody\n thyDragDrop\n cdkDropList\n [cdkDropListDisabled]=\"!draggable\"\n [cdkDropListSortPredicate]=\"dropListEnterPredicate\"\n (cdkDropListDropped)=\"onDragDropped($event)\">\n <!-- group -->\n @if (mode === 'group') {\n @for (group of groups; track group.id) {\n <tr\n class=\"thy-table-group\"\n (click)=\"expandGroup(group)\"\n cdkDrag\n [cdkDragPreviewClass]=\"dragPreviewClass\"\n [cdkDragData]=\"group\"\n [cdkDragDisabled]=\"group | tableRowDragDisabled: thyDragDisabledPredicate\"\n (cdkDragStarted)=\"onDragGroupStarted($event)\"\n (cdkDragEnded)=\"onDragGroupEnd($event)\">\n <td [attr.colspan]=\"columns.length\">\n <div class=\"thy-table-group-container\">\n @if (draggable && !(group | tableRowDragDisabled: thyDragDisabledPredicate)) {\n <thy-icon class=\"table-draggable-icon\" thyIconName=\"drag\"></thy-icon>\n }\n <thy-icon class=\"expand-icon\" [thyIconName]=\"group.expand ? 'angle-down' : 'angle-right'\"></thy-icon>\n @if (groupTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"groupTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: group.origin, group: group.origin }\"></ng-template>\n }\n </div>\n </td>\n </tr>\n @if (group.children?.length && group.expand) {\n @for (row of group.children; track $index; let i = $index) {\n <ng-template\n [ngTemplateOutlet]=\"trTemplate\"\n [ngTemplateOutletContext]=\"{\n row: row,\n index: i,\n level: 0\n }\"></ng-template>\n }\n }\n }\n }\n <!-- list模式下没有直接使用item模板,是因为使用了模板影响了Angular的依赖树,导致CdkDragDrop排序失效,目前这样修改可以暂时解决线上不能排序的问题,Tree模式的排序暂时不支持 -->\n @if (mode === 'list') {\n @for (row of model; track $index; let i = $index) {\n <tr\n #rows\n class=\"thy-sortable-item\"\n cdkDrag\n [cdkDragPreviewClass]=\"dragPreviewClass\"\n [cdkDragData]=\"row\"\n [cdkDragDisabled]=\"row | tableRowDragDisabled: thyDragDisabledPredicate\"\n (cdkDragStarted)=\"onDragStarted($event)\"\n [ngClass]=\"renderRowClassName(row, i)\"\n (click)=\"onRowClick($event, row)\"\n (thyContextMenu)=\"onRowContextMenu($event, row)\">\n <ng-template\n [ngTemplateOutlet]=\"tdsTemplate\"\n [ngTemplateOutletContext]=\"{\n row: row,\n index: i,\n level: 0\n }\"></ng-template>\n </tr>\n }\n }\n @if (mode === 'tree') {\n @for (row of model; track trackByFn(i, row); let i = $index) {\n <ng-template [ngTemplateOutlet]=\"trTemplate\" [ngTemplateOutletContext]=\"{ row: row, index: i, level: 0 }\"></ng-template>\n }\n }\n <ng-template #trTemplate let-row=\"row\" let-i=\"index\" let-level=\"level\">\n <tr\n #rows\n class=\"thy-sortable-item\"\n cdkDrag\n [cdkDragPreviewClass]=\"dragPreviewClass\"\n [cdkDragData]=\"row\"\n (cdkDragStarted)=\"onDragStarted($event)\"\n [cdkDragDisabled]=\"row | tableRowDragDisabled: thyDragDisabledPredicate\"\n [ngClass]=\"renderRowClassName(row, i)\"\n (click)=\"onRowClick($event, row)\"\n (thyContextMenu)=\"onRowContextMenu($event, row)\">\n <ng-template\n [ngTemplateOutlet]=\"tdsTemplate\"\n [ngTemplateOutletContext]=\"{\n row: row,\n index: i,\n level: level + 1\n }\"></ng-template>\n </tr>\n @if (mode === 'tree' && isExpanded(row)) {\n @for (child of row[thyChildrenKey]; track trackByFn(j, child); let j = $index) {\n <ng-template\n [ngTemplateOutlet]=\"trTemplate\"\n [ngTemplateOutletContext]=\"{ row: child, index: j, level: level + 1 }\"></ng-template>\n }\n }\n </ng-template>\n <ng-template #tdsTemplate let-row=\"row\" let-i=\"index\" let-level=\"level\">\n @for (column of columns; track $index; let j = $index) {\n <td\n [ngClass]=\"column.className\"\n [class.thy-operation-links]=\"!!column.operational\"\n [class.thy-table-column-secondary]=\"!!column.secondary\"\n [class.thy-table-checkbox-column]=\"column.type === customType.checkbox\"\n [class.thy-table-fixed-column-left]=\"column.fixed === fixedDirection.left\"\n [class.thy-table-fixed-column-right]=\"column.fixed === fixedDirection.right\"\n [ngStyle]=\"\n mode === 'tree' && column.expand\n ? tdIndentComputed(level, column)\n : { left: column.left + 'px', right: column.right + 'px' }\n \">\n @if (j === 0 && draggable && !(row | tableRowDragDisabled: thyDragDisabledPredicate)) {\n <thy-icon class=\"table-draggable-icon\" thyIconName=\"drag\"></thy-icon>\n }\n <!--template-->\n @if (isTemplateRef(column.cellTemplateRef)) {\n @if (mode === 'tree' && column.expand) {\n <thy-icon\n class=\"tree-expand-icon cursor-pointer\"\n [thyIconName]=\"isExpanded(row) ? 'angle-down' : 'angle-right'\"\n [style.visibility]=\"showExpand(row) ? 'visible' : 'hidden'\"\n [style.left.px]=\"iconIndentComputed(level)\"></thy-icon>\n }\n <ng-template [ngTemplateOutlet]=\"column.cellTemplateRef\" [ngTemplateOutletContext]=\"{ $implicit: row }\"></ng-template>\n }\n <!--not template-->\n @if (!isTemplateRef(column.cellTemplateRef)) {\n <!-- default -->\n @if (column.model && !column.type) {\n @if (mode === 'tree' && column.expand) {\n <thy-icon\n class=\"tree-expand-icon cursor-pointer\"\n [thyIconName]=\"isExpanded(row) ? 'angle-down' : 'angle-right'\"\n [style.visibility]=\"showExpand(row) ? 'visible' : 'hidden'\"\n [style.marginLeft.px]=\"iconIndentComputed(level)\"></thy-icon>\n }\n @if (getModelValue(row, column.model) | isValidModelValue) {\n {{ getModelValue(row, column.model) }}\n } @else {\n @if (column.defaultText) {\n <div class=\"text-desc\">\n {{ column.defaultText }}\n </div>\n }\n }\n <ng-template #default>\n @if (column.defaultText) {\n <div class=\"text-desc\">\n {{ column.defaultText }}\n </div>\n }\n </ng-template>\n }\n <!-- index -->\n @if (column.type === customType.index) {\n {{ i + 1 }}\n }\n <!-- checkbox -->\n @if (column.type === customType.checkbox) {\n <input\n type=\"checkbox\"\n [(ngModel)]=\"row[column.key]\"\n (ngModelChange)=\"onCheckboxChange(row, column)\"\n (click)=\"onStopPropagation($event)\"\n [disabled]=\"column.disabled\" />\n }\n <!-- radio -->\n @if (column.type === customType.radio) {\n <input\n type=\"radio\"\n [(ngModel)]=\"selectedRadioRow\"\n [value]=\"row\"\n [disabled]=\"column.disabled\"\n (click)=\"onStopPropagation($event)\"\n (change)=\"onRadioSelectChange($event, row)\" />\n }\n <!-- switch -->\n @if (column.type === customType.switch) {\n <thy-switch\n [(ngModel)]=\"row[column.key]\"\n (ngModelChange)=\"onModelChange(row, column)\"\n [disabled]=\"column.disabled\"\n (thyChange)=\"onSwitchChange($event, row, column)\"></thy-switch>\n }\n }\n </td>\n }\n </ng-template>\n </tbody>\n }\n </table>\n\n @if (loadingDone && model.length === 0 && groups.length === 0) {\n <div class=\"thy-table-empty clear-hover\">\n @if (emptyTemplate) {\n <ng-template [ngTemplateOutlet]=\"emptyTemplate\"></ng-template>\n } @else {\n <thy-empty\n [thyMessage]=\"emptyOptions.message\"\n [thyTranslationKey]=\"emptyOptions.translationKey\"\n [thyTranslationValues]=\"emptyOptions.translationValues\"\n [thyEntityName]=\"emptyOptions.entityName\"\n [thyEntityNameTranslateKey]=\"emptyOptions.entityNameTranslateKey\"\n [thyIconName]=\"emptyOptions.iconName\"\n [thySize]=\"emptyOptions.size\"\n [thyMarginTop]=\"emptyOptions.marginTop\"\n [thyTopAuto]=\"emptyOptions.topAuto\"\n [thyContainer]=\"emptyOptions.container\"></thy-empty>\n }\n </div>\n }\n\n @if (!loadingDone) {\n <thy-table-skeleton\n [thyRowCount]=\"6\"\n [thyHeadless]=\"true\"\n [thyTheme]=\"theme\"\n [thySize]=\"size\"\n [thyMinWidth]=\"thyMinWidth\"\n [thyColumns]=\"skeletonColumns\">\n </thy-table-skeleton>\n }\n\n @if (pagination.total > pagination.size) {\n <div class=\"thy-table-footer\" [class.thy-table-footer-has-padding]=\"theme === 'default'\">\n <thy-pagination\n [thyPageIndex]=\"pagination.index\"\n [thyTotal]=\"pagination.total\"\n [thyPageSize]=\"pagination.size\"\n [thyPageSizeOptions]=\"pagination.sizeOptions\"\n [thyShowSizeChanger]=\"showSizeChanger\"\n [thyShowTotal]=\"showTotal\"\n (thyPageChanged)=\"onPageChange($event)\"\n (thyPageIndexChange)=\"onPageIndexChange($event)\"\n (thyPageSizeChanged)=\"onPageSizeChange($event)\"></thy-pagination>\n </div>\n }\n</div>\n\n<ng-template>\n <ng-content></ng-content>\n</ng-template>\n","import { ThyEmptyModule } from 'ngx-tethys/empty';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyLoadingModule } from 'ngx-tethys/loading';\nimport { ThyPaginationModule } from 'ngx-tethys/pagination';\nimport { ThySharedModule } from 'ngx-tethys/shared';\nimport { ThySwitchModule } from 'ngx-tethys/switch';\nimport { ThySkeletonModule } from 'ngx-tethys/skeleton';\n\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { TableRowDragDisabledPipe } from './pipes/drag.pipe';\nimport { TableIsValidModelValuePipe } from './pipes/table.pipe';\nimport { ThyTableColumnComponent } from './table-column.component';\nimport { ThyTable } from './table.component';\nimport { ThyTableSkeleton } from './table-skeleton.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ThyPaginationModule,\n ThySwitchModule,\n ThyLoadingModule,\n ThyEmptyModule,\n ThySharedModule,\n ThySkeletonModule,\n ThyIconModule,\n DragDropModule,\n ScrollingModule,\n ThyTable,\n ThyTableColumnComponent,\n TableIsValidModelValuePipe,\n TableRowDragDisabledPipe,\n ThyTableSkeleton\n ],\n exports: [ThyTable, ThyTableColumnComponent, ThyTableSkeleton]\n})\nexport class ThyTableModule {}\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-table.mjs","sources":["../../../src/table/table.interface.ts","../../../src/table/table-column.component.ts","../../../src/table/pipes/drag.pipe.ts","../../../src/table/pipes/table.pipe.ts","../../../src/table/enums/column-skeleton-type.ts","../../../src/table/table-skeleton.component.ts","../../../src/table/table-skeleton.component.html","../../../src/table/table.component.ts","../../../src/table/table.component.html","../../../src/table/table.module.ts","../../../src/table/ngx-tethys-table.ts"],"sourcesContent":["import { EventEmitter, TemplateRef } from '@angular/core';\nimport { ThyTableColumnSkeletonType } from './enums';\n\nexport enum ThyTableSortDirection {\n default = '',\n asc = 'asc',\n desc = 'desc'\n}\nexport interface ThyTableColumn {\n key: string;\n model: string;\n title: string;\n type: string;\n selections: any;\n width: string | number;\n className: string;\n headerClassName: string;\n disabled: boolean;\n defaultText: string;\n expand: boolean;\n templateRef: TemplateRef<any>;\n headerTemplateRef: TemplateRef<any>;\n fixed?: 'left' | 'right';\n left?: number;\n right?: number;\n sortable?: boolean;\n // 操作列\n operational?: boolean;\n // 次要列\n secondary?: boolean;\n sortDirection?: ThyTableSortDirection;\n sortChange?: EventEmitter<ThyTableSortEvent>;\n}\n\nexport interface ThyPage {\n index?: number;\n size?: number;\n total?: number;\n sizeOptions?: number[];\n}\n\nexport interface ThyTableEmptyOptions {\n message?: string;\n translationKey?: string;\n translationValues?: any;\n entityName?: string;\n entityNameTranslateKey?: string;\n iconName?: string;\n size?: string;\n marginTop?: string;\n topAuto?: string;\n container?: TemplateRef<any>;\n}\n\nexport type PageChangedEvent = ThyPageChangedEvent;\nexport interface ThyPageChangedEvent {\n itemsPerPage: number;\n page: number;\n}\n\nexport interface ThyTableEvent {\n event: Event;\n row: any;\n}\n\nexport interface ThyMultiSelectEvent extends ThyTableEvent {\n rows: any[];\n}\n\nexport interface ThyRadioSelectEvent {\n event: Event;\n row: any;\n}\n\nexport interface ThySwitchEvent extends ThyTableEvent {\n refresh?: Function;\n}\n\nexport interface ThyTableDraggableEvent {\n oldIndex?: number;\n newIndex?: number;\n model?: any;\n models?: Array<any>;\n [key: string]: any;\n}\n\nexport interface ThyTableSortEvent {\n event: Event;\n key: string;\n direction: ThyTableSortDirection;\n}\n\nexport interface ThyTableRowEvent {\n event: Event;\n row: any;\n}\n\nexport interface ThyTableSkeletonColumn {\n width: number | string;\n type: ThyTableColumnSkeletonType;\n}\n","import {\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n InjectionToken,\n Input,\n OnInit,\n Output,\n TemplateRef,\n ViewEncapsulation,\n inject\n} from '@angular/core';\nimport { coerceBooleanProperty, coerceCssPixelValue, isArray, isObject } from 'ngx-tethys/util';\nimport { ThyTableSortDirection, ThyTableSortEvent } from './table.interface';\nimport { SafeAny } from 'ngx-tethys/types';\n\nexport interface IThyTableColumnParentComponent {\n rowKey: string;\n updateColumnSelections(key: string, selections: any): void;\n}\n\n/**\n * Injection token used to provide the parent component to options.\n */\nexport const THY_TABLE_COLUMN_PARENT_COMPONENT = new InjectionToken<IThyTableColumnParentComponent>('THY_TABLE_COLUMN_PARENT_COMPONENT');\n\nexport type FixedDirection = 'left' | 'right';\n\n/**\n * 表格列组件\n * @name thy-table-column\n * @order 20\n */\n@Component({\n selector: 'thy-table-column',\n template: '<ng-content></ng-content>',\n encapsulation: ViewEncapsulation.None\n})\nexport class ThyTableColumnComponent implements OnInit {\n private el = inject(ElementRef);\n parent = inject(THY_TABLE_COLUMN_PARENT_COMPONENT, { optional: true })!;\n\n /**\n * 设置数据属性 Key,读取数组中对象的当前 Key 值\n * @type string\n */\n @Input('thyModelKey') model = '';\n\n /**\n * 设置列名,显示在表头\n * @type string\n */\n @Input('thyTitle') title = '';\n\n /**\n * 设置列的特殊类型,序列号、选择框、单选框、切换按钮\n * @type string\n */\n @Input('thyType') type = '';\n\n public width: string = '';\n\n /**\n * 设置列的宽度\n */\n @Input()\n set thyWidth(value: string | number) {\n this.width = coerceCssPixelValue(value);\n }\n\n public minWidth: string = '';\n\n /**\n * 设置列的最小宽度\n */\n @Input()\n set thyMinWidth(value: string | number) {\n this.minWidth = coerceCssPixelValue(value);\n }\n\n /**\n * 设置列的样式\n */\n @Input('thyClassName') className = '';\n\n /**\n * 设置列头部的 Class,即 th 元素上的样式\n * @type string\n */\n @Input('thyHeaderClassName') headerClassName = '';\n\n /**\n * 设置自定义类型的禁用状态\n * @type boolean\n */\n @Input({ alias: 'thyDisabled', transform: coerceBooleanProperty }) disabled = false;\n\n /**\n * thyType 为 checkbox 或者 radio 类型时选中的数据 ,支持单个对象,单个 Id,同时支持多个 Id,多个对象\n */\n @Input('thySelections')\n set selections(value: any) {\n if (value) {\n this._selections = isArray(value) ? value : [value];\n this._selections = this._selections.map((item: string | number | object) => {\n return isObject(item) ? (item as Record<string, SafeAny>)[this.parent.rowKey] : item;\n });\n if (!this._firstChange) {\n this.parent.updateColumnSelections(this.key, this._selections);\n }\n }\n }\n\n get selections() {\n return this._selections;\n }\n /**\n * 设置数据为空的时候显示的文本\n * @type string\n */\n @Input('thyDefaultText') defaultText = '';\n\n /**\n * 设置 Tree 模式下折叠展开按钮展示列,不传默认第一列\n */\n @Input({ alias: 'thyExpand', transform: coerceBooleanProperty }) expand = false;\n\n public sortable!: boolean;\n\n /**\n * 是否开启列排序功能(开启时 thyModelKey 为 必传)\n * @default false\n */\n @Input({ transform: coerceBooleanProperty })\n set thySortable(value: boolean) {\n if (value) {\n if (this.model) {\n this.sortable = true;\n } else {\n throw new Error(`thyModelKey is required when sortable`);\n }\n } else {\n this.sortable = false;\n }\n }\n\n /**\n * 默认列排序顺序\n * @type 'asc' | 'desc' | ''\n */\n @Input('thySortDirection') sortDirection = ThyTableSortDirection.default;\n\n /**\n * 设置固定列\n */\n @Input('thyFixed') fixed?: FixedDirection;\n\n /**\n * 当前列是否是操作列,设置为 true 时会追加 thy-operation-links 样式类,文字居中\n * @default false\n */\n @Input({ alias: 'thyOperational', transform: coerceBooleanProperty }) operational?: boolean;\n\n /**\n * 当前列是否是次要列,设置为 true 时会追加 thy-table-column-secondary 样式类,文字颜色为 $gray-600\n * @default false\n */\n @Input({ alias: 'thySecondary', transform: coerceBooleanProperty }) secondary?: boolean;\n\n /**\n * 列排序修改事件\n */\n @Output('thySortChange') readonly sortChange: EventEmitter<ThyTableSortEvent> = new EventEmitter<ThyTableSortEvent>();\n\n @ContentChild('header', { static: true }) headerTemplateRef?: TemplateRef<any>;\n\n @ContentChild('cell', { static: true }) cellTemplateRef?: TemplateRef<any>;\n\n @ContentChild(TemplateRef, { static: true })\n set templateRef(value: TemplateRef<any>) {\n if (value) {\n if (!this.headerTemplateRef && !this.cellTemplateRef) {\n this.cellTemplateRef = value;\n }\n }\n }\n\n public key!: string;\n\n public left?: number;\n\n public right?: number;\n\n private _selections: any;\n\n private _firstChange = true;\n\n ngOnInit() {\n this.key = this._generateKey();\n this._firstChange = false;\n }\n\n private _generateKey() {\n return `[$$column]${ Math.random().toString(16).slice(2, 10)}`;\n }\n}\n","import { SafeAny } from 'ngx-tethys/types';\n\nimport { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * @private\n */\n@Pipe({\n name: 'tableRowDragDisabled'\n})\nexport class TableRowDragDisabledPipe implements PipeTransform {\n transform(item: SafeAny, dragDisabledPredicate: (item: SafeAny) => boolean): boolean {\n return dragDisabledPredicate(item);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * @private\n */\n@Pipe({\n name: 'isValidModelValue'\n})\nexport class TableIsValidModelValuePipe implements PipeTransform {\n transform(value: any): boolean {\n return value !== '' && value !== undefined && value !== null;\n }\n}\n","export enum ThyTableColumnSkeletonType {\n title = 'title',\n member = 'member',\n default = 'default',\n checkbox = 'checkbox'\n}\n","import { NgClass, NgStyle } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n ViewChild,\n ViewEncapsulation,\n inject\n} from '@angular/core';\nimport { InputCssPixel } from 'ngx-tethys/core';\nimport { ThySkeletonCircle, ThySkeletonRectangle } from 'ngx-tethys/skeleton';\nimport { ThyTableSkeletonColumn } from './table.interface';\nimport { ThyViewOutletDirective } from 'ngx-tethys/shared';\nimport { ThyTableColumnSkeletonType } from './enums';\nimport { ThyTableSize, ThyTableTheme } from './table.type';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\n\nconst COLUMN_COUNT = 5;\n\n/**\n * 表格的骨架屏组件\n * @name thy-table-skeleton\n */\n@Component({\n selector: 'thy-table-skeleton',\n templateUrl: './table-skeleton.component.html',\n host: {\n class: 'thy-table-skeleton'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [NgClass, NgStyle, ThyViewOutletDirective, ThySkeletonRectangle, ThySkeletonCircle]\n})\nexport class ThyTableSkeleton implements AfterViewInit {\n private cdr = inject(ChangeDetectorRef);\n\n @ViewChild('titleTemplate') titleTemplate!: ElementRef<HTMLElement>;\n\n @ViewChild('memberTemplate') memberTemplate!: ElementRef<HTMLElement>;\n\n @ViewChild('defaultTemplate') defaultTemplate!: ElementRef<HTMLElement>;\n\n @ViewChild('checkboxTemplate') checkboxTemplate!: ElementRef<HTMLElement>;\n\n /**\n * 骨架边框圆角\n */\n @Input()\n @InputCssPixel()\n thyBorderRadius!: string | number;\n\n /**\n * 表格内容骨架高度\n */\n @Input()\n @InputCssPixel()\n thyRowHeight: string | number = '20px';\n\n /**\n * 是否开启动画\n * @default true\n */\n @Input({ transform: coerceBooleanProperty })\n thyAnimated: boolean = true;\n\n /**\n * 动画速度\n */\n @Input() thyAnimatedInterval?: string;\n\n /**\n * 骨架主色\n */\n @Input() thyPrimaryColor?: string;\n\n /**\n * 骨架次色\n */\n @Input() thySecondaryColor?: string;\n\n rowCount: number[] = [];\n\n /**\n * 行数\n */\n @Input()\n set thyRowCount(value: number | string) {\n this.rowCount = Array.from({ length: +value });\n }\n\n /**\n * 是否展示骨架头\n * @default false\n */\n @Input({ transform: coerceBooleanProperty }) thyHeadless = false;\n\n /**\n * 骨架屏的风格\n * @type default | bordered | boxed\n */\n @Input() thyTheme: ThyTableTheme = 'default';\n\n /**\n * 骨架屏的大小\n * @type xs | sm | md | lg | xlg | default\n * @default md\n */\n @Input() thySize: ThyTableSize = 'md';\n\n /**\n * 设置表格最小宽度\n */\n @Input()\n @InputCssPixel()\n thyMinWidth!: string | number;\n\n /**\n * 表格列骨架的配置项,支持配置列宽、骨架类型\n * @type ThyTableSkeletonColumn[]\n */\n @Input() set thyColumns(columns: ThyTableSkeletonColumn[]) {\n if (columns && columns.length) {\n this.columns = columns;\n } else {\n this.columns = [...this.defaultColumns];\n }\n }\n\n public titleHeight = '20px';\n\n public titleWidth = '50px';\n\n public checkboxWidth = '20px';\n\n public avatarSize = '24px';\n\n public columnType = ThyTableColumnSkeletonType;\n\n public skeletonColumnsMap: {\n [key: string]: ElementRef<HTMLElement>;\n } = {};\n\n get tableClassMap() {\n return {\n table: true,\n 'table-bordered': this.thyTheme === 'bordered',\n 'table-boxed': this.thyTheme === 'boxed',\n [`table-${this.thySize}`]: !!this.thySize\n };\n }\n\n private defaultColumns = Array.from({ length: COLUMN_COUNT }).map((item, index: number) => {\n if (index === 0) {\n return {\n width: '40%',\n type: ThyTableColumnSkeletonType.title\n };\n } else if (index === 1) {\n return {\n width: '17%',\n type: ThyTableColumnSkeletonType.member\n };\n } else {\n return {\n width: 'auto',\n type: ThyTableColumnSkeletonType.default\n };\n }\n });\n\n public columns: ThyTableSkeletonColumn[] = [...this.defaultColumns];\n\n ngAfterViewInit(): void {\n this.skeletonColumnsMap = {\n [ThyTableColumnSkeletonType.title]: this.titleTemplate,\n [ThyTableColumnSkeletonType.member]: this.memberTemplate,\n [ThyTableColumnSkeletonType.checkbox]: this.checkboxTemplate\n };\n this.cdr.detectChanges();\n }\n}\n","<table [ngClass]=\"tableClassMap\" [ngStyle]=\"{ 'min-width': thyMinWidth }\">\n <colgroup>\n @for (column of columns; track $index) {\n <col [width]=\"column.width\" />\n }\n </colgroup>\n @if (!thyHeadless) {\n <thead>\n <tr>\n @for (column of columns; track $index) {\n <th>\n <thy-skeleton-rectangle\n [thyRowWidth]=\"column?.type === columnType.checkbox ? checkboxWidth : titleWidth\"\n [thyRowHeight]=\"titleHeight\"\n [thyBorderRadius]=\"thyBorderRadius\"\n [thyAnimated]=\"thyAnimated\"\n [thyAnimatedInterval]=\"thyAnimatedInterval\"\n [thyPrimaryColor]=\"thyTheme === 'bordered' || thyTheme === 'boxed' ? 'var(--gray-200, #eee)' : thyPrimaryColor\"\n [thySecondaryColor]=\"thySecondaryColor\"></thy-skeleton-rectangle>\n </th>\n }\n </tr>\n </thead>\n }\n <tbody>\n @for (item of rowCount; track $index; let i = $index) {\n <tr>\n @for (column of columns; track $index) {\n <td>\n <ng-container\n *thyViewOutlet=\"\n skeletonColumnsMap[column.type] || defaultTemplate;\n context: {\n trIndex: i\n }\n \">\n </ng-container>\n </td>\n }\n </tr>\n }\n </tbody>\n</table>\n\n<ng-template #titleTemplate let-trIndex=\"trIndex\">\n <div class=\"d-flex align-items-center\">\n <thy-skeleton-rectangle\n class=\"mr-2 flex-shrink-0\"\n [thyRowWidth]=\"checkboxWidth\"\n [thyRowHeight]=\"thyRowHeight\"\n [thyBorderRadius]=\"thyBorderRadius\"\n [thyAnimated]=\"thyAnimated\"\n [thyAnimatedInterval]=\"thyAnimatedInterval\"\n [thyPrimaryColor]=\"thyPrimaryColor\"\n [thySecondaryColor]=\"thySecondaryColor\"></thy-skeleton-rectangle>\n\n <ng-container\n *thyViewOutlet=\"\n defaultTemplate;\n context: {\n rowWidth: trIndex % 3 === 0 ? '75%' : trIndex % 3 === 1 ? '100%' : trIndex % 3 === 2 ? '65%' : ''\n }\n \"></ng-container>\n </div>\n</ng-template>\n\n<ng-template #checkboxTemplate>\n <thy-skeleton-rectangle\n [thyRowWidth]=\"checkboxWidth\"\n [thyRowHeight]=\"thyRowHeight\"\n [thyBorderRadius]=\"thyBorderRadius\"\n [thyAnimated]=\"thyAnimated\"\n [thyAnimatedInterval]=\"thyAnimatedInterval\"\n [thyPrimaryColor]=\"thyPrimaryColor\"\n [thySecondaryColor]=\"thySecondaryColor\"></thy-skeleton-rectangle>\n</ng-template>\n\n<ng-template #memberTemplate>\n <div class=\"d-flex align-items-center\">\n <thy-skeleton-circle\n class=\"mr-2 flex-shrink-0\"\n [thySize]=\"avatarSize\"\n [thyAnimated]=\"thyAnimated\"\n [thyAnimatedInterval]=\"thyAnimatedInterval\"\n [thyPrimaryColor]=\"thyPrimaryColor\"\n [thySecondaryColor]=\"thySecondaryColor\"></thy-skeleton-circle>\n\n <ng-container *thyViewOutlet=\"defaultTemplate\"></ng-container>\n </div>\n</ng-template>\n\n<ng-template #defaultTemplate let-rowWidth=\"rowWidth\">\n <thy-skeleton-rectangle\n [thyRowWidth]=\"rowWidth\"\n [thyRowHeight]=\"thyRowHeight\"\n [thyBorderRadius]=\"thyBorderRadius\"\n [thyAnimated]=\"thyAnimated\"\n [thyAnimatedInterval]=\"thyAnimatedInterval\"\n [thyPrimaryColor]=\"thyPrimaryColor\"\n [thySecondaryColor]=\"thySecondaryColor\"></thy-skeleton-rectangle>\n</ng-template>\n","import { InputCssPixel, UpdateHostClassService } from 'ngx-tethys/core';\nimport { Dictionary, SafeAny } from 'ngx-tethys/types';\nimport { coerceBooleanProperty, get, helpers, isString, keyBy, set } from 'ngx-tethys/util';\nimport { EMPTY, fromEvent, merge, Observable, of } from 'rxjs';\nimport { delay, startWith, switchMap } from 'rxjs/operators';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\nimport { CdkDrag, CdkDragDrop, CdkDragEnd, CdkDragStart, CdkDropList, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { ViewportRuler } from '@angular/cdk/overlay';\nimport { normalizePassiveListenerOptions } from '@angular/cdk/platform';\nimport { isPlatformServer, NgClass, NgTemplateOutlet, NgStyle } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n DestroyRef,\n ElementRef,\n EventEmitter,\n HostBinding,\n inject,\n Input,\n IterableChangeRecord,\n IterableChanges,\n IterableDiffer,\n IterableDiffers,\n NgZone,\n numberAttribute,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n PLATFORM_ID,\n QueryList,\n Renderer2,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewChildren,\n ViewEncapsulation,\n DOCUMENT\n} from '@angular/core';\n\nimport { IThyTableColumnParentComponent, THY_TABLE_COLUMN_PARENT_COMPONENT, ThyTableColumnComponent } from './table-column.component';\nimport {\n PageChangedEvent,\n ThyMultiSelectEvent,\n ThyPage,\n ThyRadioSelectEvent,\n ThySwitchEvent,\n ThyTableSkeletonColumn,\n ThyTableDraggableEvent,\n ThyTableEmptyOptions,\n ThyTableEvent,\n ThyTableRowEvent,\n ThyTableSortDirection,\n ThyTableSortEvent\n} from './table.interface';\nimport { TableRowDragDisabledPipe } from './pipes/drag.pipe';\nimport { TableIsValidModelValuePipe } from './pipes/table.pipe';\nimport { ThyPagination } from 'ngx-tethys/pagination';\nimport { ThyTableSkeleton } from './table-skeleton.component';\nimport { ThyEmpty } from 'ngx-tethys/empty';\nimport { ThySwitch } from 'ngx-tethys/switch';\nimport { FormsModule } from '@angular/forms';\nimport { ThyDragDropDirective, ThyContextMenuDirective } from 'ngx-tethys/shared';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { ThyTableColumnSkeletonType } from './enums';\nimport { ThyTableTheme, ThyTableMode, ThyTableSize } from './table.type';\n\nexport enum ThyFixedDirection {\n left = 'left',\n right = 'right'\n}\n\ninterface ThyTableGroup<T = unknown> {\n id?: string;\n expand?: boolean;\n children?: object[];\n origin?: T;\n}\n\nconst tableThemeMap = {\n default: 'table-default',\n bordered: 'table-bordered',\n boxed: 'table-boxed'\n};\n\nconst customType = {\n index: 'index',\n checkbox: 'checkbox',\n radio: 'radio',\n switch: 'switch'\n};\n\nconst css = {\n tableBody: 'thy-table-body',\n tableScrollLeft: 'thy-table-scroll-left',\n tableScrollRight: 'thy-table-scroll-right',\n tableScrollMiddle: 'thy-table-scroll-middle'\n};\n\nconst passiveEventListenerOptions = normalizePassiveListenerOptions({ passive: true });\n\n/**\n * 表格组件\n * @name thy-table\n * @order 10\n */\n@Component({\n selector: 'thy-table',\n templateUrl: './table.component.html',\n providers: [\n {\n provide: THY_TABLE_COLUMN_PARENT_COMPONENT,\n useExisting: ThyTable\n },\n UpdateHostClassService\n ],\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'thy-table',\n '[class.thy-table-bordered]': `theme === 'bordered'`,\n '[class.thy-table-boxed]': `theme === 'boxed'`,\n '[class.thy-table-fixed-header]': 'thyHeaderFixed'\n },\n imports: [\n CdkScrollable,\n NgClass,\n NgTemplateOutlet,\n ThyIcon,\n ThyDragDropDirective,\n CdkDropList,\n CdkDrag,\n ThyContextMenuDirective,\n NgStyle,\n FormsModule,\n ThySwitch,\n ThyEmpty,\n ThyTableSkeleton,\n ThyPagination,\n TableIsValidModelValuePipe,\n TableRowDragDisabledPipe\n ]\n})\nexport class ThyTable implements OnInit, OnChanges, AfterViewInit, OnDestroy, IThyTableColumnParentComponent {\n elementRef = inject(ElementRef);\n private _differs = inject(IterableDiffers);\n private viewportRuler = inject(ViewportRuler);\n private updateHostClassService = inject(UpdateHostClassService);\n private document = inject(DOCUMENT);\n private platformId = inject(PLATFORM_ID);\n private ngZone = inject(NgZone);\n private renderer = inject(Renderer2);\n private cdr = inject(ChangeDetectorRef);\n\n private readonly destroyRef = inject(DestroyRef);\n\n public customType = customType;\n\n public model: object[] = [];\n\n public groups: ThyTableGroup[] = [];\n\n public rowKey = '_id';\n\n public groupBy!: string;\n\n public mode: ThyTableMode = 'list';\n\n public theme: ThyTableTheme = 'default';\n\n public className = '';\n\n public size: ThyTableSize = 'md';\n\n public rowClassName!: string | Function;\n\n public loadingDone = true;\n\n public loadingText!: string;\n\n public emptyOptions: ThyTableEmptyOptions = {};\n\n public draggable = false;\n\n public selectedRadioRow: SafeAny = null;\n\n public pagination: ThyPage = { index: 1, size: 20, total: 0, sizeOptions: [20, 50, 100] };\n\n public trackByFn: SafeAny;\n\n public wholeRowSelect = false;\n\n public fixedDirection = ThyFixedDirection;\n\n public hasFixed = false;\n\n public columns: ThyTableColumnComponent[] = [];\n\n private _diff!: IterableDiffer<SafeAny>;\n\n private initialized = false;\n\n private _oldThyClassName = '';\n\n private scrollClassName = css.tableScrollLeft;\n\n private get tableScrollElement(): HTMLElement {\n return this.elementRef.nativeElement.getElementsByClassName(css.tableBody)[0] as HTMLElement;\n }\n\n private get scroll$() {\n return merge(this.tableScrollElement ? fromEvent<MouseEvent>(this.tableScrollElement, 'scroll') : EMPTY);\n }\n\n /**\n * 设置数据为空时展示的模板\n * @type TemplateRef\n */\n @ContentChild('empty') emptyTemplate!: TemplateRef<SafeAny>;\n\n @ViewChild('table', { static: true }) tableElementRef!: ElementRef<SafeAny>;\n\n @ViewChildren('rows', { read: ElementRef }) rows!: QueryList<ElementRef<HTMLElement>>;\n\n /**\n * 表格展示方式,列表/分组/树\n * @type list | group | tree\n * @default list\n */\n @Input()\n set thyMode(value: ThyTableMode) {\n this.mode = value || this.mode;\n }\n\n /**\n * thyMode的值为 `group` 时分组的 Key\n */\n @Input()\n set thyGroupBy(value: string) {\n this.groupBy = value;\n }\n\n /**\n * 设置每行数据的唯一标识属性名\n * @default _id\n */\n @Input()\n set thyRowKey(value: SafeAny) {\n this.rowKey = value || this.rowKey;\n }\n\n /**\n * 分组数据源\n */\n @Input()\n set thyGroups(value: SafeAny) {\n if (this.mode === 'group') {\n this.buildGroups(value);\n }\n }\n\n /**\n * 数据源\n */\n @Input()\n set thyModel(value: SafeAny) {\n this.model = value || [];\n this._diff = this._differs.find(this.model).create();\n this._initializeDataModel();\n\n if (this.mode === 'group') {\n this.buildModel();\n }\n }\n\n /**\n * 表格的显示风格,`bordered` 时头部有背景色且分割线区别明显\n * @type default | bordered | boxed\n * @default default\n */\n @Input()\n set thyTheme(value: ThyTableTheme) {\n this.theme = value || this.theme;\n this._setClass();\n }\n\n /**\n * 表格的大小\n * @type xs | sm | md | lg | xlg | default\n * @default md\n */\n @Input()\n set thySize(value: ThyTableSize) {\n this.size = value || this.size;\n this._setClass();\n }\n\n /**\n * 设置表格最小宽度,一般是适用于设置列宽为百分之或auto时限制表格最小宽度'\n */\n @Input()\n @InputCssPixel()\n thyMinWidth!: string | number;\n\n /**\n * 设置为 fixed 布局表格,设置 fixed 后,列宽将严格按照设置宽度展示,列宽将不会根据表格内容自动调整\n * @default false\n */\n @Input({ transform: coerceBooleanProperty }) thyLayoutFixed!: boolean;\n\n /**\n * 是否表头固定,若设置为 true, 需要同步设置 thyHeight\n * @default false\n */\n @Input({ transform: coerceBooleanProperty }) thyHeaderFixed!: boolean;\n\n /**\n * 表格的高度\n */\n @HostBinding('style.height')\n @Input()\n @InputCssPixel()\n thyHeight!: string;\n\n /**\n * 设置表格的样式\n */\n @Input()\n set thyClassName(value: string) {\n const list = this.className.split(' ').filter(a => a.trim());\n const index: number = list.findIndex(item => item === this._oldThyClassName);\n if (index !== -1) {\n list.splice(index, 1, value);\n } else {\n list.push(value);\n }\n this._oldThyClassName = value;\n this.className = list.join(' ');\n }\n\n /**\n * 设置表格行的样式,传入函数,支持 row、index\n * @type string | (row, index) => string\n */\n @Input()\n set thyRowClassName(value: string | Function) {\n this.rowClassName = value;\n }\n\n /**\n * 设置加载状态\n * @default true\n */\n @Input({ transform: coerceBooleanProperty })\n set thyLoadingDone(value: boolean) {\n this.loadingDone = value;\n }\n\n /**\n * 设置加载时显示的文本,已废弃\n * @deprecated\n */\n @Input()\n set thyLoadingText(value: string) {\n this.loadingText = value;\n }\n\n /**\n * 配置空状态组件\n */\n @Input()\n set thyEmptyOptions(value: ThyTableEmptyOptions) {\n this.emptyOptions = value;\n }\n\n /**\n * 是否开启行拖拽\n * @default false\n */\n @Input({ transform: coerceBooleanProperty })\n set thyDraggable(value: boolean) {\n this.draggable = value;\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && this.draggable && this.mode === 'tree') {\n throw new Error('Tree mode sorting is not supported');\n }\n }\n\n /**\n * 设置当前页码\n * @default 1\n */\n @Input({ transform: numberAttribute })\n set thyPageIndex(value: number) {\n this.pagination.index = value;\n }\n\n /**\n * 设置每页显示数量\n * @default 20\n */\n @Input({ transform: numberAttribute })\n set thyPageSize(value: number) {\n this.pagination.size = value;\n }\n\n /**\n * 设置总页数\n */\n @Input({ transform: numberAttribute })\n set thyPageTotal(value: number) {\n this.pagination.total = value;\n }\n\n /**\n * 选中当前行是否自动选中 Checkbox,不开启时只有点击 Checkbox 列时才会触发选中\n * @default false\n */\n @Input({ transform: coerceBooleanProperty })\n set thyWholeRowSelect(value: boolean) {\n if (value) {\n this.className += ' table-hover';\n }\n this.wholeRowSelect = value;\n }\n\n /**\n * 是否显示表格头\n * @default false\n */\n @Input({ transform: coerceBooleanProperty }) thyHeadless = false;\n\n /**\n * 是否显示表格头,已废弃,请使用 thyHeadless\n * @deprecated please use thyHeadless\n */\n @Input({ transform: coerceBooleanProperty })\n set thyShowHeader(value: boolean) {\n this.thyHeadless = !value;\n }\n\n /**\n * 是否显示左侧 Total\n */\n @Input({ alias: 'thyShowTotal', transform: coerceBooleanProperty }) showTotal = false;\n\n /**\n * 是否显示调整每页显示条数下拉框\n */\n @Input({ alias: 'thyShowSizeChanger', transform: coerceBooleanProperty }) showSizeChanger = false;\n\n /**\n * 每页显示条数下拉框可选项\n * @type number[]\n */\n @Input('thyPageSizeOptions')\n set pageSizeOptions(value: number[]) {\n this.pagination.sizeOptions = value;\n }\n\n /**\n * thyMode 为 tree 时,设置 Tree 树状数据展示时的缩进\n */\n @Input({ transform: numberAttribute }) thyIndent = 20;\n\n /**\n * thyMode 为 tree 时,设置 Tree 树状数据对象中的子节点 Key\n * @type string\n */\n @Input() thyChildrenKey = 'children';\n\n /**\n * 开启 Hover 后显示操作,默认不显示操作区内容,鼠标 Hover 时展示\n * @default false\n */\n @HostBinding('class.thy-table-hover-display-operation')\n @Input({ transform: coerceBooleanProperty })\n thyHoverDisplayOperation!: boolean;\n\n @Input() thyDragDisabledPredicate: (item: SafeAny) => boolean = () => false;\n\n /**\n * 表格列的骨架类型\n * @type ThyTableColumnSkeletonType[]\n */\n @Input() thyColumnSkeletonTypes: ThyTableColumnSkeletonType[] = [\n ThyTableColumnSkeletonType.title,\n ThyTableColumnSkeletonType.member,\n ThyTableColumnSkeletonType.default\n ];\n\n /**\n * 切换组件回调事件\n */\n @Output() readonly thyOnSwitchChange: EventEmitter<ThySwitchEvent> = new EventEmitter<ThySwitchEvent>();\n\n /**\n * 表格分页回调事件\n */\n @Output() readonly thyOnPageChange: EventEmitter<PageChangedEvent> = new EventEmitter<PageChangedEvent>();\n\n /**\n * 表格分页当前页改变回调事件\n */\n @Output() readonly thyOnPageIndexChange: EventEmitter<number> = new EventEmitter<number>();\n\n @Output() readonly thyOnPageSizeChange: EventEmitter<number> = new EventEmitter<number>();\n\n /**\n * 多选回调事件\n */\n @Output() readonly thyOnMultiSelectChange: EventEmitter<ThyMultiSelectEvent> = new EventEmitter<ThyMultiSelectEvent>();\n\n /**\n * 单选回调事件\n */\n @Output() readonly thyOnRadioSelectChange: EventEmitter<ThyRadioSelectEvent> = new EventEmitter<ThyRadioSelectEvent>();\n\n /**\n * 拖动修改事件\n */\n @Output() readonly thyOnDraggableChange: EventEmitter<ThyTableDraggableEvent> = new EventEmitter<ThyTableDraggableEvent>();\n\n /**\n * 表格行点击触发事件\n */\n @Output() readonly thyOnRowClick: EventEmitter<ThyTableRowEvent> = new EventEmitter<ThyTableRowEvent>();\n\n /**\n * 列排序修改事件\n */\n @Output() readonly thySortChange: EventEmitter<ThyTableSortEvent> = new EventEmitter<ThyTableSortEvent>();\n\n @Output() readonly thyOnRowContextMenu: EventEmitter<ThyTableEvent> = new EventEmitter<ThyTableEvent>();\n\n @ContentChild('group', { static: true }) groupTemplate!: TemplateRef<SafeAny>;\n\n @ContentChildren(ThyTableColumnComponent)\n set listOfColumnComponents(components: QueryList<ThyTableColumnComponent>) {\n if (components) {\n this.columns = components.toArray();\n this.hasFixed = !!this.columns.find(item => {\n return item.fixed === this.fixedDirection.left || item.fixed === this.fixedDirection.right;\n });\n this.buildSkeletonColumns();\n this._initializeColumns();\n this._initializeDataModel();\n }\n }\n\n // 数据的折叠展开状态\n public expandStatusMap: Dictionary<boolean> = {};\n\n public expandStatusMapOfGroup: Dictionary<boolean> = {};\n\n private expandStatusMapOfGroupBeforeDrag: Dictionary<boolean> = {};\n\n dragPreviewClass = 'thy-table-drag-preview';\n\n public skeletonColumns: ThyTableSkeletonColumn[] = [];\n\n constructor() {\n this._bindTrackFn();\n }\n\n private _initializeColumns() {\n if (!this.columns.some(item => item.expand === true) && this.columns.length > 0) {\n this.columns[0].expand = true;\n }\n this._initializeColumnFixedPositions();\n }\n\n private _initializeColumnFixedPositions() {\n const leftFixedColumns = this.columns.filter(item => item.fixed === ThyFixedDirection.left);\n leftFixedColumns.forEach((item, index) => {\n const previous = leftFixedColumns[index - 1];\n item.left = previous ? previous.left! + parseInt(previous.width.toString(), 10) : 0;\n });\n const rightFixedColumns = this.columns.filter(item => item.fixed === ThyFixedDirection.right).reverse();\n rightFixedColumns.forEach((item, index) => {\n const previous = rightFixedColumns[index - 1];\n item.right = previous ? previous.right! + parseInt(previous.width.toString(), 10) : 0;\n });\n }\n\n private _initializeDataModel() {\n this.model.forEach(row => {\n this.columns.forEach(column => {\n this._initialSelections(row, column);\n this._initialCustomModelValue(row, column);\n });\n });\n }\n\n private _initialSelections(row: object, column: ThyTableColumnComponent) {\n if (column.selections) {\n if (column.type === 'checkbox') {\n helpers.set(row, column.key, column.selections.includes(helpers.get(row, this.rowKey)));\n this.onModelChange(row, column);\n }\n if (column.type === 'radio') {\n if (column.selections.includes(helpers.get(row, this.rowKey))) {\n this.selectedRadioRow = row;\n }\n }\n }\n }\n\n private _initialCustomModelValue(row: object, column: ThyTableColumnComponent) {\n if (column.type === customType.switch) {\n helpers.set(row, column.key, get(row, column.model));\n }\n }\n\n private _refreshCustomModelValue(row: SafeAny) {\n this.columns.forEach(column => {\n this._initialCustomModelValue(row, column);\n });\n }\n\n private _applyDiffChanges(changes: IterableChanges<SafeAny> | undefined | null) {\n if (changes) {\n changes.forEachAddedItem((record: IterableChangeRecord<SafeAny>) => {\n this._refreshCustomModelValue(record.item);\n });\n }\n }\n\n private _bindTrackFn() {\n this.trackByFn = function (this: SafeAny, index: number, row: SafeAny): SafeAny {\n return row && this.rowKey ? row[this.rowKey] : index;\n }.bind(this);\n }\n\n private _destroyInvalidAttribute() {\n this.model.forEach(row => {\n for (const key in row) {\n if (key.includes('[$$column]')) {\n delete (row as SafeAny)[key]\n }\n }\n });\n }\n\n private _setClass(first = false) {\n if (!first && !this.initialized) {\n return;\n }\n const classNames: string[] = [];\n if (this.size) {\n classNames.push(`table-${this.size}`);\n }\n if (tableThemeMap[this.theme]) {\n classNames.push(tableThemeMap[this.theme]);\n }\n\n this.updateHostClassService.updateClass(classNames);\n }\n\n public updateColumnSelections(key: string, selections: SafeAny): void {\n const column = this.columns.find(item => item.key === key);\n this.model.forEach(row => {\n this._initialSelections(row, column!);\n });\n }\n\n public isTemplateRef(ref: SafeAny) {\n return ref instanceof TemplateRef;\n }\n\n public getModelValue(row: SafeAny, path: string) {\n return get(row, path);\n }\n\n public renderRowClassName(row: SafeAny, index: number) {\n if (!this.rowClassName) {\n return null;\n }\n if (isString(this.rowClassName)) {\n return this.rowClassName;\n } else {\n return (this.rowClassName as Function)(row, index);\n }\n }\n\n public onModelChange(row: SafeAny, column: ThyTableColumnComponent) {\n if (column.model) {\n set(row, column.model, row[column.key]);\n }\n }\n\n public onStopPropagation(event: Event) {\n if (this.wholeRowSelect) {\n event.stopPropagation();\n }\n }\n\n public onPageChange(event: PageChangedEvent) {\n this.thyOnPageChange.emit(event);\n }\n\n public onPageIndexChange(event: number) {\n this.thyOnPageIndexChange.emit(event);\n }\n\n public onPageSizeChange(event: number) {\n this.thyOnPageSizeChange.emit(event);\n }\n\n public onCheckboxChange(row: SafeAny, column: ThyTableColumnComponent) {\n this.onModelChange(row, column);\n this.onMultiSelectChange(null as SafeAny, row, column);\n }\n\n public onMultiSelectChange(event: Event, row: SafeAny, column: ThyTableColumnComponent) {\n const rows = this.model.filter(item => {\n return helpers.get(item, column.key);\n });\n const multiSelectEvent: ThyMultiSelectEvent = {\n event: event,\n row: row,\n rows: rows\n };\n this.thyOnMultiSelectChange.emit(multiSelectEvent);\n }\n\n public onRadioSelectChange(event: Event, row: SafeAny) {\n const radioSelectEvent: ThyRadioSelectEvent = {\n event: event,\n row: row\n };\n this.thyOnRadioSelectChange.emit(radioSelectEvent);\n }\n\n public onSwitchChange(event: Event, row: SafeAny, column: SafeAny) {\n const switchEvent: ThySwitchEvent = {\n event: event,\n row: row,\n refresh: (value: SafeAny) => {\n value = value || row;\n setTimeout(() => {\n value[column.key] = get(value, column.model);\n });\n }\n };\n this.thyOnSwitchChange.emit(switchEvent);\n }\n\n showExpand(row: SafeAny) {\n return row[this.thyChildrenKey] && row[this.thyChildrenKey].length > 0;\n }\n\n isExpanded(row: SafeAny) {\n return this.expandStatusMap[row[this.rowKey]];\n }\n\n iconIndentComputed(level: number) {\n if (this.mode === 'tree') {\n return level * this.thyIndent - 5;\n }\n }\n\n tdIndentComputed(level: number, column: SafeAny) {\n return {\n left: `${column.left}px`,\n right: `${column.right}px`,\n position: 'relative',\n paddingLeft: `${(level + 1) * this.thyIndent - 5}px`\n };\n }\n\n expandChildren(row: SafeAny) {\n if (this.isExpanded(row)) {\n this.expandStatusMap[row[this.rowKey]] = false;\n } else {\n this.expandStatusMap[row[this.rowKey]] = true;\n }\n }\n\n onDragGroupStarted(event: CdkDragStart<unknown>) {\n this.expandStatusMapOfGroupBeforeDrag = { ...this.expandStatusMapOfGroup };\n const groups = this.groups.filter(group => group.expand);\n this.foldGroups(groups);\n this.onDragStarted(event);\n this.cdr.detectChanges();\n }\n\n onDragGroupEnd(event: CdkDragEnd<unknown>) {\n const groups = this.groups.filter(group => this.expandStatusMapOfGroupBeforeDrag[group!.id!]);\n this.expandGroups(groups);\n this.cdr.detectChanges();\n }\n\n private onDragGroupDropped(event: CdkDragDrop<unknown>) {\n const group = this.groups.find(group => {\n return event.item.data.id === group.id;\n });\n if (group) {\n // drag group\n const dragEvent: ThyTableDraggableEvent = {\n model: event.item,\n models: this.groups,\n oldIndex: event.previousIndex,\n newIndex: event.currentIndex\n };\n moveItemInArray(this.groups, event.previousIndex, event.currentIndex);\n this.thyOnDraggableChange.emit(dragEvent);\n } else {\n // drag group children\n const group = this.groups.find(group => {\n return event.item.data[this.groupBy] === group.id;\n });\n const groupIndex =\n event.container.getSortedItems().findIndex(item => {\n return item.data.id === event.item.data[this.groupBy];\n }) + 1;\n const dragEvent: ThyTableDraggableEvent = {\n model: event.item,\n models: group!.children,\n oldIndex: event.previousIndex - groupIndex,\n newIndex: event.currentIndex - groupIndex\n };\n moveItemInArray(group!.children!, dragEvent.oldIndex!, dragEvent.newIndex!);\n this.thyOnDraggableChange.emit(dragEvent);\n }\n }\n\n onDragStarted(event: CdkDragStart<unknown>) {\n this.ngZone.runOutsideAngular(() =>\n setTimeout(() => {\n const preview = this.document.getElementsByClassName(this.dragPreviewClass)[0];\n const originalTds: HTMLCollection = event.source._dragRef.getPlaceholderElement()?.children;\n if (preview) {\n Array.from(preview?.children).forEach((element, index: number) => {\n (element as HTMLElement).style.width = `${originalTds[index]?.clientWidth}px`;\n });\n }\n })\n );\n }\n\n dropListEnterPredicate = (index: number, drag: CdkDrag, drop: CdkDropList) => {\n return drop.getSortedItems()[index].data.group_id === drag.data.group_id;\n };\n\n private onDragModelDropped(event: CdkDragDrop<unknown>) {\n const dragEvent: ThyTableDraggableEvent = {\n model: event.item,\n models: this.model,\n oldIndex: event.previousIndex,\n newIndex: event.currentIndex\n };\n moveItemInArray(this.model, event.previousIndex, event.currentIndex);\n this.thyOnDraggableChange.emit(dragEvent);\n }\n\n onDragDropped(event: CdkDragDrop<unknown>) {\n if (this.mode === 'group') {\n this.onDragGroupDropped(event);\n } else if (this.mode === 'list') {\n this.onDragModelDropped(event);\n }\n }\n\n onColumnHeaderClick(event: Event, column: ThyTableColumnComponent) {\n if (column.sortable) {\n const { sortDirection, model, sortChange } = column;\n let direction;\n if (sortDirection === ThyTableSortDirection.default) {\n direction = ThyTableSortDirection.desc;\n } else if (sortDirection === ThyTableSortDirection.desc) {\n direction = ThyTableSortDirection.asc;\n } else {\n direction = ThyTableSortDirection.default;\n }\n column.sortDirection = direction;\n const sortEvent = { event, key: model, direction };\n sortChange.emit(sortEvent);\n this.thySortChange.emit(sortEvent);\n }\n }\n\n public onRowClick(event: Event, row: SafeAny) {\n const next = this.onRowClickPropagationEventHandler(event, row);\n if (next) {\n if (this.wholeRowSelect) {\n const column = this.columns.find(item => {\n return item.type === customType.checkbox || item.type === customType.radio;\n });\n if (column && !column.disabled) {\n if (column.type === customType.checkbox) {\n row[column.key] = !row[column.key];\n this.onModelChange(row, column);\n this.onMultiSelectChange(event, row, column);\n }\n if (column.type === customType.radio) {\n this.selectedRadioRow = row;\n this.onRadioSelectChange(event, row);\n }\n }\n }\n const rowEvent = {\n event: event,\n row: row\n };\n this.thyOnRowClick.emit(rowEvent);\n }\n }\n\n private onRowClickPropagationEventHandler(event: Event, row: SafeAny): boolean {\n if ((event.target as Element).closest('.tree-expand-icon')) {\n this.expandChildren(row);\n return false;\n }\n return true;\n }\n\n public onRowContextMenu(event: Event, row: SafeAny) {\n const contextMenuEvent: ThyTableEvent = {\n event: event,\n row: row\n };\n this.thyOnRowContextMenu.emit(contextMenuEvent);\n }\n\n private _refreshColumns() {\n const components = this.columns || [];\n const _columns = components.map(component => {\n return {\n width: component.width,\n className: component.className\n };\n });\n\n this.columns.forEach((n, i) => {\n Object.assign(n, _columns[i]);\n });\n }\n\n private buildGroups(originGroups: SafeAny) {\n const originGroupsMap = helpers.keyBy(originGroups, 'id');\n this.groups = [];\n originGroups.forEach((origin: SafeAny) => {\n const group: ThyTableGroup = { id: origin[this.rowKey], children: [], origin };\n\n if (this.expandStatusMapOfGroup.hasOwnProperty(group!.id!)) {\n group.expand = this.expandStatusMapOfGroup[group!.id!];\n } else {\n group.expand = !!(originGroupsMap[group.id!] as SafeAny).expand;\n }\n\n this.groups.push(group);\n });\n }\n\n private buildModel() {\n const groupsMap = keyBy(this.groups, 'id');\n this.model.forEach(row => {\n const group = groupsMap[helpers.get(row, this.groupBy)];\n if (group) {\n group.children!.push(row);\n }\n });\n }\n\n public expandGroup(group: ThyTableGroup) {\n group.expand = !group.expand;\n this.expandStatusMapOfGroup[group.id!] = group.expand;\n }\n\n private expandGroups(groups: ThyTableGroup[]) {\n groups.forEach(group => {\n this.expandGroup(group);\n });\n }\n\n private foldGroups(groups: ThyTableGroup[]) {\n groups.forEach(group => {\n this.expandGroup(group);\n });\n }\n\n private updateScrollClass() {\n const scrollElement = this.tableScrollElement;\n const maxScrollLeft = scrollElement.scrollWidth - scrollElement.offsetWidth;\n const scrollX = scrollElement.scrollLeft;\n const lastScrollClassName = this.scrollClassName;\n this.scrollClassName = '';\n if (scrollElement.scrollWidth > scrollElement.clientWidth) {\n if (scrollX >= maxScrollLeft) {\n this.scrollClassName = css.tableScrollRight;\n } else if (scrollX === 0) {\n this.scrollClassName = css.tableScrollLeft;\n } else {\n this.scrollClassName = css.tableScrollMiddle;\n }\n }\n if (lastScrollClassName) {\n this.renderer.removeClass(this.tableScrollElement, lastScrollClassName);\n }\n if (this.scrollClassName) {\n this.renderer.addClass(this.tableScrollElement, this.scrollClassName);\n }\n }\n\n ngOnInit() {\n this.updateHostClassService.initializeElement(this.tableElementRef.nativeElement);\n this._setClass(true);\n this.initialized = true;\n\n merge(this.viewportRuler.change(200), of(null).pipe(delay(200)))\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this._refreshColumns();\n this.updateScrollClass();\n this.cdr.detectChanges();\n });\n\n this.ngZone.runOutsideAngular(() => {\n this.scroll$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.updateScrollClass();\n });\n });\n }\n\n private buildSkeletonColumns() {\n this.skeletonColumns = [];\n\n this.columns.forEach((column: ThyTableColumnComponent, index: number) => {\n const item = {\n type: this.thyColumnSkeletonTypes[index] || ThyTableColumnSkeletonType.default,\n width: column.width || 'auto'\n };\n this.skeletonColumns = [...this.skeletonColumns, item];\n });\n }\n\n ngAfterViewInit(): void {\n if (isPlatformServer(this.platformId)) {\n return;\n }\n\n this.rows.changes\n .pipe(\n startWith(this.rows),\n switchMap(\n () =>\n new Observable<Event>(subscriber =>\n this.ngZone.runOutsideAngular(() =>\n merge(\n ...this.rows.map(row =>\n fromEvent(\n row.nativeElement,\n // Note: there's no need to add touch, pointer and mouse event listeners together.\n // There can be any number of rows, which will lead to adding N * 3 event listeners.\n // According to the spec (https://www.w3.org/TR/pointerevents/#examples), we can use feature detection\n // to determine if pointer events are available. If pointer events are available, we have to listen only\n // to the `pointerdown` event. Otherwise, we have to determine if we're on a touch device or not.\n // Touch events are handled earlier than mouse events, tho not all user agents dispatch mouse events\n // after touch events. See the spec: https://www.w3.org/TR/touch-events/#mouse-events.\n window.PointerEvent\n ? 'pointerdown'\n : 'ontouchstart' in row.nativeElement\n ? 'touchstart'\n : 'mousedown',\n // Note: since Chrome 56 defaults document level `touchstart` listener to passive.\n // The element `touchstart` listener is not passive by default\n // We never call `preventDefault()` on it, so we're safe making it passive too.\n passiveEventListenerOptions as AddEventListenerOptions\n )\n )\n ).subscribe(subscriber)\n )\n )\n ),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(event => {\n if (!this.draggable) {\n event.stopPropagation();\n }\n });\n }\n\n ngOnChanges(simpleChanges: SimpleChanges) {\n const modeChange = simpleChanges.thyMode;\n const thyGroupsChange = simpleChanges.thyGroups;\n const isGroupMode = modeChange && modeChange.currentValue === 'group';\n if (isGroupMode && thyGroupsChange && thyGroupsChange.firstChange) {\n this.buildGroups(thyGroupsChange.currentValue);\n this.buildModel();\n }\n\n if (this._diff) {\n const changes = this._diff.diff(this.model);\n this._applyDiffChanges(changes);\n }\n }\n\n ngOnDestroy() {\n this._destroyInvalidAttribute();\n }\n}\n","<div\n class=\"thy-table-body\"\n cdkScrollable\n [ngClass]=\"{\n 'thy-table-fixed': hasFixed,\n 'thy-table-bordered-theme': theme === 'bordered' && hasFixed,\n 'thy-table-body-empty': loadingDone && model?.length === 0 && groups?.length === 0\n }\">\n <table\n #table\n class=\"table\"\n [ngClass]=\"[className]\"\n [class.table-fixed]=\"thyLayoutFixed\"\n [class.table-draggable]=\"draggable\"\n [class.table-group]=\"mode === 'group'\"\n [ngStyle]=\"{ 'min-width': thyMinWidth }\">\n <colgroup>\n @for (column of columns; track $index) {\n <col [width]=\"column.width\" [ngStyle]=\"{ minWidth: hasFixed ? column.width : column.minWidth }\" />\n }\n </colgroup>\n\n @if (!thyHeadless) {\n <thead>\n <tr>\n @for (column of columns; track $index) {\n <th\n [ngClass]=\"column.headerClassName\"\n [class.thy-table-column-sortable]=\"column.sortable\"\n [class.thy-table-fixed-column-left]=\"column.fixed === fixedDirection.left\"\n [class.thy-table-fixed-column-right]=\"column.fixed === fixedDirection.right\"\n [ngStyle]=\"{ left: column.left + 'px', right: column.right + 'px' }\"\n (click)=\"onColumnHeaderClick($event, column)\">\n @if (!column.headerTemplateRef) {\n <span>{{ column.title }}</span>\n }\n @if (column.headerTemplateRef) {\n <ng-template [ngTemplateOutlet]=\"column.headerTemplateRef\" [ngTemplateOutletContext]=\"{ $implicit: column }\"></ng-template>\n }\n @if (column.sortable) {\n <thy-icon [ngClass]=\"['thy-table-column-sortable-icon', 'px-1', column.sortDirection]\" thyIconName=\"sort-vertical-tt\">\n </thy-icon>\n }\n </th>\n }\n </tr>\n </thead>\n }\n\n @if (loadingDone) {\n <tbody\n thyDragDrop\n cdkDropList\n [cdkDropListDisabled]=\"!draggable\"\n [cdkDropListSortPredicate]=\"dropListEnterPredicate\"\n (cdkDropListDropped)=\"onDragDropped($event)\">\n <!-- group -->\n @if (mode === 'group') {\n @for (group of groups; track group.id) {\n <tr\n class=\"thy-table-group\"\n (click)=\"expandGroup(group)\"\n cdkDrag\n [cdkDragPreviewClass]=\"dragPreviewClass\"\n [cdkDragData]=\"group\"\n [cdkDragDisabled]=\"group | tableRowDragDisabled: thyDragDisabledPredicate\"\n (cdkDragStarted)=\"onDragGroupStarted($event)\"\n (cdkDragEnded)=\"onDragGroupEnd($event)\">\n <td [attr.colspan]=\"columns.length\">\n <div class=\"thy-table-group-container\">\n @if (draggable && !(group | tableRowDragDisabled: thyDragDisabledPredicate)) {\n <thy-icon class=\"table-draggable-icon\" thyIconName=\"drag\"></thy-icon>\n }\n <thy-icon class=\"expand-icon\" [thyIconName]=\"group.expand ? 'angle-down' : 'angle-right'\"></thy-icon>\n @if (groupTemplate) {\n <ng-template\n [ngTemplateOutlet]=\"groupTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: group.origin, group: group.origin }\"></ng-template>\n }\n </div>\n </td>\n </tr>\n @if (group.children?.length && group.expand) {\n @for (row of group.children; track $index; let i = $index) {\n <ng-template\n [ngTemplateOutlet]=\"trTemplate\"\n [ngTemplateOutletContext]=\"{\n row: row,\n index: i,\n level: 0\n }\"></ng-template>\n }\n }\n }\n }\n <!-- list模式下没有直接使用item模板,是因为使用了模板影响了Angular的依赖树,导致CdkDragDrop排序失效,目前这样修改可以暂时解决线上不能排序的问题,Tree模式的排序暂时不支持 -->\n @if (mode === 'list') {\n @for (row of model; track $index; let i = $index) {\n <tr\n #rows\n class=\"thy-sortable-item\"\n cdkDrag\n [cdkDragPreviewClass]=\"dragPreviewClass\"\n [cdkDragData]=\"row\"\n [cdkDragDisabled]=\"row | tableRowDragDisabled: thyDragDisabledPredicate\"\n (cdkDragStarted)=\"onDragStarted($event)\"\n [ngClass]=\"renderRowClassName(row, i)\"\n (click)=\"onRowClick($event, row)\"\n (thyContextMenu)=\"onRowContextMenu($event, row)\">\n <ng-template\n [ngTemplateOutlet]=\"tdsTemplate\"\n [ngTemplateOutletContext]=\"{\n row: row,\n index: i,\n level: 0\n }\"></ng-template>\n </tr>\n }\n }\n @if (mode === 'tree') {\n @for (row of model; track trackByFn(i, row); let i = $index) {\n <ng-template [ngTemplateOutlet]=\"trTemplate\" [ngTemplateOutletContext]=\"{ row: row, index: i, level: 0 }\"></ng-template>\n }\n }\n <ng-template #trTemplate let-row=\"row\" let-i=\"index\" let-level=\"level\">\n <tr\n #rows\n class=\"thy-sortable-item\"\n cdkDrag\n [cdkDragPreviewClass]=\"dragPreviewClass\"\n [cdkDragData]=\"row\"\n (cdkDragStarted)=\"onDragStarted($event)\"\n [cdkDragDisabled]=\"row | tableRowDragDisabled: thyDragDisabledPredicate\"\n [ngClass]=\"renderRowClassName(row, i)\"\n (click)=\"onRowClick($event, row)\"\n (thyContextMenu)=\"onRowContextMenu($event, row)\">\n <ng-template\n [ngTemplateOutlet]=\"tdsTemplate\"\n [ngTemplateOutletContext]=\"{\n row: row,\n index: i,\n level: level + 1\n }\"></ng-template>\n </tr>\n @if (mode === 'tree' && isExpanded(row)) {\n @for (child of row[thyChildrenKey]; track trackByFn(j, child); let j = $index) {\n <ng-template\n [ngTemplateOutlet]=\"trTemplate\"\n [ngTemplateOutletContext]=\"{ row: child, index: j, level: level + 1 }\"></ng-template>\n }\n }\n </ng-template>\n <ng-template #tdsTemplate let-row=\"row\" let-i=\"index\" let-level=\"level\">\n @for (column of columns; track $index; let j = $index) {\n <td\n [ngClass]=\"column.className\"\n [class.thy-operation-links]=\"!!column.operational\"\n [class.thy-table-column-secondary]=\"!!column.secondary\"\n [class.thy-table-checkbox-column]=\"column.type === customType.checkbox\"\n [class.thy-table-fixed-column-left]=\"column.fixed === fixedDirection.left\"\n [class.thy-table-fixed-column-right]=\"column.fixed === fixedDirection.right\"\n [ngStyle]=\"\n mode === 'tree' && column.expand\n ? tdIndentComputed(level, column)\n : { left: column.left + 'px', right: column.right + 'px' }\n \">\n @if (j === 0 && draggable && !(row | tableRowDragDisabled: thyDragDisabledPredicate)) {\n <thy-icon class=\"table-draggable-icon\" thyIconName=\"drag\"></thy-icon>\n }\n <!--template-->\n @if (isTemplateRef(column.cellTemplateRef)) {\n @if (mode === 'tree' && column.expand) {\n <thy-icon\n class=\"tree-expand-icon cursor-pointer\"\n [thyIconName]=\"isExpanded(row) ? 'angle-down' : 'angle-right'\"\n [style.visibility]=\"showExpand(row) ? 'visible' : 'hidden'\"\n [style.left.px]=\"iconIndentComputed(level)\"></thy-icon>\n }\n <ng-template [ngTemplateOutlet]=\"column.cellTemplateRef\" [ngTemplateOutletContext]=\"{ $implicit: row }\"></ng-template>\n }\n <!--not template-->\n @if (!isTemplateRef(column.cellTemplateRef)) {\n <!-- default -->\n @if (column.model && !column.type) {\n @if (mode === 'tree' && column.expand) {\n <thy-icon\n class=\"tree-expand-icon cursor-pointer\"\n [thyIconName]=\"isExpanded(row) ? 'angle-down' : 'angle-right'\"\n [style.visibility]=\"showExpand(row) ? 'visible' : 'hidden'\"\n [style.marginLeft.px]=\"iconIndentComputed(level)\"></thy-icon>\n }\n @if (getModelValue(row, column.model) | isValidModelValue) {\n {{ getModelValue(row, column.model) }}\n } @else {\n @if (column.defaultText) {\n <div class=\"text-desc\">\n {{ column.defaultText }}\n </div>\n }\n }\n <ng-template #default>\n @if (column.defaultText) {\n <div class=\"text-desc\">\n {{ column.defaultText }}\n </div>\n }\n </ng-template>\n }\n <!-- index -->\n @if (column.type === customType.index) {\n {{ i + 1 }}\n }\n <!-- checkbox -->\n @if (column.type === customType.checkbox) {\n <input\n type=\"checkbox\"\n [(ngModel)]=\"row[column.key]\"\n (ngModelChange)=\"onCheckboxChange(row, column)\"\n (click)=\"onStopPropagation($event)\"\n [disabled]=\"column.disabled\" />\n }\n <!-- radio -->\n @if (column.type === customType.radio) {\n <input\n type=\"radio\"\n [(ngModel)]=\"selectedRadioRow\"\n [value]=\"row\"\n [disabled]=\"column.disabled\"\n (click)=\"onStopPropagation($event)\"\n (change)=\"onRadioSelectChange($event, row)\" />\n }\n <!-- switch -->\n @if (column.type === customType.switch) {\n <thy-switch\n [(ngModel)]=\"row[column.key]\"\n (ngModelChange)=\"onModelChange(row, column)\"\n [disabled]=\"column.disabled\"\n (thyChange)=\"onSwitchChange($event, row, column)\"></thy-switch>\n }\n }\n </td>\n }\n </ng-template>\n </tbody>\n }\n </table>\n\n @if (loadingDone && model.length === 0 && groups.length === 0) {\n <div class=\"thy-table-empty clear-hover\">\n @if (emptyTemplate) {\n <ng-template [ngTemplateOutlet]=\"emptyTemplate\"></ng-template>\n } @else {\n <thy-empty\n [thyMessage]=\"emptyOptions.message\"\n [thyTranslationKey]=\"emptyOptions.translationKey\"\n [thyTranslationValues]=\"emptyOptions.translationValues\"\n [thyEntityName]=\"emptyOptions.entityName\"\n [thyEntityNameTranslateKey]=\"emptyOptions.entityNameTranslateKey\"\n [thyIconName]=\"emptyOptions.iconName\"\n [thySize]=\"emptyOptions.size\"\n [thyMarginTop]=\"emptyOptions.marginTop\"\n [thyTopAuto]=\"emptyOptions.topAuto\"\n [thyContainer]=\"emptyOptions.container\"></thy-empty>\n }\n </div>\n }\n\n @if (!loadingDone) {\n <thy-table-skeleton\n [thyRowCount]=\"6\"\n [thyHeadless]=\"true\"\n [thyTheme]=\"theme\"\n [thySize]=\"size\"\n [thyMinWidth]=\"thyMinWidth\"\n [thyColumns]=\"skeletonColumns\">\n </thy-table-skeleton>\n }\n\n @if (pagination?.total > pagination?.size) {\n <div class=\"thy-table-footer\" [class.thy-table-footer-has-padding]=\"theme === 'default'\">\n <thy-pagination\n [thyPageIndex]=\"pagination.index\"\n [thyTotal]=\"pagination.total\"\n [thyPageSize]=\"pagination.size\"\n [thyPageSizeOptions]=\"pagination.sizeOptions\"\n [thyShowSizeChanger]=\"showSizeChanger\"\n [thyShowTotal]=\"showTotal\"\n (thyPageChanged)=\"onPageChange($event)\"\n (thyPageIndexChange)=\"onPageIndexChange($event)\"\n (thyPageSizeChanged)=\"onPageSizeChange($event)\"></thy-pagination>\n </div>\n }\n</div>\n\n<ng-template>\n <ng-content></ng-content>\n</ng-template>\n","import { ThyEmptyModule } from 'ngx-tethys/empty';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyLoadingModule } from 'ngx-tethys/loading';\nimport { ThyPaginationModule } from 'ngx-tethys/pagination';\nimport { ThySharedModule } from 'ngx-tethys/shared';\nimport { ThySwitchModule } from 'ngx-tethys/switch';\nimport { ThySkeletonModule } from 'ngx-tethys/skeleton';\n\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { TableRowDragDisabledPipe } from './pipes/drag.pipe';\nimport { TableIsValidModelValuePipe } from './pipes/table.pipe';\nimport { ThyTableColumnComponent } from './table-column.component';\nimport { ThyTable } from './table.component';\nimport { ThyTableSkeleton } from './table-skeleton.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ThyPaginationModule,\n ThySwitchModule,\n ThyLoadingModule,\n ThyEmptyModule,\n ThySharedModule,\n ThySkeletonModule,\n ThyIconModule,\n DragDropModule,\n ScrollingModule,\n ThyTable,\n ThyTableColumnComponent,\n TableIsValidModelValuePipe,\n TableRowDragDisabledPipe,\n ThyTableSkeleton\n ],\n exports: [ThyTable, ThyTableColumnComponent, ThyTableSkeleton]\n})\nexport class ThyTableModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}