@ng-nest/ui 21.0.3 → 21.0.4

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 (173) hide show
  1. package/fesm2022/ng-nest-ui-affix.mjs +12 -12
  2. package/fesm2022/ng-nest-ui-affix.mjs.map +1 -1
  3. package/fesm2022/ng-nest-ui-alert.mjs +22 -24
  4. package/fesm2022/ng-nest-ui-alert.mjs.map +1 -1
  5. package/fesm2022/ng-nest-ui-anchor.mjs +19 -19
  6. package/fesm2022/ng-nest-ui-anchor.mjs.map +1 -1
  7. package/fesm2022/ng-nest-ui-api.mjs +7 -7
  8. package/fesm2022/ng-nest-ui-attachments.mjs +22 -22
  9. package/fesm2022/ng-nest-ui-attachments.mjs.map +1 -1
  10. package/fesm2022/ng-nest-ui-auto-complete.mjs +26 -30
  11. package/fesm2022/ng-nest-ui-auto-complete.mjs.map +1 -1
  12. package/fesm2022/ng-nest-ui-avatar.mjs +17 -17
  13. package/fesm2022/ng-nest-ui-avatar.mjs.map +1 -1
  14. package/fesm2022/ng-nest-ui-back-top.mjs +13 -13
  15. package/fesm2022/ng-nest-ui-back-top.mjs.map +1 -1
  16. package/fesm2022/ng-nest-ui-badge.mjs +16 -16
  17. package/fesm2022/ng-nest-ui-badge.mjs.map +1 -1
  18. package/fesm2022/ng-nest-ui-base-form.mjs +13 -13
  19. package/fesm2022/ng-nest-ui-base-form.mjs.map +1 -1
  20. package/fesm2022/ng-nest-ui-bubble.mjs +20 -20
  21. package/fesm2022/ng-nest-ui-bubble.mjs.map +1 -1
  22. package/fesm2022/ng-nest-ui-button.mjs +31 -31
  23. package/fesm2022/ng-nest-ui-button.mjs.map +1 -1
  24. package/fesm2022/ng-nest-ui-calendar.mjs +10 -10
  25. package/fesm2022/ng-nest-ui-card.mjs +11 -11
  26. package/fesm2022/ng-nest-ui-card.mjs.map +1 -1
  27. package/fesm2022/ng-nest-ui-carousel.mjs +24 -24
  28. package/fesm2022/ng-nest-ui-carousel.mjs.map +1 -1
  29. package/fesm2022/ng-nest-ui-cascade.mjs +25 -29
  30. package/fesm2022/ng-nest-ui-cascade.mjs.map +1 -1
  31. package/fesm2022/ng-nest-ui-checkbox.mjs +22 -22
  32. package/fesm2022/ng-nest-ui-checkbox.mjs.map +1 -1
  33. package/fesm2022/ng-nest-ui-collapse.mjs +22 -22
  34. package/fesm2022/ng-nest-ui-collapse.mjs.map +1 -1
  35. package/fesm2022/ng-nest-ui-color-picker.mjs +25 -25
  36. package/fesm2022/ng-nest-ui-color-picker.mjs.map +1 -1
  37. package/fesm2022/ng-nest-ui-color.mjs +10 -10
  38. package/fesm2022/ng-nest-ui-comment.mjs +19 -19
  39. package/fesm2022/ng-nest-ui-comment.mjs.map +1 -1
  40. package/fesm2022/ng-nest-ui-container.mjs +34 -34
  41. package/fesm2022/ng-nest-ui-container.mjs.map +1 -1
  42. package/fesm2022/ng-nest-ui-core.mjs +18 -18
  43. package/fesm2022/ng-nest-ui-coversations.mjs +11 -11
  44. package/fesm2022/ng-nest-ui-coversations.mjs.map +1 -1
  45. package/fesm2022/ng-nest-ui-crumb.mjs +11 -11
  46. package/fesm2022/ng-nest-ui-crumb.mjs.map +1 -1
  47. package/fesm2022/ng-nest-ui-date-picker.mjs +87 -87
  48. package/fesm2022/ng-nest-ui-date-picker.mjs.map +1 -1
  49. package/fesm2022/ng-nest-ui-description.mjs +20 -20
  50. package/fesm2022/ng-nest-ui-description.mjs.map +1 -1
  51. package/fesm2022/ng-nest-ui-dialog.mjs +58 -58
  52. package/fesm2022/ng-nest-ui-dialog.mjs.map +1 -1
  53. package/fesm2022/ng-nest-ui-doc.mjs +7 -7
  54. package/fesm2022/ng-nest-ui-drag.mjs +10 -10
  55. package/fesm2022/ng-nest-ui-drawer.mjs +34 -34
  56. package/fesm2022/ng-nest-ui-drawer.mjs.map +1 -1
  57. package/fesm2022/ng-nest-ui-dropdown.mjs +21 -21
  58. package/fesm2022/ng-nest-ui-dropdown.mjs.map +1 -1
  59. package/fesm2022/ng-nest-ui-empty.mjs +10 -10
  60. package/fesm2022/ng-nest-ui-examples.mjs +7 -7
  61. package/fesm2022/ng-nest-ui-find.mjs +31 -35
  62. package/fesm2022/ng-nest-ui-find.mjs.map +1 -1
  63. package/fesm2022/ng-nest-ui-form.mjs +21 -21
  64. package/fesm2022/ng-nest-ui-form.mjs.map +1 -1
  65. package/fesm2022/ng-nest-ui-highlight.mjs +14 -14
  66. package/fesm2022/ng-nest-ui-highlight.mjs.map +1 -1
  67. package/fesm2022/ng-nest-ui-i18n.mjs +32 -31
  68. package/fesm2022/ng-nest-ui-i18n.mjs.map +1 -1
  69. package/fesm2022/ng-nest-ui-icon.mjs +14 -14
  70. package/fesm2022/ng-nest-ui-icon.mjs.map +1 -1
  71. package/fesm2022/ng-nest-ui-image.mjs +21 -21
  72. package/fesm2022/ng-nest-ui-image.mjs.map +1 -1
  73. package/fesm2022/ng-nest-ui-inner.mjs +11 -11
  74. package/fesm2022/ng-nest-ui-inner.mjs.map +1 -1
  75. package/fesm2022/ng-nest-ui-input-number.mjs +21 -21
  76. package/fesm2022/ng-nest-ui-input-number.mjs.map +1 -1
  77. package/fesm2022/ng-nest-ui-input.mjs +36 -40
  78. package/fesm2022/ng-nest-ui-input.mjs.map +1 -1
  79. package/fesm2022/ng-nest-ui-keyword.mjs +11 -11
  80. package/fesm2022/ng-nest-ui-keyword.mjs.map +1 -1
  81. package/fesm2022/ng-nest-ui-layout.mjs +25 -25
  82. package/fesm2022/ng-nest-ui-layout.mjs.map +1 -1
  83. package/fesm2022/ng-nest-ui-link.mjs +13 -13
  84. package/fesm2022/ng-nest-ui-link.mjs.map +1 -1
  85. package/fesm2022/ng-nest-ui-list.mjs +41 -41
  86. package/fesm2022/ng-nest-ui-list.mjs.map +1 -1
  87. package/fesm2022/ng-nest-ui-loading.mjs +14 -14
  88. package/fesm2022/ng-nest-ui-loading.mjs.map +1 -1
  89. package/fesm2022/ng-nest-ui-menu.mjs +22 -22
  90. package/fesm2022/ng-nest-ui-menu.mjs.map +1 -1
  91. package/fesm2022/ng-nest-ui-message-box.mjs +10 -10
  92. package/fesm2022/ng-nest-ui-message.mjs +10 -10
  93. package/fesm2022/ng-nest-ui-notification.mjs +10 -10
  94. package/fesm2022/ng-nest-ui-outlet.mjs +7 -7
  95. package/fesm2022/ng-nest-ui-page-header.mjs +10 -10
  96. package/fesm2022/ng-nest-ui-pagination.mjs +27 -31
  97. package/fesm2022/ng-nest-ui-pagination.mjs.map +1 -1
  98. package/fesm2022/ng-nest-ui-pattern.mjs +7 -7
  99. package/fesm2022/ng-nest-ui-popconfirm.mjs +14 -14
  100. package/fesm2022/ng-nest-ui-popconfirm.mjs.map +1 -1
  101. package/fesm2022/ng-nest-ui-popover.mjs +19 -19
  102. package/fesm2022/ng-nest-ui-popover.mjs.map +1 -1
  103. package/fesm2022/ng-nest-ui-portal.mjs +7 -7
  104. package/fesm2022/ng-nest-ui-progress.mjs +22 -22
  105. package/fesm2022/ng-nest-ui-progress.mjs.map +1 -1
  106. package/fesm2022/ng-nest-ui-prompts.mjs +12 -12
  107. package/fesm2022/ng-nest-ui-prompts.mjs.map +1 -1
  108. package/fesm2022/ng-nest-ui-radio.mjs +20 -20
  109. package/fesm2022/ng-nest-ui-radio.mjs.map +1 -1
  110. package/fesm2022/ng-nest-ui-rate.mjs +15 -15
  111. package/fesm2022/ng-nest-ui-rate.mjs.map +1 -1
  112. package/fesm2022/ng-nest-ui-resizable.mjs +14 -14
  113. package/fesm2022/ng-nest-ui-resizable.mjs.map +1 -1
  114. package/fesm2022/ng-nest-ui-result.mjs +10 -10
  115. package/fesm2022/ng-nest-ui-ripple.mjs +12 -12
  116. package/fesm2022/ng-nest-ui-ripple.mjs.map +1 -1
  117. package/fesm2022/ng-nest-ui-scrollable.mjs +19 -7
  118. package/fesm2022/ng-nest-ui-scrollable.mjs.map +1 -1
  119. package/fesm2022/ng-nest-ui-select.mjs +35 -39
  120. package/fesm2022/ng-nest-ui-select.mjs.map +1 -1
  121. package/fesm2022/ng-nest-ui-sender.mjs +19 -19
  122. package/fesm2022/ng-nest-ui-sender.mjs.map +1 -1
  123. package/fesm2022/ng-nest-ui-skeleton.mjs +13 -13
  124. package/fesm2022/ng-nest-ui-skeleton.mjs.map +1 -1
  125. package/fesm2022/ng-nest-ui-slider-select.mjs +21 -21
  126. package/fesm2022/ng-nest-ui-slider-select.mjs.map +1 -1
  127. package/fesm2022/ng-nest-ui-slider.mjs +16 -18
  128. package/fesm2022/ng-nest-ui-slider.mjs.map +1 -1
  129. package/fesm2022/ng-nest-ui-statistic.mjs +16 -16
  130. package/fesm2022/ng-nest-ui-steps.mjs +14 -14
  131. package/fesm2022/ng-nest-ui-steps.mjs.map +1 -1
  132. package/fesm2022/ng-nest-ui-suggestion.mjs +17 -17
  133. package/fesm2022/ng-nest-ui-suggestion.mjs.map +1 -1
  134. package/fesm2022/ng-nest-ui-switch.mjs +15 -15
  135. package/fesm2022/ng-nest-ui-switch.mjs.map +1 -1
  136. package/fesm2022/ng-nest-ui-table-view.mjs +58 -58
  137. package/fesm2022/ng-nest-ui-table.mjs +90 -112
  138. package/fesm2022/ng-nest-ui-table.mjs.map +1 -1
  139. package/fesm2022/ng-nest-ui-tabs.mjs +38 -40
  140. package/fesm2022/ng-nest-ui-tabs.mjs.map +1 -1
  141. package/fesm2022/ng-nest-ui-tag.mjs +16 -16
  142. package/fesm2022/ng-nest-ui-tag.mjs.map +1 -1
  143. package/fesm2022/ng-nest-ui-text-retract.mjs +11 -11
  144. package/fesm2022/ng-nest-ui-text-retract.mjs.map +1 -1
  145. package/fesm2022/ng-nest-ui-textarea.mjs +19 -19
  146. package/fesm2022/ng-nest-ui-textarea.mjs.map +1 -1
  147. package/fesm2022/ng-nest-ui-theme.mjs +12 -12
  148. package/fesm2022/ng-nest-ui-theme.mjs.map +1 -1
  149. package/fesm2022/ng-nest-ui-thought-chain.mjs +12 -12
  150. package/fesm2022/ng-nest-ui-thought-chain.mjs.map +1 -1
  151. package/fesm2022/ng-nest-ui-time-ago.mjs +7 -7
  152. package/fesm2022/ng-nest-ui-time-picker.mjs +28 -28
  153. package/fesm2022/ng-nest-ui-time-picker.mjs.map +1 -1
  154. package/fesm2022/ng-nest-ui-time-range.mjs +7 -7
  155. package/fesm2022/ng-nest-ui-timeline.mjs +12 -12
  156. package/fesm2022/ng-nest-ui-timeline.mjs.map +1 -1
  157. package/fesm2022/ng-nest-ui-tooltip.mjs +17 -17
  158. package/fesm2022/ng-nest-ui-tooltip.mjs.map +1 -1
  159. package/fesm2022/ng-nest-ui-transfer.mjs +14 -14
  160. package/fesm2022/ng-nest-ui-transfer.mjs.map +1 -1
  161. package/fesm2022/ng-nest-ui-tree-file.mjs +17 -17
  162. package/fesm2022/ng-nest-ui-tree-file.mjs.map +1 -1
  163. package/fesm2022/ng-nest-ui-tree-select.mjs +36 -42
  164. package/fesm2022/ng-nest-ui-tree-select.mjs.map +1 -1
  165. package/fesm2022/ng-nest-ui-tree.mjs +44 -46
  166. package/fesm2022/ng-nest-ui-tree.mjs.map +1 -1
  167. package/fesm2022/ng-nest-ui-typography.mjs +10 -10
  168. package/fesm2022/ng-nest-ui-upload.mjs +24 -24
  169. package/fesm2022/ng-nest-ui-upload.mjs.map +1 -1
  170. package/fesm2022/ng-nest-ui-welcome.mjs +10 -10
  171. package/package.json +1 -1
  172. package/types/ng-nest-ui-i18n.d.ts +13 -11
  173. package/types/ng-nest-ui-scrollable.d.ts +6 -0
