@ng-nest/ui 14.0.0 → 14.0.3

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 (207) hide show
  1. package/auto-complete/auto-complete.component.d.ts +2 -2
  2. package/base-form/base-form.component.d.ts +6 -3
  3. package/button/button.property.d.ts +11 -1
  4. package/cascade/cascade.component.d.ts +2 -3
  5. package/color-picker/color-picker.component.d.ts +1 -1
  6. package/core/config/config.d.ts +6 -0
  7. package/date-picker/date-picker.component.d.ts +1 -1
  8. package/date-picker/date-range.component.d.ts +1 -1
  9. package/dialog/dialog.module.d.ts +2 -1
  10. package/dialog/dialog.property.d.ts +2 -0
  11. package/esm2020/auto-complete/auto-complete.component.mjs +7 -5
  12. package/esm2020/base-form/base-form.component.mjs +11 -3
  13. package/esm2020/button/button.component.mjs +3 -3
  14. package/esm2020/button/button.property.mjs +7 -2
  15. package/esm2020/cascade/cascade.component.mjs +8 -9
  16. package/esm2020/checkbox/checkbox.component.mjs +6 -4
  17. package/esm2020/color-picker/color-picker-portal.component.mjs +3 -3
  18. package/esm2020/color-picker/color-picker.component.mjs +4 -3
  19. package/esm2020/core/config/config.mjs +1 -1
  20. package/esm2020/date-picker/date-picker.component.mjs +4 -3
  21. package/esm2020/date-picker/date-range.component.mjs +1 -1
  22. package/esm2020/dialog/dialog.module.mjs +8 -4
  23. package/esm2020/dialog/dialog.property.mjs +1 -1
  24. package/esm2020/find/find.component.mjs +5 -3
  25. package/esm2020/form/control.component.mjs +39 -26
  26. package/esm2020/form/form.component.mjs +16 -3
  27. package/esm2020/form/form.module.mjs +6 -3
  28. package/esm2020/form/form.property.mjs +10 -3
  29. package/esm2020/i18n/i18n.property.mjs +1 -1
  30. package/esm2020/i18n/languages/en_US.mjs +6 -2
  31. package/esm2020/i18n/languages/zh_CN.mjs +6 -2
  32. package/esm2020/i18n/languages/zh_TW.mjs +6 -2
  33. package/esm2020/icon/icon.component.mjs +6 -2
  34. package/esm2020/input/input.component.mjs +23 -10
  35. package/esm2020/input/input.property.mjs +31 -2
  36. package/esm2020/input-number/input-number.component.mjs +3 -3
  37. package/esm2020/list/list.component.mjs +16 -16
  38. package/esm2020/radio/radio.component.mjs +4 -3
  39. package/esm2020/rate/rate.component.mjs +8 -3
  40. package/esm2020/select/select-portal.component.mjs +15 -6
  41. package/esm2020/select/select.component.mjs +297 -42
  42. package/esm2020/select/select.module.mjs +35 -4
  43. package/esm2020/select/select.property.mjs +31 -3
  44. package/esm2020/slider-select/slider-select.component.mjs +6 -5
  45. package/esm2020/switch/switch.component.mjs +1 -1
  46. package/esm2020/table/table-body.component.mjs +15 -6
  47. package/esm2020/table/table-foot.component.mjs +7 -3
  48. package/esm2020/table/table-head.component.mjs +23 -7
  49. package/esm2020/table/table.component.mjs +55 -8
  50. package/esm2020/table/table.property.mjs +20 -5
  51. package/esm2020/tag/tag.component.mjs +5 -5
  52. package/esm2020/tag/tag.property.mjs +1 -1
  53. package/esm2020/textarea/textarea.component.mjs +3 -3
  54. package/esm2020/textarea/textarea.property.mjs +1 -6
  55. package/esm2020/theme/theme.component.mjs +1 -1
  56. package/esm2020/time-picker/time-picker.component.mjs +4 -3
  57. package/esm2020/transfer/transfer.component.mjs +1 -1
  58. package/esm2020/tree/tree-node.component.mjs +4 -70
  59. package/esm2020/tree/tree.component.mjs +123 -23
  60. package/esm2020/tree/tree.property.mjs +1 -1
  61. package/esm2020/upload/upload.component.mjs +1 -1
  62. package/fesm2015/ng-nest-ui-auto-complete.mjs +6 -4
  63. package/fesm2015/ng-nest-ui-auto-complete.mjs.map +1 -1
  64. package/fesm2015/ng-nest-ui-base-form.mjs +10 -2
  65. package/fesm2015/ng-nest-ui-base-form.mjs.map +1 -1
  66. package/fesm2015/ng-nest-ui-button.mjs +8 -3
  67. package/fesm2015/ng-nest-ui-button.mjs.map +1 -1
  68. package/fesm2015/ng-nest-ui-cascade.mjs +6 -7
  69. package/fesm2015/ng-nest-ui-cascade.mjs.map +1 -1
  70. package/fesm2015/ng-nest-ui-checkbox.mjs +5 -3
  71. package/fesm2015/ng-nest-ui-checkbox.mjs.map +1 -1
  72. package/fesm2015/ng-nest-ui-color-picker.mjs +5 -4
  73. package/fesm2015/ng-nest-ui-color-picker.mjs.map +1 -1
  74. package/fesm2015/ng-nest-ui-core.mjs.map +1 -1
  75. package/fesm2015/ng-nest-ui-date-picker.mjs +3 -2
  76. package/fesm2015/ng-nest-ui-date-picker.mjs.map +1 -1
  77. package/fesm2015/ng-nest-ui-dialog.mjs +7 -3
  78. package/fesm2015/ng-nest-ui-dialog.mjs.map +1 -1
  79. package/fesm2015/ng-nest-ui-find.mjs +4 -2
  80. package/fesm2015/ng-nest-ui-find.mjs.map +1 -1
  81. package/fesm2015/ng-nest-ui-form.mjs +68 -31
  82. package/fesm2015/ng-nest-ui-form.mjs.map +1 -1
  83. package/fesm2015/ng-nest-ui-i18n.mjs +15 -3
  84. package/fesm2015/ng-nest-ui-i18n.mjs.map +1 -1
  85. package/fesm2015/ng-nest-ui-icon.mjs +5 -1
  86. package/fesm2015/ng-nest-ui-icon.mjs.map +1 -1
  87. package/fesm2015/ng-nest-ui-input-number.mjs +2 -2
  88. package/fesm2015/ng-nest-ui-input-number.mjs.map +1 -1
  89. package/fesm2015/ng-nest-ui-input.mjs +52 -10
  90. package/fesm2015/ng-nest-ui-input.mjs.map +1 -1
  91. package/fesm2015/ng-nest-ui-list.mjs +15 -15
  92. package/fesm2015/ng-nest-ui-list.mjs.map +1 -1
  93. package/fesm2015/ng-nest-ui-radio.mjs +3 -2
  94. package/fesm2015/ng-nest-ui-radio.mjs.map +1 -1
  95. package/fesm2015/ng-nest-ui-rate.mjs +7 -2
  96. package/fesm2015/ng-nest-ui-rate.mjs.map +1 -1
  97. package/fesm2015/ng-nest-ui-select.mjs +375 -50
  98. package/fesm2015/ng-nest-ui-select.mjs.map +1 -1
  99. package/fesm2015/ng-nest-ui-slider-select.mjs +5 -4
  100. package/fesm2015/ng-nest-ui-slider-select.mjs.map +1 -1
  101. package/fesm2015/ng-nest-ui-switch.mjs.map +1 -1
  102. package/fesm2015/ng-nest-ui-table.mjs +113 -23
  103. package/fesm2015/ng-nest-ui-table.mjs.map +1 -1
  104. package/fesm2015/ng-nest-ui-tag.mjs +4 -4
  105. package/fesm2015/ng-nest-ui-tag.mjs.map +1 -1
  106. package/fesm2015/ng-nest-ui-textarea.mjs +2 -7
  107. package/fesm2015/ng-nest-ui-textarea.mjs.map +1 -1
  108. package/fesm2015/ng-nest-ui-theme.mjs.map +1 -1
  109. package/fesm2015/ng-nest-ui-time-picker.mjs +3 -2
  110. package/fesm2015/ng-nest-ui-time-picker.mjs.map +1 -1
  111. package/fesm2015/ng-nest-ui-transfer.mjs.map +1 -1
  112. package/fesm2015/ng-nest-ui-tree.mjs +125 -91
  113. package/fesm2015/ng-nest-ui-tree.mjs.map +1 -1
  114. package/fesm2015/ng-nest-ui-upload.mjs.map +1 -1
  115. package/fesm2020/ng-nest-ui-auto-complete.mjs +6 -4
  116. package/fesm2020/ng-nest-ui-auto-complete.mjs.map +1 -1
  117. package/fesm2020/ng-nest-ui-base-form.mjs +10 -2
  118. package/fesm2020/ng-nest-ui-base-form.mjs.map +1 -1
  119. package/fesm2020/ng-nest-ui-button.mjs +8 -3
  120. package/fesm2020/ng-nest-ui-button.mjs.map +1 -1
  121. package/fesm2020/ng-nest-ui-cascade.mjs +6 -7
  122. package/fesm2020/ng-nest-ui-cascade.mjs.map +1 -1
  123. package/fesm2020/ng-nest-ui-checkbox.mjs +5 -3
  124. package/fesm2020/ng-nest-ui-checkbox.mjs.map +1 -1
  125. package/fesm2020/ng-nest-ui-color-picker.mjs +5 -4
  126. package/fesm2020/ng-nest-ui-color-picker.mjs.map +1 -1
  127. package/fesm2020/ng-nest-ui-core.mjs.map +1 -1
  128. package/fesm2020/ng-nest-ui-date-picker.mjs +3 -2
  129. package/fesm2020/ng-nest-ui-date-picker.mjs.map +1 -1
  130. package/fesm2020/ng-nest-ui-dialog.mjs +7 -3
  131. package/fesm2020/ng-nest-ui-dialog.mjs.map +1 -1
  132. package/fesm2020/ng-nest-ui-find.mjs +4 -2
  133. package/fesm2020/ng-nest-ui-find.mjs.map +1 -1
  134. package/fesm2020/ng-nest-ui-form.mjs +67 -31
  135. package/fesm2020/ng-nest-ui-form.mjs.map +1 -1
  136. package/fesm2020/ng-nest-ui-i18n.mjs +15 -3
  137. package/fesm2020/ng-nest-ui-i18n.mjs.map +1 -1
  138. package/fesm2020/ng-nest-ui-icon.mjs +5 -1
  139. package/fesm2020/ng-nest-ui-icon.mjs.map +1 -1
  140. package/fesm2020/ng-nest-ui-input-number.mjs +2 -2
  141. package/fesm2020/ng-nest-ui-input-number.mjs.map +1 -1
  142. package/fesm2020/ng-nest-ui-input.mjs +52 -10
  143. package/fesm2020/ng-nest-ui-input.mjs.map +1 -1
  144. package/fesm2020/ng-nest-ui-list.mjs +15 -15
  145. package/fesm2020/ng-nest-ui-list.mjs.map +1 -1
  146. package/fesm2020/ng-nest-ui-radio.mjs +3 -2
  147. package/fesm2020/ng-nest-ui-radio.mjs.map +1 -1
  148. package/fesm2020/ng-nest-ui-rate.mjs +7 -2
  149. package/fesm2020/ng-nest-ui-rate.mjs.map +1 -1
  150. package/fesm2020/ng-nest-ui-select.mjs +372 -50
  151. package/fesm2020/ng-nest-ui-select.mjs.map +1 -1
  152. package/fesm2020/ng-nest-ui-slider-select.mjs +5 -4
  153. package/fesm2020/ng-nest-ui-slider-select.mjs.map +1 -1
  154. package/fesm2020/ng-nest-ui-switch.mjs.map +1 -1
  155. package/fesm2020/ng-nest-ui-table.mjs +112 -23
  156. package/fesm2020/ng-nest-ui-table.mjs.map +1 -1
  157. package/fesm2020/ng-nest-ui-tag.mjs +4 -4
  158. package/fesm2020/ng-nest-ui-tag.mjs.map +1 -1
  159. package/fesm2020/ng-nest-ui-textarea.mjs +2 -7
  160. package/fesm2020/ng-nest-ui-textarea.mjs.map +1 -1
  161. package/fesm2020/ng-nest-ui-theme.mjs.map +1 -1
  162. package/fesm2020/ng-nest-ui-time-picker.mjs +3 -2
  163. package/fesm2020/ng-nest-ui-time-picker.mjs.map +1 -1
  164. package/fesm2020/ng-nest-ui-transfer.mjs.map +1 -1
  165. package/fesm2020/ng-nest-ui-tree.mjs +125 -91
  166. package/fesm2020/ng-nest-ui-tree.mjs.map +1 -1
  167. package/fesm2020/ng-nest-ui-upload.mjs.map +1 -1
  168. package/find/find.component.d.ts +1 -1
  169. package/form/control.component.d.ts +6 -3
  170. package/form/examples/en_US/default/form-vaild/README.md +8 -0
  171. package/form/examples/zh_CN/default/form-vaild/README.md +8 -0
  172. package/form/form.component.d.ts +4 -1
  173. package/form/form.module.d.ts +2 -1
  174. package/form/form.property.d.ts +7 -2
  175. package/i18n/i18n.property.d.ts +6 -0
  176. package/i18n/languages/en_US.d.ts +4 -0
  177. package/i18n/languages/zh_CN.d.ts +4 -0
  178. package/i18n/languages/zh_TW.d.ts +4 -0
  179. package/input/input.component.d.ts +3 -0
  180. package/input/input.property.d.ts +31 -1
  181. package/input-number/input-number.component.d.ts +1 -1
  182. package/package.json +1 -1
  183. package/rate/rate.component.d.ts +1 -0
  184. package/select/examples/en_US/default/search/README.md +6 -0
  185. package/select/examples/zh_CN/default/search/README.md +6 -0
  186. package/select/select-portal.component.d.ts +6 -1
  187. package/select/select.component.d.ts +33 -6
  188. package/select/select.module.d.ts +4 -2
  189. package/select/select.property.d.ts +63 -2
  190. package/slider-select/slider-select.component.d.ts +1 -1
  191. package/switch/switch.component.d.ts +1 -1
  192. package/table/examples/en_US/default/fix/README.md +6 -0
  193. package/table/examples/en_US/default/head/README.md +6 -0
  194. package/table/examples/en_US/default/header/README.md +6 -0
  195. package/table/examples/zh_CN/default/fix/README.md +6 -0
  196. package/table/examples/zh_CN/default/head/README.md +6 -0
  197. package/table/examples/zh_CN/default/header/README.md +6 -0
  198. package/table/table-foot.component.d.ts +1 -0
  199. package/table/table-head.component.d.ts +2 -1
  200. package/table/table.component.d.ts +14 -2
  201. package/table/table.property.d.ts +48 -3
  202. package/tag/tag.component.d.ts +1 -1
  203. package/tag/tag.property.d.ts +1 -1
  204. package/time-picker/time-picker.component.d.ts +1 -1
  205. package/tree/tree-node.component.d.ts +0 -3
  206. package/tree/tree.component.d.ts +3 -0
  207. package/tree/tree.property.d.ts +5 -0
