@ng-nest/ui 14.0.6 → 14.0.8

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 (250) hide show
  1. package/avatar/avatar-group.component.d.ts +8 -0
  2. package/avatar/avatar.component.d.ts +15 -4
  3. package/avatar/avatar.module.d.ts +5 -4
  4. package/avatar/avatar.property.d.ts +31 -3
  5. package/avatar/examples/en_US/default/badge/README.md +6 -0
  6. package/avatar/examples/en_US/default/group/README.md +6 -0
  7. package/avatar/examples/en_US/default/label/README.md +6 -0
  8. package/avatar/examples/en_US/default/response/README.md +6 -0
  9. package/avatar/examples/zh_CN/default/badge/README.md +6 -0
  10. package/avatar/examples/zh_CN/default/group/README.md +6 -0
  11. package/avatar/examples/zh_CN/default/label/README.md +6 -0
  12. package/avatar/examples/zh_CN/default/response/README.md +6 -0
  13. package/avatar/public-api.d.ts +1 -0
  14. package/badge/badge.component.d.ts +4 -1
  15. package/badge/badge.property.d.ts +6 -1
  16. package/badge/examples/en_US/default/animation/README.md +4 -0
  17. package/badge/examples/en_US/default/standalone/README.md +6 -0
  18. package/badge/examples/zh_CN/default/animation/README.md +4 -0
  19. package/badge/examples/zh_CN/default/standalone/README.md +6 -0
  20. package/calendar/calendar.component.d.ts +1 -0
  21. package/calendar/calendar.property.d.ts +18 -3
  22. package/calendar/examples/en_US/default/card/README.md +6 -0
  23. package/calendar/examples/en_US/default/header/README.md +6 -0
  24. package/calendar/examples/zh_CN/default/card/README.md +6 -0
  25. package/calendar/examples/zh_CN/default/header/README.md +6 -0
  26. package/collapse/collapse.property.d.ts +6 -1
  27. package/collapse/examples/en_US/default/disabled/README.md +6 -0
  28. package/collapse/examples/zh_CN/default/disabled/README.md +6 -0
  29. package/core/animation/badge.d.ts +1 -0
  30. package/core/config/config.d.ts +30 -0
  31. package/core/interfaces/identify.type.d.ts +2 -0
  32. package/core/interfaces/layout.type.d.ts +15 -0
  33. package/esm2020/avatar/avatar-group.component.mjs +19 -0
  34. package/esm2020/avatar/avatar.component.mjs +91 -11
  35. package/esm2020/avatar/avatar.module.mjs +6 -5
  36. package/esm2020/avatar/avatar.property.mjs +31 -3
  37. package/esm2020/avatar/public-api.mjs +2 -1
  38. package/esm2020/badge/badge.component.mjs +24 -8
  39. package/esm2020/badge/badge.property.mjs +7 -2
  40. package/esm2020/calendar/calendar.component.mjs +8 -4
  41. package/esm2020/calendar/calendar.property.mjs +11 -2
  42. package/esm2020/collapse/collapse-panel.component.mjs +3 -3
  43. package/esm2020/collapse/collapse.property.mjs +7 -2
  44. package/esm2020/core/animation/badge.mjs +17 -1
  45. package/esm2020/core/config/config.mjs +1 -1
  46. package/esm2020/core/interfaces/identify.type.mjs +1 -1
  47. package/esm2020/core/interfaces/layout.type.mjs +1 -1
  48. package/esm2020/date-picker/date-picker.component.mjs +5 -1
  49. package/esm2020/form/form.component.mjs +3 -3
  50. package/esm2020/i18n/i18n.property.mjs +1 -1
  51. package/esm2020/i18n/languages/en_US.mjs +8 -1
  52. package/esm2020/i18n/languages/zh_CN.mjs +8 -1
  53. package/esm2020/i18n/languages/zh_TW.mjs +8 -1
  54. package/esm2020/image/image-group.component.mjs +18 -0
  55. package/esm2020/image/image-preview.component.mjs +136 -0
  56. package/esm2020/image/image.component.mjs +89 -0
  57. package/esm2020/image/image.module.mjs +27 -0
  58. package/esm2020/image/image.property.mjs +82 -0
  59. package/esm2020/image/ng-nest-ui-image.mjs +5 -0
  60. package/esm2020/image/public-api.mjs +6 -0
  61. package/esm2020/index.mjs +4 -1
  62. package/esm2020/keyword/keyword.directive.mjs +66 -0
  63. package/esm2020/keyword/keyword.module.mjs +19 -0
  64. package/esm2020/keyword/keyword.property.mjs +41 -0
  65. package/esm2020/keyword/ng-nest-ui-keyword.mjs +5 -0
  66. package/esm2020/keyword/public-api.mjs +4 -0
  67. package/esm2020/list/list-option.component.mjs +4 -4
  68. package/esm2020/list/list.component.mjs +71 -10
  69. package/esm2020/list/list.module.mjs +12 -4
  70. package/esm2020/list/list.property.mjs +54 -3
  71. package/esm2020/select/select-portal.component.mjs +6 -3
  72. package/esm2020/select/select.component.mjs +31 -23
  73. package/esm2020/select/select.property.mjs +8 -2
  74. package/esm2020/table/table-head.component.mjs +2 -2
  75. package/esm2020/table/table.component.mjs +4 -4
  76. package/esm2020/textarea/textarea.component.mjs +2 -2
  77. package/esm2020/timeline/timeline.component.mjs +6 -4
  78. package/esm2020/tree/tree-node.component.mjs +52 -27
  79. package/esm2020/tree/tree.component.mjs +173 -58
  80. package/esm2020/tree/tree.module.mjs +5 -4
  81. package/esm2020/tree/tree.property.mjs +38 -2
  82. package/esm2020/tree-select/ng-nest-ui-tree-select.mjs +5 -0
  83. package/esm2020/tree-select/public-api.mjs +5 -0
  84. package/esm2020/tree-select/tree-select-portal.component.mjs +110 -0
  85. package/esm2020/tree-select/tree-select.component.mjs +632 -0
  86. package/esm2020/tree-select/tree-select.module.mjs +65 -0
  87. package/esm2020/tree-select/tree-select.property.mjs +153 -0
  88. package/esm2020/upload/upload.component.mjs +9 -6
  89. package/esm2020/upload/upload.module.mjs +12 -4
  90. package/esm2020/upload/upload.property.mjs +10 -3
  91. package/fesm2015/ng-nest-ui-avatar.mjs +143 -17
  92. package/fesm2015/ng-nest-ui-avatar.mjs.map +1 -1
  93. package/fesm2015/ng-nest-ui-badge.mjs +29 -8
  94. package/fesm2015/ng-nest-ui-badge.mjs.map +1 -1
  95. package/fesm2015/ng-nest-ui-calendar.mjs +17 -4
  96. package/fesm2015/ng-nest-ui-calendar.mjs.map +1 -1
  97. package/fesm2015/ng-nest-ui-collapse.mjs +8 -3
  98. package/fesm2015/ng-nest-ui-collapse.mjs.map +1 -1
  99. package/fesm2015/ng-nest-ui-core.mjs +17 -1
  100. package/fesm2015/ng-nest-ui-core.mjs.map +1 -1
  101. package/fesm2015/ng-nest-ui-date-picker.mjs +4 -0
  102. package/fesm2015/ng-nest-ui-date-picker.mjs.map +1 -1
  103. package/fesm2015/ng-nest-ui-form.mjs +2 -2
  104. package/fesm2015/ng-nest-ui-form.mjs.map +1 -1
  105. package/fesm2015/ng-nest-ui-i18n.mjs +21 -0
  106. package/fesm2015/ng-nest-ui-i18n.mjs.map +1 -1
  107. package/fesm2015/ng-nest-ui-image.mjs +340 -0
  108. package/fesm2015/ng-nest-ui-image.mjs.map +1 -0
  109. package/fesm2015/ng-nest-ui-keyword.mjs +125 -0
  110. package/fesm2015/ng-nest-ui-keyword.mjs.map +1 -0
  111. package/fesm2015/ng-nest-ui-list.mjs +138 -17
  112. package/fesm2015/ng-nest-ui-list.mjs.map +1 -1
  113. package/fesm2015/ng-nest-ui-select.mjs +42 -25
  114. package/fesm2015/ng-nest-ui-select.mjs.map +1 -1
  115. package/fesm2015/ng-nest-ui-table.mjs +4 -4
  116. package/fesm2015/ng-nest-ui-table.mjs.map +1 -1
  117. package/fesm2015/ng-nest-ui-textarea.mjs +2 -2
  118. package/fesm2015/ng-nest-ui-textarea.mjs.map +1 -1
  119. package/fesm2015/ng-nest-ui-timeline.mjs +5 -3
  120. package/fesm2015/ng-nest-ui-timeline.mjs.map +1 -1
  121. package/fesm2015/ng-nest-ui-tree-select.mjs +951 -0
  122. package/fesm2015/ng-nest-ui-tree-select.mjs.map +1 -0
  123. package/fesm2015/ng-nest-ui-tree.mjs +271 -94
  124. package/fesm2015/ng-nest-ui-tree.mjs.map +1 -1
  125. package/fesm2015/ng-nest-ui-upload.mjs +28 -10
  126. package/fesm2015/ng-nest-ui-upload.mjs.map +1 -1
  127. package/fesm2015/ng-nest-ui.mjs +3 -0
  128. package/fesm2015/ng-nest-ui.mjs.map +1 -1
  129. package/fesm2020/ng-nest-ui-avatar.mjs +140 -17
  130. package/fesm2020/ng-nest-ui-avatar.mjs.map +1 -1
  131. package/fesm2020/ng-nest-ui-badge.mjs +29 -8
  132. package/fesm2020/ng-nest-ui-badge.mjs.map +1 -1
  133. package/fesm2020/ng-nest-ui-calendar.mjs +17 -4
  134. package/fesm2020/ng-nest-ui-calendar.mjs.map +1 -1
  135. package/fesm2020/ng-nest-ui-collapse.mjs +8 -3
  136. package/fesm2020/ng-nest-ui-collapse.mjs.map +1 -1
  137. package/fesm2020/ng-nest-ui-core.mjs +17 -1
  138. package/fesm2020/ng-nest-ui-core.mjs.map +1 -1
  139. package/fesm2020/ng-nest-ui-date-picker.mjs +4 -0
  140. package/fesm2020/ng-nest-ui-date-picker.mjs.map +1 -1
  141. package/fesm2020/ng-nest-ui-form.mjs +2 -2
  142. package/fesm2020/ng-nest-ui-form.mjs.map +1 -1
  143. package/fesm2020/ng-nest-ui-i18n.mjs +21 -0
  144. package/fesm2020/ng-nest-ui-i18n.mjs.map +1 -1
  145. package/fesm2020/ng-nest-ui-image.mjs +336 -0
  146. package/fesm2020/ng-nest-ui-image.mjs.map +1 -0
  147. package/fesm2020/ng-nest-ui-keyword.mjs +125 -0
  148. package/fesm2020/ng-nest-ui-keyword.mjs.map +1 -0
  149. package/fesm2020/ng-nest-ui-list.mjs +137 -17
  150. package/fesm2020/ng-nest-ui-list.mjs.map +1 -1
  151. package/fesm2020/ng-nest-ui-select.mjs +42 -25
  152. package/fesm2020/ng-nest-ui-select.mjs.map +1 -1
  153. package/fesm2020/ng-nest-ui-table.mjs +4 -4
  154. package/fesm2020/ng-nest-ui-table.mjs.map +1 -1
  155. package/fesm2020/ng-nest-ui-textarea.mjs +2 -2
  156. package/fesm2020/ng-nest-ui-textarea.mjs.map +1 -1
  157. package/fesm2020/ng-nest-ui-timeline.mjs +5 -3
  158. package/fesm2020/ng-nest-ui-timeline.mjs.map +1 -1
  159. package/fesm2020/ng-nest-ui-tree-select.mjs +946 -0
  160. package/fesm2020/ng-nest-ui-tree-select.mjs.map +1 -0
  161. package/fesm2020/ng-nest-ui-tree.mjs +267 -91
  162. package/fesm2020/ng-nest-ui-tree.mjs.map +1 -1
  163. package/fesm2020/ng-nest-ui-upload.mjs +28 -10
  164. package/fesm2020/ng-nest-ui-upload.mjs.map +1 -1
  165. package/fesm2020/ng-nest-ui.mjs +3 -0
  166. package/fesm2020/ng-nest-ui.mjs.map +1 -1
  167. package/i18n/i18n.property.d.ts +9 -0
  168. package/i18n/languages/en_US.d.ts +7 -0
  169. package/i18n/languages/zh_CN.d.ts +7 -0
  170. package/i18n/languages/zh_TW.d.ts +7 -0
  171. package/image/examples/en_US/default/README.md +4 -0
  172. package/image/examples/en_US/default/default/README.md +6 -0
  173. package/image/examples/en_US/default/fallback/README.md +6 -0
  174. package/image/examples/en_US/default/group/README.md +6 -0
  175. package/image/examples/en_US/default/placeholder/README.md +6 -0
  176. package/image/examples/zh_CN/default/README.md +4 -0
  177. package/image/examples/zh_CN/default/default/README.md +6 -0
  178. package/image/examples/zh_CN/default/fallback/README.md +6 -0
  179. package/image/examples/zh_CN/default/group/README.md +6 -0
  180. package/image/examples/zh_CN/default/placeholder/README.md +6 -0
  181. package/image/image-group.component.d.ts +8 -0
  182. package/image/image-preview.component.d.ts +39 -0
  183. package/image/image.component.d.ts +29 -0
  184. package/image/image.module.d.ts +17 -0
  185. package/image/image.property.d.ts +112 -0
  186. package/image/index.d.ts +5 -0
  187. package/image/public-api.d.ts +5 -0
  188. package/index.d.ts +3 -0
  189. package/keyword/index.d.ts +5 -0
  190. package/keyword/keyword.directive.d.ts +19 -0
  191. package/keyword/keyword.module.d.ts +9 -0
  192. package/keyword/keyword.property.d.ts +40 -0
  193. package/keyword/public-api.d.ts +3 -0
  194. package/list/examples/en_US/default/scroll/README.md +8 -0
  195. package/list/examples/zh_CN/default/scroll/README.md +8 -0
  196. package/list/list-option.component.d.ts +0 -1
  197. package/list/list.component.d.ts +13 -1
  198. package/list/list.module.d.ts +3 -1
  199. package/list/list.property.d.ts +62 -3
  200. package/package.json +25 -1
  201. package/select/examples/en_US/default/default/README.md +1 -2
  202. package/select/examples/zh_CN/default/default/README.md +1 -2
  203. package/select/select-portal.component.d.ts +5 -1
  204. package/select/select.component.d.ts +2 -2
  205. package/select/select.property.d.ts +6 -1
  206. package/style/core/index.css +29 -0
  207. package/style/core/index.css.map +1 -1
  208. package/style/directives/index.scss +1 -0
  209. package/style/directives/keyword/index.scss +6 -0
  210. package/style/directives/keyword/mixin.scss +24 -0
  211. package/style/directives/keyword/param.scss +3 -0
  212. package/tree/tree-node.component.d.ts +4 -4
  213. package/tree/tree.component.d.ts +13 -1
  214. package/tree/tree.module.d.ts +2 -1
  215. package/tree/tree.property.d.ts +44 -14
  216. package/tree-select/examples/en_US/default/README.md +4 -0
  217. package/tree-select/examples/en_US/default/async/README.md +6 -0
  218. package/tree-select/examples/en_US/default/bordered/README.md +6 -0
  219. package/tree-select/examples/en_US/default/custom/README.md +6 -0
  220. package/tree-select/examples/en_US/default/default/README.md +6 -0
  221. package/tree-select/examples/en_US/default/disabled/README.md +6 -0
  222. package/tree-select/examples/en_US/default/label/README.md +6 -0
  223. package/tree-select/examples/en_US/default/multiple/README.md +6 -0
  224. package/tree-select/examples/en_US/default/path/README.md +6 -0
  225. package/tree-select/examples/en_US/default/required/README.md +6 -0
  226. package/tree-select/examples/en_US/default/scroll/README.md +6 -0
  227. package/tree-select/examples/en_US/default/search/README.md +7 -0
  228. package/tree-select/examples/en_US/default/size/README.md +6 -0
  229. package/tree-select/examples/zh_CN/default/README.md +4 -0
  230. package/tree-select/examples/zh_CN/default/async/README.md +6 -0
  231. package/tree-select/examples/zh_CN/default/bordered/README.md +6 -0
  232. package/tree-select/examples/zh_CN/default/custom/README.md +6 -0
  233. package/tree-select/examples/zh_CN/default/default/README.md +6 -0
  234. package/tree-select/examples/zh_CN/default/disabled/README.md +6 -0
  235. package/tree-select/examples/zh_CN/default/label/README.md +6 -0
  236. package/tree-select/examples/zh_CN/default/multiple/README.md +6 -0
  237. package/tree-select/examples/zh_CN/default/path/README.md +6 -0
  238. package/tree-select/examples/zh_CN/default/required/README.md +6 -0
  239. package/tree-select/examples/zh_CN/default/scroll/README.md +6 -0
  240. package/tree-select/examples/zh_CN/default/search/README.md +7 -0
  241. package/tree-select/examples/zh_CN/default/size/README.md +6 -0
  242. package/tree-select/index.d.ts +5 -0
  243. package/tree-select/public-api.d.ts +4 -0
  244. package/tree-select/tree-select-portal.component.d.ts +62 -0
  245. package/tree-select/tree-select.component.d.ts +101 -0
  246. package/tree-select/tree-select.module.d.ts +20 -0
  247. package/tree-select/tree-select.property.d.ts +202 -0
  248. package/upload/upload.component.d.ts +1 -1
  249. package/upload/upload.module.d.ts +3 -1
  250. package/upload/upload.property.d.ts +13 -3