@@ -1 +1 @@
1
- {"version":3,"file":"ng-nest-ui-transfer.mjs","sources":["../../../../lib/ng-nest/ui/transfer/transfer.property.ts","../../../../lib/ng-nest/ui/transfer/transfer.component.ts","../../../../lib/ng-nest/ui/transfer/transfer.component.html","../../../../lib/ng-nest/ui/transfer/transfer.module.ts","../../../../lib/ng-nest/ui/transfer/ng-nest-ui-transfer.ts"],"sourcesContent":["import { XToBoolean, XToDataConvert } from '@ng-nest/ui/core';\r\nimport { TemplateRef, Component, input, model } from '@angular/core';\r\nimport { XFormControlFunction } from '@ng-nest/ui/base-form';\r\nimport { XTableColumn } from '@ng-nest/ui/table';\r\nimport type { XData, XParentIdentityProperty, XBoolean, XQuery, XStyleMap, XTemplate } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Transfer\r\n * @selector x-transfer\r\n * @decorator component\r\n */\r\nexport const XTransferPrefix = 'x-transfer';\r\nconst X_TRANSFER_CONFIG_NAME = 'transfer';\r\n\r\n/**\r\n * Transfer Property\r\n */\r\n@Component({ selector: `${XTransferPrefix}-property`, template: '' })\r\nexport class XTransferProperty extends XFormControlFunction(X_TRANSFER_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 数据对象\r\n * @en_US Data object\r\n */\r\n readonly data = input<XData<XTransferNode>, XData<XTransferNode>>([], { transform: XToDataConvert });\r\n /**\r\n * @zh_CN 选择的类型\r\n * @en_US Type\r\n */\r\n readonly type = input<XTransferType>(this.config?.type ?? 'list');\r\n /**\r\n * @zh_CN 标题\r\n * @en_US Title\r\n * @default ['List', 'Selected']\r\n */\r\n readonly titles = input<string[] | null>(this.config?.titles ?? null);\r\n /**\r\n * @zh_CN 穿梭框样式,使用方式与 ngStyle 相同\r\n * @en_US shuttle box style, same as ngStyle\r\n */\r\n readonly listStyle = input<XTransferListStyle | null>(this.config?.listStyle ?? null);\r\n /**\r\n * @zh_CN 隐藏全选复选框\r\n * @en_US Hidden check all\r\n */\r\n readonly hiddenCheckAll = input<boolean[]>();\r\n /**\r\n * @zh_CN 是否能拖动, type\r\n * @en_US Can drag\r\n */\r\n readonly drag = input<boolean, XBoolean>(this.config?.drag ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 是否显示搜索。type 为 'table',需要设置 tableHeadSearchTpl 和 tableQuery 来配合使用\r\n * @en_US Whether to display search\r\n */\r\n readonly search = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 表格列头搜索自定义模板\r\n * @en_US table head search custom template\r\n */\r\n readonly tableHeadSearchTpl = input<XTemplate[]>();\r\n /**\r\n * @zh_CN 行数据自定义模板\r\n * @en_US Data customization template\r\n */\r\n readonly nodeTpl = input<TemplateRef<void>>();\r\n /**\r\n * @zh_CN 标题自定义模板\r\n * @en_US Title custom template\r\n */\r\n readonly titleTpl = input<TemplateRef<void>>();\r\n /**\r\n * @zh_CN 底部自定义模版\r\n * @en_US Bottom Custom Template\r\n */\r\n readonly footerTpl = input<TemplateRef<void>[]>();\r\n /**\r\n * @zh_CN 表格列集合\r\n * @en_US Table column set\r\n */\r\n readonly tableColumns = input<XTableColumn[]>();\r\n /**\r\n * @zh_CN 表格页码\r\n * @en_US Table page number\r\n */\r\n readonly tableIndex = model<number>(1);\r\n /**\r\n * @zh_CN 表每页数据条数\r\n * @en_US Number of data items per page\r\n */\r\n readonly tableSize = model<number>(10);\r\n /**\r\n * @zh_CN 表格查询条件\r\n * @en_US Number of data items per page\r\n */\r\n readonly tableQuery = input<XQuery>({});\r\n /**\r\n * @zh_CN 表格数据总条数\r\n * @en_US Total number of table data\r\n */\r\n readonly tableTotal = model<number>(0);\r\n /**\r\n * @zh_CN 反选操作\r\n * @en_US Inverse select\r\n */\r\n readonly inverse = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n}\r\n\r\n/**\r\n * Transfer Node\r\n */\r\nexport interface XTransferNode extends XParentIdentityProperty<XTransferNode> {\r\n /**\r\n * @zh_CN checkbox 是否选中\r\n * @en_US whether checkbox is selected\r\n */\r\n checked?: boolean;\r\n /**\r\n * @zh_CN 序号\r\n * @en_US Serial number\r\n */\r\n index?: number;\r\n /**\r\n * @zh_CN 自定义属性\r\n * @en_US Custom property\r\n */\r\n [property: string]: any;\r\n}\r\n\r\n/**\r\n * Transfer Source\r\n */\r\nexport interface XTransferSource {\r\n /**\r\n * @zh_CN 标题\r\n * @en_US Title\r\n */\r\n title?: string;\r\n /**\r\n * @zh_CN 搜索的数据\r\n * @en_US Searched data\r\n */\r\n searchInput?: string;\r\n /**\r\n * @zh_CN 全选\r\n * @en_US Select all\r\n */\r\n checkedAll?: boolean;\r\n /**\r\n * @zh_CN 选中的数量\r\n * @en_US Selected quantity\r\n */\r\n checkedCount?: number;\r\n /**\r\n * @zh_CN 可选择的数据总数\r\n * @en_US Total number of selectable data\r\n */\r\n count?: number;\r\n /**\r\n * @zh_CN 不确定状态的样式\r\n * @en_US Uncertain state style\r\n */\r\n indeterminate?: boolean;\r\n /**\r\n * @zh_CN 列表数据\r\n * @en_US List data\r\n */\r\n list?: XTransferNode[];\r\n /**\r\n * @zh_CN 搜索数据,用来还原\r\n * @en_US Search data to restore\r\n */\r\n searchList?: XTransferNode[];\r\n /**\r\n * @zh_CN 按钮禁用\r\n * @en_US Button disabled\r\n */\r\n disabledButton?: boolean;\r\n /**\r\n * @zh_CN 隐藏全选复选框\r\n * @en_US Hidden check all\r\n */\r\n hiddenCheckAll?: boolean;\r\n /**\r\n * @zh_CN 列表样式\r\n * @en_US List style\r\n */\r\n listStyle?: XStyleMap;\r\n /**\r\n * @zh_CN 数据方向\r\n * @en_US Data direction\r\n */\r\n direction?: XTransferDirection;\r\n /**\r\n * @zh_CN 底部自定义模版\r\n * @en_US Bottom Custom Template\r\n */\r\n footerTpl?: TemplateRef<any>;\r\n /**\r\n * @zh_CN 表格列头搜索自定义模板\r\n * @en_US table head search custom template\r\n */\r\n tableHeadSearchTpl?: XTemplate;\r\n}\r\n\r\n/**\r\n * @zh_CN 数据方向\r\n * @en_US Transfer direction\r\n */\r\nexport type XTransferDirection = 'left' | 'right';\r\n\r\n/**\r\n * @zh_CN 数据类型\r\n * @en_US Transfer type\r\n */\r\nexport type XTransferType = 'list' | 'tree' | 'table';\r\n\r\n/**\r\n * @zh_CN 穿梭框样式,使用方式与 ngStyle 相同\r\n * @en_US shuttle box style, same as ngStyle\r\n */\r\nexport type XTransferListStyle = XStyleMap | XStyleMap[];\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n SimpleChanges,\r\n OnChanges,\r\n OnDestroy,\r\n inject,\r\n viewChild,\r\n signal,\r\n computed\r\n} from '@angular/core';\r\nimport { XTransferPrefix, XTransferNode, XTransferSource, XTransferProperty, XTransferType } from './transfer.property';\r\nimport {\r\n XIsChange,\r\n XIsEmpty,\r\n XSetData,\r\n XRemove,\r\n XIsArray,\r\n XIsObject,\r\n XIsObjectArray,\r\n XIsBoolean,\r\n XIsFunction,\r\n XResultList,\r\n XIsUndefined\r\n} from '@ng-nest/ui/core';\r\nimport { Subject } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged, map, takeUntil } from 'rxjs/operators';\r\nimport { transferArrayItem, moveItemInArray, CdkDragDrop, CdkDrag, DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { XValueAccessor } from '@ng-nest/ui/base-form';\r\nimport { XI18nPipe, XI18nService, XI18nTransfer, zh_CN } from '@ng-nest/ui/i18n';\r\nimport { XTreeComponent, XTreeNode } from '@ng-nest/ui/tree';\r\nimport { XTableColumn, XTableComponent, XTableHeadCheckbox } from '@ng-nest/ui/table';\r\nimport { NgStyle, NgTemplateOutlet } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\nimport { XCheckboxComponent } from '@ng-nest/ui/checkbox';\r\nimport { XButtonComponent } from '@ng-nest/ui/button';\r\nimport { XInputComponent } from '@ng-nest/ui/input';\r\nimport { XKeywordDirective } from '@ng-nest/ui/keyword';\r\nimport { XLinkComponent } from '@ng-nest/ui/link';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\n\r\n@Component({\r\n selector: `${XTransferPrefix}`,\r\n imports: [\r\n NgStyle,\r\n NgTemplateOutlet,\r\n FormsModule,\r\n DragDropModule,\r\n XOutletDirective,\r\n XCheckboxComponent,\r\n XButtonComponent,\r\n XInputComponent,\r\n XTreeComponent,\r\n XTableComponent,\r\n XKeywordDirective,\r\n XLinkComponent,\r\n XI18nPipe\r\n ],\r\n templateUrl: './transfer.component.html',\r\n styleUrls: ['./transfer.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [XValueAccessor(XTransferComponent)]\r\n})\r\nexport class XTransferComponent extends XTransferProperty implements OnInit, OnChanges, OnDestroy {\r\n private i18n = inject(XI18nService);\r\n\r\n leftTableCom = viewChild(XTableComponent);\r\n rightTableCom = viewChild(XTableComponent);\r\n nodes = signal<XTransferNode[]>([]);\r\n\r\n left = signal<XTransferSource>({\r\n list: [],\r\n searchList: [],\r\n checkedCount: 0,\r\n direction: 'left',\r\n disabledButton: true\r\n });\r\n\r\n right = signal<XTransferSource>({\r\n list: [],\r\n searchList: [],\r\n checkedCount: 0,\r\n direction: 'right',\r\n disabledButton: true\r\n });\r\n\r\n searchInput = signal('');\r\n searchInputLeftChange = new Subject<string>();\r\n searchInputRightChange = new Subject<string>();\r\n searchDebounceTime = signal(200);\r\n locale = toSignal(this.i18n.localeChange.pipe(map((x) => x.transfer as XI18nTransfer)), {\r\n initialValue: zh_CN.transfer\r\n });\r\n localTitle = computed(() => {\r\n if (this.type() === 'tree') {\r\n return this.locale().treeTitle;\r\n } else {\r\n return this.locale().listTitle;\r\n }\r\n });\r\n private unSubject = new Subject<void>();\r\n treeActivatedId = signal<any[]>([]);\r\n tableData = signal<XTransferNode[]>([]);\r\n tableCheckboxColumn = signal<XTableColumn | null>(null);\r\n isObjectArray = signal(false);\r\n override writeValue(value: any[]): void {\r\n this.value.set(value);\r\n if (XIsArray(value)) {\r\n this.treeActivatedId.set([...value]);\r\n if (XIsObjectArray(value)) {\r\n this.isObjectArray.set(true);\r\n }\r\n }\r\n this.setList(this.nodes());\r\n }\r\n\r\n values = computed(() => {\r\n if (this.isObjectArray()) {\r\n return this.value().map((x: any) => x.id);\r\n } else {\r\n return this.value();\r\n }\r\n });\r\n\r\n ngOnInit() {\r\n this.setTitles();\r\n this.setListStyle();\r\n this.setHiddenCheckAll();\r\n this.getTableCheckColumn();\r\n this.setFooterTpl();\r\n this.setTableHeadSearchTpl();\r\n\r\n this.searchInputLeftChange\r\n .pipe(debounceTime(this.searchDebounceTime()), distinctUntilChanged(), takeUntil(this.unSubject))\r\n .subscribe(() => {\r\n this.setSearchInputChange(this.left());\r\n });\r\n this.searchInputRightChange\r\n .pipe(debounceTime(this.searchDebounceTime()), distinctUntilChanged(), takeUntil(this.unSubject))\r\n .subscribe(() => {\r\n this.setSearchInputChange(this.right());\r\n });\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n const { data, titles, listStyle, hiddenCheckAll, tableHeadSearchTpl, footerTpl } = changes;\r\n XIsChange(data) && this.setData();\r\n XIsChange(titles) && this.setTitles();\r\n XIsChange(listStyle) && this.setListStyle();\r\n XIsChange(hiddenCheckAll) && this.setHiddenCheckAll();\r\n XIsChange(footerTpl) && this.setFooterTpl();\r\n XIsChange(tableHeadSearchTpl) && this.setTableHeadSearchTpl();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.unSubject.next();\r\n this.unSubject.complete();\r\n }\r\n\r\n onSearchInputChange(source: XTransferSource) {\r\n if (source.direction === 'left') {\r\n this.searchInputLeftChange.next(source.searchInput!);\r\n } else if (source.direction === 'right') {\r\n this.searchInputRightChange.next(source.searchInput!);\r\n }\r\n }\r\n\r\n setSearchInputChange(source: XTransferSource) {\r\n if (XIsUndefined(source.searchInput)) return;\r\n if (XIsEmpty(source.searchInput)) {\r\n source.list = [...source.searchList!];\r\n } else {\r\n switch (this.type()) {\r\n case 'list':\r\n source.list = source.searchList?.filter((x) => x.label.indexOf(source.searchInput) >= 0);\r\n break;\r\n case 'tree':\r\n if (source.direction === 'right') {\r\n source.list = source.searchList?.filter((x) => x.label.indexOf(source.searchInput) >= 0);\r\n } else if (source.direction === 'left') {\r\n let searchList = source.searchList?.filter((x) => x.label.indexOf(source.searchInput) >= 0)!;\r\n let parents: XTransferNode[] = [];\r\n const findParent = (item: XTransferNode) => {\r\n if (!item.pid) return;\r\n let parent = source.searchList?.find((x) => x.id === item.pid);\r\n if (parent && !parents.some((x) => x.id === parent!.id)) {\r\n parents.push(parent);\r\n findParent(parent);\r\n }\r\n };\r\n for (let item of searchList) {\r\n findParent(item);\r\n }\r\n source.list = [...searchList, ...parents];\r\n }\r\n break;\r\n case 'table':\r\n break;\r\n }\r\n }\r\n this.setListCount(this.type(), source);\r\n this.cdr.markForCheck();\r\n }\r\n\r\n checkedAllChange($event: boolean, source: XTransferSource) {\r\n let list: XTransferNode[] = (source.list?.filter((x) => !x.disabled) as XTransferNode[]).map((x) => {\r\n x.checked = $event;\r\n return x;\r\n });\r\n if (this.type() === 'tree' && source.direction === 'left') {\r\n this.treeActivatedId.set(\r\n $event ? source.list!.map((x) => x.id)! : source.list!.filter((x) => x.disabled).map((x) => x.id)\r\n );\r\n }\r\n source.checkedCount = $event ? list.length : 0;\r\n source.indeterminate = $event;\r\n this.setButtonDisabled(source);\r\n }\r\n\r\n checkedChange($event: boolean, source: XTransferSource) {\r\n if (!$event) (source.checkedCount as number)--;\r\n else (source.checkedCount as number)++;\r\n this.setCheckedAll(source);\r\n this.setButtonDisabled(source);\r\n }\r\n\r\n move(from: XTransferSource, to: XTransferSource) {\r\n if (from.disabledButton) return;\r\n switch (this.type()) {\r\n case 'list':\r\n this.moveList(from, to);\r\n break;\r\n case 'tree':\r\n this.moveTree(from, to);\r\n break;\r\n case 'table':\r\n this.moveTable(from, to);\r\n }\r\n }\r\n\r\n private moveList(from: XTransferSource, to: XTransferSource) {\r\n let checkedItems = from.list?.filter((x) => !x.disabled && x.checked)!;\r\n let j = 0;\r\n checkedItems.forEach((x) => {\r\n let index = from.list?.indexOf(x) as number;\r\n x.checked = false;\r\n transferArrayItem(from.list!, to.list!, index, j);\r\n if (this.search()) {\r\n index = from.searchList?.indexOf(x) as number;\r\n transferArrayItem(from.searchList!, to.searchList!, index, j);\r\n }\r\n j++;\r\n });\r\n from.list = [...from.list!];\r\n to.list = [...to.list!];\r\n this.setCheckedCount('list', from, to);\r\n this.setListCount('list', from, to);\r\n this.setCheckedAll(from, to);\r\n this.setButtonDisabled(from, to);\r\n this.setSearchList(from, to);\r\n this.setValue();\r\n }\r\n\r\n private moveTree(from: XTransferSource, to: XTransferSource) {\r\n let checkedItems: XTransferNode[] = [];\r\n if (to.direction === 'right') {\r\n checkedItems = from.list?.filter(\r\n (x) => !x.disabled && !XIsEmpty(this.treeActivatedId()) && this.treeActivatedId().includes(x.id)\r\n )!;\r\n checkedItems.forEach((x: XTreeNode) => {\r\n x.disabled = true;\r\n x.change && x.change();\r\n });\r\n to.list?.unshift(\r\n ...checkedItems.map((x) => {\r\n let res = { ...x };\r\n res.checked = false;\r\n res.disabled = false;\r\n return res;\r\n })\r\n );\r\n this.setCheckedCount('tree', from);\r\n this.setCheckedCount('list', to);\r\n } else {\r\n checkedItems = XRemove(from.list!, (x) => !x.disabled && x.checked!);\r\n if (this.search()) {\r\n XRemove(from.searchList!, (x) => !x.disabled && x.checked!);\r\n }\r\n for (let item of checkedItems) {\r\n let node: XTreeNode = to.list?.find((x) => x.id === item.id)!;\r\n if (node) {\r\n node.checked = false;\r\n node.disabled = false;\r\n const idx = this.treeActivatedId().findIndex((x) => x === node.id);\r\n if (idx >= 0) {\r\n this.treeActivatedId.update((x) => {\r\n x.splice(idx, 1);\r\n return [...x];\r\n });\r\n }\r\n node.change && node.change();\r\n }\r\n }\r\n this.setCheckedCount('tree', to);\r\n this.setCheckedCount('list', from);\r\n }\r\n this.setCheckedAll(from, to);\r\n this.setListCount('list', from, to);\r\n this.setButtonDisabled(from, to);\r\n this.setSearchList(from, to);\r\n this.setValue();\r\n }\r\n\r\n private moveTable(from: XTransferSource, to: XTransferSource) {\r\n let checkedItems: XTransferNode[] = [];\r\n if (to.direction === 'right') {\r\n checkedItems = from.list?.filter((x) => !x.disabled && x.checked)!;\r\n to.list = [\r\n ...checkedItems.map((x) => {\r\n const res = { ...x };\r\n x.disabled = true;\r\n x.checked = true;\r\n res.disabled = false;\r\n res.checked = false;\r\n return res;\r\n }),\r\n ...to.list!\r\n ];\r\n this.tableData.set([...from.list!]);\r\n this.setCheckedCount('table', from);\r\n this.setCheckedCount('list', to);\r\n } else {\r\n checkedItems = XRemove(from.list!, (x) => !x.disabled && x.checked!);\r\n const ids = checkedItems.map((x) => x.id);\r\n for (let item of to.list!) {\r\n if (ids.includes(item.id)) {\r\n item.checked = false;\r\n item.disabled = false;\r\n }\r\n }\r\n from.list = [...from.list!];\r\n this.tableData.set([...to.list!]);\r\n this.setCheckedCount('table', to);\r\n this.setCheckedCount('list', from);\r\n }\r\n this.setListCount('table', from, to);\r\n this.setCheckedAll(from, to);\r\n this.setButtonDisabled(from, to);\r\n this.setSearchList(from, to);\r\n this.setValue();\r\n }\r\n\r\n dropCdk(event: CdkDragDrop<XTransferNode[] | undefined, any>) {\r\n const ev = event as CdkDragDrop<XTransferNode[]>;\r\n if (ev.previousContainer === ev.container) {\r\n moveItemInArray(ev.container.data, ev.previousIndex, ev.currentIndex);\r\n } else {\r\n transferArrayItem(ev.previousContainer.data, ev.container.data, ev.previousIndex, ev.currentIndex);\r\n this.setCheckedCount('list', this.left(), this.right());\r\n this.setCheckedAll(this.left(), this.right());\r\n this.setListCount('list', this.left(), this.right());\r\n this.setButtonDisabled(this.left(), this.right());\r\n }\r\n this.setSearchList(this.left(), this.right());\r\n this.setValue();\r\n }\r\n\r\n predicate(item: CdkDrag<XTransferNode>) {\r\n return !item.data.disabled;\r\n }\r\n\r\n trackByNode(_index: number, item: XTransferNode) {\r\n return item.id;\r\n }\r\n\r\n setListCount(type: XTransferType = 'list', ...sources: XTransferSource[]) {\r\n if (['list', 'tree'].includes(type)) {\r\n for (let source of sources) {\r\n source.count = source.list?.filter((x) => !x.disabled).length;\r\n }\r\n } else if (type === 'table') {\r\n for (let source of sources) {\r\n if (source.direction === 'left') {\r\n source.count = this.tableTotal() - this.right().list!.length || 0;\r\n } else {\r\n source.count = source.list?.filter((x) => !x.disabled).length;\r\n }\r\n }\r\n }\r\n }\r\n\r\n onTreeNodeClick(_node: XTreeNode) {\r\n this.setCheckedCount('tree', this.left());\r\n this.setCheckedAll(this.left());\r\n this.setButtonDisabled(this.left());\r\n }\r\n\r\n onTableCheckedRow(row: XTransferNode, source: XTransferSource) {\r\n if (!this.tableCheckboxColumn()) return;\r\n let checked = row[this.tableCheckboxColumn()!.id];\r\n row.checked = checked;\r\n this.setCheckedCount('table', source);\r\n this.setCheckedAll(source);\r\n this.setButtonDisabled(source);\r\n }\r\n\r\n onTableCheckedAll(row: XTableHeadCheckbox, source: XTransferSource) {\r\n if (!this.tableCheckboxColumn()) return;\r\n let checked = row.checkbox[this.tableCheckboxColumn()!.id];\r\n for (let item of source.list!) {\r\n if (!item.disabled) {\r\n item.checked = checked;\r\n }\r\n }\r\n this.setCheckedCount('table', source);\r\n this.setButtonDisabled(source);\r\n }\r\n\r\n onInverse(source: XTransferSource) {\r\n for (let item of source.list!) {\r\n if (!item.disabled) {\r\n item.checked = !item.checked;\r\n }\r\n }\r\n let type = `${this.type}` as XTransferType;\r\n if (type === 'tree' && source.direction === 'right') {\r\n type = 'list';\r\n }\r\n this.setCheckedCount(type, source);\r\n this.setCheckedAll(source);\r\n this.setButtonDisabled(source);\r\n }\r\n\r\n private getTableCheckColumn() {\r\n if (this.type() !== 'table' || XIsEmpty(this.tableColumns())) return;\r\n this.tableCheckboxColumn.set(this.tableColumns()!.find((x) => x.rowChecked)!);\r\n }\r\n\r\n private setCheckedAll(...sources: XTransferSource[]) {\r\n for (let source of sources) {\r\n if ((source.checkedCount as number) > 0) {\r\n if (source.checkedCount === source.list?.filter((x) => !x.disabled).length) {\r\n source.checkedAll = true;\r\n } else {\r\n source.checkedAll = false;\r\n source.indeterminate = true;\r\n }\r\n } else {\r\n source.checkedAll = false;\r\n source.indeterminate = false;\r\n }\r\n }\r\n }\r\n\r\n private setCheckedCount(type: XTransferType = 'list', ...sources: XTransferSource[]) {\r\n for (let source of sources) {\r\n if (['table', 'list'].includes(type)) {\r\n source.checkedCount = source.list?.filter((x) => !x.disabled && x.checked).length;\r\n } else if (type === 'tree') {\r\n source.checkedCount = source.list?.filter(\r\n (x) => !x.disabled && !XIsEmpty(this.treeActivatedId()) && this.treeActivatedId().includes(x.id)\r\n ).length;\r\n }\r\n }\r\n }\r\n\r\n private setButtonDisabled(...sources: XTransferSource[]) {\r\n for (let source of sources) source.disabledButton = source.checkedCount === 0;\r\n }\r\n\r\n private setValue() {\r\n if (this.isObjectArray()) {\r\n this.value.set(this.right().list!);\r\n } else {\r\n this.value.set(this.right().list?.map((x) => x.id)!);\r\n }\r\n this.onChange && this.onChange(this.value());\r\n }\r\n\r\n private setSearchList(...sources: XTransferSource[]) {\r\n if (this.search()) {\r\n for (let source of sources) {\r\n if (XIsEmpty(source.searchInput)) {\r\n source.searchList = [...(source.list as XTransferNode[])];\r\n }\r\n }\r\n }\r\n }\r\n\r\n private setData() {\r\n if (this.type() === 'table') {\r\n this.getTableData();\r\n return;\r\n }\r\n XSetData<XTransferNode>(this.data(), this.unSubject).subscribe((x) => {\r\n this.setList(x);\r\n });\r\n }\r\n\r\n private setList(data: XTransferNode[]) {\r\n if (XIsEmpty(data)) return;\r\n switch (this.type()) {\r\n case 'list':\r\n this.nodes.set(data);\r\n if (!XIsEmpty(this.values())) {\r\n this.left.update((x) => {\r\n x.list = this.nodes().filter((x) => this.values().indexOf(x.id) < 0);\r\n return { ...x };\r\n });\r\n this.right.update((x) => {\r\n x.list = this.nodes().filter((x) => this.values().indexOf(x.id) >= 0);\r\n return { ...x };\r\n });\r\n } else {\r\n this.left.update((x) => {\r\n x.list = [...this.nodes()];\r\n return { ...x };\r\n });\r\n }\r\n this.setSearchList(this.left(), this.right());\r\n this.setListCount(this.type(), this.left(), this.right());\r\n break;\r\n case 'tree':\r\n this.nodes.set(data);\r\n this.setTreeNodeDisabled();\r\n this.left.update((x) => {\r\n x.list = [...this.nodes()];\r\n return { ...x };\r\n });\r\n if (!XIsEmpty(this.values())) {\r\n this.right.update((z) => {\r\n z.list = this.nodes()\r\n .filter((x) => this.values().indexOf(x.id) >= 0)\r\n .map((x) => {\r\n let res = { ...x };\r\n res.checked = false;\r\n res.disabled = false;\r\n return res;\r\n });\r\n return { ...z };\r\n });\r\n }\r\n this.setSearchList(this.left(), this.right());\r\n this.setListCount(this.type(), this.left(), this.right());\r\n break;\r\n case 'table':\r\n this.nodes.set(data);\r\n this.setTableDataDisabled();\r\n this.left.update((x) => {\r\n x.list = [...this.nodes()];\r\n return { ...x };\r\n });\r\n if (!XIsEmpty(this.values())) {\r\n if (this.isObjectArray()) {\r\n this.right.update((z) => {\r\n z.list = [\r\n ...this.value().map((x: any) => {\r\n let res = { ...x };\r\n res.disabled = false;\r\n res.checked = false;\r\n return res;\r\n })\r\n ];\r\n return { ...z };\r\n });\r\n } else {\r\n this.right.update((x) => {\r\n x.list = [...this.value()];\r\n return { ...x };\r\n });\r\n }\r\n }\r\n this.setSearchList(this.left(), this.right());\r\n this.setListCount(this.type(), this.left(), this.right());\r\n break;\r\n }\r\n }\r\n\r\n getTableData() {\r\n if (XIsFunction(this.data())) {\r\n (this.data() as Function)(this.tableIndex(), this.tableSize(), this.tableQuery()).subscribe(\r\n (x: XResultList<XTransferNode>) => {\r\n this.tableTotal.set(x.total!);\r\n this.tableData.set(x.list!);\r\n this.setList(x.list!);\r\n }\r\n );\r\n }\r\n }\r\n\r\n private setTitles() {\r\n let titles: string[] = [];\r\n if (XIsEmpty(this.titles())) {\r\n titles = [this.localTitle()!, this.locale().selectedTitle!];\r\n } else {\r\n titles = this.titles()!;\r\n }\r\n if (titles.length > 0) {\r\n this.left.update((x) => {\r\n x.title = titles[0];\r\n return { ...x };\r\n });\r\n }\r\n if (titles.length > 1) {\r\n this.right.update((x) => {\r\n x.title = titles[1];\r\n return { ...x };\r\n });\r\n }\r\n }\r\n\r\n private setListStyle() {\r\n if (XIsEmpty(this.listStyle())) return;\r\n let styles: object[] = [];\r\n if (XIsObject(this.listStyle())) {\r\n styles = [this.listStyle()!, this.listStyle()!];\r\n } else if (XIsObjectArray(this.listStyle())) {\r\n styles = this.listStyle() as object[];\r\n }\r\n if (styles.length > 0)\r\n this.left.update((x) => {\r\n x.listStyle = styles[0];\r\n return { ...x };\r\n });\r\n if (styles.length > 1)\r\n this.right.update((x) => {\r\n x.listStyle = styles[1];\r\n return { ...x };\r\n });\r\n }\r\n\r\n private setTreeNodeDisabled() {\r\n if (!XIsEmpty(this.values()) && this.nodes()) {\r\n for (let item of this.nodes()) {\r\n let hasIn = this.values().indexOf(item.id) >= 0;\r\n item.disabled = hasIn;\r\n item.checked = hasIn;\r\n }\r\n }\r\n }\r\n\r\n private setTableDataDisabled() {\r\n if (!XIsEmpty(this.values()) && this.nodes()) {\r\n for (let item of this.nodes()) {\r\n let hasIn = this.values().indexOf(item.id) >= 0;\r\n item.disabled = hasIn;\r\n item.checked = hasIn;\r\n }\r\n }\r\n }\r\n\r\n private setHiddenCheckAll() {\r\n if (XIsEmpty(this.hiddenCheckAll())) return;\r\n if (this.hiddenCheckAll()!.length > 0 && XIsBoolean(this.hiddenCheckAll()![0])) {\r\n this.left.update((x) => {\r\n x.hiddenCheckAll = this.hiddenCheckAll()![0];\r\n return { ...x };\r\n });\r\n }\r\n if (this.hiddenCheckAll()!.length > 1 && XIsBoolean(this.hiddenCheckAll()![1])) {\r\n this.right.update((x) => {\r\n x.hiddenCheckAll = this.hiddenCheckAll()![1];\r\n return { ...x };\r\n });\r\n }\r\n }\r\n\r\n private setFooterTpl() {\r\n if (XIsEmpty(this.footerTpl())) return;\r\n if (this.footerTpl()!.length > 0) {\r\n this.left.update((x) => {\r\n x.footerTpl = this.footerTpl()![0];\r\n return { ...x };\r\n });\r\n }\r\n if (this.footerTpl()!.length > 1) {\r\n this.right.update((x) => {\r\n x.footerTpl = this.footerTpl()![1];\r\n return { ...x };\r\n });\r\n }\r\n }\r\n\r\n private setTableHeadSearchTpl() {\r\n if (XIsEmpty(this.tableHeadSearchTpl())) return;\r\n if (this.tableHeadSearchTpl()!.length > 0) {\r\n this.left.update((x) => {\r\n x.tableHeadSearchTpl = this.tableHeadSearchTpl()![0];\r\n return { ...x };\r\n });\r\n }\r\n if (this.tableHeadSearchTpl()!.length > 1) {\r\n this.right.update((x) => {\r\n x.tableHeadSearchTpl = this.tableHeadSearchTpl()![1];\r\n return { ...x };\r\n });\r\n }\r\n }\r\n}\r\n","<div #transfer class=\"x-transfer\" cdkDropListGroup>\r\n <div class=\"x-transfer-box\" [class.x-transfer-has-footer]=\"left().footerTpl\">\r\n <ng-container *ngTemplateOutlet=\"sourceTitleTpl; context: { source: left() }\"></ng-container>\r\n <div [ngStyle]=\"left().listStyle!\" class=\"x-transfer-list x-transfer-{{ type() }}\">\r\n @switch (type()) {\r\n @case ('list') {\r\n <ul\r\n cdkDropList\r\n (cdkDropListDropped)=\"dropCdk($event)\"\r\n [cdkDropListData]=\"left().list\"\r\n [cdkDropListDisabled]=\"!drag() && type() === 'list'\"\r\n [cdkDropListEnterPredicate]=\"predicate\"\r\n class=\"x-transfer-droplist\"\r\n >\r\n @for (node of left().list; track node.id) {\r\n <li class=\"x-transfer-item\" cdkDrag [cdkDragData]=\"node\">\r\n <ng-container *ngTemplateOutlet=\"sourceNodeTpl; context: { node: node, source: left() }\"></ng-container>\r\n </li>\r\n }\r\n </ul>\r\n }\r\n @case ('tree') {\r\n <x-tree\r\n [data]=\"left().list!\"\r\n multiple\r\n allowManyActivated\r\n [(activatedId)]=\"treeActivatedId\"\r\n (nodeClick)=\"onTreeNodeClick($event)\"\r\n [labelTpl]=\"treeLabelTpl\"\r\n ></x-tree>\r\n <ng-template #treeLabelTpl let-node=\"$node\">\r\n <span class=\"x-transfer-tree-label\" x-keyword [text]=\"left().searchInput!\">{{ node.label }}</span>\r\n </ng-template>\r\n }\r\n @case ('table') {\r\n <x-table\r\n #leftTableCom\r\n [data]=\"tableData()\"\r\n [columns]=\"tableColumns()!\"\r\n [(size)]=\"tableSize\"\r\n [(index)]=\"tableIndex\"\r\n (indexChange)=\"getTableData()\"\r\n [query]=\"tableQuery()\"\r\n [total]=\"tableTotal()\"\r\n (activatedRowChange)=\"onTableCheckedRow($event!, left())\"\r\n (headCheckboxChange)=\"onTableCheckedAll($event, left())\"\r\n hiddenWrapBorder\r\n hiddenPaginationBorder\r\n showEllipsis=\"false\"\r\n showTotal=\"false\"\r\n paginationPosition=\"bottom-center\"\r\n allowSelectRow=\"false\"\r\n [headSearchTpl]=\"left().tableHeadSearchTpl\"\r\n ></x-table>\r\n }\r\n }\r\n </div>\r\n @if (left().footerTpl) {\r\n <div class=\"x-transfer-footer\">\r\n <ng-container *ngTemplateOutlet=\"left().footerTpl!; context: { $source: left() }\"></ng-container>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"x-transfer-buttons\">\r\n <x-button\r\n type=\"primary\"\r\n icon=\"fto-chevron-right\"\r\n [disabled]=\"left().disabledButton!\"\r\n (click)=\"move(left(), right())\"\r\n flat\r\n ></x-button>\r\n <x-button\r\n type=\"primary\"\r\n icon=\"fto-chevron-left\"\r\n [disabled]=\"right().disabledButton!\"\r\n (click)=\"move(right(), left())\"\r\n flat\r\n ></x-button>\r\n </div>\r\n <div class=\"x-transfer-box\" [class.x-transfer-has-footer]=\"right().footerTpl\">\r\n <ng-container *ngTemplateOutlet=\"sourceTitleTpl; context: { source: right() }\"></ng-container>\r\n\r\n <div [ngStyle]=\"right().listStyle!\" class=\"x-transfer-list\">\r\n @switch (type()) {\r\n @case ('table') {\r\n <x-table\r\n #rightTableCom\r\n [data]=\"right().list!\"\r\n [columns]=\"tableColumns()!\"\r\n (activatedRowChange)=\"onTableCheckedRow($event!, right())\"\r\n (headCheckboxChange)=\"onTableCheckedAll($event, right())\"\r\n hiddenWrapBorder\r\n hiddenPaginationBorder\r\n showPagination=\"false\"\r\n showEllipsis=\"false\"\r\n showTotal=\"false\"\r\n paginationPosition=\"bottom-center\"\r\n allowSelectRow=\"false\"\r\n [headSearchTpl]=\"right().tableHeadSearchTpl\"\r\n ></x-table>\r\n }\r\n @default {\r\n <ul\r\n cdkDropList\r\n (cdkDropListDropped)=\"dropCdk($event)\"\r\n [cdkDropListData]=\"right().list\"\r\n [cdkDropListDisabled]=\"!drag() || (drag() && type() !== 'list')\"\r\n [cdkDropListEnterPredicate]=\"predicate\"\r\n class=\"x-transfer-droplist\"\r\n >\r\n @for (node of right().list; track node.id) {\r\n <li class=\"x-transfer-item\" cdkDrag [cdkDragData]=\"node\">\r\n <ng-container\r\n *ngTemplateOutlet=\"sourceNodeTpl; context: { node: node, source: right() }\"\r\n ></ng-container>\r\n </li>\r\n }\r\n </ul>\r\n }\r\n }\r\n </div>\r\n @if (right().footerTpl) {\r\n <div class=\"x-transfer-footer\">\r\n <ng-container *ngTemplateOutlet=\"right().footerTpl!; context: { $source: right() }\"></ng-container>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n\r\n<ng-template #sourceTitleTpl let-source=\"source\">\r\n <div class=\"x-transfer-title\">\r\n <div class=\"x-transfer-title-left\">\r\n @if (source.title && !source.hiddenCheckAll) {\r\n <x-checkbox\r\n class=\"x-transfer-check-all\"\r\n [data]=\"[titleTpl() ? '' : source.title]\"\r\n [(ngModel)]=\"source.checkedAll\"\r\n (ngModelChange)=\"checkedAllChange($event, source)\"\r\n [indeterminate]=\"source.indeterminate\"\r\n single\r\n ></x-checkbox>\r\n }\r\n @if (source.title && source.hiddenCheckAll) {\r\n <span>{{ source.title }}</span>\r\n }\r\n @if (inverse() && type() === 'list') {\r\n <x-link class=\"x-transfer-inverse\" type=\"primary\" (click)=\"onInverse(source)\">{{\r\n 'transfer.inverse' | xI18n\r\n }}</x-link>\r\n }\r\n </div>\r\n <ng-container\r\n *xOutlet=\"titleTpl(); context: { $title: source.title, $checkedCount: source.checkedCount, $count: source.count }\"\r\n ><span class=\"x-transfer-total\">{{ source.checkedCount }} / {{ source.count }}</span></ng-container\r\n >\r\n </div>\r\n @if (search() && type() !== 'table') {\r\n <div class=\"x-transfer-search\">\r\n <x-input\r\n icon=\"fto-search\"\r\n [(ngModel)]=\"source.searchInput\"\r\n (ngModelChange)=\"onSearchInputChange(source)\"\r\n clearable\r\n ></x-input>\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #sourceNodeTpl let-node=\"node\" let-source=\"source\">\r\n <x-checkbox\r\n [data]=\"[{ id: node.id, label: nodeTpl() ? nodeTpl() : labelTpl, node: node }]\"\r\n [disabled]=\"node.disabled\"\r\n [(ngModel)]=\"node.checked\"\r\n (ngModelChange)=\"checkedChange($event, source)\"\r\n single\r\n ></x-checkbox>\r\n <ng-template #labelTpl>\r\n <span x-keyword [text]=\"source.searchInput!\">{{ node.label }}</span>\r\n </ng-template>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { XTransferComponent } from './transfer.component';\r\n\r\n@NgModule({\r\n exports: [XTransferComponent],\r\n imports: [XTransferComponent]\r\n})\r\nexport class XTransferModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ng-nest-ui-transfer.mjs","sources":["../../../../lib/ng-nest/ui/transfer/transfer.property.ts","../../../../lib/ng-nest/ui/transfer/transfer.component.ts","../../../../lib/ng-nest/ui/transfer/transfer.component.html","../../../../lib/ng-nest/ui/transfer/transfer.module.ts","../../../../lib/ng-nest/ui/transfer/ng-nest-ui-transfer.ts"],"sourcesContent":["import { XToBoolean, XToDataConvert } from '@ng-nest/ui/core';\r\nimport { TemplateRef, Component, input, model } from '@angular/core';\r\nimport { XFormControlFunction } from '@ng-nest/ui/base-form';\r\nimport { XTableColumn } from '@ng-nest/ui/table';\r\nimport type { XData, XParentIdentityProperty, XBoolean, XQuery, XStyleMap, XTemplate } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Transfer\r\n * @selector x-transfer\r\n * @decorator component\r\n */\r\nexport const XTransferPrefix = 'x-transfer';\r\nconst X_TRANSFER_CONFIG_NAME = 'transfer';\r\n\r\n/**\r\n * Transfer Property\r\n */\r\n@Component({ selector: `${XTransferPrefix}-property`, template: '' })\r\nexport class XTransferProperty extends XFormControlFunction(X_TRANSFER_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 数据对象\r\n * @en_US Data object\r\n */\r\n readonly data = input<XData<XTransferNode>, XData<XTransferNode>>([], { transform: XToDataConvert });\r\n /**\r\n * @zh_CN 选择的类型\r\n * @en_US Type\r\n */\r\n readonly type = input<XTransferType>(this.config?.type ?? 'list');\r\n /**\r\n * @zh_CN 标题\r\n * @en_US Title\r\n * @default ['List', 'Selected']\r\n */\r\n readonly titles = input<string[] | null>(this.config?.titles ?? null);\r\n /**\r\n * @zh_CN 穿梭框样式,使用方式与 ngStyle 相同\r\n * @en_US shuttle box style, same as ngStyle\r\n */\r\n readonly listStyle = input<XTransferListStyle | null>(this.config?.listStyle ?? null);\r\n /**\r\n * @zh_CN 隐藏全选复选框\r\n * @en_US Hidden check all\r\n */\r\n readonly hiddenCheckAll = input<boolean[]>();\r\n /**\r\n * @zh_CN 是否能拖动, type\r\n * @en_US Can drag\r\n */\r\n readonly drag = input<boolean, XBoolean>(this.config?.drag ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 是否显示搜索。type 为 'table',需要设置 tableHeadSearchTpl 和 tableQuery 来配合使用\r\n * @en_US Whether to display search\r\n */\r\n readonly search = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 表格列头搜索自定义模板\r\n * @en_US table head search custom template\r\n */\r\n readonly tableHeadSearchTpl = input<XTemplate[]>();\r\n /**\r\n * @zh_CN 行数据自定义模板\r\n * @en_US Data customization template\r\n */\r\n readonly nodeTpl = input<TemplateRef<void>>();\r\n /**\r\n * @zh_CN 标题自定义模板\r\n * @en_US Title custom template\r\n */\r\n readonly titleTpl = input<TemplateRef<void>>();\r\n /**\r\n * @zh_CN 底部自定义模版\r\n * @en_US Bottom Custom Template\r\n */\r\n readonly footerTpl = input<TemplateRef<void>[]>();\r\n /**\r\n * @zh_CN 表格列集合\r\n * @en_US Table column set\r\n */\r\n readonly tableColumns = input<XTableColumn[]>();\r\n /**\r\n * @zh_CN 表格页码\r\n * @en_US Table page number\r\n */\r\n readonly tableIndex = model<number>(1);\r\n /**\r\n * @zh_CN 表每页数据条数\r\n * @en_US Number of data items per page\r\n */\r\n readonly tableSize = model<number>(10);\r\n /**\r\n * @zh_CN 表格查询条件\r\n * @en_US Number of data items per page\r\n */\r\n readonly tableQuery = input<XQuery>({});\r\n /**\r\n * @zh_CN 表格数据总条数\r\n * @en_US Total number of table data\r\n */\r\n readonly tableTotal = model<number>(0);\r\n /**\r\n * @zh_CN 反选操作\r\n * @en_US Inverse select\r\n */\r\n readonly inverse = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n}\r\n\r\n/**\r\n * Transfer Node\r\n */\r\nexport interface XTransferNode extends XParentIdentityProperty<XTransferNode> {\r\n /**\r\n * @zh_CN checkbox 是否选中\r\n * @en_US whether checkbox is selected\r\n */\r\n checked?: boolean;\r\n /**\r\n * @zh_CN 序号\r\n * @en_US Serial number\r\n */\r\n index?: number;\r\n /**\r\n * @zh_CN 自定义属性\r\n * @en_US Custom property\r\n */\r\n [property: string]: any;\r\n}\r\n\r\n/**\r\n * Transfer Source\r\n */\r\nexport interface XTransferSource {\r\n /**\r\n * @zh_CN 标题\r\n * @en_US Title\r\n */\r\n title?: string;\r\n /**\r\n * @zh_CN 搜索的数据\r\n * @en_US Searched data\r\n */\r\n searchInput?: string;\r\n /**\r\n * @zh_CN 全选\r\n * @en_US Select all\r\n */\r\n checkedAll?: boolean;\r\n /**\r\n * @zh_CN 选中的数量\r\n * @en_US Selected quantity\r\n */\r\n checkedCount?: number;\r\n /**\r\n * @zh_CN 可选择的数据总数\r\n * @en_US Total number of selectable data\r\n */\r\n count?: number;\r\n /**\r\n * @zh_CN 不确定状态的样式\r\n * @en_US Uncertain state style\r\n */\r\n indeterminate?: boolean;\r\n /**\r\n * @zh_CN 列表数据\r\n * @en_US List data\r\n */\r\n list?: XTransferNode[];\r\n /**\r\n * @zh_CN 搜索数据,用来还原\r\n * @en_US Search data to restore\r\n */\r\n searchList?: XTransferNode[];\r\n /**\r\n * @zh_CN 按钮禁用\r\n * @en_US Button disabled\r\n */\r\n disabledButton?: boolean;\r\n /**\r\n * @zh_CN 隐藏全选复选框\r\n * @en_US Hidden check all\r\n */\r\n hiddenCheckAll?: boolean;\r\n /**\r\n * @zh_CN 列表样式\r\n * @en_US List style\r\n */\r\n listStyle?: XStyleMap;\r\n /**\r\n * @zh_CN 数据方向\r\n * @en_US Data direction\r\n */\r\n direction?: XTransferDirection;\r\n /**\r\n * @zh_CN 底部自定义模版\r\n * @en_US Bottom Custom Template\r\n */\r\n footerTpl?: TemplateRef<any>;\r\n /**\r\n * @zh_CN 表格列头搜索自定义模板\r\n * @en_US table head search custom template\r\n */\r\n tableHeadSearchTpl?: XTemplate;\r\n}\r\n\r\n/**\r\n * @zh_CN 数据方向\r\n * @en_US Transfer direction\r\n */\r\nexport type XTransferDirection = 'left' | 'right';\r\n\r\n/**\r\n * @zh_CN 数据类型\r\n * @en_US Transfer type\r\n */\r\nexport type XTransferType = 'list' | 'tree' | 'table';\r\n\r\n/**\r\n * @zh_CN 穿梭框样式,使用方式与 ngStyle 相同\r\n * @en_US shuttle box style, same as ngStyle\r\n */\r\nexport type XTransferListStyle = XStyleMap | XStyleMap[];\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n SimpleChanges,\r\n OnChanges,\r\n OnDestroy,\r\n inject,\r\n viewChild,\r\n signal,\r\n computed\r\n} from '@angular/core';\r\nimport { XTransferPrefix, XTransferNode, XTransferSource, XTransferProperty, XTransferType } from './transfer.property';\r\nimport {\r\n XIsChange,\r\n XIsEmpty,\r\n XSetData,\r\n XRemove,\r\n XIsArray,\r\n XIsObject,\r\n XIsObjectArray,\r\n XIsBoolean,\r\n XIsFunction,\r\n XResultList,\r\n XIsUndefined\r\n} from '@ng-nest/ui/core';\r\nimport { Subject } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged, map, takeUntil } from 'rxjs/operators';\r\nimport { transferArrayItem, moveItemInArray, CdkDragDrop, CdkDrag, DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { XValueAccessor } from '@ng-nest/ui/base-form';\r\nimport { XI18nPipe, XI18nService, XI18nTransfer, zh_CN } from '@ng-nest/ui/i18n';\r\nimport { XTreeComponent, XTreeNode } from '@ng-nest/ui/tree';\r\nimport { XTableColumn, XTableComponent, XTableHeadCheckbox } from '@ng-nest/ui/table';\r\nimport { NgStyle, NgTemplateOutlet } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { XOutletDirective } from '@ng-nest/ui/outlet';\r\nimport { XCheckboxComponent } from '@ng-nest/ui/checkbox';\r\nimport { XButtonComponent } from '@ng-nest/ui/button';\r\nimport { XInputComponent } from '@ng-nest/ui/input';\r\nimport { XKeywordDirective } from '@ng-nest/ui/keyword';\r\nimport { XLinkComponent } from '@ng-nest/ui/link';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\n\r\n@Component({\r\n selector: `${XTransferPrefix}`,\r\n imports: [\r\n NgStyle,\r\n NgTemplateOutlet,\r\n FormsModule,\r\n DragDropModule,\r\n XOutletDirective,\r\n XCheckboxComponent,\r\n XButtonComponent,\r\n XInputComponent,\r\n XTreeComponent,\r\n XTableComponent,\r\n XKeywordDirective,\r\n XLinkComponent,\r\n XI18nPipe\r\n ],\r\n templateUrl: './transfer.component.html',\r\n styleUrls: ['./transfer.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [XValueAccessor(XTransferComponent)]\r\n})\r\nexport class XTransferComponent extends XTransferProperty implements OnInit, OnChanges, OnDestroy {\r\n private i18n = inject(XI18nService);\r\n\r\n leftTableCom = viewChild(XTableComponent);\r\n rightTableCom = viewChild(XTableComponent);\r\n nodes = signal<XTransferNode[]>([]);\r\n\r\n left = signal<XTransferSource>({\r\n list: [],\r\n searchList: [],\r\n checkedCount: 0,\r\n direction: 'left',\r\n disabledButton: true\r\n });\r\n\r\n right = signal<XTransferSource>({\r\n list: [],\r\n searchList: [],\r\n checkedCount: 0,\r\n direction: 'right',\r\n disabledButton: true\r\n });\r\n\r\n searchInput = signal('');\r\n searchInputLeftChange = new Subject<string>();\r\n searchInputRightChange = new Subject<string>();\r\n searchDebounceTime = signal(200);\r\n locale = toSignal(this.i18n.localeChange.pipe(map((x) => x.transfer as XI18nTransfer)), {\r\n initialValue: zh_CN.transfer\r\n });\r\n localTitle = computed(() => {\r\n if (this.type() === 'tree') {\r\n return this.locale().treeTitle;\r\n } else {\r\n return this.locale().listTitle;\r\n }\r\n });\r\n private unSubject = new Subject<void>();\r\n treeActivatedId = signal<any[]>([]);\r\n tableData = signal<XTransferNode[]>([]);\r\n tableCheckboxColumn = signal<XTableColumn | null>(null);\r\n isObjectArray = signal(false);\r\n override writeValue(value: any[]): void {\r\n this.value.set(value);\r\n if (XIsArray(value)) {\r\n this.treeActivatedId.set([...value]);\r\n if (XIsObjectArray(value)) {\r\n this.isObjectArray.set(true);\r\n }\r\n }\r\n this.setList(this.nodes());\r\n }\r\n\r\n values = computed(() => {\r\n if (this.isObjectArray()) {\r\n return this.value().map((x: any) => x.id);\r\n } else {\r\n return this.value();\r\n }\r\n });\r\n\r\n ngOnInit() {\r\n this.setTitles();\r\n this.setListStyle();\r\n this.setHiddenCheckAll();\r\n this.getTableCheckColumn();\r\n this.setFooterTpl();\r\n this.setTableHeadSearchTpl();\r\n\r\n this.searchInputLeftChange\r\n .pipe(debounceTime(this.searchDebounceTime()), distinctUntilChanged(), takeUntil(this.unSubject))\r\n .subscribe(() => {\r\n this.setSearchInputChange(this.left());\r\n });\r\n this.searchInputRightChange\r\n .pipe(debounceTime(this.searchDebounceTime()), distinctUntilChanged(), takeUntil(this.unSubject))\r\n .subscribe(() => {\r\n this.setSearchInputChange(this.right());\r\n });\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n const { data, titles, listStyle, hiddenCheckAll, tableHeadSearchTpl, footerTpl } = changes;\r\n XIsChange(data) && this.setData();\r\n XIsChange(titles) && this.setTitles();\r\n XIsChange(listStyle) && this.setListStyle();\r\n XIsChange(hiddenCheckAll) && this.setHiddenCheckAll();\r\n XIsChange(footerTpl) && this.setFooterTpl();\r\n XIsChange(tableHeadSearchTpl) && this.setTableHeadSearchTpl();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.unSubject.next();\r\n this.unSubject.complete();\r\n }\r\n\r\n onSearchInputChange(source: XTransferSource) {\r\n if (source.direction === 'left') {\r\n this.searchInputLeftChange.next(source.searchInput!);\r\n } else if (source.direction === 'right') {\r\n this.searchInputRightChange.next(source.searchInput!);\r\n }\r\n }\r\n\r\n setSearchInputChange(source: XTransferSource) {\r\n if (XIsUndefined(source.searchInput)) return;\r\n if (XIsEmpty(source.searchInput)) {\r\n source.list = [...source.searchList!];\r\n } else {\r\n switch (this.type()) {\r\n case 'list':\r\n source.list = source.searchList?.filter((x) => x.label.indexOf(source.searchInput) >= 0);\r\n break;\r\n case 'tree':\r\n if (source.direction === 'right') {\r\n source.list = source.searchList?.filter((x) => x.label.indexOf(source.searchInput) >= 0);\r\n } else if (source.direction === 'left') {\r\n let searchList = source.searchList?.filter((x) => x.label.indexOf(source.searchInput) >= 0)!;\r\n let parents: XTransferNode[] = [];\r\n const findParent = (item: XTransferNode) => {\r\n if (!item.pid) return;\r\n let parent = source.searchList?.find((x) => x.id === item.pid);\r\n if (parent && !parents.some((x) => x.id === parent!.id)) {\r\n parents.push(parent);\r\n findParent(parent);\r\n }\r\n };\r\n for (let item of searchList) {\r\n findParent(item);\r\n }\r\n source.list = [...searchList, ...parents];\r\n }\r\n break;\r\n case 'table':\r\n break;\r\n }\r\n }\r\n this.setListCount(this.type(), source);\r\n this.cdr.markForCheck();\r\n }\r\n\r\n checkedAllChange($event: boolean, source: XTransferSource) {\r\n let list: XTransferNode[] = (source.list?.filter((x) => !x.disabled) as XTransferNode[]).map((x) => {\r\n x.checked = $event;\r\n return x;\r\n });\r\n if (this.type() === 'tree' && source.direction === 'left') {\r\n this.treeActivatedId.set(\r\n $event ? source.list!.map((x) => x.id)! : source.list!.filter((x) => x.disabled).map((x) => x.id)\r\n );\r\n }\r\n source.checkedCount = $event ? list.length : 0;\r\n source.indeterminate = $event;\r\n this.setButtonDisabled(source);\r\n }\r\n\r\n checkedChange($event: boolean, source: XTransferSource) {\r\n if (!$event) (source.checkedCount as number)--;\r\n else (source.checkedCount as number)++;\r\n this.setCheckedAll(source);\r\n this.setButtonDisabled(source);\r\n }\r\n\r\n move(from: XTransferSource, to: XTransferSource) {\r\n if (from.disabledButton) return;\r\n switch (this.type()) {\r\n case 'list':\r\n this.moveList(from, to);\r\n break;\r\n case 'tree':\r\n this.moveTree(from, to);\r\n break;\r\n case 'table':\r\n this.moveTable(from, to);\r\n }\r\n }\r\n\r\n private moveList(from: XTransferSource, to: XTransferSource) {\r\n let checkedItems = from.list?.filter((x) => !x.disabled && x.checked)!;\r\n let j = 0;\r\n checkedItems.forEach((x) => {\r\n let index = from.list?.indexOf(x) as number;\r\n x.checked = false;\r\n transferArrayItem(from.list!, to.list!, index, j);\r\n if (this.search()) {\r\n index = from.searchList?.indexOf(x) as number;\r\n transferArrayItem(from.searchList!, to.searchList!, index, j);\r\n }\r\n j++;\r\n });\r\n from.list = [...from.list!];\r\n to.list = [...to.list!];\r\n this.setCheckedCount('list', from, to);\r\n this.setListCount('list', from, to);\r\n this.setCheckedAll(from, to);\r\n this.setButtonDisabled(from, to);\r\n this.setSearchList(from, to);\r\n this.setValue();\r\n }\r\n\r\n private moveTree(from: XTransferSource, to: XTransferSource) {\r\n let checkedItems: XTransferNode[] = [];\r\n if (to.direction === 'right') {\r\n checkedItems = from.list?.filter(\r\n (x) => !x.disabled && !XIsEmpty(this.treeActivatedId()) && this.treeActivatedId().includes(x.id)\r\n )!;\r\n checkedItems.forEach((x: XTreeNode) => {\r\n x.disabled = true;\r\n x.change && x.change();\r\n });\r\n to.list?.unshift(\r\n ...checkedItems.map((x) => {\r\n let res = { ...x };\r\n res.checked = false;\r\n res.disabled = false;\r\n return res;\r\n })\r\n );\r\n this.setCheckedCount('tree', from);\r\n this.setCheckedCount('list', to);\r\n } else {\r\n checkedItems = XRemove(from.list!, (x) => !x.disabled && x.checked!);\r\n if (this.search()) {\r\n XRemove(from.searchList!, (x) => !x.disabled && x.checked!);\r\n }\r\n for (let item of checkedItems) {\r\n let node: XTreeNode = to.list?.find((x) => x.id === item.id)!;\r\n if (node) {\r\n node.checked = false;\r\n node.disabled = false;\r\n const idx = this.treeActivatedId().findIndex((x) => x === node.id);\r\n if (idx >= 0) {\r\n this.treeActivatedId.update((x) => {\r\n x.splice(idx, 1);\r\n return [...x];\r\n });\r\n }\r\n node.change && node.change();\r\n }\r\n }\r\n this.setCheckedCount('tree', to);\r\n this.setCheckedCount('list', from);\r\n }\r\n this.setCheckedAll(from, to);\r\n this.setListCount('list', from, to);\r\n this.setButtonDisabled(from, to);\r\n this.setSearchList(from, to);\r\n this.setValue();\r\n }\r\n\r\n private moveTable(from: XTransferSource, to: XTransferSource) {\r\n let checkedItems: XTransferNode[] = [];\r\n if (to.direction === 'right') {\r\n checkedItems = from.list?.filter((x) => !x.disabled && x.checked)!;\r\n to.list = [\r\n ...checkedItems.map((x) => {\r\n const res = { ...x };\r\n x.disabled = true;\r\n x.checked = true;\r\n res.disabled = false;\r\n res.checked = false;\r\n return res;\r\n }),\r\n ...to.list!\r\n ];\r\n this.tableData.set([...from.list!]);\r\n this.setCheckedCount('table', from);\r\n this.setCheckedCount('list', to);\r\n } else {\r\n checkedItems = XRemove(from.list!, (x) => !x.disabled && x.checked!);\r\n const ids = checkedItems.map((x) => x.id);\r\n for (let item of to.list!) {\r\n if (ids.includes(item.id)) {\r\n item.checked = false;\r\n item.disabled = false;\r\n }\r\n }\r\n from.list = [...from.list!];\r\n this.tableData.set([...to.list!]);\r\n this.setCheckedCount('table', to);\r\n this.setCheckedCount('list', from);\r\n }\r\n this.setListCount('table', from, to);\r\n this.setCheckedAll(from, to);\r\n this.setButtonDisabled(from, to);\r\n this.setSearchList(from, to);\r\n this.setValue();\r\n }\r\n\r\n dropCdk(event: CdkDragDrop<XTransferNode[] | undefined, any>) {\r\n const ev = event as CdkDragDrop<XTransferNode[]>;\r\n if (ev.previousContainer === ev.container) {\r\n moveItemInArray(ev.container.data, ev.previousIndex, ev.currentIndex);\r\n } else {\r\n transferArrayItem(ev.previousContainer.data, ev.container.data, ev.previousIndex, ev.currentIndex);\r\n this.setCheckedCount('list', this.left(), this.right());\r\n this.setCheckedAll(this.left(), this.right());\r\n this.setListCount('list', this.left(), this.right());\r\n this.setButtonDisabled(this.left(), this.right());\r\n }\r\n this.setSearchList(this.left(), this.right());\r\n this.setValue();\r\n }\r\n\r\n predicate(item: CdkDrag<XTransferNode>) {\r\n return !item.data.disabled;\r\n }\r\n\r\n trackByNode(_index: number, item: XTransferNode) {\r\n return item.id;\r\n }\r\n\r\n setListCount(type: XTransferType = 'list', ...sources: XTransferSource[]) {\r\n if (['list', 'tree'].includes(type)) {\r\n for (let source of sources) {\r\n source.count = source.list?.filter((x) => !x.disabled).length;\r\n }\r\n } else if (type === 'table') {\r\n for (let source of sources) {\r\n if (source.direction === 'left') {\r\n source.count = this.tableTotal() - this.right().list!.length || 0;\r\n } else {\r\n source.count = source.list?.filter((x) => !x.disabled).length;\r\n }\r\n }\r\n }\r\n }\r\n\r\n onTreeNodeClick(_node: XTreeNode) {\r\n this.setCheckedCount('tree', this.left());\r\n this.setCheckedAll(this.left());\r\n this.setButtonDisabled(this.left());\r\n }\r\n\r\n onTableCheckedRow(row: XTransferNode, source: XTransferSource) {\r\n if (!this.tableCheckboxColumn()) return;\r\n let checked = row[this.tableCheckboxColumn()!.id];\r\n row.checked = checked;\r\n this.setCheckedCount('table', source);\r\n this.setCheckedAll(source);\r\n this.setButtonDisabled(source);\r\n }\r\n\r\n onTableCheckedAll(row: XTableHeadCheckbox, source: XTransferSource) {\r\n if (!this.tableCheckboxColumn()) return;\r\n let checked = row.checkbox[this.tableCheckboxColumn()!.id];\r\n for (let item of source.list!) {\r\n if (!item.disabled) {\r\n item.checked = checked;\r\n }\r\n }\r\n this.setCheckedCount('table', source);\r\n this.setButtonDisabled(source);\r\n }\r\n\r\n onInverse(source: XTransferSource) {\r\n for (let item of source.list!) {\r\n if (!item.disabled) {\r\n item.checked = !item.checked;\r\n }\r\n }\r\n let type = `${this.type}` as XTransferType;\r\n if (type === 'tree' && source.direction === 'right') {\r\n type = 'list';\r\n }\r\n this.setCheckedCount(type, source);\r\n this.setCheckedAll(source);\r\n this.setButtonDisabled(source);\r\n }\r\n\r\n private getTableCheckColumn() {\r\n if (this.type() !== 'table' || XIsEmpty(this.tableColumns())) return;\r\n this.tableCheckboxColumn.set(this.tableColumns()!.find((x) => x.rowChecked)!);\r\n }\r\n\r\n private setCheckedAll(...sources: XTransferSource[]) {\r\n for (let source of sources) {\r\n if ((source.checkedCount as number) > 0) {\r\n if (source.checkedCount === source.list?.filter((x) => !x.disabled).length) {\r\n source.checkedAll = true;\r\n } else {\r\n source.checkedAll = false;\r\n source.indeterminate = true;\r\n }\r\n } else {\r\n source.checkedAll = false;\r\n source.indeterminate = false;\r\n }\r\n }\r\n }\r\n\r\n private setCheckedCount(type: XTransferType = 'list', ...sources: XTransferSource[]) {\r\n for (let source of sources) {\r\n if (['table', 'list'].includes(type)) {\r\n source.checkedCount = source.list?.filter((x) => !x.disabled && x.checked).length;\r\n } else if (type === 'tree') {\r\n source.checkedCount = source.list?.filter(\r\n (x) => !x.disabled && !XIsEmpty(this.treeActivatedId()) && this.treeActivatedId().includes(x.id)\r\n ).length;\r\n }\r\n }\r\n }\r\n\r\n private setButtonDisabled(...sources: XTransferSource[]) {\r\n for (let source of sources) source.disabledButton = source.checkedCount === 0;\r\n }\r\n\r\n private setValue() {\r\n if (this.isObjectArray()) {\r\n this.value.set(this.right().list!);\r\n } else {\r\n this.value.set(this.right().list?.map((x) => x.id)!);\r\n }\r\n this.onChange && this.onChange(this.value());\r\n }\r\n\r\n private setSearchList(...sources: XTransferSource[]) {\r\n if (this.search()) {\r\n for (let source of sources) {\r\n if (XIsEmpty(source.searchInput)) {\r\n source.searchList = [...(source.list as XTransferNode[])];\r\n }\r\n }\r\n }\r\n }\r\n\r\n private setData() {\r\n if (this.type() === 'table') {\r\n this.getTableData();\r\n return;\r\n }\r\n XSetData<XTransferNode>(this.data(), this.unSubject).subscribe((x) => {\r\n this.setList(x);\r\n });\r\n }\r\n\r\n private setList(data: XTransferNode[]) {\r\n if (XIsEmpty(data)) return;\r\n switch (this.type()) {\r\n case 'list':\r\n this.nodes.set(data);\r\n if (!XIsEmpty(this.values())) {\r\n this.left.update((x) => {\r\n x.list = this.nodes().filter((x) => this.values().indexOf(x.id) < 0);\r\n return { ...x };\r\n });\r\n this.right.update((x) => {\r\n x.list = this.nodes().filter((x) => this.values().indexOf(x.id) >= 0);\r\n return { ...x };\r\n });\r\n } else {\r\n this.left.update((x) => {\r\n x.list = [...this.nodes()];\r\n return { ...x };\r\n });\r\n }\r\n this.setSearchList(this.left(), this.right());\r\n this.setListCount(this.type(), this.left(), this.right());\r\n break;\r\n case 'tree':\r\n this.nodes.set(data);\r\n this.setTreeNodeDisabled();\r\n this.left.update((x) => {\r\n x.list = [...this.nodes()];\r\n return { ...x };\r\n });\r\n if (!XIsEmpty(this.values())) {\r\n this.right.update((z) => {\r\n z.list = this.nodes()\r\n .filter((x) => this.values().indexOf(x.id) >= 0)\r\n .map((x) => {\r\n let res = { ...x };\r\n res.checked = false;\r\n res.disabled = false;\r\n return res;\r\n });\r\n return { ...z };\r\n });\r\n }\r\n this.setSearchList(this.left(), this.right());\r\n this.setListCount(this.type(), this.left(), this.right());\r\n break;\r\n case 'table':\r\n this.nodes.set(data);\r\n this.setTableDataDisabled();\r\n this.left.update((x) => {\r\n x.list = [...this.nodes()];\r\n return { ...x };\r\n });\r\n if (!XIsEmpty(this.values())) {\r\n if (this.isObjectArray()) {\r\n this.right.update((z) => {\r\n z.list = [\r\n ...this.value().map((x: any) => {\r\n let res = { ...x };\r\n res.disabled = false;\r\n res.checked = false;\r\n return res;\r\n })\r\n ];\r\n return { ...z };\r\n });\r\n } else {\r\n this.right.update((x) => {\r\n x.list = [...this.value()];\r\n return { ...x };\r\n });\r\n }\r\n }\r\n this.setSearchList(this.left(), this.right());\r\n this.setListCount(this.type(), this.left(), this.right());\r\n break;\r\n }\r\n }\r\n\r\n getTableData() {\r\n if (XIsFunction(this.data())) {\r\n (this.data() as Function)(this.tableIndex(), this.tableSize(), this.tableQuery()).subscribe(\r\n (x: XResultList<XTransferNode>) => {\r\n this.tableTotal.set(x.total!);\r\n this.tableData.set(x.list!);\r\n this.setList(x.list!);\r\n }\r\n );\r\n }\r\n }\r\n\r\n private setTitles() {\r\n let titles: string[] = [];\r\n if (XIsEmpty(this.titles())) {\r\n titles = [this.localTitle()!, this.locale().selectedTitle!];\r\n } else {\r\n titles = this.titles()!;\r\n }\r\n if (titles.length > 0) {\r\n this.left.update((x) => {\r\n x.title = titles[0];\r\n return { ...x };\r\n });\r\n }\r\n if (titles.length > 1) {\r\n this.right.update((x) => {\r\n x.title = titles[1];\r\n return { ...x };\r\n });\r\n }\r\n }\r\n\r\n private setListStyle() {\r\n if (XIsEmpty(this.listStyle())) return;\r\n let styles: object[] = [];\r\n if (XIsObject(this.listStyle())) {\r\n styles = [this.listStyle()!, this.listStyle()!];\r\n } else if (XIsObjectArray(this.listStyle())) {\r\n styles = this.listStyle() as object[];\r\n }\r\n if (styles.length > 0)\r\n this.left.update((x) => {\r\n x.listStyle = styles[0];\r\n return { ...x };\r\n });\r\n if (styles.length > 1)\r\n this.right.update((x) => {\r\n x.listStyle = styles[1];\r\n return { ...x };\r\n });\r\n }\r\n\r\n private setTreeNodeDisabled() {\r\n if (!XIsEmpty(this.values()) && this.nodes()) {\r\n for (let item of this.nodes()) {\r\n let hasIn = this.values().indexOf(item.id) >= 0;\r\n item.disabled = hasIn;\r\n item.checked = hasIn;\r\n }\r\n }\r\n }\r\n\r\n private setTableDataDisabled() {\r\n if (!XIsEmpty(this.values()) && this.nodes()) {\r\n for (let item of this.nodes()) {\r\n let hasIn = this.values().indexOf(item.id) >= 0;\r\n item.disabled = hasIn;\r\n item.checked = hasIn;\r\n }\r\n }\r\n }\r\n\r\n private setHiddenCheckAll() {\r\n if (XIsEmpty(this.hiddenCheckAll())) return;\r\n if (this.hiddenCheckAll()!.length > 0 && XIsBoolean(this.hiddenCheckAll()![0])) {\r\n this.left.update((x) => {\r\n x.hiddenCheckAll = this.hiddenCheckAll()![0];\r\n return { ...x };\r\n });\r\n }\r\n if (this.hiddenCheckAll()!.length > 1 && XIsBoolean(this.hiddenCheckAll()![1])) {\r\n this.right.update((x) => {\r\n x.hiddenCheckAll = this.hiddenCheckAll()![1];\r\n return { ...x };\r\n });\r\n }\r\n }\r\n\r\n private setFooterTpl() {\r\n if (XIsEmpty(this.footerTpl())) return;\r\n if (this.footerTpl()!.length > 0) {\r\n this.left.update((x) => {\r\n x.footerTpl = this.footerTpl()![0];\r\n return { ...x };\r\n });\r\n }\r\n if (this.footerTpl()!.length > 1) {\r\n this.right.update((x) => {\r\n x.footerTpl = this.footerTpl()![1];\r\n return { ...x };\r\n });\r\n }\r\n }\r\n\r\n private setTableHeadSearchTpl() {\r\n if (XIsEmpty(this.tableHeadSearchTpl())) return;\r\n if (this.tableHeadSearchTpl()!.length > 0) {\r\n this.left.update((x) => {\r\n x.tableHeadSearchTpl = this.tableHeadSearchTpl()![0];\r\n return { ...x };\r\n });\r\n }\r\n if (this.tableHeadSearchTpl()!.length > 1) {\r\n this.right.update((x) => {\r\n x.tableHeadSearchTpl = this.tableHeadSearchTpl()![1];\r\n return { ...x };\r\n });\r\n }\r\n }\r\n}\r\n","<div #transfer class=\"x-transfer\" cdkDropListGroup>\r\n <div class=\"x-transfer-box\" [class.x-transfer-has-footer]=\"left().footerTpl\">\r\n <ng-container *ngTemplateOutlet=\"sourceTitleTpl; context: { source: left() }\"></ng-container>\r\n <div [ngStyle]=\"left().listStyle!\" class=\"x-transfer-list x-transfer-{{ type() }}\">\r\n @switch (type()) {\r\n @case ('list') {\r\n <ul\r\n cdkDropList\r\n (cdkDropListDropped)=\"dropCdk($event)\"\r\n [cdkDropListData]=\"left().list\"\r\n [cdkDropListDisabled]=\"!drag() && type() === 'list'\"\r\n [cdkDropListEnterPredicate]=\"predicate\"\r\n class=\"x-transfer-droplist\"\r\n >\r\n @for (node of left().list; track node.id) {\r\n <li class=\"x-transfer-item\" cdkDrag [cdkDragData]=\"node\">\r\n <ng-container *ngTemplateOutlet=\"sourceNodeTpl; context: { node: node, source: left() }\"></ng-container>\r\n </li>\r\n }\r\n </ul>\r\n }\r\n @case ('tree') {\r\n <x-tree\r\n [data]=\"left().list!\"\r\n multiple\r\n allowManyActivated\r\n [(activatedId)]=\"treeActivatedId\"\r\n (nodeClick)=\"onTreeNodeClick($event)\"\r\n [labelTpl]=\"treeLabelTpl\"\r\n ></x-tree>\r\n <ng-template #treeLabelTpl let-node=\"$node\">\r\n <span class=\"x-transfer-tree-label\" x-keyword [text]=\"left().searchInput!\">{{ node.label }}</span>\r\n </ng-template>\r\n }\r\n @case ('table') {\r\n <x-table\r\n #leftTableCom\r\n [data]=\"tableData()\"\r\n [columns]=\"tableColumns()!\"\r\n [(size)]=\"tableSize\"\r\n [(index)]=\"tableIndex\"\r\n (indexChange)=\"getTableData()\"\r\n [query]=\"tableQuery()\"\r\n [total]=\"tableTotal()\"\r\n (activatedRowChange)=\"onTableCheckedRow($event!, left())\"\r\n (headCheckboxChange)=\"onTableCheckedAll($event, left())\"\r\n hiddenWrapBorder\r\n hiddenPaginationBorder\r\n showEllipsis=\"false\"\r\n showTotal=\"false\"\r\n paginationPosition=\"bottom-center\"\r\n allowSelectRow=\"false\"\r\n [headSearchTpl]=\"left().tableHeadSearchTpl\"\r\n ></x-table>\r\n }\r\n }\r\n </div>\r\n @if (left().footerTpl) {\r\n <div class=\"x-transfer-footer\">\r\n <ng-container *ngTemplateOutlet=\"left().footerTpl!; context: { $source: left() }\"></ng-container>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"x-transfer-buttons\">\r\n <x-button\r\n type=\"primary\"\r\n icon=\"fto-chevron-right\"\r\n [disabled]=\"left().disabledButton!\"\r\n (click)=\"move(left(), right())\"\r\n flat\r\n ></x-button>\r\n <x-button\r\n type=\"primary\"\r\n icon=\"fto-chevron-left\"\r\n [disabled]=\"right().disabledButton!\"\r\n (click)=\"move(right(), left())\"\r\n flat\r\n ></x-button>\r\n </div>\r\n <div class=\"x-transfer-box\" [class.x-transfer-has-footer]=\"right().footerTpl\">\r\n <ng-container *ngTemplateOutlet=\"sourceTitleTpl; context: { source: right() }\"></ng-container>\r\n\r\n <div [ngStyle]=\"right().listStyle!\" class=\"x-transfer-list\">\r\n @switch (type()) {\r\n @case ('table') {\r\n <x-table\r\n #rightTableCom\r\n [data]=\"right().list!\"\r\n [columns]=\"tableColumns()!\"\r\n (activatedRowChange)=\"onTableCheckedRow($event!, right())\"\r\n (headCheckboxChange)=\"onTableCheckedAll($event, right())\"\r\n hiddenWrapBorder\r\n hiddenPaginationBorder\r\n showPagination=\"false\"\r\n showEllipsis=\"false\"\r\n showTotal=\"false\"\r\n paginationPosition=\"bottom-center\"\r\n allowSelectRow=\"false\"\r\n [headSearchTpl]=\"right().tableHeadSearchTpl\"\r\n ></x-table>\r\n }\r\n @default {\r\n <ul\r\n cdkDropList\r\n (cdkDropListDropped)=\"dropCdk($event)\"\r\n [cdkDropListData]=\"right().list\"\r\n [cdkDropListDisabled]=\"!drag() || (drag() && type() !== 'list')\"\r\n [cdkDropListEnterPredicate]=\"predicate\"\r\n class=\"x-transfer-droplist\"\r\n >\r\n @for (node of right().list; track node.id) {\r\n <li class=\"x-transfer-item\" cdkDrag [cdkDragData]=\"node\">\r\n <ng-container\r\n *ngTemplateOutlet=\"sourceNodeTpl; context: { node: node, source: right() }\"\r\n ></ng-container>\r\n </li>\r\n }\r\n </ul>\r\n }\r\n }\r\n </div>\r\n @if (right().footerTpl) {\r\n <div class=\"x-transfer-footer\">\r\n <ng-container *ngTemplateOutlet=\"right().footerTpl!; context: { $source: right() }\"></ng-container>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n\r\n<ng-template #sourceTitleTpl let-source=\"source\">\r\n <div class=\"x-transfer-title\">\r\n <div class=\"x-transfer-title-left\">\r\n @if (source.title && !source.hiddenCheckAll) {\r\n <x-checkbox\r\n class=\"x-transfer-check-all\"\r\n [data]=\"[titleTpl() ? '' : source.title]\"\r\n [(ngModel)]=\"source.checkedAll\"\r\n (ngModelChange)=\"checkedAllChange($event, source)\"\r\n [indeterminate]=\"source.indeterminate\"\r\n single\r\n ></x-checkbox>\r\n }\r\n @if (source.title && source.hiddenCheckAll) {\r\n <span>{{ source.title }}</span>\r\n }\r\n @if (inverse() && type() === 'list') {\r\n <x-link class=\"x-transfer-inverse\" type=\"primary\" (click)=\"onInverse(source)\">{{\r\n 'transfer.inverse' | xI18n\r\n }}</x-link>\r\n }\r\n </div>\r\n <ng-container\r\n *xOutlet=\"titleTpl(); context: { $title: source.title, $checkedCount: source.checkedCount, $count: source.count }\"\r\n ><span class=\"x-transfer-total\">{{ source.checkedCount }} / {{ source.count }}</span></ng-container\r\n >\r\n </div>\r\n @if (search() && type() !== 'table') {\r\n <div class=\"x-transfer-search\">\r\n <x-input\r\n icon=\"fto-search\"\r\n [(ngModel)]=\"source.searchInput\"\r\n (ngModelChange)=\"onSearchInputChange(source)\"\r\n clearable\r\n ></x-input>\r\n </div>\r\n }\r\n</ng-template>\r\n\r\n<ng-template #sourceNodeTpl let-node=\"node\" let-source=\"source\">\r\n <x-checkbox\r\n [data]=\"[{ id: node.id, label: nodeTpl() ? nodeTpl() : labelTpl, node: node }]\"\r\n [disabled]=\"node.disabled\"\r\n [(ngModel)]=\"node.checked\"\r\n (ngModelChange)=\"checkedChange($event, source)\"\r\n single\r\n ></x-checkbox>\r\n <ng-template #labelTpl>\r\n <span x-keyword [text]=\"source.searchInput!\">{{ node.label }}</span>\r\n </ng-template>\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { XTransferComponent } from './transfer.component';\r\n\r\n@NgModule({\r\n exports: [XTransferComponent],\r\n imports: [XTransferComponent]\r\n})\r\nexport class XTransferModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -43,27 +43,27 @@ class XTreeFileProperty extends XPropertyFunction(X_TREE_FILE_CONFIG_NAME) {
43
43
  * @zh_CN 显示切换按钮
44
44
  * @en_US Show toggle button
45
45
  */
46
- this.showToggle = input(true, ...(ngDevMode ? [{ debugName: "showToggle", transform: XToBoolean }] : [{ transform: XToBoolean }]));
46
+ this.showToggle = input(true, { ...(ngDevMode ? { debugName: "showToggle" } : {}), transform: XToBoolean });
47
47
  /**
48
48
  * @zh_CN 显示树,为 true 的时候隐藏切换按钮
49
49
  * @en_US Show the tree, hide the toggle button when true
50
50
  */
51
- this.showTree = input(true, ...(ngDevMode ? [{ debugName: "showTree", transform: XToBoolean }] : [{ transform: XToBoolean }]));
51
+ this.showTree = input(true, { ...(ngDevMode ? { debugName: "showTree" } : {}), transform: XToBoolean });
52
52
  /**
53
53
  * @zh_CN 显示面包屑
54
54
  * @en_US Show breadcrumbs
55
55
  */
56
- this.showCrumb = input(true, ...(ngDevMode ? [{ debugName: "showCrumb", transform: XToBoolean }] : [{ transform: XToBoolean }]));
56
+ this.showCrumb = input(true, { ...(ngDevMode ? { debugName: "showCrumb" } : {}), transform: XToBoolean });
57
57
  /**
58
58
  * @zh_CN 最大高度
59
59
  * @en_US Maximum height
60
60
  */
61
- this.maxHeight = input(this.config?.maxHeight ?? '37.5rem', ...(ngDevMode ? [{ debugName: "maxHeight", transform: XToCssPixelValue }] : [{ transform: XToCssPixelValue }]));
61
+ this.maxHeight = input(this.config?.maxHeight ?? '37.5rem', { ...(ngDevMode ? { debugName: "maxHeight" } : {}), transform: XToCssPixelValue });
62
62
  /**
63
63
  * @zh_CN 单位间距,这个与层级的乘积算出节点的左边距
64
64
  * @en_US Unit spacing, the product of this and the level calculates the left margin of the node
65
65
  */
66
- this.spacing = input(this.config?.spacing ?? '1rem', ...(ngDevMode ? [{ debugName: "spacing", transform: XToCssPixelValue }] : [{ transform: XToCssPixelValue }]));
66
+ this.spacing = input(this.config?.spacing ?? '1rem', { ...(ngDevMode ? { debugName: "spacing" } : {}), transform: XToCssPixelValue });
67
67
  /**
68
68
  * @zh_CN 当前激活的节点 Id, 当 multiple 为 true 时,值为数组(默认是 Id 数组,objectArray 为 true,对象数组)
69
69
  * @en_US Currently active node Id. When Multiple is true, the value is the Id array
@@ -78,17 +78,17 @@ class XTreeFileProperty extends XPropertyFunction(X_TREE_FILE_CONFIG_NAME) {
78
78
  * @zh_CN 展开所有节点
79
79
  * @en_US Expand all nodes
80
80
  */
81
- this.expandedAll = input(false, ...(ngDevMode ? [{ debugName: "expandedAll", transform: XToBoolean }] : [{ transform: XToBoolean }]));
81
+ this.expandedAll = input(false, { ...(ngDevMode ? { debugName: "expandedAll" } : {}), transform: XToBoolean });
82
82
  /**
83
83
  * @zh_CN 默认展开的层级
84
84
  * @en_US Default expanded level
85
85
  */
86
- this.expandedLevel = input(-1, ...(ngDevMode ? [{ debugName: "expandedLevel", transform: XToNumber }] : [{ transform: XToNumber }]));
86
+ this.expandedLevel = input(-1, { ...(ngDevMode ? { debugName: "expandedLevel" } : {}), transform: XToNumber });
87
87
  }
88
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XTreeFileProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
89
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.0", type: XTreeFileProperty, isStandalone: true, selector: "x-tree-file-property", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, domain: { classPropertyName: "domain", publicName: "domain", isSignal: true, isRequired: false, transformFunction: null }, toggle: { classPropertyName: "toggle", publicName: "toggle", isSignal: true, isRequired: false, transformFunction: null }, showToggle: { classPropertyName: "showToggle", publicName: "showToggle", isSignal: true, isRequired: false, transformFunction: null }, showTree: { classPropertyName: "showTree", publicName: "showTree", isSignal: true, isRequired: false, transformFunction: null }, showCrumb: { classPropertyName: "showCrumb", publicName: "showCrumb", isSignal: true, isRequired: false, transformFunction: null }, maxHeight: { classPropertyName: "maxHeight", publicName: "maxHeight", isSignal: true, isRequired: false, transformFunction: null }, spacing: { classPropertyName: "spacing", publicName: "spacing", isSignal: true, isRequired: false, transformFunction: null }, activatedId: { classPropertyName: "activatedId", publicName: "activatedId", isSignal: true, isRequired: false, transformFunction: null }, expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: false, transformFunction: null }, expandedAll: { classPropertyName: "expandedAll", publicName: "expandedAll", isSignal: true, isRequired: false, transformFunction: null }, expandedLevel: { classPropertyName: "expandedLevel", publicName: "expandedLevel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { toggle: "toggleChange", activatedId: "activatedIdChange" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
88
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XTreeFileProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
89
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.6", type: XTreeFileProperty, isStandalone: true, selector: "x-tree-file-property", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, domain: { classPropertyName: "domain", publicName: "domain", isSignal: true, isRequired: false, transformFunction: null }, toggle: { classPropertyName: "toggle", publicName: "toggle", isSignal: true, isRequired: false, transformFunction: null }, showToggle: { classPropertyName: "showToggle", publicName: "showToggle", isSignal: true, isRequired: false, transformFunction: null }, showTree: { classPropertyName: "showTree", publicName: "showTree", isSignal: true, isRequired: false, transformFunction: null }, showCrumb: { classPropertyName: "showCrumb", publicName: "showCrumb", isSignal: true, isRequired: false, transformFunction: null }, maxHeight: { classPropertyName: "maxHeight", publicName: "maxHeight", isSignal: true, isRequired: false, transformFunction: null }, spacing: { classPropertyName: "spacing", publicName: "spacing", isSignal: true, isRequired: false, transformFunction: null }, activatedId: { classPropertyName: "activatedId", publicName: "activatedId", isSignal: true, isRequired: false, transformFunction: null }, expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: false, transformFunction: null }, expandedAll: { classPropertyName: "expandedAll", publicName: "expandedAll", isSignal: true, isRequired: false, transformFunction: null }, expandedLevel: { classPropertyName: "expandedLevel", publicName: "expandedLevel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { toggle: "toggleChange", activatedId: "activatedIdChange" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
90
90
  }
91
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XTreeFileProperty, decorators: [{
91
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XTreeFileProperty, decorators: [{
92
92
  type: Component,
93
93
  args: [{ selector: `${XTreeFilePrefix}-property`, template: '' }]
94
94
  }], propDecorators: { data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: false }] }], domain: [{ type: i0.Input, args: [{ isSignal: true, alias: "domain", required: false }] }], toggle: [{ type: i0.Input, args: [{ isSignal: true, alias: "toggle", required: false }] }, { type: i0.Output, args: ["toggleChange"] }], showToggle: [{ type: i0.Input, args: [{ isSignal: true, alias: "showToggle", required: false }] }], showTree: [{ type: i0.Input, args: [{ isSignal: true, alias: "showTree", required: false }] }], showCrumb: [{ type: i0.Input, args: [{ isSignal: true, alias: "showCrumb", required: false }] }], maxHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxHeight", required: false }] }], spacing: [{ type: i0.Input, args: [{ isSignal: true, alias: "spacing", required: false }] }], activatedId: [{ type: i0.Input, args: [{ isSignal: true, alias: "activatedId", required: false }] }, { type: i0.Output, args: ["activatedIdChange"] }], expanded: [{ type: i0.Input, args: [{ isSignal: true, alias: "expanded", required: false }] }], expandedAll: [{ type: i0.Input, args: [{ isSignal: true, alias: "expandedAll", required: false }] }], expandedLevel: [{ type: i0.Input, args: [{ isSignal: true, alias: "expandedLevel", required: false }] }] } });
@@ -187,20 +187,20 @@ class XTreeFileComponent extends XTreeFileProperty {
187
187
  menuToggle() {
188
188
  this.toggle.update((x) => !x);
189
189
  }
190
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XTreeFileComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
191
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.0", type: XTreeFileComponent, isStandalone: true, selector: "x-tree-file", usesInheritance: true, ngImport: i0, template: "<div #treeFile class=\"x-tree-file\" [class.x-tree-file-toggle]=\"toggle()\">\r\n @if (showTree()) {\r\n <div class=\"x-tree-file-catalog\" [style.max-height]=\"maxHeight()\">\r\n <x-tree\r\n [data]=\"data()\"\r\n (activatedChange)=\"catalogChange($event)\"\r\n nodeOpen\r\n [expandedAll]=\"expandedAll()\"\r\n [expandedLevel]=\"expandedLevel()\"\r\n [expanded]=\"expanded()\"\r\n [spacing]=\"spacing()\"\r\n [(activatedId)]=\"activatedId\"\r\n ></x-tree>\r\n </div>\r\n }\r\n <div class=\"x-tree-file-body\" [x-loading]=\"loading()\">\r\n @if (showCrumb()) {\r\n <div class=\"x-tree-file-crumb\">\r\n @if (showToggle() && showTree()) {\r\n <x-link class=\"x-tree-file-menu\" icon=\"fto-menu\" (click)=\"menuToggle()\"></x-link>\r\n }\r\n <x-crumb [data]=\"crumbData()\" [separator]=\"separatorTpl\"></x-crumb>\r\n <ng-template #separatorTpl>\r\n <x-icon type=\"fto-chevron-right\"></x-icon>\r\n </ng-template>\r\n </div>\r\n }\r\n\r\n <div class=\"x-tree-file-content\" [style.max-height.px]=\"codeHeight()\">\r\n @switch (activatedNode()?.fileType) {\r\n @case ('img') {\r\n <div class=\"x-tree-file-img\"><img [src]=\"activatedNode()?.url\" (load)=\"imgOnload()\" /></div>\r\n }\r\n @case ('code') {\r\n <x-highlight\r\n [type]=\"activatedNode()?.type\"\r\n [data]=\"activatedNode()?.content\"\r\n [highlightLines]=\"highlightLines()\"\r\n ></x-highlight>\r\n }\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".x-tree-file{margin:0;padding:0}.x-tree-file{display:flex;background-color:var(--x-background);border-radius:var(--x-border-radius);border:var(--x-border-width) var(--x-border-style) var(--x-border);color:var(--x-text)}.x-tree-file-catalog{width:0;overflow:auto;opacity:0;font-size:.8125rem;transition:var(--x-animation-duration-slow)}.x-tree-file-catalog .x-tree{padding:.5rem}.x-tree-file-body{flex:1;display:flex;flex-direction:column;overflow:hidden;position:relative}.x-tree-file-crumb{background-color:var(--x-background);border-top-left-radius:var(--x-border-radius);border-top-right-radius:var(--x-border-radius);display:flex}.x-tree-file-crumb>x-link{line-height:1.75rem;height:1.75rem;transition:var(--x-animation-duration-base)}.x-tree-file-crumb>x-link>a{padding:0 .5rem}.x-tree-file-crumb>x-crumb{flex:1}.x-tree-file-crumb>x-crumb>.x-crumb{padding:0 .5rem;color:var(--x-text-300)}.x-tree-file-crumb>x-crumb>.x-crumb .x-crumb-separator{margin:0 .125rem}.x-tree-file-content{flex:1;overflow:auto;transition:var(--x-animation-duration-slow);display:flex;min-height:3rem}.x-tree-file-content>x-highlight{border:none}.x-tree-file-content>x-highlight>pre{overflow:inherit}.x-tree-file-content>.x-tree-file-img{margin:auto;padding:1.5rem;display:flex;align-items:center}.x-tree-file-content>.x-tree-file-img>img{max-width:100%;height:auto;margin:auto;box-shadow:var(--x-box-shadow);border-radius:var(--x-border-radius);background-color:var(--x-background-a100)}.x-tree-file-toggle>.x-tree-file-catalog{width:16rem;opacity:1;border-right:var(--x-border-width) var(--x-border-style) var(--x-border)}\n"], dependencies: [{ kind: "component", type: XTreeComponent, selector: "x-tree" }, { kind: "component", type: XLinkComponent, selector: "x-link" }, { kind: "component", type: XCrumbComponent, selector: "x-crumb" }, { kind: "component", type: XIconComponent, selector: "x-icon" }, { kind: "component", type: XLoadingComponent, selector: "x-loading, [x-loading]" }, { kind: "component", type: XHighlightComponent, selector: "x-highlight" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
190
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XTreeFileComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
191
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: XTreeFileComponent, isStandalone: true, selector: "x-tree-file", usesInheritance: true, ngImport: i0, template: "<div #treeFile class=\"x-tree-file\" [class.x-tree-file-toggle]=\"toggle()\">\r\n @if (showTree()) {\r\n <div class=\"x-tree-file-catalog\" [style.max-height]=\"maxHeight()\">\r\n <x-tree\r\n [data]=\"data()\"\r\n (activatedChange)=\"catalogChange($event)\"\r\n nodeOpen\r\n [expandedAll]=\"expandedAll()\"\r\n [expandedLevel]=\"expandedLevel()\"\r\n [expanded]=\"expanded()\"\r\n [spacing]=\"spacing()\"\r\n [(activatedId)]=\"activatedId\"\r\n ></x-tree>\r\n </div>\r\n }\r\n <div class=\"x-tree-file-body\" [x-loading]=\"loading()\">\r\n @if (showCrumb()) {\r\n <div class=\"x-tree-file-crumb\">\r\n @if (showToggle() && showTree()) {\r\n <x-link class=\"x-tree-file-menu\" icon=\"fto-menu\" (click)=\"menuToggle()\"></x-link>\r\n }\r\n <x-crumb [data]=\"crumbData()\" [separator]=\"separatorTpl\"></x-crumb>\r\n <ng-template #separatorTpl>\r\n <x-icon type=\"fto-chevron-right\"></x-icon>\r\n </ng-template>\r\n </div>\r\n }\r\n\r\n <div class=\"x-tree-file-content\" [style.max-height.px]=\"codeHeight()\">\r\n @switch (activatedNode()?.fileType) {\r\n @case ('img') {\r\n <div class=\"x-tree-file-img\"><img [src]=\"activatedNode()?.url\" (load)=\"imgOnload()\" /></div>\r\n }\r\n @case ('code') {\r\n <x-highlight\r\n [type]=\"activatedNode()?.type\"\r\n [data]=\"activatedNode()?.content\"\r\n [highlightLines]=\"highlightLines()\"\r\n ></x-highlight>\r\n }\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".x-tree-file{margin:0;padding:0}.x-tree-file{display:flex;background-color:var(--x-background);border-radius:var(--x-border-radius);border:var(--x-border-width) var(--x-border-style) var(--x-border);color:var(--x-text)}.x-tree-file-catalog{width:0;overflow:auto;opacity:0;font-size:.8125rem;transition:var(--x-animation-duration-slow)}.x-tree-file-catalog .x-tree{padding:.5rem}.x-tree-file-body{flex:1;display:flex;flex-direction:column;overflow:hidden;position:relative}.x-tree-file-crumb{background-color:var(--x-background);border-top-left-radius:var(--x-border-radius);border-top-right-radius:var(--x-border-radius);display:flex}.x-tree-file-crumb>x-link{line-height:1.75rem;height:1.75rem;transition:var(--x-animation-duration-base)}.x-tree-file-crumb>x-link>a{padding:0 .5rem}.x-tree-file-crumb>x-crumb{flex:1}.x-tree-file-crumb>x-crumb>.x-crumb{padding:0 .5rem;color:var(--x-text-300)}.x-tree-file-crumb>x-crumb>.x-crumb .x-crumb-separator{margin:0 .125rem}.x-tree-file-content{flex:1;overflow:auto;transition:var(--x-animation-duration-slow);display:flex;min-height:3rem}.x-tree-file-content>x-highlight{border:none}.x-tree-file-content>x-highlight>pre{overflow:inherit}.x-tree-file-content>.x-tree-file-img{margin:auto;padding:1.5rem;display:flex;align-items:center}.x-tree-file-content>.x-tree-file-img>img{max-width:100%;height:auto;margin:auto;box-shadow:var(--x-box-shadow);border-radius:var(--x-border-radius);background-color:var(--x-background-a100)}.x-tree-file-toggle>.x-tree-file-catalog{width:16rem;opacity:1;border-right:var(--x-border-width) var(--x-border-style) var(--x-border)}\n"], dependencies: [{ kind: "component", type: XTreeComponent, selector: "x-tree" }, { kind: "component", type: XLinkComponent, selector: "x-link" }, { kind: "component", type: XCrumbComponent, selector: "x-crumb" }, { kind: "component", type: XIconComponent, selector: "x-icon" }, { kind: "component", type: XLoadingComponent, selector: "x-loading, [x-loading]" }, { kind: "component", type: XHighlightComponent, selector: "x-highlight" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
192
192
  }
193
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XTreeFileComponent, decorators: [{
193
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XTreeFileComponent, decorators: [{
194
194
  type: Component,
195
195
  args: [{ selector: `${XTreeFilePrefix}`, imports: [XTreeComponent, XLinkComponent, XCrumbComponent, XIconComponent, XLoadingComponent, XHighlightComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #treeFile class=\"x-tree-file\" [class.x-tree-file-toggle]=\"toggle()\">\r\n @if (showTree()) {\r\n <div class=\"x-tree-file-catalog\" [style.max-height]=\"maxHeight()\">\r\n <x-tree\r\n [data]=\"data()\"\r\n (activatedChange)=\"catalogChange($event)\"\r\n nodeOpen\r\n [expandedAll]=\"expandedAll()\"\r\n [expandedLevel]=\"expandedLevel()\"\r\n [expanded]=\"expanded()\"\r\n [spacing]=\"spacing()\"\r\n [(activatedId)]=\"activatedId\"\r\n ></x-tree>\r\n </div>\r\n }\r\n <div class=\"x-tree-file-body\" [x-loading]=\"loading()\">\r\n @if (showCrumb()) {\r\n <div class=\"x-tree-file-crumb\">\r\n @if (showToggle() && showTree()) {\r\n <x-link class=\"x-tree-file-menu\" icon=\"fto-menu\" (click)=\"menuToggle()\"></x-link>\r\n }\r\n <x-crumb [data]=\"crumbData()\" [separator]=\"separatorTpl\"></x-crumb>\r\n <ng-template #separatorTpl>\r\n <x-icon type=\"fto-chevron-right\"></x-icon>\r\n </ng-template>\r\n </div>\r\n }\r\n\r\n <div class=\"x-tree-file-content\" [style.max-height.px]=\"codeHeight()\">\r\n @switch (activatedNode()?.fileType) {\r\n @case ('img') {\r\n <div class=\"x-tree-file-img\"><img [src]=\"activatedNode()?.url\" (load)=\"imgOnload()\" /></div>\r\n }\r\n @case ('code') {\r\n <x-highlight\r\n [type]=\"activatedNode()?.type\"\r\n [data]=\"activatedNode()?.content\"\r\n [highlightLines]=\"highlightLines()\"\r\n ></x-highlight>\r\n }\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".x-tree-file{margin:0;padding:0}.x-tree-file{display:flex;background-color:var(--x-background);border-radius:var(--x-border-radius);border:var(--x-border-width) var(--x-border-style) var(--x-border);color:var(--x-text)}.x-tree-file-catalog{width:0;overflow:auto;opacity:0;font-size:.8125rem;transition:var(--x-animation-duration-slow)}.x-tree-file-catalog .x-tree{padding:.5rem}.x-tree-file-body{flex:1;display:flex;flex-direction:column;overflow:hidden;position:relative}.x-tree-file-crumb{background-color:var(--x-background);border-top-left-radius:var(--x-border-radius);border-top-right-radius:var(--x-border-radius);display:flex}.x-tree-file-crumb>x-link{line-height:1.75rem;height:1.75rem;transition:var(--x-animation-duration-base)}.x-tree-file-crumb>x-link>a{padding:0 .5rem}.x-tree-file-crumb>x-crumb{flex:1}.x-tree-file-crumb>x-crumb>.x-crumb{padding:0 .5rem;color:var(--x-text-300)}.x-tree-file-crumb>x-crumb>.x-crumb .x-crumb-separator{margin:0 .125rem}.x-tree-file-content{flex:1;overflow:auto;transition:var(--x-animation-duration-slow);display:flex;min-height:3rem}.x-tree-file-content>x-highlight{border:none}.x-tree-file-content>x-highlight>pre{overflow:inherit}.x-tree-file-content>.x-tree-file-img{margin:auto;padding:1.5rem;display:flex;align-items:center}.x-tree-file-content>.x-tree-file-img>img{max-width:100%;height:auto;margin:auto;box-shadow:var(--x-box-shadow);border-radius:var(--x-border-radius);background-color:var(--x-background-a100)}.x-tree-file-toggle>.x-tree-file-catalog{width:16rem;opacity:1;border-right:var(--x-border-width) var(--x-border-style) var(--x-border)}\n"] }]
196
196
  }] });
197
197
 
198
198
  class XTreeFileModule {
199
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XTreeFileModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
200
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.0", ngImport: i0, type: XTreeFileModule, imports: [XTreeFileComponent], exports: [XTreeFileComponent] }); }
201
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XTreeFileModule, imports: [XTreeFileComponent] }); }
199
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XTreeFileModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
200
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.6", ngImport: i0, type: XTreeFileModule, imports: [XTreeFileComponent], exports: [XTreeFileComponent] }); }
201
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XTreeFileModule, imports: [XTreeFileComponent] }); }
202
202
  }