@@ -3,14 +3,13 @@ import { EventEmitter, Component, Input, Output, ViewEncapsulation, ChangeDetect
3
3
  import { __decorate } from 'tslib';
4
4
  import * as i1 from '@ng-nest/ui/core';
5
5
  import { XProperty, XDataConvert, XInputBoolean, XInputNumber, XWithConfig, XIsEmpty, XIsChange, XIsObservable, XSetData, XIsFunction, XIsUndefined } from '@ng-nest/ui/core';
6
- import { Subject } from 'rxjs';
6
+ import { Subject, map } from 'rxjs';
7
7
  import * as i2 from '@angular/common';
8
8
  import { CommonModule } from '@angular/common';
9
9
  import * as i4 from '@ng-nest/ui/icon';
10
10
  import { XIconModule } from '@ng-nest/ui/icon';
11
11
  import * as i4$1 from '@angular/cdk/scrolling';
12
12
  import { ScrollingModule } from '@angular/cdk/scrolling';
13
- import { map } from 'rxjs/operators';
14
13
  import * as i3 from '@angular/forms';
15
14
  import { FormsModule } from '@angular/forms';
16
15
  import * as i5 from '@ng-nest/ui/checkbox';
@@ -312,75 +311,10 @@ class XTreeNodeComponent extends XTreeNodeProperty {
312
311
  this.setCheckbox();
313
312
  this.setIndeterminate(this.node);
314
313
  }
315
- onToggle(event, node) {
316
- node.open = !node.open;
317
- if (this.virtualScroll) {
318
- if (this.lazy && !node.childrenLoaded) {
319
- this.getLazyData(node, () => this.virtualToggle(node));
320
- }
321
- else {
322
- this.virtualToggle(node);
323
- }
324
- }
325
- else if (node.open && !node.childrenLoaded) {
326
- if (this.lazy) {
327
- this.getLazyData(node);
328
- }
329
- else {
330
- node.childrenLoaded = true;
331
- }
332
- }
333
- event.preventDefault();
334
- event.stopPropagation();
335
- this.cdr.detectChanges();
336
- }
337
- virtualToggle(node) {
338
- let index = this.tree.nodes.indexOf(node);
339
- if (node.open) {
340
- let addNodes = [];
341
- const getNodes = (nd) => {
342
- for (let child of nd.children) {
343
- addNodes.push(child);
344
- child.open && getNodes(child);
345
- }
346
- };
347
- getNodes(node);
348
- this.tree.nodes.splice(index + 1, 0, ...addNodes);
349
- }
350
- else {
351
- let delCount = 0;
352
- const getCount = (nd) => {
353
- delCount += nd.children.length;
354
- for (let child of nd.children) {
355
- child.open && getCount(child);
356
- }
357
- };
358
- getCount(node);
359
- this.tree.nodes.splice(index + 1, delCount);
360
- }
361
- this.tree.nodes = [...this.tree.nodes];
362
- }
363
- getLazyData(node, callBack) {
364
- this.loading = true;
365
- this.lazyData(node.id)
366
- .pipe(map((x) => x.map((y) => {
367
- y.level = node.level + 1;
368
- y.checked = node.checked;
369
- return y;
370
- })))
371
- .subscribe((x) => {
372
- node.children = x;
373
- node.childrenLoaded = true;
374
- this.loading = false;
375
- if (callBack)
376
- callBack();
377
- this.cdr.detectChanges();
378
- });
379
- }
380
314
  onActivate(event, node) {
381
315
  var _a;
382
316
  const change = (_a = this.tree.activatedNode) === null || _a === void 0 ? void 0 : _a.change;
383
- this.tree.nodeOpen && node.leaf && this.onToggle(event, node);
317
+ this.tree.nodeOpen && node.leaf && this.tree.onToggle(event, node);
384
318
  if (this.tree.activatedNode) {
385
319
  if (this.tree.activatedNode.id === node.id && !this.tree.allowManyActivated)
386
320
  return;
@@ -474,10 +408,10 @@ class XTreeNodeComponent extends XTreeNodeProperty {
474
408
  }
475
409
  }
476
410
  /** @nocollapse */ XTreeNodeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: XTreeNodeComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.XConfigService }], target: i0.ɵɵFactoryTarget.Component });