@@ -1,23 +1,25 @@
1
1
  import * as i0 from '@angular/core';
2
- import { EventEmitter, Component, Input, Output, ViewEncapsulation, ChangeDetectionStrategy, HostBinding, ViewChild, NgModule } from '@angular/core';
2
+ import { EventEmitter, Component, Input, Output, ViewEncapsulation, ChangeDetectionStrategy, HostBinding, ViewChild, ViewChildren, NgModule } from '@angular/core';
3
3
  import { __decorate } from 'tslib';
4
4
  import * as i1 from '@ng-nest/ui/core';
5
- import { XProperty, XDataConvert, XInputBoolean, XInputNumber, XWithConfig, XIsEmpty, XIsChange, XIsObservable, XSetData, XIsFunction, XIsUndefined } from '@ng-nest/ui/core';
6
- import { Subject, map } from 'rxjs';
5
+ import { XProperty, XDataConvert, XInputBoolean, XInputNumber, XWithConfig, XIsEmpty, XIsChange, XResize, XIsObservable, XSetData, XIsFunction, XIsUndefined } from '@ng-nest/ui/core';
6
+ import { Subject, debounceTime, takeUntil, map } from 'rxjs';
7
7
  import * as i2 from '@angular/common';
8
8
  import { CommonModule } from '@angular/common';