203
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.0", ngImport: i0, type: XTreeFileModule, decorators: [{
203
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: XTreeFileModule, decorators: [{
204
204
  type: NgModule,
205
205
  args: [{
206
206
  exports: [XTreeFileComponent],
@@ -1 +1 @@
1
- {"version":3,"file":"ng-nest-ui-tree-file.mjs","sources":["../../../../lib/ng-nest/ui/tree-file/tree-file.property.ts","../../../../lib/ng-nest/ui/tree-file/tree-file.component.ts","../../../../lib/ng-nest/ui/tree-file/tree-file.component.html","../../../../lib/ng-nest/ui/tree-file/tree-file.module.ts","../../../../lib/ng-nest/ui/tree-file/ng-nest-ui-tree-file.ts"],"sourcesContent":["import { XPropertyFunction, XToBoolean, XToCssPixelValue, XToNumber } from '@ng-nest/ui/core';\r\nimport { Component, input, model } from '@angular/core';\r\nimport { XTreeNode } from '@ng-nest/ui/tree';\r\nimport { XCrumbNode } from '@ng-nest/ui/crumb';\r\nimport { XHighlightLines } from '@ng-nest/ui/highlight';\r\nimport type { XData, XBoolean, XNumber } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * TreeFile\r\n * @selector x-tree-file\r\n * @decorator component\r\n */\r\nexport const XTreeFilePrefix = 'x-tree-file';\r\nconst X_TREE_FILE_CONFIG_NAME = 'treeFile';\r\n\r\n/**\r\n * TreeFile Property\r\n */\r\n@Component({ selector: `${XTreeFilePrefix}-property`, template: '' })\r\nexport class XTreeFileProperty extends XPropertyFunction(X_TREE_FILE_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n readonly data = input<XData<XTreeFileNode>>([]);\r\n /**\r\n * @zh_CN 文件绝对路径地址前缀,为空表示取当前运行的地址\r\n * @en_US File absolute path address prefix, empty means to take the address of the current operation\r\n */\r\n readonly domain = input<string>('');\r\n /**\r\n * @zh_CN 切换状态\r\n * @en_US Switch state\r\n */\r\n readonly toggle = model<boolean>(true);\r\n /**\r\n * @zh_CN 显示切换按钮\r\n * @en_US Show toggle button\r\n */\r\n readonly showToggle = input<boolean, XBoolean>(true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 显示树,为 true 的时候隐藏切换按钮\r\n * @en_US Show the tree, hide the toggle button when true\r\n */\r\n readonly showTree = input<boolean, XBoolean>(true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 显示面包屑\r\n * @en_US Show breadcrumbs\r\n */\r\n readonly showCrumb = input<boolean, XBoolean>(true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 最大高度\r\n * @en_US Maximum height\r\n */\r\n readonly maxHeight = input<string, XNumber>(this.config?.maxHeight ?? '37.5rem', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 单位间距,这个与层级的乘积算出节点的左边距\r\n * @en_US Unit spacing, the product of this and the level calculates the left margin of the node\r\n */\r\n readonly spacing = input<string, XNumber>(this.config?.spacing ?? '1rem', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 当前激活的节点 Id, 当 multiple 为 true 时,值为数组(默认是 Id 数组,objectArray 为 true,对象数组)\r\n * @en_US Currently active node Id. When Multiple is true, the value is the Id array\r\n */\r\n readonly activatedId = model<any>();\r\n /**\r\n * @zh_CN 展开的节点\r\n * @en_US Expanded node\r\n */\r\n readonly expanded = input<any[]>([]);\r\n /**\r\n * @zh_CN 展开所有节点\r\n * @en_US Expand all nodes\r\n */\r\n readonly expandedAll = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 默认展开的层级\r\n * @en_US Default expanded level\r\n */\r\n readonly expandedLevel = input<number, XNumber>(-1, { transform: XToNumber });\r\n}\r\n\r\n/**\r\n * @zh_CN TreeFile 数据对象\r\n * @en_US TreeFile data object\r\n */\r\nexport interface XTreeFileNode extends XTreeNode {\r\n /**\r\n * @zh_CN 子节点\r\n * @en_US Child node\r\n */\r\n children?: XTreeFileNode[];\r\n /**\r\n * @zh_CN 文件内容\r\n * @en_US Document content\r\n */\r\n content?: string;\r\n /**\r\n * @zh_CN 文件类型\r\n * @en_US File type\r\n */\r\n type?: string;\r\n /**\r\n * @zh_CN 文件分类\r\n * @en_US File classification\r\n */\r\n fileType?: XTreeFileType;\r\n /**\r\n * @zh_CN 文件地址,配置了地址将从 url 中加载文件内容\r\n * @en_US File address, the configured address will load the file content from url\r\n */\r\n url?: string;\r\n /**\r\n * @zh_CN 文件的面包屑数据\r\n * @en_US Breadcrumb data\r\n */\r\n crumbData?: XCrumbNode[];\r\n /**\r\n * @zh_CN 文件内容已经加载过\r\n * @en_US File content has been loaded\r\n */\r\n contentLoaded?: boolean;\r\n /**\r\n * @zh_CN 行高亮着色\r\n * @en_US Line highlight coloring\r\n */\r\n highlightLines?: XHighlightLines;\r\n}\r\n\r\n/**\r\n * @zh_CN 文件分类\r\n * @en_US File classification\r\n */\r\nexport type XTreeFileType = 'code' | 'img';\r\n\r\n/**\r\n * @zh_CN 支持显示的图片格式\r\n * @en_US Supported picture format\r\n */\r\nexport const XTreeFileImgs = ['webp', 'png', 'jpg', 'gif', 'jpeg', 'ico'];\r\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, inject, computed, signal } from '@angular/core';\r\nimport { XTreeFilePrefix, XTreeFileProperty, XTreeFileNode, XTreeFileImgs } from './tree-file.property';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { XIsEmpty, XComputedStyle, XToCssPx } from '@ng-nest/ui/core';\r\nimport { XCrumbComponent, XCrumbNode } from '@ng-nest/ui/crumb';\r\nimport { delay, finalize } from 'rxjs/operators';\r\nimport { XHighlightComponent, XHighlightLines } from '@ng-nest/ui/highlight';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { XLinkComponent } from '@ng-nest/ui/link';\r\nimport { XLoadingComponent } from '@ng-nest/ui/loading';\r\nimport { XTreeComponent } from '@ng-nest/ui/tree';\r\n\r\n@Component({\r\n selector: `${XTreeFilePrefix}`,\r\n imports: [XTreeComponent, XLinkComponent, XCrumbComponent, XIconComponent, XLoadingComponent, XHighlightComponent],\r\n templateUrl: './tree-file.component.html',\r\n styleUrls: ['./tree-file.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XTreeFileComponent extends XTreeFileProperty {\r\n activatedNode = signal<XTreeFileNode | null>(null);\r\n loading = signal(false);\r\n time!: number;\r\n timeout: number = 200;\r\n private document = inject(DOCUMENT);\r\n private fontSize = computed(() => parseFloat(XComputedStyle(this.document.documentElement, 'font-size')));\r\n\r\n codeHeight = computed(() => {\r\n return XToCssPx(this.maxHeight(), this.fontSize()) - (this.showCrumb() ? 1.5 : 0) * this.fontSize();\r\n });\r\n\r\n crumbData = computed(() => {\r\n return this.activatedNode()?.crumbData as XCrumbNode[];\r\n });\r\n\r\n highlightLines = computed(() => {\r\n return this.activatedNode()?.highlightLines as XHighlightLines;\r\n });\r\n\r\n private http = inject(HttpClient, { optional: true })!;\r\n\r\n ngOnInit() {\r\n if (!this.http) {\r\n throw new Error(\r\n `${XTreeFilePrefix}: Not found 'HttpClient', You can import 'HttpClientModule' in your root module.`\r\n );\r\n }\r\n if (!this.showTree() && this.activatedId()) {\r\n this.catalogChange((this.data() as XTreeFileNode[]).find((x) => x.id == this.activatedId()) as XTreeFileNode);\r\n }\r\n }\r\n\r\n catalogChange(node: XTreeFileNode) {\r\n if (!node?.leaf && this.showTree()) return;\r\n if (node.url && !node.contentLoaded) {\r\n this.time = new Date().getTime();\r\n this.loading.set(true);\r\n this.setNode(node);\r\n this.activatedNode.set(node);\r\n node.url = node.url?.indexOf(this.domain()) === 0 ? node.url : `${this.domain()}/${node.url}`;\r\n\r\n switch (node.fileType) {\r\n case 'code':\r\n this.http\r\n .get(node.url, { responseType: 'text' })\r\n .pipe(\r\n delay(\r\n new Date().getTime() - this.time > this.timeout ? 0 : this.timeout - new Date().getTime() + this.time\r\n ),\r\n finalize(() => {\r\n this.loading.set(false);\r\n })\r\n )\r\n .subscribe((x) => {\r\n node.content = x;\r\n node.contentLoaded = true;\r\n this.loading.set(false);\r\n });\r\n break;\r\n case 'img':\r\n break;\r\n }\r\n } else {\r\n this.activatedNode.set(node);\r\n this.setNode(this.activatedNode()!);\r\n }\r\n }\r\n\r\n setNode(node: XTreeFileNode) {\r\n if (!node.type) {\r\n node.type = 'bash';\r\n }\r\n if (!node.fileType) {\r\n node.fileType = XTreeFileImgs.indexOf((node.type as string).toLowerCase()) !== -1 ? 'img' : 'code';\r\n }\r\n if (!node.crumbData) {\r\n node.crumbData = this.setCurmbData(node);\r\n }\r\n }\r\n\r\n imgOnload() {\r\n this.loading.set(false);\r\n }\r\n\r\n setCurmbData(node: XTreeFileNode) {\r\n let crumbData: XCrumbNode[] = [{ id: node.id, label: node.label }];\r\n const getParent = (child: XTreeFileNode) => {\r\n if (XIsEmpty(child.pid)) return;\r\n const parent = (this.data() as XTreeFileNode[]).find((x) => x.id === child.pid) as XTreeFileNode;\r\n if (!XIsEmpty(parent)) {\r\n crumbData = [{ id: parent.id, label: parent.label }, ...crumbData];\r\n getParent(parent);\r\n }\r\n };\r\n getParent(node);\r\n\r\n return crumbData;\r\n }\r\n\r\n menuToggle() {\r\n this.toggle.update((x) => !x);\r\n }\r\n}\r\n","<div #treeFile class=\"x-tree-file\" [class.x-tree-file-toggle]=\"toggle()\">\r\n @if (showTree()) {\r\n <div class=\"x-tree-file-catalog\" [style.max-height]=\"maxHeight()\">\r\n <x-tree\r\n [data]=\"data()\"\r\n (activatedChange)=\"catalogChange($event)\"\r\n nodeOpen\r\n [expandedAll]=\"expandedAll()\"\r\n [expandedLevel]=\"expandedLevel()\"\r\n [expanded]=\"expanded()\"\r\n [spacing]=\"spacing()\"\r\n [(activatedId)]=\"activatedId\"\r\n ></x-tree>\r\n </div>\r\n }\r\n <div class=\"x-tree-file-body\" [x-loading]=\"loading()\">\r\n @if (showCrumb()) {\r\n <div class=\"x-tree-file-crumb\">\r\n @if (showToggle() && showTree()) {\r\n <x-link class=\"x-tree-file-menu\" icon=\"fto-menu\" (click)=\"menuToggle()\"></x-link>\r\n }\r\n <x-crumb [data]=\"crumbData()\" [separator]=\"separatorTpl\"></x-crumb>\r\n <ng-template #separatorTpl>\r\n <x-icon type=\"fto-chevron-right\"></x-icon>\r\n </ng-template>\r\n </div>\r\n }\r\n\r\n <div class=\"x-tree-file-content\" [style.max-height.px]=\"codeHeight()\">\r\n @switch (activatedNode()?.fileType) {\r\n @case ('img') {\r\n <div class=\"x-tree-file-img\"><img [src]=\"activatedNode()?.url\" (load)=\"imgOnload()\" /></div>\r\n }\r\n @case ('code') {\r\n <x-highlight\r\n [type]=\"activatedNode()?.type\"\r\n [data]=\"activatedNode()?.content\"\r\n [highlightLines]=\"highlightLines()\"\r\n ></x-highlight>\r\n }\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { XTreeFileComponent } from './tree-file.component';\r\n\r\n@NgModule({\r\n exports: [XTreeFileComponent],\r\n imports: [XTreeFileComponent]\r\n})\r\nexport class XTreeFileModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ng-nest-ui-tree-file.mjs","sources":["../../../../lib/ng-nest/ui/tree-file/tree-file.property.ts","../../../../lib/ng-nest/ui/tree-file/tree-file.component.ts","../../../../lib/ng-nest/ui/tree-file/tree-file.component.html","../../../../lib/ng-nest/ui/tree-file/tree-file.module.ts","../../../../lib/ng-nest/ui/tree-file/ng-nest-ui-tree-file.ts"],"sourcesContent":["import { XPropertyFunction, XToBoolean, XToCssPixelValue, XToNumber } from '@ng-nest/ui/core';\r\nimport { Component, input, model } from '@angular/core';\r\nimport { XTreeNode } from '@ng-nest/ui/tree';\r\nimport { XCrumbNode } from '@ng-nest/ui/crumb';\r\nimport { XHighlightLines } from '@ng-nest/ui/highlight';\r\nimport type { XData, XBoolean, XNumber } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * TreeFile\r\n * @selector x-tree-file\r\n * @decorator component\r\n */\r\nexport const XTreeFilePrefix = 'x-tree-file';\r\nconst X_TREE_FILE_CONFIG_NAME = 'treeFile';\r\n\r\n/**\r\n * TreeFile Property\r\n */\r\n@Component({ selector: `${XTreeFilePrefix}-property`, template: '' })\r\nexport class XTreeFileProperty extends XPropertyFunction(X_TREE_FILE_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n readonly data = input<XData<XTreeFileNode>>([]);\r\n /**\r\n * @zh_CN 文件绝对路径地址前缀,为空表示取当前运行的地址\r\n * @en_US File absolute path address prefix, empty means to take the address of the current operation\r\n */\r\n readonly domain = input<string>('');\r\n /**\r\n * @zh_CN 切换状态\r\n * @en_US Switch state\r\n */\r\n readonly toggle = model<boolean>(true);\r\n /**\r\n * @zh_CN 显示切换按钮\r\n * @en_US Show toggle button\r\n */\r\n readonly showToggle = input<boolean, XBoolean>(true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 显示树,为 true 的时候隐藏切换按钮\r\n * @en_US Show the tree, hide the toggle button when true\r\n */\r\n readonly showTree = input<boolean, XBoolean>(true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 显示面包屑\r\n * @en_US Show breadcrumbs\r\n */\r\n readonly showCrumb = input<boolean, XBoolean>(true, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 最大高度\r\n * @en_US Maximum height\r\n */\r\n readonly maxHeight = input<string, XNumber>(this.config?.maxHeight ?? '37.5rem', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 单位间距,这个与层级的乘积算出节点的左边距\r\n * @en_US Unit spacing, the product of this and the level calculates the left margin of the node\r\n */\r\n readonly spacing = input<string, XNumber>(this.config?.spacing ?? '1rem', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 当前激活的节点 Id, 当 multiple 为 true 时,值为数组(默认是 Id 数组,objectArray 为 true,对象数组)\r\n * @en_US Currently active node Id. When Multiple is true, the value is the Id array\r\n */\r\n readonly activatedId = model<any>();\r\n /**\r\n * @zh_CN 展开的节点\r\n * @en_US Expanded node\r\n */\r\n readonly expanded = input<any[]>([]);\r\n /**\r\n * @zh_CN 展开所有节点\r\n * @en_US Expand all nodes\r\n */\r\n readonly expandedAll = input<boolean, XBoolean>(false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 默认展开的层级\r\n * @en_US Default expanded level\r\n */\r\n readonly expandedLevel = input<number, XNumber>(-1, { transform: XToNumber });\r\n}\r\n\r\n/**\r\n * @zh_CN TreeFile 数据对象\r\n * @en_US TreeFile data object\r\n */\r\nexport interface XTreeFileNode extends XTreeNode {\r\n /**\r\n * @zh_CN 子节点\r\n * @en_US Child node\r\n */\r\n children?: XTreeFileNode[];\r\n /**\r\n * @zh_CN 文件内容\r\n * @en_US Document content\r\n */\r\n content?: string;\r\n /**\r\n * @zh_CN 文件类型\r\n * @en_US File type\r\n */\r\n type?: string;\r\n /**\r\n * @zh_CN 文件分类\r\n * @en_US File classification\r\n */\r\n fileType?: XTreeFileType;\r\n /**\r\n * @zh_CN 文件地址,配置了地址将从 url 中加载文件内容\r\n * @en_US File address, the configured address will load the file content from url\r\n */\r\n url?: string;\r\n /**\r\n * @zh_CN 文件的面包屑数据\r\n * @en_US Breadcrumb data\r\n */\r\n crumbData?: XCrumbNode[];\r\n /**\r\n * @zh_CN 文件内容已经加载过\r\n * @en_US File content has been loaded\r\n */\r\n contentLoaded?: boolean;\r\n /**\r\n * @zh_CN 行高亮着色\r\n * @en_US Line highlight coloring\r\n */\r\n highlightLines?: XHighlightLines;\r\n}\r\n\r\n/**\r\n * @zh_CN 文件分类\r\n * @en_US File classification\r\n */\r\nexport type XTreeFileType = 'code' | 'img';\r\n\r\n/**\r\n * @zh_CN 支持显示的图片格式\r\n * @en_US Supported picture format\r\n */\r\nexport const XTreeFileImgs = ['webp', 'png', 'jpg', 'gif', 'jpeg', 'ico'];\r\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, inject, computed, signal } from '@angular/core';\r\nimport { XTreeFilePrefix, XTreeFileProperty, XTreeFileNode, XTreeFileImgs } from './tree-file.property';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { XIsEmpty, XComputedStyle, XToCssPx } from '@ng-nest/ui/core';\r\nimport { XCrumbComponent, XCrumbNode } from '@ng-nest/ui/crumb';\r\nimport { delay, finalize } from 'rxjs/operators';\r\nimport { XHighlightComponent, XHighlightLines } from '@ng-nest/ui/highlight';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { XIconComponent } from '@ng-nest/ui/icon';\r\nimport { XLinkComponent } from '@ng-nest/ui/link';\r\nimport { XLoadingComponent } from '@ng-nest/ui/loading';\r\nimport { XTreeComponent } from '@ng-nest/ui/tree';\r\n\r\n@Component({\r\n selector: `${XTreeFilePrefix}`,\r\n imports: [XTreeComponent, XLinkComponent, XCrumbComponent, XIconComponent, XLoadingComponent, XHighlightComponent],\r\n templateUrl: './tree-file.component.html',\r\n styleUrls: ['./tree-file.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XTreeFileComponent extends XTreeFileProperty {\r\n activatedNode = signal<XTreeFileNode | null>(null);\r\n loading = signal(false);\r\n time!: number;\r\n timeout: number = 200;\r\n private document = inject(DOCUMENT);\r\n private fontSize = computed(() => parseFloat(XComputedStyle(this.document.documentElement, 'font-size')));\r\n\r\n codeHeight = computed(() => {\r\n return XToCssPx(this.maxHeight(), this.fontSize()) - (this.showCrumb() ? 1.5 : 0) * this.fontSize();\r\n });\r\n\r\n crumbData = computed(() => {\r\n return this.activatedNode()?.crumbData as XCrumbNode[];\r\n });\r\n\r\n highlightLines = computed(() => {\r\n return this.activatedNode()?.highlightLines as XHighlightLines;\r\n });\r\n\r\n private http = inject(HttpClient, { optional: true })!;\r\n\r\n ngOnInit() {\r\n if (!this.http) {\r\n throw new Error(\r\n `${XTreeFilePrefix}: Not found 'HttpClient', You can import 'HttpClientModule' in your root module.`\r\n );\r\n }\r\n if (!this.showTree() && this.activatedId()) {\r\n this.catalogChange((this.data() as XTreeFileNode[]).find((x) => x.id == this.activatedId()) as XTreeFileNode);\r\n }\r\n }\r\n\r\n catalogChange(node: XTreeFileNode) {\r\n if (!node?.leaf && this.showTree()) return;\r\n if (node.url && !node.contentLoaded) {\r\n this.time = new Date().getTime();\r\n this.loading.set(true);\r\n this.setNode(node);\r\n this.activatedNode.set(node);\r\n node.url = node.url?.indexOf(this.domain()) === 0 ? node.url : `${this.domain()}/${node.url}`;\r\n\r\n switch (node.fileType) {\r\n case 'code':\r\n this.http\r\n .get(node.url, { responseType: 'text' })\r\n .pipe(\r\n delay(\r\n new Date().getTime() - this.time > this.timeout ? 0 : this.timeout - new Date().getTime() + this.time\r\n ),\r\n finalize(() => {\r\n this.loading.set(false);\r\n })\r\n )\r\n .subscribe((x) => {\r\n node.content = x;\r\n node.contentLoaded = true;\r\n this.loading.set(false);\r\n });\r\n break;\r\n case 'img':\r\n break;\r\n }\r\n } else {\r\n this.activatedNode.set(node);\r\n this.setNode(this.activatedNode()!);\r\n }\r\n }\r\n\r\n setNode(node: XTreeFileNode) {\r\n if (!node.type) {\r\n node.type = 'bash';\r\n }\r\n if (!node.fileType) {\r\n node.fileType = XTreeFileImgs.indexOf((node.type as string).toLowerCase()) !== -1 ? 'img' : 'code';\r\n }\r\n if (!node.crumbData) {\r\n node.crumbData = this.setCurmbData(node);\r\n }\r\n }\r\n\r\n imgOnload() {\r\n this.loading.set(false);\r\n }\r\n\r\n setCurmbData(node: XTreeFileNode) {\r\n let crumbData: XCrumbNode[] = [{ id: node.id, label: node.label }];\r\n const getParent = (child: XTreeFileNode) => {\r\n if (XIsEmpty(child.pid)) return;\r\n const parent = (this.data() as XTreeFileNode[]).find((x) => x.id === child.pid) as XTreeFileNode;\r\n if (!XIsEmpty(parent)) {\r\n crumbData = [{ id: parent.id, label: parent.label }, ...crumbData];\r\n getParent(parent);\r\n }\r\n };\r\n getParent(node);\r\n\r\n return crumbData;\r\n }\r\n\r\n menuToggle() {\r\n this.toggle.update((x) => !x);\r\n }\r\n}\r\n","<div #treeFile class=\"x-tree-file\" [class.x-tree-file-toggle]=\"toggle()\">\r\n @if (showTree()) {\r\n <div class=\"x-tree-file-catalog\" [style.max-height]=\"maxHeight()\">\r\n <x-tree\r\n [data]=\"data()\"\r\n (activatedChange)=\"catalogChange($event)\"\r\n nodeOpen\r\n [expandedAll]=\"expandedAll()\"\r\n [expandedLevel]=\"expandedLevel()\"\r\n [expanded]=\"expanded()\"\r\n [spacing]=\"spacing()\"\r\n [(activatedId)]=\"activatedId\"\r\n ></x-tree>\r\n </div>\r\n }\r\n <div class=\"x-tree-file-body\" [x-loading]=\"loading()\">\r\n @if (showCrumb()) {\r\n <div class=\"x-tree-file-crumb\">\r\n @if (showToggle() && showTree()) {\r\n <x-link class=\"x-tree-file-menu\" icon=\"fto-menu\" (click)=\"menuToggle()\"></x-link>\r\n }\r\n <x-crumb [data]=\"crumbData()\" [separator]=\"separatorTpl\"></x-crumb>\r\n <ng-template #separatorTpl>\r\n <x-icon type=\"fto-chevron-right\"></x-icon>\r\n </ng-template>\r\n </div>\r\n }\r\n\r\n <div class=\"x-tree-file-content\" [style.max-height.px]=\"codeHeight()\">\r\n @switch (activatedNode()?.fileType) {\r\n @case ('img') {\r\n <div class=\"x-tree-file-img\"><img [src]=\"activatedNode()?.url\" (load)=\"imgOnload()\" /></div>\r\n }\r\n @case ('code') {\r\n <x-highlight\r\n [type]=\"activatedNode()?.type\"\r\n [data]=\"activatedNode()?.content\"\r\n [highlightLines]=\"highlightLines()\"\r\n ></x-highlight>\r\n }\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { XTreeFileComponent } from './tree-file.component';\r\n\r\n@NgModule({\r\n exports: [XTreeFileComponent],\r\n imports: [XTreeFileComponent]\r\n})\r\nexport class XTreeFileModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}