477
- /** @nocollapse */ XTreeNodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: XTreeNodeComponent, selector: "x-tree-node, [x-tree-node]", inputs: { parent: "parent", tree: "tree" }, host: { properties: { "class.x-tree-node": "this.rootClass" } }, usesInheritance: true, ngImport: i0, template: "<div\r\n class=\"x-tree-node-content\"\r\n [class.x-activated]=\"tree.activatedNode?.id === node.id\"\r\n [style.padding-left.rem]=\"paddingLeft\"\r\n [style.height.rem]=\"node.height ? node.height : nodeHeight ? nodeHeight : ''\"\r\n [style.align-items]=\"node.alignItems ? node.alignItems : nodeAlignItems\"\r\n (click)=\"onActivate($event, node)\"\r\n>\r\n <x-icon\r\n *ngIf=\"!loading\"\r\n [class.is-leaf]=\"!node.leaf\"\r\n [class.is-open]=\"node.open\"\r\n type=\"fto-chevron-right\"\r\n (click)=\"!tree.nodeOpen && onToggle($event, node)\"\r\n ></x-icon>\r\n <x-icon *ngIf=\"loading\" type=\"fto-loader\" [spin]=\"loading\"></x-icon>\r\n <x-checkbox\r\n *ngIf=\"tree.checkbox\"\r\n [data]=\"[{ label: '', id: node.id }]\"\r\n [(ngModel)]=\"node.checked\"\r\n (ngModelChange)=\"onCheckboxChange()\"\r\n [indeterminate]=\"node.indeterminate\"\r\n [disabled]=\"getNodeDisabled(node.disabled)\"\r\n (click)=\"$event.stopPropagation()\"\r\n ></x-checkbox>\r\n <span\r\n class=\"x-tree-node-label\"\r\n [class.nowrap]=\"node.nowrap === false || node.nowrap === true ? node.nowrap : nodeNowrap\"\r\n [title]=\"node.label\"\r\n *ngIf=\"!tree.labelTpl; else labelTpl\"\r\n >{{ node.label }}</span\r\n >\r\n <ng-template #labelTpl>\r\n <ng-container *xOutlet=\"tree.labelTpl; context: { $node: node }\"></ng-container>\r\n </ng-template>\r\n <span class=\"x-tree-node-operations\">\r\n <x-link\r\n *ngFor=\"let action of tree.actions; trackBy: trackByItem\"\r\n [icon]=\"action.icon\"\r\n [title]=\"action.label\"\r\n (click)=\"onAction($event, action, node)\"\r\n ></x-link>\r\n </span>\r\n</div>\r\n<ul *ngIf=\"!virtualScroll && (node.childrenLoaded || (node.leaf && node.open))\" [hidden]=\"!node.open\">\r\n <li\r\n x-tree-node\r\n *ngFor=\"let child of node.children; trackBy: trackByItem\"\r\n [node]=\"child\"\r\n [parent]=\"this\"\r\n [lazy]=\"lazy\"\r\n [lazyData]=\"lazyData\"\r\n [nodeHeight]=\"nodeHeight\"\r\n [nodeNowrap]=\"nodeNowrap\"\r\n [nodeAlignItems]=\"nodeAlignItems\"\r\n [tree]=\"tree\"\r\n ></li>\r\n</ul>\r\n", styles: [".x-tree-node{margin:0;padding:0}.x-tree-node-content{display:flex;padding:.0625rem 0;cursor:pointer}.x-tree-node-content x-icon{padding:.25rem;color:var(--x-text-400);font-size:1rem;margin-right:.125rem;transition:var(--x-animation-duration-base)}.x-tree-node-content x-icon.is-leaf{visibility:hidden}.x-tree-node-content x-icon.is-open{transform:rotate(90deg)}.x-tree-node-content x-icon:hover{color:var(--x-text-300)}.x-tree-node-content x-checkbox{margin-right:.325rem;padding:.25rem 0}.x-tree-node-content:hover,.x-tree-node-content.x-activated{background-color:var(--x-background-a100)}.x-tree-node-content:hover .x-tree-node-label,.x-tree-node-content.x-activated .x-tree-node-label{color:var(--x-primary)}.x-tree-node-content:hover .x-tree-node-operations{display:flex;align-items:center}.x-tree-node-operations{display:none}.x-tree-node-operations .x-link{padding:0 .125rem}.x-tree-node-label{flex:1;-webkit-user-select:none;user-select:none}.x-tree-node-label.nowrap{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.XIconComponent, selector: "x-icon" }, { kind: "component", type: i5.XCheckboxComponent, selector: "x-checkbox" }, { kind: "directive", type: i6.XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }, { kind: "component", type: i7.XLinkComponent, selector: "x-link" }, { kind: "component", type: XTreeNodeComponent, selector: "x-tree-node, [x-tree-node]", inputs: ["parent", "tree"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
411
+ /** @nocollapse */ XTreeNodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: XTreeNodeComponent, selector: "x-tree-node, [x-tree-node]", inputs: { parent: "parent", tree: "tree" }, host: { properties: { "class.x-tree-node": "this.rootClass" } }, usesInheritance: true, ngImport: i0, template: "<div\r\n class=\"x-tree-node-content\"\r\n [class.x-activated]=\"tree.activatedNode?.id === node.id\"\r\n [style.padding-left.rem]=\"paddingLeft\"\r\n [style.height.rem]=\"node.height ? node.height : nodeHeight ? nodeHeight : ''\"\r\n [style.align-items]=\"node.alignItems ? node.alignItems : nodeAlignItems\"\r\n (click)=\"onActivate($event, node)\"\r\n>\r\n <x-icon\r\n *ngIf=\"!node.loading\"\r\n [class.is-leaf]=\"!node.leaf\"\r\n [class.is-open]=\"node.open\"\r\n type=\"fto-chevron-right\"\r\n (click)=\"!tree.nodeOpen && tree.onToggle($event, node)\"\r\n ></x-icon>\r\n <x-icon *ngIf=\"node.loading\" type=\"fto-loader\" [spin]=\"node.loading\"></x-icon>\r\n <x-checkbox\r\n *ngIf=\"tree.checkbox\"\r\n [data]=\"[{ label: '', id: node.id }]\"\r\n [(ngModel)]=\"node.checked\"\r\n (ngModelChange)=\"onCheckboxChange()\"\r\n [indeterminate]=\"node.indeterminate\"\r\n [disabled]=\"getNodeDisabled(node.disabled)\"\r\n (click)=\"$event.stopPropagation()\"\r\n ></x-checkbox>\r\n <span\r\n class=\"x-tree-node-label\"\r\n [class.nowrap]=\"node.nowrap === false || node.nowrap === true ? node.nowrap : nodeNowrap\"\r\n [title]=\"node.label\"\r\n *ngIf=\"!tree.labelTpl; else labelTpl\"\r\n >{{ node.label }}</span\r\n >\r\n <ng-template #labelTpl>\r\n <ng-container *xOutlet=\"tree.labelTpl; context: { $node: node }\"></ng-container>\r\n </ng-template>\r\n <span class=\"x-tree-node-operations\">\r\n <x-link\r\n *ngFor=\"let action of tree.actions; trackBy: trackByItem\"\r\n [icon]=\"action.icon\"\r\n [title]=\"action.label\"\r\n (click)=\"onAction($event, action, node)\"\r\n ></x-link>\r\n </span>\r\n</div>\r\n<ul *ngIf=\"!virtualScroll && (node.childrenLoaded || (node.leaf && node.open))\" [hidden]=\"!node.open\">\r\n <li\r\n x-tree-node\r\n *ngFor=\"let child of node.children; trackBy: trackByItem\"\r\n [node]=\"child\"\r\n [parent]=\"this\"\r\n [lazy]=\"lazy\"\r\n [lazyData]=\"lazyData\"\r\n [nodeHeight]=\"nodeHeight\"\r\n [nodeNowrap]=\"nodeNowrap\"\r\n [nodeAlignItems]=\"nodeAlignItems\"\r\n [tree]=\"tree\"\r\n ></li>\r\n</ul>\r\n", styles: [".x-tree-node{margin:0;padding:0}.x-tree-node-content{display:flex;padding:.0625rem 0;cursor:pointer}.x-tree-node-content x-icon{padding:.25rem;color:var(--x-text-400);font-size:1rem;margin-right:.125rem;transition:var(--x-animation-duration-base)}.x-tree-node-content x-icon.is-leaf{visibility:hidden}.x-tree-node-content x-icon.is-open{transform:rotate(90deg)}.x-tree-node-content x-icon:hover{color:var(--x-text-300)}.x-tree-node-content x-checkbox{margin-right:.325rem;padding:.25rem 0}.x-tree-node-content:hover,.x-tree-node-content.x-activated{background-color:var(--x-background-a100)}.x-tree-node-content:hover .x-tree-node-label,.x-tree-node-content.x-activated .x-tree-node-label{color:var(--x-primary)}.x-tree-node-content:hover .x-tree-node-operations{display:flex;align-items:center}.x-tree-node-operations{display:none}.x-tree-node-operations .x-link{padding:0 .125rem}.x-tree-node-label{flex:1;-webkit-user-select:none;user-select:none}.x-tree-node-label.nowrap{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.XIconComponent, selector: "x-icon" }, { kind: "component", type: i5.XCheckboxComponent, selector: "x-checkbox" }, { kind: "directive", type: i6.XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }, { kind: "component", type: i7.XLinkComponent, selector: "x-link" }, { kind: "component", type: XTreeNodeComponent, selector: "x-tree-node, [x-tree-node]", inputs: ["parent", "tree"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
478
412
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: XTreeNodeComponent, decorators: [{
479
413
  type: Component,
480
- args: [{ selector: `${XTreeNodePrefix}, [${XTreeNodePrefix}]`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"x-tree-node-content\"\r\n [class.x-activated]=\"tree.activatedNode?.id === node.id\"\r\n [style.padding-left.rem]=\"paddingLeft\"\r\n [style.height.rem]=\"node.height ? node.height : nodeHeight ? nodeHeight : ''\"\r\n [style.align-items]=\"node.alignItems ? node.alignItems : nodeAlignItems\"\r\n (click)=\"onActivate($event, node)\"\r\n>\r\n <x-icon\r\n *ngIf=\"!loading\"\r\n [class.is-leaf]=\"!node.leaf\"\r\n [class.is-open]=\"node.open\"\r\n type=\"fto-chevron-right\"\r\n (click)=\"!tree.nodeOpen && onToggle($event, node)\"\r\n ></x-icon>\r\n <x-icon *ngIf=\"loading\" type=\"fto-loader\" [spin]=\"loading\"></x-icon>\r\n <x-checkbox\r\n *ngIf=\"tree.checkbox\"\r\n [data]=\"[{ label: '', id: node.id }]\"\r\n [(ngModel)]=\"node.checked\"\r\n (ngModelChange)=\"onCheckboxChange()\"\r\n [indeterminate]=\"node.indeterminate\"\r\n [disabled]=\"getNodeDisabled(node.disabled)\"\r\n (click)=\"$event.stopPropagation()\"\r\n ></x-checkbox>\r\n <span\r\n class=\"x-tree-node-label\"\r\n [class.nowrap]=\"node.nowrap === false || node.nowrap === true ? node.nowrap : nodeNowrap\"\r\n [title]=\"node.label\"\r\n *ngIf=\"!tree.labelTpl; else labelTpl\"\r\n >{{ node.label }}</span\r\n >\r\n <ng-template #labelTpl>\r\n <ng-container *xOutlet=\"tree.labelTpl; context: { $node: node }\"></ng-container>\r\n </ng-template>\r\n <span class=\"x-tree-node-operations\">\r\n <x-link\r\n *ngFor=\"let action of tree.actions; trackBy: trackByItem\"\r\n [icon]=\"action.icon\"\r\n [title]=\"action.label\"\r\n (click)=\"onAction($event, action, node)\"\r\n ></x-link>\r\n </span>\r\n</div>\r\n<ul *ngIf=\"!virtualScroll && (node.childrenLoaded || (node.leaf && node.open))\" [hidden]=\"!node.open\">\r\n <li\r\n x-tree-node\r\n *ngFor=\"let child of node.children; trackBy: trackByItem\"\r\n [node]=\"child\"\r\n [parent]=\"this\"\r\n [lazy]=\"lazy\"\r\n [lazyData]=\"lazyData\"\r\n [nodeHeight]=\"nodeHeight\"\r\n [nodeNowrap]=\"nodeNowrap\"\r\n [nodeAlignItems]=\"nodeAlignItems\"\r\n [tree]=\"tree\"\r\n ></li>\r\n</ul>\r\n", styles: [".x-tree-node{margin:0;padding:0}.x-tree-node-content{display:flex;padding:.0625rem 0;cursor:pointer}.x-tree-node-content x-icon{padding:.25rem;color:var(--x-text-400);font-size:1rem;margin-right:.125rem;transition:var(--x-animation-duration-base)}.x-tree-node-content x-icon.is-leaf{visibility:hidden}.x-tree-node-content x-icon.is-open{transform:rotate(90deg)}.x-tree-node-content x-icon:hover{color:var(--x-text-300)}.x-tree-node-content x-checkbox{margin-right:.325rem;padding:.25rem 0}.x-tree-node-content:hover,.x-tree-node-content.x-activated{background-color:var(--x-background-a100)}.x-tree-node-content:hover .x-tree-node-label,.x-tree-node-content.x-activated .x-tree-node-label{color:var(--x-primary)}.x-tree-node-content:hover .x-tree-node-operations{display:flex;align-items:center}.x-tree-node-operations{display:none}.x-tree-node-operations .x-link{padding:0 .125rem}.x-tree-node-label{flex:1;-webkit-user-select:none;user-select:none}.x-tree-node-label.nowrap{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}\n"] }]
414
+ args: [{ selector: `${XTreeNodePrefix}, [${XTreeNodePrefix}]`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"x-tree-node-content\"\r\n [class.x-activated]=\"tree.activatedNode?.id === node.id\"\r\n [style.padding-left.rem]=\"paddingLeft\"\r\n [style.height.rem]=\"node.height ? node.height : nodeHeight ? nodeHeight : ''\"\r\n [style.align-items]=\"node.alignItems ? node.alignItems : nodeAlignItems\"\r\n (click)=\"onActivate($event, node)\"\r\n>\r\n <x-icon\r\n *ngIf=\"!node.loading\"\r\n [class.is-leaf]=\"!node.leaf\"\r\n [class.is-open]=\"node.open\"\r\n type=\"fto-chevron-right\"\r\n (click)=\"!tree.nodeOpen && tree.onToggle($event, node)\"\r\n ></x-icon>\r\n <x-icon *ngIf=\"node.loading\" type=\"fto-loader\" [spin]=\"node.loading\"></x-icon>\r\n <x-checkbox\r\n *ngIf=\"tree.checkbox\"\r\n [data]=\"[{ label: '', id: node.id }]\"\r\n [(ngModel)]=\"node.checked\"\r\n (ngModelChange)=\"onCheckboxChange()\"\r\n [indeterminate]=\"node.indeterminate\"\r\n [disabled]=\"getNodeDisabled(node.disabled)\"\r\n (click)=\"$event.stopPropagation()\"\r\n ></x-checkbox>\r\n <span\r\n class=\"x-tree-node-label\"\r\n [class.nowrap]=\"node.nowrap === false || node.nowrap === true ? node.nowrap : nodeNowrap\"\r\n [title]=\"node.label\"\r\n *ngIf=\"!tree.labelTpl; else labelTpl\"\r\n >{{ node.label }}</span\r\n >\r\n <ng-template #labelTpl>\r\n <ng-container *xOutlet=\"tree.labelTpl; context: { $node: node }\"></ng-container>\r\n </ng-template>\r\n <span class=\"x-tree-node-operations\">\r\n <x-link\r\n *ngFor=\"let action of tree.actions; trackBy: trackByItem\"\r\n [icon]=\"action.icon\"\r\n [title]=\"action.label\"\r\n (click)=\"onAction($event, action, node)\"\r\n ></x-link>\r\n </span>\r\n</div>\r\n<ul *ngIf=\"!virtualScroll && (node.childrenLoaded || (node.leaf && node.open))\" [hidden]=\"!node.open\">\r\n <li\r\n x-tree-node\r\n *ngFor=\"let child of node.children; trackBy: trackByItem\"\r\n [node]=\"child\"\r\n [parent]=\"this\"\r\n [lazy]=\"lazy\"\r\n [lazyData]=\"lazyData\"\r\n [nodeHeight]=\"nodeHeight\"\r\n [nodeNowrap]=\"nodeNowrap\"\r\n [nodeAlignItems]=\"nodeAlignItems\"\r\n [tree]=\"tree\"\r\n ></li>\r\n</ul>\r\n", styles: [".x-tree-node{margin:0;padding:0}.x-tree-node-content{display:flex;padding:.0625rem 0;cursor:pointer}.x-tree-node-content x-icon{padding:.25rem;color:var(--x-text-400);font-size:1rem;margin-right:.125rem;transition:var(--x-animation-duration-base)}.x-tree-node-content x-icon.is-leaf{visibility:hidden}.x-tree-node-content x-icon.is-open{transform:rotate(90deg)}.x-tree-node-content x-icon:hover{color:var(--x-text-300)}.x-tree-node-content x-checkbox{margin-right:.325rem;padding:.25rem 0}.x-tree-node-content:hover,.x-tree-node-content.x-activated{background-color:var(--x-background-a100)}.x-tree-node-content:hover .x-tree-node-label,.x-tree-node-content.x-activated .x-tree-node-label{color:var(--x-primary)}.x-tree-node-content:hover .x-tree-node-operations{display:flex;align-items:center}.x-tree-node-operations{display:none}.x-tree-node-operations .x-link{padding:0 .125rem}.x-tree-node-label{flex:1;-webkit-user-select:none;user-select:none}.x-tree-node-label.nowrap{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}\n"] }]
481
415
  }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.XConfigService }]; }, propDecorators: { parent: [{
482
416
  type: Input
483
417
  }], tree: [{
@@ -628,6 +562,32 @@ class XTreeComponent extends XTreeProperty {
628
562
  }
629
563
  this.nodes = [...this.nodes];
630
564
  }
565
+ virtualToggle(node) {
566
+ let index = this.nodes.indexOf(node);
567
+ if (node.open) {
568
+ let addNodes = [];
569
+ const getNodes = (nd) => {
570
+ for (let child of nd.children) {
571
+ addNodes.push(child);
572
+ child.open && getNodes(child);
573
+ }
574
+ };
575
+ getNodes(node);
576
+ this.nodes.splice(index + 1, 0, ...addNodes);
577
+ }
578
+ else {
579
+ let delCount = 0;
580
+ const getCount = (nd) => {
581
+ delCount += nd.children.length;
582
+ for (let child of nd.children) {
583
+ child.open && getCount(child);
584
+ }
585
+ };
586
+ getCount(node);
587
+ this.nodes.splice(index + 1, delCount);
588
+ }
589
+ this.nodes = [...this.nodes];
590
+ }
631
591
  setActivatedNode(nodes) {
632
592
  let before = this.activatedNode;
633
593
  this.activatedNode = nodes.find((x) => x.id == this.activatedId);
@@ -653,29 +613,84 @@ class XTreeComponent extends XTreeProperty {
653
613
  };
654
614
  getParent(node);
655
615
  }
616
+ onToggle(event, node) {
617
+ node.open = !node.open;
618
+ if (this.virtualScroll) {
619
+ if (this.lazy && !node.childrenLoaded) {
620
+ this.getLazyData(node, () => this.virtualToggle(node));
621
+ }
622
+ else {
623
+ this.virtualToggle(node);
624
+ }
625
+ }
626
+ else if (node.open && !node.childrenLoaded) {
627
+ if (this.lazy) {
628
+ this.getLazyData(node);
629
+ }
630
+ else {
631
+ node.childrenLoaded = true;
632
+ }
633
+ }
634
+ event.preventDefault();
635
+ event.stopPropagation();
636
+ this.cdr.detectChanges();
637
+ }
638
+ getLazyData(node, callBack) {
639
+ node.loading = true;
640
+ node.change && node.change();
641
+ this.data(node.id)
642
+ .pipe(map((x) => x.map((y) => {
643
+ y.level = node.level + 1;
644
+ y.checked = node.checked;
645
+ return y;
646
+ })))
647
+ .subscribe((x) => {
648
+ node.children = x;
649
+ node.childrenLoaded = true;
650
+ node.loading = false;
651
+ if (callBack)
652
+ callBack();
653
+ node.change && node.change();
654
+ this.cdr.detectChanges();
655
+ });
656
+ }
656
657
  addNode(node) {
657
658
  let parent = this.treeData.find((x) => x.id === node.pid);
658
- if (parent) {
659
- if (!parent.children)
660
- parent.children = [];
661
- this.expanded = [...this.expanded, parent.id];
662
- this.activatedId = node.id;
663
- node.level = Number(parent.level) + 1;
664
- node.pid = parent.id;
665
- this.treeData.push(node);
666
- this.setActivatedNode(this.treeData);
667
- parent.open = true;
668
- parent.leaf = true;
669
- parent.children = [...parent.children, node];
670
- parent.change && parent.change();
659
+ const _addNode = () => {
660
+ if (parent) {
661
+ if (!parent.children)
662
+ parent.children = [];
663
+ this.expanded = [...this.expanded, parent.id];
664
+ this.activatedId = node.id;
665
+ node.level = Number(parent.level) + 1;
666
+ node.pid = parent.id;
667
+ this.treeData.push(node);
668
+ this.setActivatedNode(this.treeData);
669
+ parent.open = true;
670
+ parent.leaf = true;
671
+ parent.children = [...parent.children, node];
672
+ if (this.virtualScroll) {
673
+ this.virtualToggle(parent);
674
+ this.cdr.detectChanges();
675
+ }
676
+ parent.change && parent.change();
677
+ }
678
+ else if (XIsEmpty(node.pid)) {
679
+ this.activatedId = node.id;
680
+ node.level = 0;
681
+ this.treeData = [...this.treeData, node];
682
+ this.nodes = [...this.nodes, node];
683
+ this.setActivatedNode(this.treeData);
684
+ this.cdr.detectChanges();
685
+ }
686
+ };
687
+ if (this.lazy && parent && !parent.childrenLoaded) {
688
+ this.getLazyData(parent, () => {
689
+ _addNode();
690
+ });
671
691
  }
672
- else if (node.pid == null) {
673
- this.activatedId = node.id;
674
- node.level = 0;
675
- this.treeData = [...this.treeData, node];
676
- this.nodes = [...this.nodes, node];
677
- this.setActivatedNode(this.treeData);
678
- this.cdr.detectChanges();
692
+ else {
693
+ _addNode();
679
694
  }
680
695
  }
681
696
  removeNode(node) {
@@ -687,11 +702,30 @@ class XTreeComponent extends XTreeProperty {
687
702
  parent.leaf = parent.children.length > 0;
688
703
  if (!parent.leaf)
689
704
  this.activatedId = parent.id;
705
+ if (this.virtualScroll) {
706
+ let index = this.nodes.indexOf(node);
707
+ let aindex = index - 1;
708
+ if (index === 0 && this.nodes.length > 1) {
709
+ aindex = 1;
710
+ }
711
+ let activatedNode = this.nodes[aindex];
712
+ this.activatedId = activatedNode.id;
713
+ this.setActivatedNode(this.nodes);
714
+ this.nodes.splice(index, 1);
715
+ this.nodes = [...this.nodes];
716
+ if (activatedNode) {
717
+ activatedNode.change && activatedNode.change();
718
+ }
719
+ this.cdr.detectChanges();
720
+ }
690
721
  parent.change && parent.change();
691
722
  }
692
- else if (node.pid == null) {
723
+ else if (XIsEmpty(node.pid)) {
693
724
  this.treeData.splice(this.treeData.indexOf(node), 1);
694
725
  this.nodes.splice(this.nodes.indexOf(node), 1);
726
+ if (this.virtualScroll) {
727
+ this.nodes = [...this.nodes];
728
+ }
695
729
  this.cdr.detectChanges();
696
730
  }
697
731
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ng-nest-ui-tree.mjs","sources":["../../../../lib/ng-nest/ui/tree/tree.property.ts","../../../../lib/ng-nest/ui/tree/tree-node.component.ts","../../../../lib/ng-nest/ui/tree/tree-node.component.html","../../../../lib/ng-nest/ui/tree/tree.component.ts","../../../../lib/ng-nest/ui/tree/tree.component.html","../../../../lib/ng-nest/ui/tree/tree.module.ts","../../../../lib/ng-nest/ui/tree/ng-nest-ui-tree.ts"],"sourcesContent":["import {\r\n XDataConvert,\r\n XProperty,\r\n XData,\r\n XInputBoolean,\r\n XParentIdentityProperty,\r\n XNumber,\r\n XBoolean,\r\n XInputNumber,\r\n XIdentityProperty,\r\n XWithConfig,\r\n XAlign\r\n} from '@ng-nest/ui/core';\r\nimport { Input, TemplateRef, Output, EventEmitter, Component } from '@angular/core';\r\n\r\n/**\r\n * Tree\r\n * @selector x-tree\r\n * @decorator component\r\n */\r\nexport const XTreePrefix = 'x-tree';\r\nconst X_CONFIG_NAME = 'tree';\r\n\r\n/**\r\n * Tree Property\r\n */\r\n@Component({ template: '' })\r\nexport class XTreeProperty extends XProperty {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n @Input() @XDataConvert() data: XData<XTreeNode> = [];\r\n /**\r\n * @zh_CN 显示多选框\r\n * @en_US Show checkbox\r\n */\r\n @Input() @XInputBoolean() checkbox?: XBoolean;\r\n /**\r\n * @zh_CN 开启懒加载节点,data 必须设置成函数类型\r\n * @en_US Open lazy loading node, data must be set to function type\r\n */\r\n @Input() @XInputBoolean() lazy?: XBoolean;\r\n /**\r\n * @zh_CN 当前激活的节点 Id\r\n * @en_US Currently active node Id\r\n */\r\n @Input() activatedId: any;\r\n /**\r\n * @zh_CN 展开的节点\r\n * @en_US Expanded node\r\n */\r\n @Input() expanded: any[] = [];\r\n /**\r\n * @zh_CN checkbox 选中的节点\r\n * @en_US Checkbox selected node\r\n */\r\n @Input() checked: any[] = [];\r\n /**\r\n * @zh_CN 展开所有节点\r\n * @en_US Expand all nodes\r\n */\r\n @Input() @XInputBoolean() expandedAll?: XBoolean;\r\n /**\r\n * @zh_CN 默认展开的层级\r\n * @en_US Default expanded level\r\n */\r\n @Input() @XInputNumber() expandedLevel: XNumber = -1;\r\n /**\r\n * @zh_CN 点击节点就触发展开/收起的操作,请确保节点上没有其它操作(checkbox、自定义的操作按钮)\r\n * @en_US Click the node to trigger the expand/collapse operation, please make sure that there are no other operations on the node (checkbox, custom operation button)\r\n */\r\n @Input() @XInputBoolean() nodeOpen?: XBoolean;\r\n /**\r\n * @zh_CN 单位间距,这个与层级的乘积算出节点的左边距,单位 rem\r\n * @en_US Unit spacing, the product of this and the level calculates the left margin of the node, the unit is rem\r\n */\r\n @Input() @XWithConfig<XNumber>(X_CONFIG_NAME, 0.875) @XInputNumber() spacing?: XNumber;\r\n /**\r\n * @zh_CN 标签自定义模板\r\n * @en_US Label custom template\r\n */\r\n @Input() labelTpl?: TemplateRef<void>;\r\n /**\r\n * @zh_CN 节点的高度,单位 rem, 默认 0 是自适应高度\r\n * @en_US The height of the node in rem\r\n */\r\n @Input() @XWithConfig<XNumber>(X_CONFIG_NAME, 0) @XInputNumber() nodeHeight!: XNumber;\r\n /**\r\n * @zh_CN 是否允许多次点击一个节点触发多次事件\r\n * @en_US Whether to allow multiple clicks on a node to trigger multiple events\r\n */\r\n @Input() @XInputBoolean() allowManyActivated?: XBoolean;\r\n /**\r\n * @zh_CN 当前点击选中的节点变化的事件\r\n * @en_US The event of the currently clicked node change\r\n */\r\n @Output() activatedChange = new EventEmitter<XTreeNode>();\r\n /**\r\n * @zh_CN 使用 checkedbox 选中变化的事件\r\n * @en_US Use checkedbox to select changed events\r\n */\r\n @Output() checkboxChange = new EventEmitter<XTreeNode>();\r\n /**\r\n * @zh_CN 如果 data 是函数类型,可以通过此参数控制请求,常用于弹框中的表格,弹出后再请求\r\n * @en_US If data is a function type, you can use this parameter to control the request, which is often used in the form in the pop-up box, and then request it after it pops up\r\n */\r\n @Input() @XInputBoolean() manual: boolean = true;\r\n /**\r\n * @zh_CN checkbox 状态改变触发层级检查\r\n * @en_US Checkbox status changes trigger level checks\r\n */\r\n @Input() @XInputBoolean() levelCheck: XBoolean = true;\r\n /**\r\n * @zh_CN 节点内容不换行显示省略号\r\n * @en_US Show ellipsis without wrapping\r\n */\r\n @Input() @XInputBoolean() nodeNowrap: XBoolean = true;\r\n /**\r\n * @zh_CN 节点垂直对齐方式\r\n * @en_US Show ellipsis without wrapping\r\n */\r\n @Input() @XWithConfig<XAlign>(X_CONFIG_NAME, 'center') nodeAlignItems!: XAlign;\r\n /**\r\n * @zh_CN 树节点操作按钮\r\n * @en_US Tree node operation buttons\r\n */\r\n @Input() actions: XTreeAction[] = [];\r\n /**\r\n * @zh_CN 开启虚拟滚动\r\n * @en_US Turn on virtual scrolling\r\n */\r\n @Input() @XWithConfig<XBoolean>(X_CONFIG_NAME) @XInputBoolean() virtualScroll!: XBoolean;\r\n /**\r\n * @zh_CN 滚动区域高度,开启虚拟滚动的时候生效\r\n * @en_US Rolling area height\r\n */\r\n @Input() @XWithConfig<number>(X_CONFIG_NAME, 400) @XInputNumber() virtualScrollHeight!: number;\r\n /**\r\n * @zh_CN itemSize,对应 cdk scroll 中的参数,开启虚拟滚动才生效\r\n * @en_US itemSize,corresponding to the parameters in cdk scroll\r\n */\r\n @Input() @XWithConfig<number>(X_CONFIG_NAME, 26) @XInputNumber() itemSize!: number;\r\n /**\r\n * @zh_CN 超出可视窗口缓冲区的最小值,对应 cdk scroll 中的参数,开启虚拟滚动才生效\r\n * @en_US Exceed the minimum value of the visible window buffer, corresponding to the parameters in cdk scroll\r\n */\r\n @Input() minBufferPx: number = 100;\r\n /**\r\n * @zh_CN 渲染新数据缓冲区的像素,对应 cdk scroll 中的参数,开启虚拟滚动才生效\r\n * @en_US Render the pixels of the new data buffer, corresponding to the parameters in cdk scroll\r\n */\r\n @Input() maxBufferPx: number = 200;\r\n /**\r\n * @zh_CN 参数控制请求改变事件\r\n * @en_US Parameter control request change event\r\n */\r\n @Output() manualChange = new EventEmitter<boolean>();\r\n}\r\n\r\n/**\r\n * @zh_CN Tree 数据对象\r\n * @en_US Tree data object\r\n */\r\nexport interface XTreeNode extends XParentIdentityProperty<XTreeNode> {\r\n /**\r\n * @zh_CN 展开\r\n * @en_US Unfold\r\n */\r\n open?: boolean;\r\n /**\r\n * @zh_CN 激活的\r\n * @en_US active\r\n */\r\n activated?: boolean;\r\n /**\r\n * @zh_CN 检查更新\r\n * @en_US Check for updates\r\n */\r\n change?: Function;\r\n /**\r\n * @zh_CN 子节点已加载过\r\n * @en_US Child node has been loaded\r\n */\r\n childrenLoaded?: boolean;\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 禁用checkbox\r\n * @en_US Disable checkbox\r\n */\r\n disabled?: boolean;\r\n /**\r\n * @zh_CN checkbox 子节点是否有选中的状态\r\n * @en_US Whether the child node of checkbox is selected\r\n */\r\n indeterminate?: boolean;\r\n /**\r\n * @zh_CN 节点高度,优先级高于 tree 参数,单位 rem\r\n * @en_US Node height in rem, highest priority\r\n */\r\n height?: number;\r\n /**\r\n * @zh_CN 节点内容不换行显示省略号,优先级高于 tree 参数\r\n * @en_US Show ellipsis without wrapping, highest priority\r\n */\r\n nowrap?: boolean;\r\n /**\r\n * @zh_CN 节点垂直对齐方式,优先级高于 tree 参数\r\n * @en_US Show ellipsis without wrapping, highest priority\r\n */\r\n alignItems?: XAlign;\r\n /**\r\n * @zh_CN 自定义属性\r\n * @en_US Custom attributes\r\n */\r\n [property: string]: any;\r\n}\r\n\r\n/**\r\n * @zh_CN Tree 节点操作\r\n * @en_US Tree node operation\r\n */\r\nexport interface XTreeAction extends XIdentityProperty {\r\n /**\r\n * @zh_CN 操作\r\n * @en_US Operating\r\n */\r\n handler?: Function;\r\n /**\r\n * @zh_CN 图标\r\n * @en_US Icon\r\n */\r\n icon?: string;\r\n}\r\n\r\n/**\r\n * TreeNode\r\n * @selector x-tree-node\r\n * @decorator directive\r\n */\r\nexport const XTreeNodePrefix = 'x-tree-node';\r\n\r\n/**\r\n * TreeNode Property\r\n */\r\n@Component({ template: '' })\r\nexport class XTreeNodeProperty extends XProperty {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n @Input() node: XTreeNode = {};\r\n /**\r\n * @zh_CN 层级\r\n * @en_US Level\r\n */\r\n @Input() level?: XNumber;\r\n /**\r\n * @zh_CN 懒加载子节点\r\n * @en_US Lazy loading of child nodes\r\n */\r\n @Input() @XInputBoolean() lazy?: XBoolean;\r\n /**\r\n * @zh_CN 节点的高度,单位 rem\r\n * @en_US The height of the node in rem\r\n */\r\n @Input() @XInputNumber() nodeHeight: XNumber = 0;\r\n /**\r\n * @zh_CN 节点内容不换行显示省略号\r\n * @en_US Show ellipsis without wrapping\r\n */\r\n @Input() @XInputBoolean() nodeNowrap?: XBoolean;\r\n /**\r\n * @zh_CN 节点垂直对齐方式\r\n * @en_US Show ellipsis without wrapping\r\n */\r\n @Input() nodeAlignItems: XAlign = 'center';\r\n /**\r\n * @zh_CN 懒加载函数\r\n * @en_US Lazy loading function\r\n */\r\n @Input() lazyData!: XData<XTreeNode[]>;\r\n /**\r\n * @zh_CN 标记为虚拟滚动的节点\r\n * @en_US Mark as a node of virtual rolling\r\n */\r\n @Input() @XInputBoolean() virtualScroll?: XBoolean;\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n Renderer2,\r\n ElementRef,\r\n ChangeDetectorRef,\r\n ChangeDetectionStrategy,\r\n HostBinding,\r\n Input\r\n} from '@angular/core';\r\nimport { XTreeNodePrefix, XTreeNode, XTreeNodeProperty, XTreeAction } from './tree.property';\r\nimport { XIsEmpty, XConfigService, XBoolean } from '@ng-nest/ui/core';\r\nimport { map } from 'rxjs/operators';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Component({\r\n selector: `${XTreeNodePrefix}, [${XTreeNodePrefix}]`,\r\n templateUrl: './tree-node.component.html',\r\n styleUrls: ['./tree-node.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XTreeNodeComponent extends XTreeNodeProperty implements OnInit {\r\n @Input() parent!: XTreeNodeComponent;\r\n @Input() tree: any;\r\n @HostBinding('class.x-tree-node') rootClass = true;\r\n private _loading = false;\r\n public get loading() {\r\n return this._loading;\r\n }\r\n public set loading(value) {\r\n this._loading = value;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n get paddingLeft() {\r\n return Number(this.node?.level ? this.node.level : 0) * Number(this.tree.spacing);\r\n }\r\n\r\n constructor(\r\n // @Optional() public tree: XTreeComponent,\r\n public renderer: Renderer2,\r\n public elementRef: ElementRef,\r\n public cdr: ChangeDetectorRef,\r\n public configService: XConfigService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.node.change = (check: boolean) => {\r\n if (check) this.setCheckbox();\r\n this.cdr.detectChanges();\r\n };\r\n this.level = this.node?.level ? this.node.level : 0;\r\n if (!this.tree.levelCheck) return;\r\n if (this.node.checked) this.setCheckbox();\r\n this.setIndeterminate(this.node);\r\n }\r\n\r\n onToggle(event: Event, node: XTreeNode) {\r\n node.open = !node.open;\r\n if (this.virtualScroll) {\r\n if (this.lazy && !node.childrenLoaded) {\r\n this.getLazyData(node, () => this.virtualToggle(node));\r\n } else {\r\n this.virtualToggle(node);\r\n }\r\n } else if (node.open && !node.childrenLoaded) {\r\n if (this.lazy) {\r\n this.getLazyData(node);\r\n } else {\r\n node.childrenLoaded = true;\r\n }\r\n }\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n virtualToggle(node: XTreeNode) {\r\n let index = this.tree.nodes.indexOf(node);\r\n if (node.open) {\r\n let addNodes: XTreeNode[] = [];\r\n const getNodes = (nd: XTreeNode) => {\r\n for (let child of nd.children!) {\r\n addNodes.push(child);\r\n child.open && getNodes(child);\r\n }\r\n };\r\n getNodes(node);\r\n this.tree.nodes.splice(index + 1, 0, ...addNodes);\r\n } else {\r\n let delCount = 0;\r\n const getCount = (nd: XTreeNode) => {\r\n delCount += nd.children!.length;\r\n for (let child of nd.children!) {\r\n child.open && getCount(child);\r\n }\r\n };\r\n getCount(node);\r\n this.tree.nodes.splice(index + 1, delCount);\r\n }\r\n this.tree.nodes = [...this.tree.nodes];\r\n }\r\n\r\n getLazyData(node: XTreeNode, callBack?: () => void) {\r\n this.loading = true;\r\n (this.lazyData as (pid?: any) => Observable<XTreeNode[]>)(node.id)\r\n .pipe(\r\n map((x) =>\r\n x.map((y) => {\r\n y.level = (node.level as number) + 1;\r\n y.checked = node.checked;\r\n return y;\r\n })\r\n )\r\n )\r\n .subscribe((x) => {\r\n node.children = x;\r\n node.childrenLoaded = true;\r\n this.loading = false;\r\n if (callBack) callBack();\r\n this.cdr.detectChanges();\r\n });\r\n }\r\n\r\n onActivate(event: Event, node: XTreeNode) {\r\n const change: Function = this.tree.activatedNode?.change as Function;\r\n this.tree.nodeOpen && node.leaf && this.onToggle(event, node);\r\n if (this.tree.activatedNode) {\r\n if (this.tree.activatedNode.id === node.id && !this.tree.allowManyActivated) return;\r\n }\r\n this.tree.activatedNode = node;\r\n this.tree.activatedChange.emit(node);\r\n change && change();\r\n event.stopPropagation();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n onCheckboxChange() {\r\n this.setCheckbox();\r\n this.tree.checkboxChange.emit(this.node);\r\n }\r\n\r\n setCheckbox() {\r\n if (!this.tree.levelCheck) return;\r\n this.node.indeterminate = this.node.checked;\r\n this.node.children && this.setChildrenCheckbox(this.node.checked as boolean);\r\n if (this.virtualScroll) {\r\n const setParent = (node: XTreeNode) => {\r\n let parent = this.tree.nodes.find((x: XTreeNode) => x.id === node.pid);\r\n if (!parent || XIsEmpty(parent.children)) return;\r\n let checkedList = parent.children?.filter((y: XTreeNode) => y.checked);\r\n let indeterminateList = parent.children?.filter((y: XTreeNode) => y.indeterminate);\r\n parent.checked = checkedList?.length === parent.children?.length;\r\n parent.indeterminate = (checkedList as XTreeNode[]).length > 0 || (indeterminateList as XTreeNode[]).length > 0;\r\n parent.change && parent.change();\r\n setParent(parent);\r\n };\r\n setParent(this.node);\r\n } else {\r\n this.parent?.setParentCheckbox();\r\n }\r\n }\r\n\r\n setChildrenCheckbox(checked: boolean) {\r\n const setChildren = (children: XTreeNode[], isChecked: boolean) => {\r\n if (XIsEmpty(children)) return;\r\n for (let x of children) {\r\n if (x.disabled) continue;\r\n x.checked = isChecked;\r\n x.indeterminate = isChecked;\r\n x.change && x.change();\r\n setChildren(x.children as XTreeNode[], isChecked);\r\n }\r\n };\r\n setChildren(this.node.children as XTreeNode[], checked);\r\n this.cdr.detectChanges();\r\n }\r\n\r\n setParentCheckbox() {\r\n if (XIsEmpty(this.node.children)) return;\r\n let checkedList = this.node.children?.filter((x) => x.checked);\r\n let indeterminateList = this.node.children?.filter((x) => x.indeterminate);\r\n this.node.checked = checkedList?.length === this.node.children?.length;\r\n this.node.indeterminate = (checkedList as XTreeNode[]).length > 0 || (indeterminateList as XTreeNode[]).length > 0;\r\n this.parent?.setParentCheckbox();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n setIndeterminate(node: XTreeNode) {\r\n const getChildren = (children: XTreeNode[]) => {\r\n if (XIsEmpty(children)) return;\r\n children.forEach((x) => {\r\n if (x.indeterminate || x.checked) {\r\n node.indeterminate = true;\r\n return;\r\n }\r\n getChildren(x.children as XTreeNode[]);\r\n });\r\n };\r\n getChildren(node.children as XTreeNode[]);\r\n this.cdr.detectChanges();\r\n }\r\n\r\n getNodeDisabled(disabled?: boolean) {\r\n return disabled as XBoolean;\r\n }\r\n\r\n onAction(event: Event, action: XTreeAction, node: XTreeNode) {\r\n action.handler && action.handler(node);\r\n event.stopPropagation();\r\n }\r\n\r\n trackByItem(_index: number, item: XTreeAction | XTreeNode) {\r\n return item.id;\r\n }\r\n}\r\n","<div\r\n class=\"x-tree-node-content\"\r\n [class.x-activated]=\"tree.activatedNode?.id === node.id\"\r\n [style.padding-left.rem]=\"paddingLeft\"\r\n [style.height.rem]=\"node.height ? node.height : nodeHeight ? nodeHeight : ''\"\r\n [style.align-items]=\"node.alignItems ? node.alignItems : nodeAlignItems\"\r\n (click)=\"onActivate($event, node)\"\r\n>\r\n <x-icon\r\n *ngIf=\"!loading\"\r\n [class.is-leaf]=\"!node.leaf\"\r\n [class.is-open]=\"node.open\"\r\n type=\"fto-chevron-right\"\r\n (click)=\"!tree.nodeOpen && onToggle($event, node)\"\r\n ></x-icon>\r\n <x-icon *ngIf=\"loading\" type=\"fto-loader\" [spin]=\"loading\"></x-icon>\r\n <x-checkbox\r\n *ngIf=\"tree.checkbox\"\r\n [data]=\"[{ label: '', id: node.id }]\"\r\n [(ngModel)]=\"node.checked\"\r\n (ngModelChange)=\"onCheckboxChange()\"\r\n [indeterminate]=\"node.indeterminate\"\r\n [disabled]=\"getNodeDisabled(node.disabled)\"\r\n (click)=\"$event.stopPropagation()\"\r\n ></x-checkbox>\r\n <span\r\n class=\"x-tree-node-label\"\r\n [class.nowrap]=\"node.nowrap === false || node.nowrap === true ? node.nowrap : nodeNowrap\"\r\n [title]=\"node.label\"\r\n *ngIf=\"!tree.labelTpl; else labelTpl\"\r\n >{{ node.label }}</span\r\n >\r\n <ng-template #labelTpl>\r\n <ng-container *xOutlet=\"tree.labelTpl; context: { $node: node }\"></ng-container>\r\n </ng-template>\r\n <span class=\"x-tree-node-operations\">\r\n <x-link\r\n *ngFor=\"let action of tree.actions; trackBy: trackByItem\"\r\n [icon]=\"action.icon\"\r\n [title]=\"action.label\"\r\n (click)=\"onAction($event, action, node)\"\r\n ></x-link>\r\n </span>\r\n</div>\r\n<ul *ngIf=\"!virtualScroll && (node.childrenLoaded || (node.leaf && node.open))\" [hidden]=\"!node.open\">\r\n <li\r\n x-tree-node\r\n *ngFor=\"let child of node.children; trackBy: trackByItem\"\r\n [node]=\"child\"\r\n [parent]=\"this\"\r\n [lazy]=\"lazy\"\r\n [lazyData]=\"lazyData\"\r\n [nodeHeight]=\"nodeHeight\"\r\n [nodeNowrap]=\"nodeNowrap\"\r\n [nodeAlignItems]=\"nodeAlignItems\"\r\n [tree]=\"tree\"\r\n ></li>\r\n</ul>\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n Renderer2,\r\n ElementRef,\r\n ChangeDetectorRef,\r\n ChangeDetectionStrategy,\r\n ViewChild,\r\n SimpleChanges,\r\n OnChanges\r\n} from '@angular/core';\r\nimport { XTreePrefix, XTreeNode, XTreeProperty } from './tree.property';\r\nimport { XIsObservable, XIsEmpty, XIsFunction, XIsUndefined, XIsChange, XSetData, XConfigService } from '@ng-nest/ui/core';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Component({\r\n selector: `${XTreePrefix}`,\r\n templateUrl: './tree.component.html',\r\n styleUrls: ['./tree.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XTreeComponent extends XTreeProperty implements OnChanges {\r\n @ViewChild('tree', { static: true }) tree!: ElementRef;\r\n nodes: XTreeNode[] = [];\r\n virtualNodes: XTreeNode[] = [];\r\n activatedNode!: XTreeNode;\r\n dataIsFunc = false;\r\n getting = false;\r\n treeData: XTreeNode[] = [];\r\n private _unSubject = new Subject<void>();\r\n constructor(\r\n public renderer: Renderer2,\r\n public elementRef: ElementRef,\r\n public cdr: ChangeDetectorRef,\r\n public configService: XConfigService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const { expandedAll, data, activatedId, checked, manual } = changes;\r\n XIsChange(data) && this.setData();\r\n XIsChange(expandedAll) && this.setExpandedAll();\r\n XIsChange(activatedId) && this.setActivatedNode(this.treeData);\r\n XIsChange(checked) && this.setCheckedKeys(this.checked);\r\n XIsChange(manual) && this.setManual();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._unSubject.next();\r\n this._unSubject.unsubscribe();\r\n }\r\n\r\n setData() {\r\n if (typeof this.data === 'undefined') return;\r\n this.dataIsFunc = false;\r\n if (XIsObservable(this.data)) {\r\n XSetData<XTreeNode>(this.data, this._unSubject).subscribe((x) => {\r\n this.setDataChange(x);\r\n });\r\n } else if (XIsFunction(this.data)) {\r\n this.dataIsFunc = true;\r\n this.getDataByFunc();\r\n } else {\r\n this.setDataChange(this.data as XTreeNode[]);\r\n }\r\n }\r\n\r\n private setManual() {\r\n if (this.dataIsFunc) this.getDataByFunc();\r\n }\r\n\r\n private getDataByFunc() {\r\n if (!this.manual) return;\r\n XSetData<XTreeNode>((this.data as Function)(), this._unSubject).subscribe((x) => {\r\n this.setDataChange(x);\r\n });\r\n }\r\n\r\n private setDataChange(value: XTreeNode[]) {\r\n !XIsEmpty(this.activatedId) && this.setActivatedNode(value);\r\n const getChildren = (node: XTreeNode, level: number) => {\r\n node.level = level;\r\n node.open = Boolean(this.expandedAll) || level <= this.expandedLevel || this.expanded.indexOf(node.id) >= 0;\r\n node.checked = this.checked.indexOf(node.id) >= 0;\r\n node.childrenLoaded = node.open;\r\n if (XIsUndefined(node.children)) node.children = value.filter((y) => y.pid === node.id);\r\n if (XIsUndefined(node.leaf)) node.leaf = (node.children?.length as number) > 0;\r\n if (node.leaf) node.children?.map((y) => getChildren(y, level + 1));\r\n return node;\r\n };\r\n this.treeData = value;\r\n this.nodes = value.filter((x) => XIsEmpty(x.pid)).map((x) => getChildren(x, 0));\r\n\r\n this.cdr.detectChanges();\r\n }\r\n\r\n getCheckedNodes(): XTreeNode[] {\r\n let result: XTreeNode[] = [];\r\n const getChildren = (nodes: XTreeNode[]) => {\r\n if (XIsEmpty(nodes)) return;\r\n nodes.forEach((x) => {\r\n if (x.checked && !result.includes(x)) {\r\n result = [...result, x];\r\n }\r\n getChildren(x.children as XTreeNode[]);\r\n });\r\n };\r\n getChildren(this.nodes);\r\n return result;\r\n }\r\n\r\n getCheckedKeys() {\r\n return this.getCheckedNodes().map((x) => x.id);\r\n }\r\n\r\n setCheckedKeys(keys: any[] = []) {\r\n const setChildren = (nodes: XTreeNode[], clear = false) => {\r\n if (XIsEmpty(nodes)) return;\r\n nodes.forEach((x) => {\r\n x.checked = !clear && keys.indexOf(x.id) >= 0;\r\n x.change && x.change(true);\r\n setChildren(x.children as XTreeNode[], clear);\r\n });\r\n };\r\n setChildren(this.nodes, keys.length === 0);\r\n this.cdr.detectChanges();\r\n }\r\n\r\n setExpandedAll() {\r\n const setChildren = (nodes: XTreeNode[]) => {\r\n if (XIsEmpty(nodes)) return;\r\n nodes.forEach((x) => {\r\n x.open = Boolean(this.expandedAll);\r\n x.change && x.change();\r\n setChildren(x.children as XTreeNode[]);\r\n });\r\n };\r\n setChildren(this.nodes);\r\n\r\n if (this.virtualScroll) {\r\n if (this.virtualNodes.length === 0) {\r\n this.virtualNodes = [...this.nodes];\r\n }\r\n this.nodes = [...this.virtualNodes];\r\n for (let item of this.virtualNodes) {\r\n this.setVirtualExpandedAll(item, this.expandedAll as boolean);\r\n }\r\n }\r\n }\r\n\r\n setVirtualExpandedAll(item: XTreeNode, expandedAll: boolean) {\r\n let index = this.nodes.indexOf(item);\r\n if (expandedAll) {\r\n let addNodes: XTreeNode[] = [];\r\n const getNodes = (nd: XTreeNode) => {\r\n for (let child of nd.children!) {\r\n addNodes.push(child);\r\n getNodes(child);\r\n }\r\n };\r\n getNodes(item);\r\n this.nodes.splice(index + 1, 0, ...addNodes);\r\n }\r\n this.nodes = [...this.nodes];\r\n }\r\n\r\n setActivatedNode(nodes: XTreeNode[]) {\r\n let before = this.activatedNode;\r\n this.activatedNode = nodes.find((x) => x.id == this.activatedId) as XTreeNode;\r\n if (this.activatedNode) {\r\n this.setParentOpen(nodes, this.activatedNode);\r\n this.activatedChange.emit(this.activatedNode);\r\n }\r\n if (before) {\r\n before.change && before.change();\r\n }\r\n }\r\n\r\n setParentOpen(nodes: XTreeNode[], node: XTreeNode) {\r\n const getParent = (child: XTreeNode) => {\r\n if (XIsEmpty(child.pid)) return;\r\n const parent = nodes.find((x) => x.id === child.pid) as XTreeNode;\r\n if (!XIsEmpty(parent)) {\r\n this.expanded = [...this.expanded, parent.id];\r\n parent.open = true;\r\n parent.change && parent.change();\r\n getParent(parent);\r\n }\r\n };\r\n getParent(node);\r\n }\r\n\r\n addNode(node: XTreeNode) {\r\n let parent = this.treeData.find((x) => x.id === node.pid);\r\n if (parent) {\r\n if (!parent.children) parent.children = [];\r\n this.expanded = [...this.expanded, parent.id];\r\n this.activatedId = node.id;\r\n node.level = Number(parent.level) + 1;\r\n node.pid = parent.id;\r\n this.treeData.push(node);\r\n this.setActivatedNode(this.treeData);\r\n parent.open = true;\r\n parent.leaf = true;\r\n parent.children = [...parent.children, node];\r\n parent.change && parent.change();\r\n } else if (node.pid == null) {\r\n this.activatedId = node.id;\r\n node.level = 0;\r\n this.treeData = [...this.treeData, node];\r\n this.nodes = [...this.nodes, node];\r\n this.setActivatedNode(this.treeData);\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n\r\n removeNode(node: XTreeNode) {\r\n let parent = this.treeData.find((x) => x.id === node.pid);\r\n if (parent) {\r\n if (!parent.children) parent.children = [];\r\n parent.children.splice(parent.children.indexOf(node), 1);\r\n parent.leaf = parent.children.length > 0;\r\n if (!parent.leaf) this.activatedId = parent.id;\r\n parent.change && parent.change();\r\n } else if (node.pid == null) {\r\n this.treeData.splice(this.treeData.indexOf(node), 1);\r\n this.nodes.splice(this.nodes.indexOf(node), 1);\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n\r\n updateNode(node: XTreeNode, nowNode: XTreeNode) {\r\n Object.assign(node, nowNode);\r\n node.change && node.change();\r\n }\r\n\r\n trackByItem(_index: number, item: XTreeNode) {\r\n return item.id;\r\n }\r\n}\r\n","<div #tree class=\"x-tree\">\r\n <ul *ngIf=\"!virtualScroll; else virtualScrollTpl\">\r\n <li\r\n x-tree-node\r\n *ngFor=\"let node of nodes; trackBy: trackByItem\"\r\n [node]=\"node\"\r\n [lazy]=\"lazy\"\r\n [lazyData]=\"data\"\r\n [nodeHeight]=\"nodeHeight\"\r\n [nodeNowrap]=\"nodeNowrap\"\r\n [nodeAlignItems]=\"nodeAlignItems\"\r\n [tree]=\"this\"\r\n ></li>\r\n </ul>\r\n</div>\r\n\r\n<ng-template #virtualScrollTpl>\r\n <cdk-virtual-scroll-viewport\r\n [itemSize]=\"itemSize\"\r\n [minBufferPx]=\"minBufferPx\"\r\n [maxBufferPx]=\"maxBufferPx\"\r\n [style.height.px]=\"virtualScrollHeight\"\r\n >\r\n <x-tree-node\r\n *cdkVirtualFor=\"let node of nodes; templateCacheSize: 0; trackBy: trackByItem\"\r\n [node]=\"node\"\r\n [lazy]=\"lazy\"\r\n [lazyData]=\"data\"\r\n [nodeHeight]=\"nodeHeight\"\r\n [nodeNowrap]=\"nodeNowrap\"\r\n [nodeAlignItems]=\"nodeAlignItems\"\r\n [tree]=\"this\"\r\n [virtualScroll]=\"virtualScroll\"\r\n ></x-tree-node>\r\n </cdk-virtual-scroll-viewport>\r\n</ng-template>\r\n\r\n<!-- 提前加载loading的图标-->\r\n<x-icon *ngIf=\"lazy\" [style.display]=\"'none'\" type=\"fto-loader\"></x-icon>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { XTreeComponent } from './tree.component';\r\nimport { XTreeNodeComponent } from './tree-node.component';\r\nimport { XIconModule } from '@ng-nest/ui/icon';\r\nimport { XCheckboxModule } from '@ng-nest/ui/checkbox';\r\nimport { XOutletModule } from '@ng-nest/ui/outlet';\r\nimport { XLinkModule } from '@ng-nest/ui/link';\r\nimport { XTreeProperty, XTreeNodeProperty } from './tree.property';\r\nimport { ScrollingModule } from '@angular/cdk/scrolling';\r\n\r\n@NgModule({\r\n declarations: [XTreeComponent, XTreeNodeComponent, XTreeProperty, XTreeNodeProperty],\r\n exports: [XTreeComponent, XTreeNodeComponent],\r\n imports: [CommonModule, FormsModule, XIconModule, XCheckboxModule, XOutletModule, XLinkModule, ScrollingModule]\r\n})\r\nexport class XTreeModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i4","i5.XTreeNodeComponent"],"mappings":"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"}
1
+ {"version":3,"file":"ng-nest-ui-tree.mjs","sources":["../../../../lib/ng-nest/ui/tree/tree.property.ts","../../../../lib/ng-nest/ui/tree/tree-node.component.ts","../../../../lib/ng-nest/ui/tree/tree-node.component.html","../../../../lib/ng-nest/ui/tree/tree.component.ts","../../../../lib/ng-nest/ui/tree/tree.component.html","../../../../lib/ng-nest/ui/tree/tree.module.ts","../../../../lib/ng-nest/ui/tree/ng-nest-ui-tree.ts"],"sourcesContent":["import {\r\n XDataConvert,\r\n XProperty,\r\n XData,\r\n XInputBoolean,\r\n XParentIdentityProperty,\r\n XNumber,\r\n XBoolean,\r\n XInputNumber,\r\n XIdentityProperty,\r\n XWithConfig,\r\n XAlign\r\n} from '@ng-nest/ui/core';\r\nimport { Input, TemplateRef, Output, EventEmitter, Component } from '@angular/core';\r\n\r\n/**\r\n * Tree\r\n * @selector x-tree\r\n * @decorator component\r\n */\r\nexport const XTreePrefix = 'x-tree';\r\nconst X_CONFIG_NAME = 'tree';\r\n\r\n/**\r\n * Tree Property\r\n */\r\n@Component({ template: '' })\r\nexport class XTreeProperty extends XProperty {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n @Input() @XDataConvert() data: XData<XTreeNode> = [];\r\n /**\r\n * @zh_CN 显示多选框\r\n * @en_US Show checkbox\r\n */\r\n @Input() @XInputBoolean() checkbox?: XBoolean;\r\n /**\r\n * @zh_CN 开启懒加载节点,data 必须设置成函数类型\r\n * @en_US Open lazy loading node, data must be set to function type\r\n */\r\n @Input() @XInputBoolean() lazy?: XBoolean;\r\n /**\r\n * @zh_CN 当前激活的节点 Id\r\n * @en_US Currently active node Id\r\n */\r\n @Input() activatedId: any;\r\n /**\r\n * @zh_CN 展开的节点\r\n * @en_US Expanded node\r\n */\r\n @Input() expanded: any[] = [];\r\n /**\r\n * @zh_CN checkbox 选中的节点\r\n * @en_US Checkbox selected node\r\n */\r\n @Input() checked: any[] = [];\r\n /**\r\n * @zh_CN 展开所有节点\r\n * @en_US Expand all nodes\r\n */\r\n @Input() @XInputBoolean() expandedAll?: XBoolean;\r\n /**\r\n * @zh_CN 默认展开的层级\r\n * @en_US Default expanded level\r\n */\r\n @Input() @XInputNumber() expandedLevel: XNumber = -1;\r\n /**\r\n * @zh_CN 点击节点就触发展开/收起的操作,请确保节点上没有其它操作(checkbox、自定义的操作按钮)\r\n * @en_US Click the node to trigger the expand/collapse operation, please make sure that there are no other operations on the node (checkbox, custom operation button)\r\n */\r\n @Input() @XInputBoolean() nodeOpen?: XBoolean;\r\n /**\r\n * @zh_CN 单位间距,这个与层级的乘积算出节点的左边距,单位 rem\r\n * @en_US Unit spacing, the product of this and the level calculates the left margin of the node, the unit is rem\r\n */\r\n @Input() @XWithConfig<XNumber>(X_CONFIG_NAME, 0.875) @XInputNumber() spacing?: XNumber;\r\n /**\r\n * @zh_CN 标签自定义模板\r\n * @en_US Label custom template\r\n */\r\n @Input() labelTpl?: TemplateRef<void>;\r\n /**\r\n * @zh_CN 节点的高度,单位 rem, 默认 0 是自适应高度\r\n * @en_US The height of the node in rem\r\n */\r\n @Input() @XWithConfig<XNumber>(X_CONFIG_NAME, 0) @XInputNumber() nodeHeight!: XNumber;\r\n /**\r\n * @zh_CN 是否允许多次点击一个节点触发多次事件\r\n * @en_US Whether to allow multiple clicks on a node to trigger multiple events\r\n */\r\n @Input() @XInputBoolean() allowManyActivated?: XBoolean;\r\n /**\r\n * @zh_CN 当前点击选中的节点变化的事件\r\n * @en_US The event of the currently clicked node change\r\n */\r\n @Output() activatedChange = new EventEmitter<XTreeNode>();\r\n /**\r\n * @zh_CN 使用 checkedbox 选中变化的事件\r\n * @en_US Use checkedbox to select changed events\r\n */\r\n @Output() checkboxChange = new EventEmitter<XTreeNode>();\r\n /**\r\n * @zh_CN 如果 data 是函数类型,可以通过此参数控制请求,常用于弹框中的表格,弹出后再请求\r\n * @en_US If data is a function type, you can use this parameter to control the request, which is often used in the form in the pop-up box, and then request it after it pops up\r\n */\r\n @Input() @XInputBoolean() manual: boolean = true;\r\n /**\r\n * @zh_CN checkbox 状态改变触发层级检查\r\n * @en_US Checkbox status changes trigger level checks\r\n */\r\n @Input() @XInputBoolean() levelCheck: XBoolean = true;\r\n /**\r\n * @zh_CN 节点内容不换行显示省略号\r\n * @en_US Show ellipsis without wrapping\r\n */\r\n @Input() @XInputBoolean() nodeNowrap: XBoolean = true;\r\n /**\r\n * @zh_CN 节点垂直对齐方式\r\n * @en_US Show ellipsis without wrapping\r\n */\r\n @Input() @XWithConfig<XAlign>(X_CONFIG_NAME, 'center') nodeAlignItems!: XAlign;\r\n /**\r\n * @zh_CN 树节点操作按钮\r\n * @en_US Tree node operation buttons\r\n */\r\n @Input() actions: XTreeAction[] = [];\r\n /**\r\n * @zh_CN 开启虚拟滚动\r\n * @en_US Turn on virtual scrolling\r\n */\r\n @Input() @XWithConfig<XBoolean>(X_CONFIG_NAME) @XInputBoolean() virtualScroll!: XBoolean;\r\n /**\r\n * @zh_CN 滚动区域高度,开启虚拟滚动的时候生效\r\n * @en_US Rolling area height\r\n */\r\n @Input() @XWithConfig<number>(X_CONFIG_NAME, 400) @XInputNumber() virtualScrollHeight!: number;\r\n /**\r\n * @zh_CN itemSize,对应 cdk scroll 中的参数,开启虚拟滚动才生效\r\n * @en_US itemSize,corresponding to the parameters in cdk scroll\r\n */\r\n @Input() @XWithConfig<number>(X_CONFIG_NAME, 26) @XInputNumber() itemSize!: number;\r\n /**\r\n * @zh_CN 超出可视窗口缓冲区的最小值,对应 cdk scroll 中的参数,开启虚拟滚动才生效\r\n * @en_US Exceed the minimum value of the visible window buffer, corresponding to the parameters in cdk scroll\r\n */\r\n @Input() minBufferPx: number = 100;\r\n /**\r\n * @zh_CN 渲染新数据缓冲区的像素,对应 cdk scroll 中的参数,开启虚拟滚动才生效\r\n * @en_US Render the pixels of the new data buffer, corresponding to the parameters in cdk scroll\r\n */\r\n @Input() maxBufferPx: number = 200;\r\n /**\r\n * @zh_CN 参数控制请求改变事件\r\n * @en_US Parameter control request change event\r\n */\r\n @Output() manualChange = new EventEmitter<boolean>();\r\n}\r\n\r\n/**\r\n * @zh_CN Tree 数据对象\r\n * @en_US Tree data object\r\n */\r\nexport interface XTreeNode extends XParentIdentityProperty<XTreeNode> {\r\n /**\r\n * @zh_CN 展开\r\n * @en_US Unfold\r\n */\r\n open?: boolean;\r\n /**\r\n * @zh_CN 激活的\r\n * @en_US active\r\n */\r\n activated?: boolean;\r\n /**\r\n * @zh_CN 检查更新\r\n * @en_US Check for updates\r\n */\r\n change?: Function;\r\n /**\r\n * @zh_CN 子节点已加载过\r\n * @en_US Child node has been loaded\r\n */\r\n childrenLoaded?: boolean;\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 禁用checkbox\r\n * @en_US Disable checkbox\r\n */\r\n disabled?: boolean;\r\n /**\r\n * @zh_CN checkbox 子节点是否有选中的状态\r\n * @en_US Whether the child node of checkbox is selected\r\n */\r\n indeterminate?: boolean;\r\n /**\r\n * @zh_CN 节点高度,优先级高于 tree 参数,单位 rem\r\n * @en_US Node height in rem, highest priority\r\n */\r\n height?: number;\r\n /**\r\n * @zh_CN 节点内容不换行显示省略号,优先级高于 tree 参数\r\n * @en_US Show ellipsis without wrapping, highest priority\r\n */\r\n nowrap?: boolean;\r\n /**\r\n * @zh_CN 节点垂直对齐方式,优先级高于 tree 参数\r\n * @en_US Show ellipsis without wrapping, highest priority\r\n */\r\n alignItems?: XAlign;\r\n /**\r\n * @zh_CN 节点懒加载中\r\n * @en_US Node lazy loading\r\n */\r\n loading?: boolean;\r\n /**\r\n * @zh_CN 自定义属性\r\n * @en_US Custom attributes\r\n */\r\n [property: string]: any;\r\n}\r\n\r\n/**\r\n * @zh_CN Tree 节点操作\r\n * @en_US Tree node operation\r\n */\r\nexport interface XTreeAction extends XIdentityProperty {\r\n /**\r\n * @zh_CN 操作\r\n * @en_US Operating\r\n */\r\n handler?: Function;\r\n /**\r\n * @zh_CN 图标\r\n * @en_US Icon\r\n */\r\n icon?: string;\r\n}\r\n\r\n/**\r\n * TreeNode\r\n * @selector x-tree-node\r\n * @decorator directive\r\n */\r\nexport const XTreeNodePrefix = 'x-tree-node';\r\n\r\n/**\r\n * TreeNode Property\r\n */\r\n@Component({ template: '' })\r\nexport class XTreeNodeProperty extends XProperty {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n @Input() node: XTreeNode = {};\r\n /**\r\n * @zh_CN 层级\r\n * @en_US Level\r\n */\r\n @Input() level?: XNumber;\r\n /**\r\n * @zh_CN 懒加载子节点\r\n * @en_US Lazy loading of child nodes\r\n */\r\n @Input() @XInputBoolean() lazy?: XBoolean;\r\n /**\r\n * @zh_CN 节点的高度,单位 rem\r\n * @en_US The height of the node in rem\r\n */\r\n @Input() @XInputNumber() nodeHeight: XNumber = 0;\r\n /**\r\n * @zh_CN 节点内容不换行显示省略号\r\n * @en_US Show ellipsis without wrapping\r\n */\r\n @Input() @XInputBoolean() nodeNowrap?: XBoolean;\r\n /**\r\n * @zh_CN 节点垂直对齐方式\r\n * @en_US Show ellipsis without wrapping\r\n */\r\n @Input() nodeAlignItems: XAlign = 'center';\r\n /**\r\n * @zh_CN 懒加载函数\r\n * @en_US Lazy loading function\r\n */\r\n @Input() lazyData!: XData<XTreeNode[]>;\r\n /**\r\n * @zh_CN 标记为虚拟滚动的节点\r\n * @en_US Mark as a node of virtual rolling\r\n */\r\n @Input() @XInputBoolean() virtualScroll?: XBoolean;\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n Renderer2,\r\n ElementRef,\r\n ChangeDetectorRef,\r\n ChangeDetectionStrategy,\r\n HostBinding,\r\n Input\r\n} from '@angular/core';\r\nimport { XTreeNodePrefix, XTreeNode, XTreeNodeProperty, XTreeAction } from './tree.property';\r\nimport { XIsEmpty, XConfigService, XBoolean } from '@ng-nest/ui/core';\r\n\r\n@Component({\r\n selector: `${XTreeNodePrefix}, [${XTreeNodePrefix}]`,\r\n templateUrl: './tree-node.component.html',\r\n styleUrls: ['./tree-node.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XTreeNodeComponent extends XTreeNodeProperty implements OnInit {\r\n @Input() parent!: XTreeNodeComponent;\r\n @Input() tree: any;\r\n @HostBinding('class.x-tree-node') rootClass = true;\r\n private _loading = false;\r\n public get loading() {\r\n return this._loading;\r\n }\r\n public set loading(value) {\r\n this._loading = value;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n get paddingLeft() {\r\n return Number(this.node?.level ? this.node.level : 0) * Number(this.tree.spacing);\r\n }\r\n\r\n constructor(\r\n // @Optional() public tree: XTreeComponent,\r\n public renderer: Renderer2,\r\n public elementRef: ElementRef,\r\n public cdr: ChangeDetectorRef,\r\n public configService: XConfigService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.node.change = (check: boolean) => {\r\n if (check) this.setCheckbox();\r\n this.cdr.detectChanges();\r\n };\r\n this.level = this.node?.level ? this.node.level : 0;\r\n if (!this.tree.levelCheck) return;\r\n if (this.node.checked) this.setCheckbox();\r\n this.setIndeterminate(this.node);\r\n }\r\n\r\n \r\n\r\n onActivate(event: Event, node: XTreeNode) {\r\n const change: Function = this.tree.activatedNode?.change as Function;\r\n this.tree.nodeOpen && node.leaf && this.tree.onToggle(event, node);\r\n if (this.tree.activatedNode) {\r\n if (this.tree.activatedNode.id === node.id && !this.tree.allowManyActivated) return;\r\n }\r\n this.tree.activatedNode = node;\r\n this.tree.activatedChange.emit(node);\r\n change && change();\r\n event.stopPropagation();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n onCheckboxChange() {\r\n this.setCheckbox();\r\n this.tree.checkboxChange.emit(this.node);\r\n }\r\n\r\n setCheckbox() {\r\n if (!this.tree.levelCheck) return;\r\n this.node.indeterminate = this.node.checked;\r\n this.node.children && this.setChildrenCheckbox(this.node.checked as boolean);\r\n if (this.virtualScroll) {\r\n const setParent = (node: XTreeNode) => {\r\n let parent = this.tree.nodes.find((x: XTreeNode) => x.id === node.pid);\r\n if (!parent || XIsEmpty(parent.children)) return;\r\n let checkedList = parent.children?.filter((y: XTreeNode) => y.checked);\r\n let indeterminateList = parent.children?.filter((y: XTreeNode) => y.indeterminate);\r\n parent.checked = checkedList?.length === parent.children?.length;\r\n parent.indeterminate = (checkedList as XTreeNode[]).length > 0 || (indeterminateList as XTreeNode[]).length > 0;\r\n parent.change && parent.change();\r\n setParent(parent);\r\n };\r\n setParent(this.node);\r\n } else {\r\n this.parent?.setParentCheckbox();\r\n }\r\n }\r\n\r\n setChildrenCheckbox(checked: boolean) {\r\n const setChildren = (children: XTreeNode[], isChecked: boolean) => {\r\n if (XIsEmpty(children)) return;\r\n for (let x of children) {\r\n if (x.disabled) continue;\r\n x.checked = isChecked;\r\n x.indeterminate = isChecked;\r\n x.change && x.change();\r\n setChildren(x.children as XTreeNode[], isChecked);\r\n }\r\n };\r\n setChildren(this.node.children as XTreeNode[], checked);\r\n this.cdr.detectChanges();\r\n }\r\n\r\n setParentCheckbox() {\r\n if (XIsEmpty(this.node.children)) return;\r\n let checkedList = this.node.children?.filter((x) => x.checked);\r\n let indeterminateList = this.node.children?.filter((x) => x.indeterminate);\r\n this.node.checked = checkedList?.length === this.node.children?.length;\r\n this.node.indeterminate = (checkedList as XTreeNode[]).length > 0 || (indeterminateList as XTreeNode[]).length > 0;\r\n this.parent?.setParentCheckbox();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n setIndeterminate(node: XTreeNode) {\r\n const getChildren = (children: XTreeNode[]) => {\r\n if (XIsEmpty(children)) return;\r\n children.forEach((x) => {\r\n if (x.indeterminate || x.checked) {\r\n node.indeterminate = true;\r\n return;\r\n }\r\n getChildren(x.children as XTreeNode[]);\r\n });\r\n };\r\n getChildren(node.children as XTreeNode[]);\r\n this.cdr.detectChanges();\r\n }\r\n\r\n getNodeDisabled(disabled?: boolean) {\r\n return disabled as XBoolean;\r\n }\r\n\r\n onAction(event: Event, action: XTreeAction, node: XTreeNode) {\r\n action.handler && action.handler(node);\r\n event.stopPropagation();\r\n }\r\n\r\n trackByItem(_index: number, item: XTreeAction | XTreeNode) {\r\n return item.id;\r\n }\r\n}\r\n","<div\r\n class=\"x-tree-node-content\"\r\n [class.x-activated]=\"tree.activatedNode?.id === node.id\"\r\n [style.padding-left.rem]=\"paddingLeft\"\r\n [style.height.rem]=\"node.height ? node.height : nodeHeight ? nodeHeight : ''\"\r\n [style.align-items]=\"node.alignItems ? node.alignItems : nodeAlignItems\"\r\n (click)=\"onActivate($event, node)\"\r\n>\r\n <x-icon\r\n *ngIf=\"!node.loading\"\r\n [class.is-leaf]=\"!node.leaf\"\r\n [class.is-open]=\"node.open\"\r\n type=\"fto-chevron-right\"\r\n (click)=\"!tree.nodeOpen && tree.onToggle($event, node)\"\r\n ></x-icon>\r\n <x-icon *ngIf=\"node.loading\" type=\"fto-loader\" [spin]=\"node.loading\"></x-icon>\r\n <x-checkbox\r\n *ngIf=\"tree.checkbox\"\r\n [data]=\"[{ label: '', id: node.id }]\"\r\n [(ngModel)]=\"node.checked\"\r\n (ngModelChange)=\"onCheckboxChange()\"\r\n [indeterminate]=\"node.indeterminate\"\r\n [disabled]=\"getNodeDisabled(node.disabled)\"\r\n (click)=\"$event.stopPropagation()\"\r\n ></x-checkbox>\r\n <span\r\n class=\"x-tree-node-label\"\r\n [class.nowrap]=\"node.nowrap === false || node.nowrap === true ? node.nowrap : nodeNowrap\"\r\n [title]=\"node.label\"\r\n *ngIf=\"!tree.labelTpl; else labelTpl\"\r\n >{{ node.label }}</span\r\n >\r\n <ng-template #labelTpl>\r\n <ng-container *xOutlet=\"tree.labelTpl; context: { $node: node }\"></ng-container>\r\n </ng-template>\r\n <span class=\"x-tree-node-operations\">\r\n <x-link\r\n *ngFor=\"let action of tree.actions; trackBy: trackByItem\"\r\n [icon]=\"action.icon\"\r\n [title]=\"action.label\"\r\n (click)=\"onAction($event, action, node)\"\r\n ></x-link>\r\n </span>\r\n</div>\r\n<ul *ngIf=\"!virtualScroll && (node.childrenLoaded || (node.leaf && node.open))\" [hidden]=\"!node.open\">\r\n <li\r\n x-tree-node\r\n *ngFor=\"let child of node.children; trackBy: trackByItem\"\r\n [node]=\"child\"\r\n [parent]=\"this\"\r\n [lazy]=\"lazy\"\r\n [lazyData]=\"lazyData\"\r\n [nodeHeight]=\"nodeHeight\"\r\n [nodeNowrap]=\"nodeNowrap\"\r\n [nodeAlignItems]=\"nodeAlignItems\"\r\n [tree]=\"tree\"\r\n ></li>\r\n</ul>\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n Renderer2,\r\n ElementRef,\r\n ChangeDetectorRef,\r\n ChangeDetectionStrategy,\r\n ViewChild,\r\n SimpleChanges,\r\n OnChanges\r\n} from '@angular/core';\r\nimport { XTreePrefix, XTreeNode, XTreeProperty } from './tree.property';\r\nimport { XIsObservable, XIsEmpty, XIsFunction, XIsUndefined, XIsChange, XSetData, XConfigService } from '@ng-nest/ui/core';\r\nimport { map, Observable, Subject } from 'rxjs';\r\n\r\n@Component({\r\n selector: `${XTreePrefix}`,\r\n templateUrl: './tree.component.html',\r\n styleUrls: ['./tree.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XTreeComponent extends XTreeProperty implements OnChanges {\r\n @ViewChild('tree', { static: true }) tree!: ElementRef;\r\n nodes: XTreeNode[] = [];\r\n virtualNodes: XTreeNode[] = [];\r\n activatedNode!: XTreeNode;\r\n dataIsFunc = false;\r\n getting = false;\r\n treeData: XTreeNode[] = [];\r\n private _unSubject = new Subject<void>();\r\n constructor(\r\n public renderer: Renderer2,\r\n public elementRef: ElementRef,\r\n public cdr: ChangeDetectorRef,\r\n public configService: XConfigService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const { expandedAll, data, activatedId, checked, manual } = changes;\r\n XIsChange(data) && this.setData();\r\n XIsChange(expandedAll) && this.setExpandedAll();\r\n XIsChange(activatedId) && this.setActivatedNode(this.treeData);\r\n XIsChange(checked) && this.setCheckedKeys(this.checked);\r\n XIsChange(manual) && this.setManual();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._unSubject.next();\r\n this._unSubject.unsubscribe();\r\n }\r\n\r\n setData() {\r\n if (typeof this.data === 'undefined') return;\r\n this.dataIsFunc = false;\r\n if (XIsObservable(this.data)) {\r\n XSetData<XTreeNode>(this.data, this._unSubject).subscribe((x) => {\r\n this.setDataChange(x);\r\n });\r\n } else if (XIsFunction(this.data)) {\r\n this.dataIsFunc = true;\r\n this.getDataByFunc();\r\n } else {\r\n this.setDataChange(this.data as XTreeNode[]);\r\n }\r\n }\r\n\r\n private setManual() {\r\n if (this.dataIsFunc) this.getDataByFunc();\r\n }\r\n\r\n private getDataByFunc() {\r\n if (!this.manual) return;\r\n XSetData<XTreeNode>((this.data as Function)(), this._unSubject).subscribe((x) => {\r\n this.setDataChange(x);\r\n });\r\n }\r\n\r\n private setDataChange(value: XTreeNode[]) {\r\n !XIsEmpty(this.activatedId) && this.setActivatedNode(value);\r\n const getChildren = (node: XTreeNode, level: number) => {\r\n node.level = level;\r\n node.open = Boolean(this.expandedAll) || level <= this.expandedLevel || this.expanded.indexOf(node.id) >= 0;\r\n node.checked = this.checked.indexOf(node.id) >= 0;\r\n node.childrenLoaded = node.open;\r\n if (XIsUndefined(node.children)) node.children = value.filter((y) => y.pid === node.id);\r\n if (XIsUndefined(node.leaf)) node.leaf = (node.children?.length as number) > 0;\r\n if (node.leaf) node.children?.map((y) => getChildren(y, level + 1));\r\n return node;\r\n };\r\n this.treeData = value;\r\n this.nodes = value.filter((x) => XIsEmpty(x.pid)).map((x) => getChildren(x, 0));\r\n\r\n this.cdr.detectChanges();\r\n }\r\n\r\n getCheckedNodes(): XTreeNode[] {\r\n let result: XTreeNode[] = [];\r\n const getChildren = (nodes: XTreeNode[]) => {\r\n if (XIsEmpty(nodes)) return;\r\n nodes.forEach((x) => {\r\n if (x.checked && !result.includes(x)) {\r\n result = [...result, x];\r\n }\r\n getChildren(x.children as XTreeNode[]);\r\n });\r\n };\r\n getChildren(this.nodes);\r\n return result;\r\n }\r\n\r\n getCheckedKeys() {\r\n return this.getCheckedNodes().map((x) => x.id);\r\n }\r\n\r\n setCheckedKeys(keys: any[] = []) {\r\n const setChildren = (nodes: XTreeNode[], clear = false) => {\r\n if (XIsEmpty(nodes)) return;\r\n nodes.forEach((x) => {\r\n x.checked = !clear && keys.indexOf(x.id) >= 0;\r\n x.change && x.change(true);\r\n setChildren(x.children as XTreeNode[], clear);\r\n });\r\n };\r\n setChildren(this.nodes, keys.length === 0);\r\n this.cdr.detectChanges();\r\n }\r\n\r\n setExpandedAll() {\r\n const setChildren = (nodes: XTreeNode[]) => {\r\n if (XIsEmpty(nodes)) return;\r\n nodes.forEach((x) => {\r\n x.open = Boolean(this.expandedAll);\r\n x.change && x.change();\r\n setChildren(x.children as XTreeNode[]);\r\n });\r\n };\r\n setChildren(this.nodes);\r\n\r\n if (this.virtualScroll) {\r\n if (this.virtualNodes.length === 0) {\r\n this.virtualNodes = [...this.nodes];\r\n }\r\n this.nodes = [...this.virtualNodes];\r\n for (let item of this.virtualNodes) {\r\n this.setVirtualExpandedAll(item, this.expandedAll as boolean);\r\n }\r\n }\r\n }\r\n\r\n setVirtualExpandedAll(item: XTreeNode, expandedAll: boolean) {\r\n let index = this.nodes.indexOf(item);\r\n if (expandedAll) {\r\n let addNodes: XTreeNode[] = [];\r\n const getNodes = (nd: XTreeNode) => {\r\n for (let child of nd.children!) {\r\n addNodes.push(child);\r\n getNodes(child);\r\n }\r\n };\r\n getNodes(item);\r\n this.nodes.splice(index + 1, 0, ...addNodes);\r\n }\r\n this.nodes = [...this.nodes];\r\n }\r\n\r\n virtualToggle(node: XTreeNode) {\r\n let index = this.nodes.indexOf(node);\r\n if (node.open) {\r\n let addNodes: XTreeNode[] = [];\r\n const getNodes = (nd: XTreeNode) => {\r\n for (let child of nd.children!) {\r\n addNodes.push(child);\r\n child.open && getNodes(child);\r\n }\r\n };\r\n getNodes(node);\r\n this.nodes.splice(index + 1, 0, ...addNodes);\r\n } else {\r\n let delCount = 0;\r\n const getCount = (nd: XTreeNode) => {\r\n delCount += nd.children!.length;\r\n for (let child of nd.children!) {\r\n child.open && getCount(child);\r\n }\r\n };\r\n getCount(node);\r\n this.nodes.splice(index + 1, delCount);\r\n }\r\n this.nodes = [...this.nodes];\r\n }\r\n\r\n setActivatedNode(nodes: XTreeNode[]) {\r\n let before = this.activatedNode;\r\n this.activatedNode = nodes.find((x) => x.id == this.activatedId) as XTreeNode;\r\n if (this.activatedNode) {\r\n this.setParentOpen(nodes, this.activatedNode);\r\n this.activatedChange.emit(this.activatedNode);\r\n }\r\n if (before) {\r\n before.change && before.change();\r\n }\r\n }\r\n\r\n setParentOpen(nodes: XTreeNode[], node: XTreeNode) {\r\n const getParent = (child: XTreeNode) => {\r\n if (XIsEmpty(child.pid)) return;\r\n const parent = nodes.find((x) => x.id === child.pid) as XTreeNode;\r\n if (!XIsEmpty(parent)) {\r\n this.expanded = [...this.expanded, parent.id];\r\n parent.open = true;\r\n parent.change && parent.change();\r\n getParent(parent);\r\n }\r\n };\r\n getParent(node);\r\n }\r\n\r\n onToggle(event: Event, node: XTreeNode) {\r\n node.open = !node.open;\r\n if (this.virtualScroll) {\r\n if (this.lazy && !node.childrenLoaded) {\r\n this.getLazyData(node, () => this.virtualToggle(node));\r\n } else {\r\n this.virtualToggle(node);\r\n }\r\n } else if (node.open && !node.childrenLoaded) {\r\n if (this.lazy) {\r\n this.getLazyData(node);\r\n } else {\r\n node.childrenLoaded = true;\r\n }\r\n }\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n getLazyData(node: XTreeNode, callBack?: () => void) {\r\n node.loading = true;\r\n node.change && node.change();\r\n (this.data as (pid?: any) => Observable<XTreeNode[]>)(node.id)\r\n .pipe(\r\n map((x) =>\r\n x.map((y) => {\r\n y.level = (node.level as number) + 1;\r\n y.checked = node.checked;\r\n return y;\r\n })\r\n )\r\n )\r\n .subscribe((x) => {\r\n node.children = x;\r\n node.childrenLoaded = true;\r\n node.loading = false;\r\n if (callBack) callBack();\r\n node.change && node.change();\r\n this.cdr.detectChanges();\r\n });\r\n }\r\n\r\n addNode(node: XTreeNode) {\r\n let parent = this.treeData.find((x) => x.id === node.pid);\r\n const _addNode = () => {\r\n if (parent) {\r\n if (!parent.children) parent.children = [];\r\n this.expanded = [...this.expanded, parent.id];\r\n this.activatedId = node.id;\r\n node.level = Number(parent.level) + 1;\r\n node.pid = parent.id;\r\n this.treeData.push(node);\r\n this.setActivatedNode(this.treeData);\r\n parent.open = true;\r\n parent.leaf = true;\r\n parent.children = [...parent.children, node];\r\n if (this.virtualScroll) {\r\n this.virtualToggle(parent);\r\n this.cdr.detectChanges();\r\n }\r\n parent.change && parent.change();\r\n } else if (XIsEmpty(node.pid)) {\r\n this.activatedId = node.id;\r\n node.level = 0;\r\n this.treeData = [...this.treeData, node];\r\n this.nodes = [...this.nodes, node];\r\n this.setActivatedNode(this.treeData);\r\n this.cdr.detectChanges();\r\n }\r\n };\r\n if (this.lazy && parent && !parent.childrenLoaded) {\r\n this.getLazyData(parent, () => {\r\n _addNode();\r\n });\r\n } else {\r\n _addNode();\r\n }\r\n }\r\n\r\n removeNode(node: XTreeNode) {\r\n let parent = this.treeData.find((x) => x.id === node.pid);\r\n if (parent) {\r\n if (!parent.children) parent.children = [];\r\n parent.children.splice(parent.children.indexOf(node), 1);\r\n parent.leaf = parent.children.length > 0;\r\n if (!parent.leaf) this.activatedId = parent.id;\r\n if (this.virtualScroll) {\r\n let index = this.nodes.indexOf(node);\r\n let aindex = index - 1;\r\n if (index === 0 && this.nodes.length > 1) {\r\n aindex = 1;\r\n }\r\n let activatedNode = this.nodes[aindex];\r\n this.activatedId = activatedNode.id;\r\n this.setActivatedNode(this.nodes);\r\n this.nodes.splice(index, 1);\r\n this.nodes = [...this.nodes];\r\n if (activatedNode) {\r\n activatedNode.change && activatedNode.change();\r\n }\r\n this.cdr.detectChanges();\r\n }\r\n parent.change && parent.change();\r\n } else if (XIsEmpty(node.pid)) {\r\n this.treeData.splice(this.treeData.indexOf(node), 1);\r\n this.nodes.splice(this.nodes.indexOf(node), 1);\r\n if (this.virtualScroll) {\r\n this.nodes = [...this.nodes];\r\n }\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n\r\n updateNode(node: XTreeNode, nowNode: XTreeNode) {\r\n Object.assign(node, nowNode);\r\n node.change && node.change();\r\n }\r\n\r\n trackByItem(_index: number, item: XTreeNode) {\r\n return item.id;\r\n }\r\n}\r\n","<div #tree class=\"x-tree\">\r\n <ul *ngIf=\"!virtualScroll; else virtualScrollTpl\">\r\n <li\r\n x-tree-node\r\n *ngFor=\"let node of nodes; trackBy: trackByItem\"\r\n [node]=\"node\"\r\n [lazy]=\"lazy\"\r\n [lazyData]=\"data\"\r\n [nodeHeight]=\"nodeHeight\"\r\n [nodeNowrap]=\"nodeNowrap\"\r\n [nodeAlignItems]=\"nodeAlignItems\"\r\n [tree]=\"this\"\r\n ></li>\r\n </ul>\r\n</div>\r\n\r\n<ng-template #virtualScrollTpl>\r\n <cdk-virtual-scroll-viewport\r\n [itemSize]=\"itemSize\"\r\n [minBufferPx]=\"minBufferPx\"\r\n [maxBufferPx]=\"maxBufferPx\"\r\n [style.height.px]=\"virtualScrollHeight\"\r\n >\r\n <x-tree-node\r\n *cdkVirtualFor=\"let node of nodes; templateCacheSize: 0; trackBy: trackByItem\"\r\n [node]=\"node\"\r\n [lazy]=\"lazy\"\r\n [lazyData]=\"data\"\r\n [nodeHeight]=\"nodeHeight\"\r\n [nodeNowrap]=\"nodeNowrap\"\r\n [nodeAlignItems]=\"nodeAlignItems\"\r\n [tree]=\"this\"\r\n [virtualScroll]=\"virtualScroll\"\r\n ></x-tree-node>\r\n </cdk-virtual-scroll-viewport>\r\n</ng-template>\r\n\r\n<!-- 提前加载loading的图标-->\r\n<x-icon *ngIf=\"lazy\" [style.display]=\"'none'\" type=\"fto-loader\"></x-icon>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { XTreeComponent } from './tree.component';\r\nimport { XTreeNodeComponent } from './tree-node.component';\r\nimport { XIconModule } from '@ng-nest/ui/icon';\r\nimport { XCheckboxModule } from '@ng-nest/ui/checkbox';\r\nimport { XOutletModule } from '@ng-nest/ui/outlet';\r\nimport { XLinkModule } from '@ng-nest/ui/link';\r\nimport { XTreeProperty, XTreeNodeProperty } from './tree.property';\r\nimport { ScrollingModule } from '@angular/cdk/scrolling';\r\n\r\n@NgModule({\r\n declarations: [XTreeComponent, XTreeNodeComponent, XTreeProperty, XTreeNodeProperty],\r\n exports: [XTreeComponent, XTreeNodeComponent],\r\n imports: [CommonModule, FormsModule, XIconModule, XCheckboxModule, XOutletModule, XLinkModule, ScrollingModule]\r\n})\r\nexport class XTreeModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i4","i5.XTreeNodeComponent"],"mappings":"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"}