9
- import * as i4 from '@ng-nest/ui/icon';
10
- import { XIconModule } from '@ng-nest/ui/icon';
11
- import * as i4$1 from '@angular/cdk/scrolling';
12
- import { ScrollingModule } from '@angular/cdk/scrolling';
13
9
  import * as i3 from '@angular/forms';
14
10
  import { FormsModule } from '@angular/forms';
11
+ import * as i4 from '@ng-nest/ui/icon';
12
+ import { XIconModule } from '@ng-nest/ui/icon';
15
13
  import * as i5 from '@ng-nest/ui/checkbox';
16
14
  import { XCheckboxModule } from '@ng-nest/ui/checkbox';
17
15
  import * as i6 from '@ng-nest/ui/outlet';
18
16
  import { XOutletModule } from '@ng-nest/ui/outlet';
19
17
  import * as i7 from '@ng-nest/ui/link';
20
18
  import { XLinkModule } from '@ng-nest/ui/link';
19
+ import * as i8 from '@ng-nest/ui/keyword';
20
+ import { XKeywordModule } from '@ng-nest/ui/keyword';
21
+ import * as i4$1 from '@angular/cdk/scrolling';
22
+ import { ScrollingModule } from '@angular/cdk/scrolling';
21
23
 
22
24
  /**
23
25
  * Tree
@@ -97,10 +99,20 @@ class XTreeProperty extends XProperty {
97
99
  * @en_US Parameter control request change event
98
100
  */
99
101
  this.manualChange = new EventEmitter();
102
+ /**
103
+ * @zh_CN 节点点击事件
104
+ * @en_US Node click event
105
+ */
106
+ this.nodeClick = new EventEmitter();
107
+ /**
108
+ * @zh_CN 节点点击事件
109
+ * @en_US Node click event
110
+ */
111
+ this.activatedIdChange = new EventEmitter();
100
112
  }
101
113
  }
102
114
  /** @nocollapse */ XTreeProperty.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: XTreeProperty, deps: null, target: i0.ɵɵFactoryTarget.Component });
103
- /** @nocollapse */ XTreeProperty.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: XTreeProperty, selector: "ng-component", inputs: { data: "data", checkbox: "checkbox", lazy: "lazy", activatedId: "activatedId", expanded: "expanded", checked: "checked", expandedAll: "expandedAll", expandedLevel: "expandedLevel", nodeOpen: "nodeOpen", spacing: "spacing", labelTpl: "labelTpl", nodeHeight: "nodeHeight", allowManyActivated: "allowManyActivated", manual: "manual", levelCheck: "levelCheck", nodeNowrap: "nodeNowrap", nodeAlignItems: "nodeAlignItems", actions: "actions", virtualScroll: "virtualScroll", virtualScrollHeight: "virtualScrollHeight", itemSize: "itemSize", minBufferPx: "minBufferPx", maxBufferPx: "maxBufferPx" }, outputs: { activatedChange: "activatedChange", checkboxChange: "checkboxChange", manualChange: "manualChange" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
115
+ /** @nocollapse */ XTreeProperty.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: XTreeProperty, selector: "ng-component", inputs: { data: "data", checkbox: "checkbox", lazy: "lazy", activatedId: "activatedId", expanded: "expanded", checked: "checked", expandedAll: "expandedAll", expandedLevel: "expandedLevel", nodeOpen: "nodeOpen", spacing: "spacing", labelTpl: "labelTpl", nodeHeight: "nodeHeight", allowManyActivated: "allowManyActivated", manual: "manual", levelCheck: "levelCheck", nodeNowrap: "nodeNowrap", nodeAlignItems: "nodeAlignItems", actions: "actions", scrollElement: "scrollElement", virtualScroll: "virtualScroll", virtualScrollHeight: "virtualScrollHeight", heightAdaption: "heightAdaption", itemSize: "itemSize", minBufferPx: "minBufferPx", maxBufferPx: "maxBufferPx", multiple: "multiple", objectArray: "objectArray", keywordText: "keywordText", caseSensitive: "caseSensitive" }, outputs: { activatedChange: "activatedChange", checkboxChange: "checkboxChange", manualChange: "manualChange", nodeClick: "nodeClick", activatedIdChange: "activatedIdChange" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
104
116
  __decorate([
105
117
  XDataConvert()
106
118
  ], XTreeProperty.prototype, "data", void 0);
@@ -154,6 +166,16 @@ __decorate([
154
166
  XWithConfig(X_CONFIG_NAME, 26),
155
167
  XInputNumber()
156
168
  ], XTreeProperty.prototype, "itemSize", void 0);
169
+ __decorate([
170
+ XInputBoolean()
171
+ ], XTreeProperty.prototype, "multiple", void 0);
172
+ __decorate([
173
+ XInputBoolean()
174
+ ], XTreeProperty.prototype, "objectArray", void 0);
175
+ __decorate([
176
+ XInputBoolean(),
177
+ XWithConfig(X_CONFIG_NAME, true)
178
+ ], XTreeProperty.prototype, "caseSensitive", void 0);
157
179
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: XTreeProperty, decorators: [{
158
180
  type: Component,
159
181
  args: [{ template: '' }]
@@ -197,18 +219,34 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
197
219
  type: Input
198
220
  }], actions: [{
199
221
  type: Input
222
+ }], scrollElement: [{
223
+ type: Input
200
224
  }], virtualScroll: [{
201
225
  type: Input
202
226
  }], virtualScrollHeight: [{
203
227
  type: Input
228
+ }], heightAdaption: [{
229
+ type: Input
204
230
  }], itemSize: [{
205
231
  type: Input
206
232
  }], minBufferPx: [{
207
233
  type: Input
208
234
  }], maxBufferPx: [{
209
235
  type: Input
236
+ }], multiple: [{
237
+ type: Input
238
+ }], objectArray: [{
239
+ type: Input
240
+ }], keywordText: [{
241
+ type: Input
242
+ }], caseSensitive: [{
243
+ type: Input
210
244
  }], manualChange: [{
211
245
  type: Output
246
+ }], nodeClick: [{
247
+ type: Output
248
+ }], activatedIdChange: [{
249
+ type: Output
212
250
  }] } });
213
251
  /**
214
252
  * TreeNode
@@ -275,9 +313,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
275
313
  }] } });
276
314
 
277
315
  class XTreeNodeComponent extends XTreeNodeProperty {
278
- constructor(
279
- // @Optional() public tree: XTreeComponent,
280
- renderer, elementRef, cdr, configService) {
316
+ constructor(renderer, elementRef, cdr, configService) {
281
317
  super();
282
318
  this.renderer = renderer;
283
319
  this.elementRef = elementRef;
@@ -296,6 +332,19 @@ class XTreeNodeComponent extends XTreeNodeProperty {
296
332
  get paddingLeft() {
297
333
  return Number(this.node?.level ? this.node.level : 0) * Number(this.tree.spacing);
298
334
  }
335
+ get getActivated() {
336
+ if (this.tree.multiple) {
337
+ if (this.tree.objectArray) {
338
+ return this.tree.activatedId.map((x) => x.id).includes(this.node.id);
339
+ }
340
+ else {
341
+ return this.tree.activatedId.includes(this.node.id);
342
+ }
343
+ }
344
+ else {
345
+ return this.tree.activatedNode?.id === this.node.id;
346
+ }
347
+ }
299
348
  ngOnInit() {
300
349
  this.node.change = (check) => {
301
350
  if (check)
@@ -312,12 +361,33 @@ class XTreeNodeComponent extends XTreeNodeProperty {
312
361
  onActivate(event, node) {
313
362
  const change = this.tree.activatedNode?.change;
314
363
  this.tree.nodeOpen && node.leaf && this.tree.onToggle(event, node);
364
+ if (this.tree.multiple) {
365
+ if (this.tree.objectArray) {
366
+ const ids = this.tree.activatedId.map((x) => x.id);
367
+ if (ids.includes(node.id)) {
368
+ this.tree.activatedId.splice(ids.indexOf(node.id), 1);
369
+ }
370
+ else {
371
+ this.tree.activatedId.push(node);
372
+ }
373
+ }
374
+ else {
375
+ if (this.tree.activatedId.includes(node.id)) {
376
+ this.tree.activatedId.splice(this.tree.activatedId.indexOf(node.id), 1);
377
+ }
378
+ else {
379
+ this.tree.activatedId.push(node.id);
380
+ }
381
+ }
382
+ this.tree.activatedIdChange.emit(this.tree.activatedId);
383
+ }
315
384
  if (this.tree.activatedNode) {
316
385
  if (this.tree.activatedNode.id === node.id && !this.tree.allowManyActivated)
317
386
  return;
318
387
  }
319
388
  this.tree.activatedNode = node;
320
389
  this.tree.activatedChange.emit(node);
390
+ this.tree.nodeClick.emit(node);
321
391
  change && change();
322
392
  event.stopPropagation();
323
393
  this.cdr.detectChanges();
@@ -331,23 +401,18 @@ class XTreeNodeComponent extends XTreeNodeProperty {
331
401
  return;
332
402
  this.node.indeterminate = this.node.checked;
333
403
  this.node.children && this.setChildrenCheckbox(this.node.checked);
334
- if (this.virtualScroll) {
335
- const setParent = (node) => {
336
- let parent = this.tree.nodes.find((x) => x.id === node.pid);
337
- if (!parent || XIsEmpty(parent.children))
338
- return;
339
- let checkedList = parent.children?.filter((y) => y.checked);
340
- let indeterminateList = parent.children?.filter((y) => y.indeterminate);
341
- parent.checked = checkedList?.length === parent.children?.length;
342
- parent.indeterminate = checkedList.length > 0 || indeterminateList.length > 0;
343
- parent.change && parent.change();
344
- setParent(parent);
345
- };
346
- setParent(this.node);
347
- }
348
- else {
349
- this.parent?.setParentCheckbox();
350
- }
404
+ const setParent = (node) => {
405
+ let parent = this.tree.nodes.find((x) => x.id === node.pid);
406
+ if (!parent || XIsEmpty(parent.children))
407
+ return;
408
+ let checkedList = parent.children?.filter((y) => y.checked);
409
+ let indeterminateList = parent.children?.filter((y) => y.indeterminate);
410
+ parent.checked = checkedList?.length === parent.children?.length;
411
+ parent.indeterminate = checkedList.length > 0 || indeterminateList.length > 0;
412
+ parent.change && parent.change();
413
+ setParent(parent);
414
+ };
415
+ setParent(this.node);
351
416
  }
352
417
  setChildrenCheckbox(checked) {
353
418
  const setChildren = (children, isChecked) => {
@@ -372,7 +437,6 @@ class XTreeNodeComponent extends XTreeNodeProperty {
372
437
  let indeterminateList = this.node.children?.filter((x) => x.indeterminate);
373
438
  this.node.checked = checkedList?.length === this.node.children?.length;
374
439
  this.node.indeterminate = checkedList.length > 0 || indeterminateList.length > 0;
375
- this.parent?.setParentCheckbox();
376
440
  this.cdr.detectChanges();
377
441
  }
378
442
  setIndeterminate(node) {
@@ -402,13 +466,11 @@ class XTreeNodeComponent extends XTreeNodeProperty {
402
466
  }
403
467
  }
404
468
  /** @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 });
405
- /** @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 });
469
+ /** @nocollapse */ XTreeNodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: XTreeNodeComponent, selector: "x-tree-node, [x-tree-node]", inputs: { 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]=\"getActivated\"\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 class=\"x-tree-node-right\"\r\n (click)=\"!tree.nodeOpen && tree.onToggle($event, node)\"\r\n ></x-icon>\r\n <x-icon class=\"x-tree-node-loading\" *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 x-keyword\r\n [text]=\"tree.keywordText\"\r\n [caseSensitive]=\"tree.caseSensitive\"\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 <x-icon class=\"x-tree-node-checked\" type=\"fto-check\" *ngIf=\"tree.multiple && getActivated\"></x-icon>\r\n</div>\r\n", styles: [".x-tree-node{display:block;margin:0;padding:0}.x-tree-node-content{display:flex;padding:.0625rem 0;cursor:pointer}.x-tree-node-content x-icon{padding:.25rem;font-size:1rem;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{background-color:var(--x-background-a200)}.x-tree-node-content.x-activated{background-color:var(--x-background-a400);color:var(--x-primary)}.x-tree-node-content:hover .x-tree-node-operations{display:flex;align-items:center}.x-tree-node-right,.x-tree-node-loading{color:var(--x-text-400);margin-right:.125rem}.x-tree-node-checked{color:var(--x-primary)}.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: "directive", type: i8.XKeywordDirective, selector: "[x-keyword]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
406
470
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: XTreeNodeComponent, decorators: [{
407
471
  type: Component,
408
- 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"] }]
409
- }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.XConfigService }]; }, propDecorators: { parent: [{
410
- type: Input
411
- }], tree: [{
472
+ args: [{ selector: `${XTreeNodePrefix}, [${XTreeNodePrefix}]`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"x-tree-node-content\"\r\n [class.x-activated]=\"getActivated\"\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 class=\"x-tree-node-right\"\r\n (click)=\"!tree.nodeOpen && tree.onToggle($event, node)\"\r\n ></x-icon>\r\n <x-icon class=\"x-tree-node-loading\" *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 x-keyword\r\n [text]=\"tree.keywordText\"\r\n [caseSensitive]=\"tree.caseSensitive\"\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 <x-icon class=\"x-tree-node-checked\" type=\"fto-check\" *ngIf=\"tree.multiple && getActivated\"></x-icon>\r\n</div>\r\n", styles: [".x-tree-node{display:block;margin:0;padding:0}.x-tree-node-content{display:flex;padding:.0625rem 0;cursor:pointer}.x-tree-node-content x-icon{padding:.25rem;font-size:1rem;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{background-color:var(--x-background-a200)}.x-tree-node-content.x-activated{background-color:var(--x-background-a400);color:var(--x-primary)}.x-tree-node-content:hover .x-tree-node-operations{display:flex;align-items:center}.x-tree-node-right,.x-tree-node-loading{color:var(--x-text-400);margin-right:.125rem}.x-tree-node-checked{color:var(--x-primary)}.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"] }]
473
+ }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.XConfigService }]; }, propDecorators: { tree: [{
412
474
  type: Input
413
475
  }], rootClass: [{
414
476
  type: HostBinding,
@@ -429,6 +491,9 @@ class XTreeComponent extends XTreeProperty {
429
491
  this.treeData = [];
430
492
  this._unSubject = new Subject();
431
493
  }
494
+ set _nodeComponents(value) {
495
+ this.nodeComponents = value;
496
+ }
432
497
  ngOnChanges(changes) {
433
498
  const { expandedAll, data, activatedId, checked, manual } = changes;
434
499
  XIsChange(data) && this.setData();
@@ -437,9 +502,22 @@ class XTreeComponent extends XTreeProperty {
437
502
  XIsChange(checked) && this.setCheckedKeys(this.checked);
438
503
  XIsChange(manual) && this.setManual();
439
504
  }
505
+ ngAfterViewInit() {
506
+ if (this.virtualScroll && this.heightAdaption) {
507
+ this.setVirtualScrollHeight();
508
+ XResize(this.heightAdaption)
509
+ .pipe(debounceTime(30), takeUntil(this._unSubject))
510
+ .subscribe((x) => {
511
+ this._resizeObserver = x.resizeObserver;
512
+ this.setVirtualScrollHeight();
513
+ });
514
+ }
515
+ this.setScorllTop();
516
+ }
440
517
  ngOnDestroy() {
441
518
  this._unSubject.next();
442
519
  this._unSubject.unsubscribe();
520
+ this._resizeObserver?.disconnect();
443
521
  }
444
522
  setData() {
445
523
  if (typeof this.data === 'undefined')
@@ -458,6 +536,14 @@ class XTreeComponent extends XTreeProperty {
458
536
  this.setDataChange(this.data);
459
537
  }
460
538
  }
539
+ setVirtualScrollHeight() {
540
+ this.virtualScrollHeight = this.heightAdaption.clientHeight;
541
+ this.minBufferPx = this.virtualScrollHeight;
542
+ this.maxBufferPx = this.virtualScrollHeight * 1.2;
543
+ this.virtualBody['_scrollStrategy']['_minBufferPx'] = this.minBufferPx;
544
+ this.virtualBody['_scrollStrategy']['_maxBufferPx'] = this.maxBufferPx;
545
+ this.cdr.detectChanges();
546
+ }
461
547
  setManual() {
462
548
  if (this.dataIsFunc)
463
549
  this.getDataByFunc();
@@ -473,11 +559,18 @@ class XTreeComponent extends XTreeProperty {
473
559
  !XIsEmpty(this.activatedId) && this.setActivatedNode(value);
474
560
  const getChildren = (node, level) => {
475
561
  node.level = level;
476
- node.open = Boolean(this.expandedAll) || level <= this.expandedLevel || this.expanded.indexOf(node.id) >= 0;
562
+ node.open = Boolean(this.expandedAll) || level <= this.expandedLevel || this.expanded.indexOf(node.id) >= 0 || node.open;
477
563
  node.checked = this.checked.indexOf(node.id) >= 0;
478
564
  node.childrenLoaded = node.open;
479
- if (XIsUndefined(node.children))
565
+ if (XIsUndefined(node.children)) {
480
566
  node.children = value.filter((y) => y.pid === node.id);
567
+ if (this.levelCheck && node.children && node.checked) {
568
+ for (let nd of node.children) {
569
+ nd.checked = true;
570
+ this.checked.push(nd.id);
571
+ }
572
+ }
573
+ }
481
574
  if (XIsUndefined(node.leaf))
482
575
  node.leaf = node.children?.length > 0;
483
576
  if (node.leaf)
@@ -486,8 +579,33 @@ class XTreeComponent extends XTreeProperty {
486
579
  };
487
580
  this.treeData = value;
488
581
  this.nodes = value.filter((x) => XIsEmpty(x.pid)).map((x) => getChildren(x, 0));
582
+ for (let item of value) {
583
+ if (item.open) {
584
+ this.setParentOpen(value, item);
585
+ }
586
+ }
587
+ this.setExpanded();
489
588
  this.cdr.detectChanges();
490
589
  }
590
+ setScorllTop() {
591
+ if (!this.scrollElement || !this.activatedNode)
592
+ return;
593
+ let inx = this.nodes.indexOf(this.activatedNode);
594
+ let com = this.nodeComponents.get(inx);
595
+ if (!com)
596
+ return;
597
+ let ele = com.elementRef.nativeElement;
598
+ let scrollEle = this.scrollElement;
599
+ let min = scrollEle.scrollTop;
600
+ let max = scrollEle.scrollTop + scrollEle.clientHeight;
601
+ if (ele.offsetTop + ele.clientHeight > max) {
602
+ let scrollTop = ele.offsetTop + ele.clientHeight - scrollEle.clientHeight;
603
+ scrollEle.scrollTop = scrollTop;
604
+ }
605
+ if (ele.offsetTop < min) {
606
+ scrollEle.scrollTop = ele.offsetTop;
607
+ }
608
+ }
491
609
  getCheckedNodes() {
492
610
  let result = [];
493
611
  const getChildren = (nodes) => {
@@ -511,7 +629,7 @@ class XTreeComponent extends XTreeProperty {
511
629
  if (XIsEmpty(nodes))
512
630
  return;
513
631
  nodes.forEach((x) => {
514
- x.checked = !clear && keys.indexOf(x.id) >= 0;
632
+ x.checked = !clear && keys.includes(x.id);
515
633
  x.change && x.change(true);
516
634
  setChildren(x.children, clear);
517
635
  });
@@ -520,6 +638,8 @@ class XTreeComponent extends XTreeProperty {
520
638
  this.cdr.detectChanges();
521
639
  }
522
640
  setExpandedAll() {
641
+ if (this.expandedAll && this.treeData.length === this.nodes.length)
642
+ return;
523
643
  const setChildren = (nodes) => {
524
644
  if (XIsEmpty(nodes))
525
645
  return;
@@ -530,7 +650,10 @@ class XTreeComponent extends XTreeProperty {
530
650
  });
531
651
  };
532
652
  setChildren(this.nodes);
533
- if (this.virtualScroll) {
653
+ if (this.expandedAll === false) {
654
+ this.nodes = this.treeData.filter((x) => XIsEmpty(x.pid));
655
+ }
656
+ else {
534
657
  if (this.virtualNodes.length === 0) {
535
658
  this.virtualNodes = [...this.nodes];
536
659
  }
@@ -540,6 +663,15 @@ class XTreeComponent extends XTreeProperty {
540
663
  }
541
664
  }
542
665
  }
666
+ setExpanded() {
667
+ for (let item of this.nodes) {
668
+ if (item.open) {
669
+ let index = this.nodes.indexOf(item);
670
+ this.nodes.splice(index + 1, 0, ...item.children);
671
+ }
672
+ }
673
+ this.nodes = [...this.nodes];
674
+ }
543
675
  setVirtualExpandedAll(item, expandedAll) {
544
676
  let index = this.nodes.indexOf(item);
545
677
  if (expandedAll) {
@@ -582,11 +714,32 @@ class XTreeComponent extends XTreeProperty {
582
714
  this.nodes = [...this.nodes];
583
715
  }
584
716
  setActivatedNode(nodes) {
717
+ if (XIsEmpty(this.activatedId) && this.multiple) {
718
+ this.activatedId = [];
719
+ }
585
720
  let before = this.activatedNode;
586
- this.activatedNode = nodes.find((x) => x.id == this.activatedId);
587
- if (this.activatedNode) {
588
- this.setParentOpen(nodes, this.activatedNode);
589
- this.activatedChange.emit(this.activatedNode);
721
+ if (this.multiple) {
722
+ if (this.activatedId.length > 0) {
723
+ let ids = this.objectArray ? this.activatedId.map((x) => x.id) : this.activatedId;
724
+ for (let i = 0; i < ids.length; i++) {
725
+ let node = nodes.find((x) => x.id === ids[i]);
726
+ if (node) {
727
+ this.setParentOpen(nodes, node);
728
+ if (i === ids.length - 1) {
729
+ this.activatedNode = node;
730
+ this.activatedChange.emit(this.activatedNode);
731
+ }
732
+ }
733
+ }
734
+ }
735
+ }
736
+ else {
737
+ let activatedId = this.activatedId;
738
+ this.activatedNode = nodes.find((x) => x.id == activatedId);
739
+ if (this.activatedNode) {
740
+ this.setParentOpen(nodes, this.activatedNode);
741
+ this.activatedChange.emit(this.activatedNode);
742
+ }
590
743
  }
591
744
  if (before) {
592
745
  before.change && before.change();
@@ -598,31 +751,39 @@ class XTreeComponent extends XTreeProperty {
598
751
  return;
599
752
  const parent = nodes.find((x) => x.id === child.pid);
600
753
  if (!XIsEmpty(parent)) {
601
- this.expanded = [...this.expanded, parent.id];
602
- parent.open = true;
603
- parent.change && parent.change();
604
- getParent(parent);
754
+ if (!this.expanded.includes(parent.id)) {
755
+ this.expanded = [...this.expanded, parent.id];
756
+ parent.open = true;
757
+ parent.change && parent.change();
758
+ getParent(parent);
759
+ }
760
+ }
761
+ };
762
+ getParent(node);
763
+ }
764
+ setParentCheck(nodes, node) {
765
+ const getParent = (child) => {
766
+ if (XIsEmpty(child.pid))
767
+ return;
768
+ const parent = nodes.find((x) => x.id === child.pid);
769
+ if (!XIsEmpty(parent)) {
770
+ if (!this.expanded.includes(parent.id)) {
771
+ this.expanded = [...this.expanded, parent.id];
772
+ parent.open = true;
773
+ parent.change && parent.change();
774
+ getParent(parent);
775
+ }
605
776
  }
606
777
  };
607
778
  getParent(node);
608
779
  }
609
780
  onToggle(event, node) {
610
781
  node.open = !node.open;
611
- if (this.virtualScroll) {
612
- if (this.lazy && !node.childrenLoaded) {
613
- this.getLazyData(node, () => this.virtualToggle(node));
614
- }
615
- else {
616
- this.virtualToggle(node);
617
- }
782
+ if (this.lazy && !node.childrenLoaded) {
783
+ this.getLazyData(node, () => this.virtualToggle(node));
618
784
  }
619
- else if (node.open && !node.childrenLoaded) {
620
- if (this.lazy) {
621
- this.getLazyData(node);
622
- }
623
- else {
624
- node.childrenLoaded = true;
625
- }
785
+ else {
786
+ this.virtualToggle(node);
626
787
  }
627
788
  event.preventDefault();
628
789
  event.stopPropagation();
@@ -654,7 +815,7 @@ class XTreeComponent extends XTreeProperty {
654
815
  if (!parent.children)
655
816
  parent.children = [];
656
817
  this.expanded = [...this.expanded, parent.id];
657
- this.activatedId = node.id;
818
+ this.setActivatedId(node);
658
819
  node.level = Number(parent.level) + 1;
659
820
  node.pid = parent.id;
660
821
  this.treeData.push(node);
@@ -662,14 +823,12 @@ class XTreeComponent extends XTreeProperty {
662
823
  parent.open = true;
663
824
  parent.leaf = true;
664
825
  parent.children = [...parent.children, node];
665
- if (this.virtualScroll) {
666
- this.virtualToggle(parent);
667
- this.cdr.detectChanges();
668
- }
826
+ this.virtualToggle(parent);
827
+ this.cdr.detectChanges();
669
828
  parent.change && parent.change();
670
829
  }
671
830
  else if (XIsEmpty(node.pid)) {
672
- this.activatedId = node.id;
831
+ this.setActivatedId(node);
673
832
  node.level = 0;
674
833
  this.treeData = [...this.treeData, node];
675
834
  this.nodes = [...this.nodes, node];
@@ -686,6 +845,20 @@ class XTreeComponent extends XTreeProperty {
686
845
  _addNode();
687
846
  }
688
847
  }
848
+ setActivatedId(node) {
849
+ if (this.multiple) {
850
+ if (this.objectArray) {
851
+ this.activatedId = [node];
852
+ }
853
+ else {
854
+ this.activatedId = [node.id];
855
+ }
856
+ }
857
+ else {
858
+ this.activatedId = node.id;
859
+ }
860
+ this.activatedIdChange.emit(this.activatedId);
861
+ }
689
862
  removeNode(node) {
690
863
  let parent = this.treeData.find((x) => x.id === node.pid);
691
864
  if (parent) {
@@ -693,32 +866,29 @@ class XTreeComponent extends XTreeProperty {
693
866
  parent.children = [];
694
867
  parent.children.splice(parent.children.indexOf(node), 1);
695
868
  parent.leaf = parent.children.length > 0;
696
- if (!parent.leaf)
697
- this.activatedId = parent.id;
698
- if (this.virtualScroll) {
699
- let index = this.nodes.indexOf(node);
700
- let aindex = index - 1;
701
- if (index === 0 && this.nodes.length > 1) {
702
- aindex = 1;
703
- }
704
- let activatedNode = this.nodes[aindex];
705
- this.activatedId = activatedNode.id;
706
- this.setActivatedNode(this.nodes);
707
- this.nodes.splice(index, 1);
708
- this.nodes = [...this.nodes];
709
- if (activatedNode) {
710
- activatedNode.change && activatedNode.change();
711
- }
712
- this.cdr.detectChanges();
869
+ if (!parent.leaf) {
870
+ this.setActivatedId(parent);
871
+ }
872
+ let index = this.nodes.indexOf(node);
873
+ let aindex = index - 1;
874
+ if (index === 0 && this.nodes.length > 1) {
875
+ aindex = 1;
876
+ }
877
+ let activatedNode = this.nodes[aindex];
878
+ this.setActivatedId(activatedNode);
879
+ this.setActivatedNode(this.nodes);
880
+ this.nodes.splice(index, 1);
881
+ this.nodes = [...this.nodes];
882
+ if (activatedNode) {
883
+ activatedNode.change && activatedNode.change();
713
884
  }
885
+ this.cdr.detectChanges();
714
886
  parent.change && parent.change();
715
887
  }
716
888
  else if (XIsEmpty(node.pid)) {
717
889
  this.treeData.splice(this.treeData.indexOf(node), 1);
718
890
  this.nodes.splice(this.nodes.indexOf(node), 1);
719
- if (this.virtualScroll) {
720
- this.nodes = [...this.nodes];
721
- }
891
+ this.nodes = [...this.nodes];
722
892
  this.cdr.detectChanges();
723
893
  }
724
894
  }
@@ -731,26 +901,32 @@ class XTreeComponent extends XTreeProperty {
731
901
  }
732
902
  }
733
903
  /** @nocollapse */ XTreeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: XTreeComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.XConfigService }], target: i0.ɵɵFactoryTarget.Component });
734
- /** @nocollapse */ XTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: XTreeComponent, selector: "x-tree", viewQueries: [{ propertyName: "tree", first: true, predicate: ["tree"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<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<!-- \u63D0\u524D\u52A0\u8F7Dloading\u7684\u56FE\u6807-->\r\n<x-icon *ngIf=\"lazy\" [style.display]=\"'none'\" type=\"fto-loader\"></x-icon>\r\n", styles: [".x-tree{margin:0;padding:0}\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: "component", type: i4.XIconComponent, selector: "x-icon" }, { kind: "directive", type: i4$1.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i4$1.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i4$1.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "component", type: XTreeNodeComponent, selector: "x-tree-node, [x-tree-node]", inputs: ["parent", "tree"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
904
+ /** @nocollapse */ XTreeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: XTreeComponent, selector: "x-tree", viewQueries: [{ propertyName: "tree", first: true, predicate: ["tree"], descendants: true, static: true }, { propertyName: "virtualBody", first: true, predicate: ["virtualBody"], descendants: true }, { propertyName: "_nodeComponents", predicate: XTreeNodeComponent, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div #tree class=\"x-tree\">\r\n <ng-container *ngIf=\"!virtualScroll; else virtualScrollTpl\">\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 ></x-tree-node>\r\n </ng-container>\r\n</div>\r\n\r\n<ng-template #virtualScrollTpl>\r\n <cdk-virtual-scroll-viewport\r\n #virtualBody\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 ></x-tree-node>\r\n </cdk-virtual-scroll-viewport>\r\n</ng-template>\r\n\r\n<!-- \u63D0\u524D\u52A0\u8F7Dloading\u7684\u56FE\u6807-->\r\n<x-icon *ngIf=\"lazy\" [style.display]=\"'none'\" type=\"fto-loader\"></x-icon>\r\n", styles: [".x-tree{margin:0;padding:0}\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: "component", type: i4.XIconComponent, selector: "x-icon" }, { kind: "directive", type: i4$1.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i4$1.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i4$1.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "component", type: XTreeNodeComponent, selector: "x-tree-node, [x-tree-node]", inputs: ["tree"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
735
905
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: XTreeComponent, decorators: [{
736
906
  type: Component,
737
- args: [{ selector: `${XTreePrefix}`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<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<!-- \u63D0\u524D\u52A0\u8F7Dloading\u7684\u56FE\u6807-->\r\n<x-icon *ngIf=\"lazy\" [style.display]=\"'none'\" type=\"fto-loader\"></x-icon>\r\n", styles: [".x-tree{margin:0;padding:0}\n"] }]
907
+ args: [{ selector: `${XTreePrefix}`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #tree class=\"x-tree\">\r\n <ng-container *ngIf=\"!virtualScroll; else virtualScrollTpl\">\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 ></x-tree-node>\r\n </ng-container>\r\n</div>\r\n\r\n<ng-template #virtualScrollTpl>\r\n <cdk-virtual-scroll-viewport\r\n #virtualBody\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 ></x-tree-node>\r\n </cdk-virtual-scroll-viewport>\r\n</ng-template>\r\n\r\n<!-- \u63D0\u524D\u52A0\u8F7Dloading\u7684\u56FE\u6807-->\r\n<x-icon *ngIf=\"lazy\" [style.display]=\"'none'\" type=\"fto-loader\"></x-icon>\r\n", styles: [".x-tree{margin:0;padding:0}\n"] }]
738
908
  }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.XConfigService }]; }, propDecorators: { tree: [{
739
909
  type: ViewChild,
740
910
  args: ['tree', { static: true }]
911
+ }], virtualBody: [{
912
+ type: ViewChild,
913
+ args: ['virtualBody']
914
+ }], _nodeComponents: [{
915
+ type: ViewChildren,
916
+ args: [XTreeNodeComponent]
741
917
  }] } });
742
918
 
743
919
  class XTreeModule {
744
920
  }
745
921
  /** @nocollapse */ XTreeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: XTreeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
746
- /** @nocollapse */ XTreeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.2", ngImport: i0, type: XTreeModule, declarations: [XTreeComponent, XTreeNodeComponent, XTreeProperty, XTreeNodeProperty], imports: [CommonModule, FormsModule, XIconModule, XCheckboxModule, XOutletModule, XLinkModule, ScrollingModule], exports: [XTreeComponent, XTreeNodeComponent] });
747
- /** @nocollapse */ XTreeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: XTreeModule, imports: [CommonModule, FormsModule, XIconModule, XCheckboxModule, XOutletModule, XLinkModule, ScrollingModule] });
922
+ /** @nocollapse */ XTreeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.2", ngImport: i0, type: XTreeModule, declarations: [XTreeComponent, XTreeNodeComponent, XTreeProperty, XTreeNodeProperty], imports: [CommonModule, FormsModule, XIconModule, XCheckboxModule, XOutletModule, XLinkModule, ScrollingModule, XKeywordModule], exports: [XTreeComponent, XTreeNodeComponent] });
923
+ /** @nocollapse */ XTreeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: XTreeModule, imports: [CommonModule, FormsModule, XIconModule, XCheckboxModule, XOutletModule, XLinkModule, ScrollingModule, XKeywordModule] });
748
924
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: XTreeModule, decorators: [{
749
925
  type: NgModule,
750
926
  args: [{
751
927
  declarations: [XTreeComponent, XTreeNodeComponent, XTreeProperty, XTreeNodeProperty],
752
928
  exports: [XTreeComponent, XTreeNodeComponent],
753
- imports: [CommonModule, FormsModule, XIconModule, XCheckboxModule, XOutletModule, XLinkModule, ScrollingModule]
929
+ imports: [CommonModule, FormsModule, XIconModule, XCheckboxModule, XOutletModule, XLinkModule, ScrollingModule, XKeywordModule]
754
930
  }]
755
931
  }] });
756
932